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

Merge branch 'master' into 'master'

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

See merge request wetterstation/frontend!13
parents 115a208b 21ef1305
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
using System; using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages; using uPLibrary.Networking.M2Mqtt.Messages;
...@@ -16,59 +11,16 @@ namespace Wetterstation ...@@ -16,59 +11,16 @@ namespace Wetterstation
public partial class Hintergrund : Form public partial class Hintergrund : Form
{ {
private MqttClient myClient; private MqttClient myClient;
SettingsModel WeatherstationSettings = new SettingsModel();
public Hintergrund() public Hintergrund()
{ {
InitializeComponent(); InitializeComponent();
WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
lbCity.Text = WeatherstationSettings.city;
mqttStart(); 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) private void LED_Click(object sender, EventArgs e)
{ {
...@@ -110,46 +62,6 @@ namespace Wetterstation ...@@ -110,46 +62,6 @@ namespace Wetterstation
formGraphics.Dispose(); 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 //MQTT connect
public void mqttStart() public void mqttStart()
{ {
...@@ -172,25 +84,11 @@ namespace Wetterstation ...@@ -172,25 +84,11 @@ namespace Wetterstation
this.myClient.Publish(topic_publish, Encoding.UTF8.GetBytes("Request_frontend")); 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) 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)); this.myClient.Publish(topic, Encoding.UTF8.GetBytes(message));
} }
...@@ -200,19 +98,42 @@ namespace Wetterstation ...@@ -200,19 +98,42 @@ namespace Wetterstation
var message = System.Text.Encoding.Default.GetString(e.Message); var message = System.Text.Encoding.Default.GetString(e.Message);
System.Console.WriteLine("Message received: " + 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 ...@@ -18,9 +18,8 @@ namespace Wetterstation
static void Main() static void Main()
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Hintergrund()); Application.Run(new Hintergrund());
Application.Run(new Settings());
} }
} }
} }
This diff is collapsed.
using System; using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Management; using System.Management;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Configuration;
using System.Data.SQLite;
using System.Linq;
namespace Wetterstation namespace Wetterstation
{ {
public partial class Settings : Form public partial class Settings : Form
{ {
//List<SettingsModel> WeatherstationSettings = new List<SettingsModel>();
SettingsModel WeatherstationSettings = new SettingsModel(); SettingsModel WeatherstationSettings = new SettingsModel();
public Settings() public Settings()
{ {
InitializeComponent(); InitializeComponent();
lblFrontendId.Text = "Frontend Id: " + generateId(); lbFrontendId.Text = "Frontend Id: " + generateId();
//SqliteDataAccess.CreateAndOpenDb();
Console.WriteLine("Daten werden aus DB ausgelesen ..."); Console.WriteLine("Daten werden aus DB ausgelesen ...");
WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings(); WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
//Console.WriteLine("Ausgabe der Daten:" + WeatherstationSettings.mqtt_host);
//WeatherstationSettings = LoadWeatherstationSettings();
//Console.WriteLine("Ausgabe der Daten:" + WeatherstationSettings.;
} }
private void LoadWeatherstationSettings() private void LoadWeatherstationSettings()
{ {
//WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
//SqliteDataAccess.CreateAndOpenDb();
//WeatherstationSettings = SqliteDataAccess.GetUserByName();
tbHost.Text = WeatherstationSettings.mqtt_host; tbHost.Text = WeatherstationSettings.mqtt_host;
tbUser.Text = WeatherstationSettings.mqtt_user; tbUser.Text = WeatherstationSettings.mqtt_user;
tbPasswort.Text = WeatherstationSettings.mqtt_pass; tbPasswort.Text = WeatherstationSettings.mqtt_pass;
tbTopicFrontend.Text = WeatherstationSettings.mqtt_topic_frontend; tbTopicFrontend.Text = WeatherstationSettings.mqtt_topic_frontend;
tbTobicBackend.Text = WeatherstationSettings.mqtt_topic_backend; tbTopicBackend.Text = WeatherstationSettings.mqtt_topic_backend;
tbQos.Text = WeatherstationSettings.mqtt_qos.ToString(); tbQos.Text = WeatherstationSettings.mqtt_qos.ToString();
tbTimeout.Text = WeatherstationSettings.mqtt_timeout; tbTimeout.Text = WeatherstationSettings.mqtt_timeout;
tbPort.Text = WeatherstationSettings.mqtt_port.ToString(); tbPort.Text = WeatherstationSettings.mqtt_port.ToString();
tbPlz.Text = WeatherstationSettings.plz.ToString(); tbCity.Text = WeatherstationSettings.city;
} txtPlz.Text = WeatherstationSettings.plz;
tbLngCode.Text = WeatherstationSettings.lngCode;
private void TextBox2_TextChanged(object sender, EventArgs e)
{
}
private void Label1_Click(object sender, EventArgs e)
{
} }
private String generateId() private String generateId()
...@@ -65,14 +45,6 @@ namespace Wetterstation ...@@ -65,14 +45,6 @@ namespace Wetterstation
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor"); ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
foreach (ManagementObject queryObj in searcher.Get()) { 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; result = queryObj["ProcessorId"] + Environment.UserName;
} }
} }
...@@ -84,18 +56,16 @@ namespace Wetterstation ...@@ -84,18 +56,16 @@ namespace Wetterstation
return GetMd5Hash(md5Hash, result); return GetMd5Hash(md5Hash, result);
} }
} }
private string GetMd5Hash(MD5 md5Hash, string input) private string GetMd5Hash(MD5 md5Hash, string input)
{ {
// Convert the input string to a byte array and compute the hash. // Convert the input string to a byte array and compute the hash.
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
// Create a new Stringbuilder to collect the bytes // Create a new Stringbuilder to collect the bytes and create a string.
// and create a string.
StringBuilder sBuilder = new StringBuilder(); StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data // Loop through each byte of the hashed data and format each one as a hexadecimal string.
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++) for (int i = 0; i < data.Length; i++)
{ {
sBuilder.Append(data[i].ToString("x2")); sBuilder.Append(data[i].ToString("x2"));
...@@ -109,11 +79,24 @@ namespace Wetterstation ...@@ -109,11 +79,24 @@ namespace Wetterstation
{ {
Console.WriteLine("Bin in Settings_Load !!!!!!!"); Console.WriteLine("Bin in Settings_Load !!!!!!!");
LoadWeatherstationSettings(); 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 //SettingsForm in SettingsModell ablegen
...@@ -122,16 +105,17 @@ namespace Wetterstation ...@@ -122,16 +105,17 @@ namespace Wetterstation
SettingsModel mqttSettings = new SettingsModel(); SettingsModel mqttSettings = new SettingsModel();
mqttSettings.mqtt_host = tbHost.Text; mqttSettings.mqtt_host = tbHost.Text;
mqttSettings.mqtt_user = tbPasswort.Text; mqttSettings.mqtt_user = tbUser.Text;
mqttSettings.mqtt_pass = tbTopicFrontend.Text; mqttSettings.mqtt_pass = tbPasswort.Text;
mqttSettings.mqtt_topic_frontend = tbTobicBackend.Text; mqttSettings.mqtt_topic_frontend = tbTopicFrontend.Text;
mqttSettings.mqtt_topic_backend = tbQos.Text; mqttSettings.mqtt_topic_backend = tbTopicBackend.Text;
mqttSettings.mqtt_qos = Int32.Parse(tbQos.Text); mqttSettings.mqtt_qos = Int32.Parse(tbQos.Text);
mqttSettings.mqtt_timeout = tbTimeout.Text; mqttSettings.mqtt_timeout = tbTimeout.Text;
mqttSettings.mqtt_port = Int32.Parse(tbPort.Text); mqttSettings.mqtt_port = Int32.Parse(tbPort.Text);
mqttSettings.frontendId = generateId(); //wird automatisch berechnet und gesetzt und soll nicht geändert werden mqttSettings.frontendId = generateId(); //wird automatisch berechnet und gesetzt und soll nicht geändert werden
mqttSettings.plz = Int16.Parse(tbPlz.Text); mqttSettings.plz = txtPlz.Text;
mqttSettings.city = tbPlz.Text; mqttSettings.city = tbCity.Text;
mqttSettings.lngCode = tbLngCode.Text;
Console.WriteLine("Speichere Settings "); Console.WriteLine("Speichere Settings ");
SqliteDataAccess.SaveWeatherstationSettings(mqttSettings); SqliteDataAccess.SaveWeatherstationSettings(mqttSettings);
...@@ -139,41 +123,13 @@ namespace Wetterstation ...@@ -139,41 +123,13 @@ namespace Wetterstation
this.Close(); this.Close();
} }
private void TextBox1_TextChanged(object sender, EventArgs e) private void tbCity_KeyDown(object sender, KeyEventArgs e)
{ {
if (e.KeyData == Keys.Enter)
} {
String strTemp = tbCity.Text;
private void TbSettingsClient_TextChanged(object sender, EventArgs e) txtPlz.Text = strTemp.Split(' ').Last();
{ }
}
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();
} }
} }
} }
using System; namespace Wetterstation
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Wetterstation
{ {
public class SettingsModel public class SettingsModel
{ {
...@@ -26,8 +20,10 @@ namespace Wetterstation ...@@ -26,8 +20,10 @@ namespace Wetterstation
public string frontendId { get; set; } public string frontendId { get; set; }
public int plz { get; set; } public string plz { get; set; }
public string city { get; set; } public string city { get; set; }
public string lngCode { get; set; }
} }
} }
using Dapper; using Dapper;
using System;
using System.Collections.Generic;
using System.Configuration; using System.Configuration;
using System.Data; using System.Data;
using System.Data.SQLite; using System.Data.SQLite;
using System.IO;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace Wetterstation namespace Wetterstation
{ {
public static class SqliteDataAccess public static class SqliteDataAccess
{ {
public static SQLiteConnection _dbConnection; 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() public static SettingsModel LoadWeatherstationSettings()
{ {
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString())) using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{ {
var output = cnn.Query<SettingsModel>("SELECT * FROM settings LIMIT 1;"); var output = cnn.Query<SettingsModel>("SELECT * FROM settings LIMIT 1;");
//Console.WriteLine("Der Horst ist:" + output.ToString);
return output.FirstOrDefault(); return output.FirstOrDefault();
} }
} }
public static void SaveWeatherstationSettings(SettingsModel mqttSettings) public static void SaveWeatherstationSettings(SettingsModel mqttSettings)
{ {
//Console.WriteLine("Port aus DB ..." + mqttSettings.dbMqttHost);
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString())) 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) //holt den ConnectionString aus der App.config (siehe ProjektmappenExplorer)
private static string LoadConnectionString(string id = "Default") private static string LoadConnectionString(string id = "Default")
{ {
return ConfigurationManager.ConnectionStrings[id].ConnectionString; 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