diff --git a/Wetterstation/Form1.cs b/Wetterstation/Form1.cs index 252690f98d7a173440d2a6f4de3c2d40ed73d407..e6e8d636e30a8c41c215dc65aa3fbd5073de2ecd 100644 --- a/Wetterstation/Form1.cs +++ b/Wetterstation/Form1.cs @@ -16,16 +16,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; @@ -38,6 +47,8 @@ namespace Wetterstation mqttStart(); updateChart(); } + + //Historiediagramm auf den neuesten Stand bringen private void updateChart() { cartesianChart1.Series = new SeriesCollection @@ -117,6 +128,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(); @@ -191,6 +204,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"]) { @@ -212,6 +226,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); @@ -219,15 +234,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); @@ -244,13 +261,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()))