diff --git a/Wetterstation/Form1.cs b/Wetterstation/Form1.cs index d9b57f957f36bf9b0e37fff946c521e8d60b36b4..227729bae8fc63847dbeb7df2614dbb7d03a2ec1 100644 --- a/Wetterstation/Form1.cs +++ b/Wetterstation/Form1.cs @@ -15,16 +15,25 @@ namespace Wetterstation { //Variable fuer den Debugmodues private bool debug = false; + private MqttClient myClient; + + //Objekt für die Settings erstellen SettingsModel WeatherstationSettings = new SettingsModel(); + String graphLastTimestamp = null; + + //Sensorobjekte erstellen (fuer jede Messtelle und fuer Openweathermap) Sensor node1In = new Sensor(); Sensor node1Out = new Sensor(); Sensor owm = new Sensor(); + public Hintergrund() { InitializeComponent(); + + //Settings aus der Datenbank laden WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings(); lbCity.Text = WeatherstationSettings.city; @@ -37,6 +46,8 @@ namespace Wetterstation mqttStart(); updateChart(); } + + //Historiediagramm auf den neuesten Stand bringen private void updateChart() { cartesianChart1.Series = new SeriesCollection @@ -116,6 +127,8 @@ namespace Wetterstation //modifying any series values will also animate and update the chart } + + //Uhreit und Datum bestimmen und anzeigen private void t_DateTime(object sender, EventArgs e) { lbUhr.Text = DateTime.Now.ToLongTimeString(); @@ -190,6 +203,7 @@ namespace Wetterstation if (graphLastTimestamp == null) { + //Json String aufdroeseln und Werte rotierend abspeichern int i = 0; foreach (var result in weatherData["results"][0]["series"][0]["values"]) { @@ -211,6 +225,7 @@ namespace Wetterstation } else { + //Prüfen ob sich Timestamp geändert hat if (graphLastTimestamp != weatherData["results"][0]["series"][0]["values"][96][0].ToString()) { cartesianChart1.Series[0].Values.RemoveAt(0); @@ -218,15 +233,17 @@ namespace Wetterstation cartesianChart1.Series[2].Values.RemoveAt(0); cartesianChart1.Series[3].Values.RemoveAt(0); - if (weatherData["results"][0]["series"][0]["values"][96][2] == null) temp = 0; + //prüfen ob Daten geliefert wurden. Wenn icht Wert auf 0 ansonsten auf gelieferten Wert + if (weatherData["results"][0]["series"][0]["values"][96][1] == null) temp = 0; else temp = weatherData["results"][0]["series"][0]["values"][96][1]; - if (weatherData["results"][0]["series"][0]["values"][96][1] == null) humidity = 0; + if (weatherData["results"][0]["series"][0]["values"][96][2] == null) humidity = 0; else humidity = weatherData["results"][0]["series"][0]["values"][96][2]; if (weatherData["results"][0]["series"][0]["values"][96][3] == null) pressure = 0; else pressure = weatherData["results"][0]["series"][0]["values"][96][3]; if (weatherData["results"][0]["series"][0]["values"][96][4] == null) windSpeed = 0; else windSpeed = weatherData["results"][0]["series"][0]["values"][96][4]; + //Container mit Werten fuellen cartesianChart1.Series[0].Values.Add(Math.Round(temp, 1)); cartesianChart1.Series[1].Values.Add(humidity); cartesianChart1.Series[2].Values.Add(pressure); @@ -243,13 +260,17 @@ namespace Wetterstation Console.WriteLine(message); try { + //JSON Daten aufdroesseln dynamic weatherData = JsonConvert.DeserializeObject(message.ToString()); + //Wenn keine Daten von den Sensoren vorliegen nimm die Werte von Openweathermap if (!node1Out.temperature) { lbAussenTemp.Invoke(new Action(() => { lbAussenTemp.Text = weatherData.temp + " °C"; })); lbTempOutMin.Invoke(new Action(() => { lbTempOutMin.Text = weatherData.tempMin + " °C"; })); lbTempOutMax.Invoke(new Action(() => { lbTempOutMax.Text = weatherData.tempMax + " °C"; })); owm.Temperatures = weatherData.temp; + + //Tendenzpfeil entsprechend setzen u.o. ausblenden if (owm.tempTendenz() == -1) pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = false; })); else pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Visible = true; })); pbTendenzTempOut.Invoke(new Action(() => { pbTendenzTempOut.Image = RotateImage((Bitmap)global::Wetterstation.Properties.Resources.ResourceManager.GetObject("Tendenz"), owm.tempTendenz()); })); diff --git a/Wetterstation/SqliteDataAccess.cs b/Wetterstation/SqliteDataAccess.cs index d9a155b113cc9c32e750b4f2b634fc086ede2f74..981fc492eaa124f5ef3047182730b0551af8003c 100644 --- a/Wetterstation/SqliteDataAccess.cs +++ b/Wetterstation/SqliteDataAccess.cs @@ -10,6 +10,7 @@ namespace Wetterstation { public static SQLiteConnection _dbConnection; + //Settings aus der Datenbank auslesen public static SettingsModel LoadWeatherstationSettings() { using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString())) @@ -19,6 +20,7 @@ namespace Wetterstation } } + //Settings in der Datenbank abspeichern public static void SaveWeatherstationSettings(SettingsModel mqttSettings) { using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))