[NF] Huebot fertig
[NF] Huebot nutzt nun die lokale litjosn und mqtt library
This commit is contained in:
parent
bc694f2fd9
commit
dc418934e2
@ -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>
|
||||||
|
@ -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"))) {
|
if (e.Topic.StartsWith("/huebot/config/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) {
|
||||||
Match m = new Regex("^/hue/config/(\\w+)/[gs]et$|").Match(e.Topic);
|
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.
BIN
Hue-Bot/bin/Release/M2Mqtt.dll
Normal file
BIN
Hue-Bot/bin/Release/M2Mqtt.dll
Normal file
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) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user