Skip to content
Snippets Groups Projects
Commit 21ef1305 authored by Dennis Eisold's avatar Dennis Eisold
Browse files

Finished settings dialog closes:#7 closes:#4 closes:#3

parent 115a208b
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
......@@ -16,59 +11,16 @@ namespace Wetterstation
public partial class Hintergrund : Form
{
private MqttClient myClient;
SettingsModel WeatherstationSettings = new SettingsModel();
public Hintergrund()
{
InitializeComponent();
WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
lbCity.Text = WeatherstationSettings.city;
mqttStart();
}
private void InnenTemp_TextChanged(object sender, EventArgs e)
{
}
private void AussenTemp_TextChanged(object sender, EventArgs e)
{
}
private void WindSpeed_TextChanged(object sender, EventArgs e)
{
}
private void LuftFeucht_TextChanged(object sender, EventArgs e)
{
}
private void WindRicht_TextChanged(object sender, EventArgs e)
{
}
private void Uhrzeit_Click(object sender, EventArgs e)
{
}
private void HierAussen_Click(object sender, EventArgs e)
{
}
private void Windgeschwindigkeit_Click(object sender, EventArgs e)
{
}
private void HierDatum_Click(object sender, EventArgs e)
{
}
private void LED_Click(object sender, EventArgs e)
{
......@@ -110,46 +62,6 @@ namespace Wetterstation
formGraphics.Dispose();
}
private void HierUhr_Click(object sender, EventArgs e)
{
}
private void HierInnen_Click(object sender, EventArgs e)
{
}
private void HierInnen_BackColorChanged(object sender, EventArgs e)
{
}
private void LbTextLuftfeucht_Click(object sender, EventArgs e)
{
}
private void PicTg2_Click(object sender, EventArgs e)
{
}
private void PictureBox1_Click(object sender, EventArgs e)
{
}
private void Hintergrund_Load(object sender, EventArgs e)
{
}
private void LbLuftfeuchtAussen_Click(object sender, EventArgs e)
{
}
//MQTT connect
public void mqttStart()
{
......@@ -172,25 +84,11 @@ namespace Wetterstation
this.myClient.Publish(topic_publish, Encoding.UTF8.GetBytes("Request_frontend"));
}
public void updateForm(String message)
{
try
{
dynamic weatherData = JsonConvert.DeserializeObject(message.ToString());
//hierAussen.Invoke(new Action(() => { hierAussen.Text = weatherData.current.temp + " °C"; }));
lbAussenTemp.Invoke(new Action(() => { lbAussenTemp.Text = weatherData.sensors[1].temperature + " °C"; }));
//lbLuftFeuchtInnen.Invoke(new Action(() => { lbLuftFeuchtInnen.Text = weatherData.sensors[0].humidity + " %"; }));
//lblpressure.Invoke(new Action(() => { lblpressure.Text = weatherData.result.current.pressure; }));
//lblrain3h.Invoke(new Action(() => { lblrain3h.Text = weatherData.result.current.rain3h; }));
//lblsnow3h.Invoke(new Action(() => { lblsnow3h.Text = weatherData.result.current.snow3h; }));
//lbltemp.Invoke(new Action(() => { lbltemp.Text = weatherData.result.current.temp; }));
}
catch (Exception ignored) { }
}
public void msgPublish(String topic, String message)
{
Console.Write("Sending via MQTT: ");
Console.Write("Topic: " + topic);
Console.WriteLine("Message: " + message);
this.myClient.Publish(topic, Encoding.UTF8.GetBytes(message));
}
......@@ -200,19 +98,42 @@ namespace Wetterstation
var message = System.Text.Encoding.Default.GetString(e.Message);
System.Console.WriteLine("Message received: " + message);
this.updateForm(message);
this.updateFormWeather(message);
}
private void BtSystemKnopf_Click(object sender, EventArgs e)
{
Form settings = new Settings();
// abhängig von Form1
settings.ShowDialog();
updateFormComplete();
this.updateSettings2Mqtt();
}
public void updateFormWeather(String message)
{
try
{
dynamic weatherData = JsonConvert.DeserializeObject(message.ToString());
lbAussenTemp.Invoke(new Action(() => { lbAussenTemp.Text = weatherData.sensors[1].temperature + " °C"; }));
}
catch (Exception ignored) { }
}
private void LbLuftFeuchtInnen_Click(object sender, EventArgs e)
public void updateFormComplete()
{
WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
lbCity.Text = WeatherstationSettings.city;
}
public void updateSettings2Mqtt()
{
Console.WriteLine(JsonConvert.SerializeObject(WeatherstationSettings).ToString());
this.msgPublish(WeatherstationSettings.mqtt_topic_backend + WeatherstationSettings.frontendId + "/settings", JsonConvert.SerializeObject(WeatherstationSettings).ToString());
}
private void BtSystemKnopf_Click(object sender, EventArgs e)
private void Hintergrund_Load(object sender, EventArgs e)
{
Form frm = new Settings();
// abhängig von Form1
frm.Show(this);
}
}
......
......@@ -18,9 +18,8 @@ namespace Wetterstation
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Hintergrund());
Application.Run(new Settings());
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Hintergrund());
}
}
}
This diff is collapsed.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.Configuration;
using System.Data.SQLite;
using System.Linq;
namespace Wetterstation
{
public partial class Settings : Form
{
//List<SettingsModel> WeatherstationSettings = new List<SettingsModel>();
SettingsModel WeatherstationSettings = new SettingsModel();
public Settings()
{
InitializeComponent();
lblFrontendId.Text = "Frontend Id: " + generateId();
lbFrontendId.Text = "Frontend Id: " + generateId();
//SqliteDataAccess.CreateAndOpenDb();
Console.WriteLine("Daten werden aus DB ausgelesen ...");
WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
//Console.WriteLine("Ausgabe der Daten:" + WeatherstationSettings.mqtt_host);
//WeatherstationSettings = LoadWeatherstationSettings();
//Console.WriteLine("Ausgabe der Daten:" + WeatherstationSettings.;
}
private void LoadWeatherstationSettings()
{
//WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
//SqliteDataAccess.CreateAndOpenDb();
//WeatherstationSettings = SqliteDataAccess.GetUserByName();
tbHost.Text = WeatherstationSettings.mqtt_host;
tbUser.Text = WeatherstationSettings.mqtt_user;
tbPasswort.Text = WeatherstationSettings.mqtt_pass;
tbTopicFrontend.Text = WeatherstationSettings.mqtt_topic_frontend;
tbTobicBackend.Text = WeatherstationSettings.mqtt_topic_backend;
tbTopicBackend.Text = WeatherstationSettings.mqtt_topic_backend;
tbQos.Text = WeatherstationSettings.mqtt_qos.ToString();
tbTimeout.Text = WeatherstationSettings.mqtt_timeout;
tbPort.Text = WeatherstationSettings.mqtt_port.ToString();
tbPlz.Text = WeatherstationSettings.plz.ToString();
}
private void TextBox2_TextChanged(object sender, EventArgs e)
{
}
private void Label1_Click(object sender, EventArgs e)
{
tbCity.Text = WeatherstationSettings.city;
txtPlz.Text = WeatherstationSettings.plz;
tbLngCode.Text = WeatherstationSettings.lngCode;
}
private String generateId()
......@@ -65,14 +45,6 @@ namespace Wetterstation
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
foreach (ManagementObject queryObj in searcher.Get()) {
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_Processor instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Architecture: {0}", queryObj["Architecture"]);
Console.WriteLine("Caption: {0}", queryObj["Caption"]);
Console.WriteLine("Family: {0}", queryObj["Family"]);
Console.WriteLine("ProcessorId: {0}", queryObj["ProcessorId"]);
Console.WriteLine("Username: {0}", Environment.UserName);
result = queryObj["ProcessorId"] + Environment.UserName;
}
}
......@@ -84,18 +56,16 @@ namespace Wetterstation
return GetMd5Hash(md5Hash, result);
}
}
private string GetMd5Hash(MD5 md5Hash, string input)
{
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
// Create a new Stringbuilder to collect the bytes and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
// Loop through each byte of the hashed data and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
......@@ -109,11 +79,24 @@ namespace Wetterstation
{
Console.WriteLine("Bin in Settings_Load !!!!!!!");
LoadWeatherstationSettings();
acPlz();
}
private void TbSettingsHost_TextChanged(object sender, EventArgs e)
public void acPlz()
{
using (SQLiteConnection con = new SQLiteConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))
{
SQLiteCommand com = new SQLiteCommand("SELECT ort || ', ' || plz AS plzort, ort, plz FROM plz_ort", con);
con.Open();
SQLiteDataReader dr = com.ExecuteReader();
AutoCompleteStringCollection myCollection = new AutoCompleteStringCollection();
while (dr.Read())
{
myCollection.Add(dr.GetString(0));
}
tbCity.AutoCompleteCustomSource = myCollection;
con.Close();
}
}
//SettingsForm in SettingsModell ablegen
......@@ -122,16 +105,17 @@ namespace Wetterstation
SettingsModel mqttSettings = new SettingsModel();
mqttSettings.mqtt_host = tbHost.Text;
mqttSettings.mqtt_user = tbPasswort.Text;
mqttSettings.mqtt_pass = tbTopicFrontend.Text;
mqttSettings.mqtt_topic_frontend = tbTobicBackend.Text;
mqttSettings.mqtt_topic_backend = tbQos.Text;
mqttSettings.mqtt_user = tbUser.Text;
mqttSettings.mqtt_pass = tbPasswort.Text;
mqttSettings.mqtt_topic_frontend = tbTopicFrontend.Text;
mqttSettings.mqtt_topic_backend = tbTopicBackend.Text;
mqttSettings.mqtt_qos = Int32.Parse(tbQos.Text);
mqttSettings.mqtt_timeout = tbTimeout.Text;
mqttSettings.mqtt_port = Int32.Parse(tbPort.Text);
mqttSettings.frontendId = generateId(); //wird automatisch berechnet und gesetzt und soll nicht geändert werden
mqttSettings.plz = Int16.Parse(tbPlz.Text);
mqttSettings.city = tbPlz.Text;
mqttSettings.plz = txtPlz.Text;
mqttSettings.city = tbCity.Text;
mqttSettings.lngCode = tbLngCode.Text;
Console.WriteLine("Speichere Settings ");
SqliteDataAccess.SaveWeatherstationSettings(mqttSettings);
......@@ -139,41 +123,13 @@ namespace Wetterstation
this.Close();
}
private void TextBox1_TextChanged(object sender, EventArgs e)
private void tbCity_KeyDown(object sender, KeyEventArgs e)
{
}
private void TbSettingsClient_TextChanged(object sender, EventArgs e)
{
}
private void LbSettingsClient_Click(object sender, EventArgs e)
{
}
private void TbSettingsHost_TextChanged(object sender, EventArgs e)
{
}
private void LbSettingsHost_Click(object sender, EventArgs e)
{
}
private void LbSettingsUser_Click(object sender, EventArgs e)
{
}
private void BtSichern_Click(object sender, EventArgs e)
{
this.Close();
if (e.KeyData == Keys.Enter)
{
String strTemp = tbCity.Text;
txtPlz.Text = strTemp.Split(' ').Last();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Wetterstation
namespace Wetterstation
{
public class SettingsModel
{
......@@ -26,8 +20,10 @@ namespace Wetterstation
public string frontendId { get; set; }
public int plz { get; set; }
public string plz { get; set; }
public string city { get; set; }
public string lngCode { get; set; }
}
}
using Dapper;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace Wetterstation
{
public static class SqliteDataAccess
{
public static SQLiteConnection _dbConnection;
//public static void CreateAndOpenDb()
//{
// //var dbFilePath = "./TestDb.sqlite";
// var dbFilePath = "./frontend.db";
// if (!File.Exists(dbFilePath))
// {
// SQLiteConnection.CreateFile(dbFilePath);
// }
// _dbConnection = new SQLiteConnection(string.Format(
// "Data Source={0};Version=3;", dbFilePath));
// _dbConnection.Open();
//}
public static SettingsModel LoadWeatherstationSettings()
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
var output = cnn.Query<SettingsModel>("SELECT * FROM settings LIMIT 1;");
//Console.WriteLine("Der Horst ist:" + output.ToString);
return output.FirstOrDefault();
}
}
public static void SaveWeatherstationSettings(SettingsModel mqttSettings)
{
//Console.WriteLine("Port aus DB ..." + mqttSettings.dbMqttHost);
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
cnn.Execute("UPDATE settings SET mqtt_host = @mqtt_host, mqtt_user = @mqtt_user, mqtt_pass = @mqtt_pass, mqtt_topic_frontend = @mqtt_topic_frontend, mqtt_topic_backend = @mqtt_topic_backend, mqtt_qos = @mqtt_qos, mqtt_timeout = @mqtt_timeout, mqtt_port = @mqtt_port, plz = @plz;", mqttSettings);
cnn.Execute("UPDATE settings " +
"SET mqtt_host = @mqtt_host, " +
"mqtt_user = @mqtt_user, " +
"mqtt_pass = @mqtt_pass, " +
"mqtt_topic_frontend = @mqtt_topic_frontend, " +
"mqtt_topic_backend = @mqtt_topic_backend, " +
"mqtt_qos = @mqtt_qos, " +
"mqtt_timeout = @mqtt_timeout, " +
"mqtt_port = @mqtt_port, " +
"frontendId = @frontendId, " +
"lngCode = @lngCode, " +
"plz = @plz, " +
"city = @city;",
mqttSettings);
}
}
//holt den ConnectionString aus der App.config (siehe ProjektmappenExplorer)
private static string LoadConnectionString(string id = "Default")
{
return ConfigurationManager.ConnectionStrings[id].ConnectionString;
}
//public static SettingsModel GetUserByName()
//{
// var userCollection = _dbConnection.Query<SettingsModel>("SELECT * FROM settings LIMIT 1;");
// //new { Port = port });
// return userCollection.FirstOrDefault();
//}
//public static void SaveWeatherstationSettings(SettingsModel mqttSettings)
//{
// _dbConnection.ExecuteNonQuery(@"UPDATE settings SET mqtt_host = @mqtt_host, mqtt_user = @mqtt_user, mqtt_pass = @mqtt_pass, mqtt_topic_frontend = @mqtt_topic_frontend, mqtt_topic_backend = @mqtt_topic_backend, mqtt_qos = @mqtt_qos, mqtt_timeout = @mqtt_timeout, mqtt_port = @mqtt_port, plz = @plz, city = @city ; ");
//}
//
}
}
// public static SettingsModel LoadWeatherstationSettings()
// {
// using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
// {
// var output = cnn.Query<SettingsModel>("select * from settings where mqtt_port=1883");
// //Console.WriteLine("Der Horst ist:" + output.ToString);
// return output.FirstOrDefault();
// }
// }
// public static void SaveWeatherstationSettings(SettingsModel mqttSettings)
// {
// Console.WriteLine("Port aus DB ..." + mqttSettings.dbMqttHost);
// using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
// {
// cnn.Execute("UPDATE settings SET mqtt_host = @mqtt_host, mqtt_user = @mqtt_user, mqtt_pass = @mqtt_pass, mqtt_topic_frontend = @mqtt_topic_frontend, mqtt_topic_backend = @mqtt_topic_backend, mqtt_qos = @mqtt_qos, mqtt_timeout = @mqtt_timeout, mqtt_port = @mqtt_port, plz = @plz, city = @city ;");
// }
// }
//}
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment