[NF] Huebot fertig
[NF] Huebot nutzt nun die lokale litjosn und mqtt library
This commit is contained in:
@@ -15,6 +15,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConnectorDataMqtt", "..\Uti
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utils-IoT", "..\Utils\IoT\Utils-IoT.csproj", "{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utils-IoT", "..\Utils\IoT\Utils-IoT.csproj", "{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "M2Mqtt", "..\Librarys\mqtt\M2Mqtt\M2Mqtt.csproj", "{A11AEF5A-B246-4FE8-8330-06DB73CC8074}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -45,6 +47,10 @@ Global
|
|||||||
{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}.Release|Any CPU.Build.0 = Release|Any CPU
|
{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -74,9 +74,6 @@
|
|||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="App.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
|||||||
+21
-10
@@ -41,15 +41,26 @@ namespace BlubbFish.IoT.Bot.HueBot.Moduls {
|
|||||||
|
|
||||||
private void Mqtt_MessageIncomming(Object sender, MqttEventArgs e) {
|
private void Mqtt_MessageIncomming(Object sender, MqttEventArgs e) {
|
||||||
if (e.Topic.StartsWith("/hue/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) {
|
if (e.Topic.StartsWith("/hue/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) {
|
||||||
/*Match m = new Regex("^/zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/[gs]et$|^/zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/(\\d+)/[gs]et$").Match(e.Topic);
|
//return "sensor/" + this.SensorId; (Int32)
|
||||||
|
//return "scene/" + this.SceneId; (String)
|
||||||
|
//return "light/" + this.LightId; (Int32)
|
||||||
|
//return "group/" + this.GroupId; (Int32)
|
||||||
|
//return "config";
|
||||||
|
Match m = new Regex("^/hue/(config)/[gs]et$|^/hue/(scene)/([^/]+)/[gs]et$|^/hue/(sensor|light|group)/(\\d+)/[gs]et$").Match(e.Topic);
|
||||||
|
String type = "";
|
||||||
String id = "";
|
String id = "";
|
||||||
if (m.Groups[1].Success) {
|
if (m.Groups[1].Success) {
|
||||||
id = m.Groups[1].Value + "-" + m.Groups[2].Value + "-" + m.Groups[3].Value;
|
type = m.Groups[1].Value;
|
||||||
|
}
|
||||||
|
if (m.Groups[2].Success) {
|
||||||
|
type = m.Groups[2].Value;
|
||||||
|
id = m.Groups[3].Value;
|
||||||
}
|
}
|
||||||
if (m.Groups[4].Success) {
|
if (m.Groups[4].Success) {
|
||||||
id = m.Groups[4].Value + "-" + m.Groups[5].Value + "-" + m.Groups[6].Value + "-" + m.Groups[7].Value;
|
type = m.Groups[4].Value;
|
||||||
|
id = m.Groups[5].Value;
|
||||||
}
|
}
|
||||||
ACommandClass c = this.zw.GetCommandClass(id);
|
AConnector c = this.hue.GetConnector(type, id);
|
||||||
if (c == null) {
|
if (c == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -60,18 +71,18 @@ namespace BlubbFish.IoT.Bot.HueBot.Moduls {
|
|||||||
String key = item.ToUpperLower();
|
String key = item.ToUpperLower();
|
||||||
if (c.HasProperty(key)) {
|
if (c.HasProperty(key)) {
|
||||||
c.SetProperty(key, a[item].ToString());
|
c.SetProperty(key, a[item].ToString());
|
||||||
this.Update?.Invoke(this, new MqttEvent(c.Id, a[item].ToString()));
|
this.Update?.Invoke(this, new MqttEvent(type + " " + id, a[item].ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception) { }
|
} catch (Exception) { }
|
||||||
} else if (e.Topic.EndsWith("/get")) {
|
} else if (e.Topic.EndsWith("/get")) {
|
||||||
c.PollOnce = true;
|
c.PollOnce = true;
|
||||||
this.mqtt.Send("/zwavebot/devices/" + c.MqttTopic(), c.ToJson());
|
this.mqtt.Send("/hue/" + ((IMqtt)c).MqttTopic(), ((IMqtt)c).ToJson());
|
||||||
this.Update?.Invoke(this, new MqttEvent(e.Topic, "Dataget"));
|
this.Update?.Invoke(this, new MqttEvent(e.Topic, "Dataget"));
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
if (e.Topic.StartsWith("/hue/config/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) {
|
}
|
||||||
Match m = new Regex("^/hue/config/(\\w+)/[gs]et$|").Match(e.Topic);
|
if (e.Topic.StartsWith("/huebot/config/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) {
|
||||||
|
Match m = new Regex("^/huebot/config/(\\w+)/[gs]et$|").Match(e.Topic);
|
||||||
if (!m.Groups[1].Success) {
|
if (!m.Groups[1].Success) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -85,7 +96,7 @@ namespace BlubbFish.IoT.Bot.HueBot.Moduls {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (e.Topic.EndsWith("/get") && modul.HasConfig && modul.ConfigPublic) {
|
if (e.Topic.EndsWith("/get") && modul.HasConfig && modul.ConfigPublic) {
|
||||||
String topic = "/hue/config/" + m.Groups[1].Value;
|
String topic = "/huebot/config/" + m.Groups[1].Value;
|
||||||
String data = JsonMapper.ToJson(modul.GetConfig()).ToString();
|
String data = JsonMapper.ToJson(modul.GetConfig()).ToString();
|
||||||
this.mqtt.Send(topic, data);
|
this.mqtt.Send(topic, data);
|
||||||
this.Update?.Invoke(this, new MqttEvent(topic, data));
|
this.Update?.Invoke(this, new MqttEvent(topic, data));
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -8,6 +8,8 @@ namespace BlubbFish.IoT.Bot.HueBot.lib {
|
|||||||
if (prop.CanWrite) {
|
if (prop.CanWrite) {
|
||||||
if (prop.PropertyType == typeof(Boolean) && Boolean.TryParse(value, out Boolean vb)) {
|
if (prop.PropertyType == typeof(Boolean) && Boolean.TryParse(value, out Boolean vb)) {
|
||||||
prop.SetValue(o, vb);
|
prop.SetValue(o, vb);
|
||||||
|
} else if (prop.PropertyType == typeof(Byte) && Byte.TryParse(value, out Byte v8)) {
|
||||||
|
prop.SetValue(o, v8);
|
||||||
} else if (prop.PropertyType == typeof(Int32) && Int32.TryParse(value, out Int32 v32)) {
|
} else if (prop.PropertyType == typeof(Int32) && Int32.TryParse(value, out Int32 v32)) {
|
||||||
prop.SetValue(o, v32);
|
prop.SetValue(o, v32);
|
||||||
} else if (prop.PropertyType == typeof(Single) && Single.TryParse(value, out Single vs)) {
|
} else if (prop.PropertyType == typeof(Single) && Single.TryParse(value, out Single vs)) {
|
||||||
@@ -16,6 +18,10 @@ namespace BlubbFish.IoT.Bot.HueBot.lib {
|
|||||||
prop.SetValue(o, vd);
|
prop.SetValue(o, vd);
|
||||||
} else if (prop.PropertyType == typeof(Int64) && Int64.TryParse(value, out Int64 v64)) {
|
} else if (prop.PropertyType == typeof(Int64) && Int64.TryParse(value, out Int64 v64)) {
|
||||||
prop.SetValue(o, v64);
|
prop.SetValue(o, v64);
|
||||||
|
} else if (prop.PropertyType.BaseType == typeof(Enum)) {
|
||||||
|
try {
|
||||||
|
prop.SetValue(o, Enum.Parse(prop.PropertyType, value));
|
||||||
|
} catch (Exception) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user