Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • wetterstation/frontend
  • d.eisold/frontend
  • Fuzzy/frontend
  • Klaus/frontend
4 results
Show changes
Showing
with 989 additions and 316 deletions
Wetterstation/Resources/Zahnrad1.png

7.06 KiB

Wetterstation/Resources/Zahnrad11.png

3.5 KiB

Wetterstation/Resources/Zahnrad12.png

3.5 KiB

Wetterstation/Resources/pfeil_oben.png

47.6 KiB

Wetterstation/Resources/pfeil_quer.png

60.1 KiB

File added
Wetterstation/Resources/pfeil_unten.png

47.7 KiB

Wetterstation/Resources/roterPfeil.png

15.1 KiB

using System;
using System.Collections.Generic;
namespace Wetterstation
{
/*
* Diese Klasse erstellt ein Sensor Object.
* Hiermit kann definiert werden welche Werte erfasst werden
* und Tendenzen berechnen.
*/
public class Sensor
{
public String host { get; set; }
public String name { get; set; }
public bool temperature { get; set; }
public bool humidity { get; set; }
public bool pressure { get; set; }
public bool co2 { get; set; }
public bool windSpeed { get; set; }
public bool windDegre { get; set; }
public bool rain { get; set; }
public bool snow { get; set; }
public double tempMin { get; set; }
public double tempMax { get; set; }
private List<double> _temperatures = new List<double>();
private List<double> _pressures = new List<double>();
private List<double> _humiditys = new List<double>();
/*
* Temperaturen in eine Liste schreiben. Nach zehn Werten,
* den aeltesten loeschen und den neuen anhaengen
*/
public double Temperatures
{
set
{
if (_temperatures.Count == 10)
{
_temperatures.RemoveAt(0);
}
_temperatures.Add(value);
}
}
/*
* Luftdruck in eine Liste schreiben. Nach zehn Werten,
* den aeltesten loeschen und den neuen anhaengen
*/
public double Pressures
{
set
{
if (_pressures.Count == 10)
{
_pressures.RemoveAt(0);
}
_pressures.Add(value);
}
}
/*
* Luftfeuchtigkeit in eine Liste schreiben. Nach zehn Werten,
* den aeltesten loeschen und den neuen anhaengen
*/
public double Humiditys
{
set
{
if (_humiditys.Count == 10)
{
_humiditys.RemoveAt(0);
}
_humiditys.Add(value);
}
}
/*
* Temperatur Tendenz berechnen
* In dieser Methode wird geschaut wie oft die Werte steigen (up),
* fallen (down) oder gleich (same) bleiben.
* Anhand dieser Werte wird berechnet ob die Temperatur eher steigen,
* fallen oder gleich bleiben wird.
*/
public float tempTendenz()
{
int up = 0;
int down = 0;
int same = 0;
double oldTemp = 0;
foreach (double temp in _temperatures)
{
if (temp > oldTemp)
{
up++;
oldTemp = temp;
}
else if (temp == oldTemp)
{
same++;
oldTemp = temp;
}
else
{
down++;
oldTemp = temp;
}
}
if ((up > 2 || down > 2) && _temperatures.Count == 10)
{
if (up > down) return 180;
else if (down > up) return 0;
else return -1;
}
else return -1;
}
/*
* Luftdruck Tendenz berechnen
* In dieser Methode wird geschaut wie oft die Werte steigen (up),
* fallen (down) oder gleich (same) bleiben.
* Anhand dieser Werte wird berechnet ob dir Luftdruck eher steigen,
* fallen oder gleich bleiben wird.
*/
public float pressureTendenz()
{
int up = 0;
int down = 0;
int same = 0;
double oldPressure = 0;
foreach (double pressure in _pressures)
{
if (pressure > oldPressure)
{
up++;
oldPressure = pressure;
}
else if (pressure == oldPressure)
{
same++;
oldPressure = pressure;
}
else
{
down++;
oldPressure = pressure;
}
}
if ((up > 2 || down > 2) && _pressures.Count == 10) {
if (up > down) return 180;
else if (down > up) return 0;
else return -1;
}
else return -1;
}
/*
* Luftfeuchtigkeit Tendenz berechnen
* In dieser Methode wird geschaut wie oft die Werte steigen (up),
* fallen (down) oder gleich (same) bleiben.
* Anhand dieser Werte wird berechnet ob die Luftfeuchtigkeit eher
* steigen, fallen oder gleich bleiben wird.
*/
public float humidityTendenz()
{
int up = 0;
int down = 0;
int same = 0;
double oldHumidity = 0;
foreach (double humidity in _humiditys)
{
if (humidity > oldHumidity)
{
up++;
oldHumidity = humidity;
}
else if( humidity == oldHumidity)
{
same++;
oldHumidity = humidity;
}
else
{
down++;
oldHumidity = humidity;
}
}
if ((up > 2 || down > 2) && _humiditys.Count == 10)
{
if (up > down) return 180;
else if (down > up) return 0;
else return -1;
}
else return -1;
}
public Settings Settings
{
get => default;
set
{
}
}
}
}
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
{
SettingsModel WeatherstationSettings = new SettingsModel();
// Initialisieren der Klasse
public Settings()
{
InitializeComponent();
lblFrontendId.Text = "Frontend Id: " + generateId();
}
private void TextBox2_TextChanged(object sender, EventArgs e)
{
lbFrontendId.Text = "Frontend Id: " + generateId();
Console.WriteLine("Daten werden aus DB ausgelesen ...");
WeatherstationSettings = SqliteDataAccess.LoadWeatherstationSettings();
}
private void Label1_Click(object sender, EventArgs e)
// Einstellungen aus dem Settings Objekt laden und Form ausfuellen
private void LoadWeatherstationSettings()
{
tbHost.Text = WeatherstationSettings.mqtt_host;
tbUser.Text = WeatherstationSettings.mqtt_user;
tbPasswort.Text = WeatherstationSettings.mqtt_pass;
tbTopicFrontend.Text = WeatherstationSettings.mqtt_topic_frontend;
tbTopicBackend.Text = WeatherstationSettings.mqtt_topic_backend;
tbQos.Text = WeatherstationSettings.mqtt_qos.ToString();
tbTimeout.Text = WeatherstationSettings.mqtt_timeout;
tbPort.Text = WeatherstationSettings.mqtt_port.ToString();
tbCity.Text = WeatherstationSettings.city;
txtPlz.Text = WeatherstationSettings.plz;
tbLngCode.Text = WeatherstationSettings.lngCode;
tbNode1.Text = WeatherstationSettings.node1Id;
tbNode1SensorInnen.Text = WeatherstationSettings.node1Innen;
tbNode1SensorAussen.Text = WeatherstationSettings.node1Aussen;
}
/*
* Eine einmalige ID erstellen um das Frontend im Backend zuweisen zu
* koennen. Hier wird die CPU Seriennummer ausgelesen, der angemeldete
* Benutzer angehaengt und daraus eine MD5 Summe gebildet.
*/
private String generateId()
{
String result = "Could not found id";
......@@ -38,15 +55,7 @@ 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;
result = queryObj["SerialNumber"] + Environment.UserName;
}
}
catch (ManagementException e) {
......@@ -57,18 +66,17 @@ namespace Wetterstation
return GetMd5Hash(md5Hash, result);
}
}
// Erstellt aus dem uebergebenen String eine MD5 Summe und gibt sie zurueck
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"));
......@@ -78,10 +86,72 @@ namespace Wetterstation
return sBuilder.ToString();
}
// Laedt die Einstellungen aus dem Settings Object
private void Settings_Load(object sender, EventArgs e)
{
Console.WriteLine("Bin in Settings_Load !!!!!!!");
LoadWeatherstationSettings();
acPlz();
}
// Ruft die PLZ und Ort Liste aus der SQLite ab fuer die autocompletion Textbox
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
private void Button1_Click(object sender, EventArgs e)
{
SettingsModel mqttSettings = new SettingsModel();
mqttSettings.mqtt_host = tbHost.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 = txtPlz.Text;
mqttSettings.city = tbCity.Text;
mqttSettings.lngCode = tbLngCode.Text;
mqttSettings.node1Id = tbNode1.Text;
mqttSettings.node1Innen = tbNode1SensorInnen.Text;
mqttSettings.node1Aussen = tbNode1SensorAussen.Text;
Console.WriteLine("Speichere Settings ");
SqliteDataAccess.SaveWeatherstationSettings(mqttSettings);
this.Close();
}
// Nach jedem Tastendruck, das Textfeld mit der Ort/PLZ Liste vergleichen
private void tbCity_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
{
String strTemp = tbCity.Text;
txtPlz.Text = strTemp.Split(' ').Last();
}
}
private void TxtPlz_Click(object sender, EventArgs e)
{
}
}
}
File added
namespace Wetterstation
{
//Klasse fuer die Datenbankeintraege
public class SettingsModel
{
public string mqtt_host { get; set; }
public string mqtt_user { get; set; }
public string mqtt_pass { get; set; }
public string mqtt_topic_frontend { get; set; }
public string mqtt_topic_backend { get; set; }
public int mqtt_qos { get; set; }
public string mqtt_timeout { get; set; }
public int mqtt_port { get; set; }
public string frontendId { get; set; }
public string plz { get; set; }
public string city { get; set; }
public string lngCode { get; set; }
public string node1Id { get; set; }
public string node1Innen { get; set; }
public string node1Aussen { get; set; }
public Hintergrund Hintergrund
{
get => default;
set
{
}
}
internal Properties.Resources Resources
{
get => default;
set
{
}
}
}
}
using Dapper;
using System.Configuration;
using System.Data;
using System.Data.SQLite;
using System.Linq;
namespace Wetterstation
{
//Hier werden die Datenbankzugriffe fuer die frontend.db geregelt
public static class SqliteDataAccess
{
public static SQLiteConnection _dbConnection;
public static Settings Settings
{
get => default;
set
{
}
}
public static Sensor Sensor
{
get => default;
set
{
}
}
//Settings aus der Datenbank auslesen
public static SettingsModel LoadWeatherstationSettings()
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
var output = cnn.Query<SettingsModel>("SELECT * FROM settings LIMIT 1;");
return output.FirstOrDefault();
}
}
//Settings in der Datenbank abspeichern
public static void SaveWeatherstationSettings(SettingsModel mqttSettings)
{
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, " +
"frontendId = @frontendId, " +
"lngCode = @lngCode, " +
"plz = @plz, " +
"city = @city, " +
"node1Id = @node1Id, " +
"node1Innen = @node1Innen, " +
"node1Aussen = @node1Aussen;",
mqttSettings);
}
}
//holt den ConnectionString aus der App.config (siehe ProjektmappenExplorer)
private static string LoadConnectionString(string id = "Default")
{
return ConfigurationManager.ConnectionStrings[id].ConnectionString;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
......@@ -12,6 +13,24 @@
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
......@@ -32,20 +51,61 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>E92626C81C3EFE74A0B14B4F00C3EFD049AAE0AC</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>Wetterstation_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>
<ItemGroup>
<Reference Include="Dapper, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapper.2.0.30\lib\net461\Dapper.dll</HintPath>
</Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="LiveCharts, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.0.9.7\lib\net45\LiveCharts.dll</HintPath>
</Reference>
<Reference Include="LiveCharts.WinForms, Version=0.9.7.1, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.WinForms.0.9.7.1\lib\net45\LiveCharts.WinForms.dll</HintPath>
</Reference>
<Reference Include="LiveCharts.Wpf, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.Wpf.0.9.7\lib\net45\LiveCharts.Wpf.dll</HintPath>
</Reference>
<Reference Include="M2Mqtt.Net, Version=4.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\M2Mqtt.4.3.0.0\lib\net45\M2Mqtt.Net.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net46\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.EF6, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.112.0\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.112.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
......@@ -55,8 +115,13 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Sensor.cs" />
<Compile Include="SqliteDataAccess.cs" />
<Compile Include="SettingsModel.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
......@@ -71,6 +136,12 @@
<Compile Include="Settings.Designer.cs">
<DependentUpon>Settings.cs</DependentUpon>
</Compile>
<None Include="ClassDiagram1.cd" />
<None Include="Resources\Tendenz.bmp" />
<None Include="Resources\pfeil_quer.png" />
<None Include="Resources\pfeil_oben.png" />
<None Include="Resources\pfeil_unten.png" />
<None Include="Resources\WindRose_neu2.png" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
......@@ -87,6 +158,9 @@
<EmbeddedResource Include="Settings.resx">
<DependentUpon>Settings.cs</DependentUpon>
</EmbeddedResource>
<Content Include="frontend.db">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
......@@ -97,6 +171,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Wetterstation_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
......@@ -138,6 +213,32 @@
<Content Include="Resources\13n%402x.png" />
<Content Include="Resources\50d%402x.png" />
<Content Include="Resources\50n%402x.png" />
<None Include="Resources\Zahnrad12.png" />
<None Include="Resources\Zahnrad11.png" />
<None Include="Resources\Zahnrad1.png" />
<None Include="Resources\Zahnrad.png" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 und x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\System.Data.SQLite.Core.1.0.112.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.112.0\build\net46\System.Data.SQLite.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.112.0\build\net46\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.112.0\build\net46\System.Data.SQLite.Core.targets'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" />
</Target>
<Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ProjectFiles</ProjectView>
<PublishUrlHistory />
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>de-DE</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
</PropertyGroup>
</Project>
\ No newline at end of file
File added
File added
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Dapper" version="2.0.30" targetFramework="net472" />
<package id="EntityFramework" version="6.4.0" targetFramework="net472" />
<package id="LiveCharts" version="0.9.7" targetFramework="net472" />
<package id="LiveCharts.WinForms" version="0.9.7.1" targetFramework="net472" />
<package id="LiveCharts.Wpf" version="0.9.7" targetFramework="net472" />
<package id="M2Mqtt" version="4.3.0.0" targetFramework="net472" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" />
<package id="System.Data.SQLite" version="1.0.112.0" targetFramework="net472" />
<package id="System.Data.SQLite.Core" version="1.0.112.0" targetFramework="net472" />
<package id="System.Data.SQLite.EF6" version="1.0.112.0" targetFramework="net472" />
<package id="System.Data.SQLite.Linq" version="1.0.112.0" targetFramework="net472" />
</packages>
\ No newline at end of file