[NF] Create Senml Messages for Linksmart
This commit is contained in:
parent
797353084f
commit
7f22507cfc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
20
IoT/Interfaces/IMqtt.cs
Normal file
20
IoT/Interfaces/IMqtt.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace BlubbFish.Utils.IoT.Interfaces {
|
||||||
|
public interface IMqtt {
|
||||||
|
/// <summary>
|
||||||
|
/// Gibt einen JSON-String der Eigenschaften eines Objekts zurück
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>JSON-String</returns>
|
||||||
|
String ToJson();
|
||||||
|
/// <summary>
|
||||||
|
/// Gibt das MQTT-Topic als String zurück unter dem die Daten des Objekts Publiziert werden sollen
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>MQTT-Topic</returns>
|
||||||
|
String MqttTopic();
|
||||||
|
}
|
||||||
|
}
|
20
IoT/Interfaces/ISenml.cs
Normal file
20
IoT/Interfaces/ISenml.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace BlubbFish.Utils.IoT.Interfaces {
|
||||||
|
public interface ISenml {
|
||||||
|
/// <summary>
|
||||||
|
/// Gibt einen Senml-JSON-String der Eigenschaften eines Objekts zurück
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Senml-JSON-String</returns>
|
||||||
|
String ToSenml();
|
||||||
|
/// <summary>
|
||||||
|
/// Gibt das Senml-Topic als String zurück unter dem die Daten des Objekts Publiziert werden sollen
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Senml-Topic</returns>
|
||||||
|
String SenmlTopic();
|
||||||
|
}
|
||||||
|
}
|
50
IoT/Interfaces/Iot-Interfaces.csproj
Normal file
50
IoT/Interfaces/Iot-Interfaces.csproj
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{4DAADA29-C600-4CF3-8AD3-9C97C8D7F632}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>BlubbFish.Utils.IoT.Interfaces</RootNamespace>
|
||||||
|
<AssemblyName>Iot-Interfaces</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="ISenml.cs" />
|
||||||
|
<Compile Include="IMqtt.cs" />
|
||||||
|
<Compile Include="Language\Senml.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
60
IoT/Interfaces/Language/Senml.cs
Normal file
60
IoT/Interfaces/Language/Senml.cs
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace BlubbFish.Utils.IoT.Interfaces.Language {
|
||||||
|
public abstract class Senml {
|
||||||
|
#pragma warning disable IDE1006 // Benennungsstile
|
||||||
|
public String n { get; }
|
||||||
|
public String u { get; }
|
||||||
|
public Int32 t { get; }
|
||||||
|
#pragma warning restore IDE1006 // Benennungsstile
|
||||||
|
|
||||||
|
public enum Units {
|
||||||
|
[Description("%")]
|
||||||
|
Percent,
|
||||||
|
[Description("count")]
|
||||||
|
CounterValue,
|
||||||
|
[Description("W")]
|
||||||
|
Watt,
|
||||||
|
[Description("J")]
|
||||||
|
Joule,
|
||||||
|
[Description("Cel")]
|
||||||
|
Celsius
|
||||||
|
}
|
||||||
|
|
||||||
|
public Senml(String name, Units unit) {
|
||||||
|
this.n = name;
|
||||||
|
this.u = this.GetEnumDescription(unit);
|
||||||
|
this.t = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String GetEnumDescription(Enum value) {
|
||||||
|
FieldInfo fi = value.GetType().GetField(value.ToString());
|
||||||
|
|
||||||
|
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||||
|
|
||||||
|
if (attributes != null && attributes.Length > 0) {
|
||||||
|
return attributes[0].Description;
|
||||||
|
} else {
|
||||||
|
return value.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class SenmlBool : Senml {
|
||||||
|
#pragma warning disable IDE1006 // Benennungsstile
|
||||||
|
public Boolean bv { get; }
|
||||||
|
#pragma warning restore IDE1006 // Benennungsstile
|
||||||
|
public SenmlBool(String name, Units unit, Boolean level) : base(name, unit) {
|
||||||
|
this.bv = level;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class SenmlDouble : Senml {
|
||||||
|
#pragma warning disable IDE1006 // Benennungsstile
|
||||||
|
public Double v { get; }
|
||||||
|
#pragma warning restore IDE1006 // Benennungsstile
|
||||||
|
public SenmlDouble(String name, Units unit, Double level) : base(name, unit) {
|
||||||
|
this.v = level;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
IoT/Interfaces/Properties/AssemblyInfo.cs
Normal file
36
IoT/Interfaces/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||||
|
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||||
|
// die einer Assembly zugeordnet sind.
|
||||||
|
[assembly: AssemblyTitle("Iot-Interfaces")]
|
||||||
|
[assembly: AssemblyDescription("Interfaces for IoT-Stuff")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("BlubbFish")]
|
||||||
|
[assembly: AssemblyProduct("Iot-Interfaces")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2018 - 02.05.2018")]
|
||||||
|
[assembly: AssemblyTrademark("BlubbFish")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||||
|
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||||
|
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||||
|
[assembly: Guid("4daada29-c600-4cf3-8ad3-9c97c8d7f632")]
|
||||||
|
|
||||||
|
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||||
|
//
|
||||||
|
// Hauptversion
|
||||||
|
// Nebenversion
|
||||||
|
// Buildnummer
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||||
|
// indem Sie "*" wie unten gezeigt eingeben:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
BIN
IoT/Interfaces/bin/Release/Iot-Interfaces.dll
Normal file
BIN
IoT/Interfaces/bin/Release/Iot-Interfaces.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user