Rewrite of Eventhandleing, Threaded
This commit is contained in:
parent
55f7b609b1
commit
877bce4d1a
@ -27,5 +27,9 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void EventLibSetter() { }
|
||||
|
||||
protected override void LibUpadteThread(Object state) { }
|
||||
}
|
||||
}
|
@ -14,6 +14,7 @@ using LitJson;
|
||||
|
||||
namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
class Mqtt : Mqtt<ZwayController> {
|
||||
protected Boolean mqttConnect = false;
|
||||
public override event ModulEvent Update;
|
||||
|
||||
public Mqtt(ZwayController zwave, InIReader settings) : base(zwave, settings) { }
|
||||
@ -21,15 +22,15 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
#region Mqtt
|
||||
protected override void Connect() {
|
||||
this.mqtt = ABackend.GetInstance(this.config["settings"], ABackend.BackendType.Data);
|
||||
this.mqtt.MessageIncomming += this.EventInput;
|
||||
this.library.Update += this.EventOutput;
|
||||
this.mqtt.MessageIncomming += this.MqttUpdate;
|
||||
this.mqttConnect = true;
|
||||
}
|
||||
|
||||
protected override void Disconnect() {
|
||||
this.mqttConnect = false;
|
||||
if (this.mqtt != null) {
|
||||
this.mqtt.MessageIncomming -= this.EventInput;
|
||||
this.mqtt.MessageIncomming -= this.MqttUpdate;
|
||||
}
|
||||
this.library.Update -= this.EventOutput;
|
||||
if (this.mqtt != null) {
|
||||
this.mqtt.Dispose();
|
||||
}
|
||||
@ -38,7 +39,14 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
#endregion
|
||||
|
||||
#region Events
|
||||
protected virtual void EventOutput(Object sender, DeviceUpdateEvent e) {
|
||||
public override void EventLibSetter() {
|
||||
this.library.Update += this.HandleLibUpdate;
|
||||
}
|
||||
|
||||
protected override void LibUpadteThread(Object state) {
|
||||
try {
|
||||
if(this.mqttConnect) {
|
||||
DeviceUpdateEvent e = state as DeviceUpdateEvent;
|
||||
String topic = "";
|
||||
String data = "";
|
||||
if (e.Parent.GetType().HasInterface(typeof(IMqtt))) {
|
||||
@ -51,8 +59,10 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
this.Update?.Invoke(this, new MqttEvent(topic, data));
|
||||
}
|
||||
}
|
||||
} catch { }
|
||||
}
|
||||
|
||||
protected virtual void EventInput(Object sender, BackendEvent e) {
|
||||
protected virtual void MqttUpdate(Object sender, BackendEvent e) {
|
||||
if (e.From.ToString().StartsWith("zwavebot/devices/") && (e.From.ToString().EndsWith("/set") || e.From.ToString().EndsWith("/get"))) {
|
||||
Match m = new Regex("^zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/[gs]et$|^zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/(\\d+)/[gs]et$").Match(e.From.ToString());
|
||||
String id = "";
|
||||
|
@ -19,23 +19,26 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
protected override void LibraryUpdateHook(String id) {
|
||||
foreach (KeyValuePair<String, ACommandClass> item in this.overtakeritems) {
|
||||
item.Value.Polling = false;
|
||||
item.Value.Update -= this.ChangedEvent;
|
||||
item.Value.Update -= this.HandleLibUpdate;
|
||||
}
|
||||
this.overtakeritems.Clear();
|
||||
ACommandClass c = this.library.GetCommandClass(id);
|
||||
if (c != null) {
|
||||
this.overtakeritems.Add(id, c);
|
||||
c.Polling = true;
|
||||
c.Update += this.ChangedEvent;
|
||||
c.Update += this.HandleLibUpdate;
|
||||
}
|
||||
}
|
||||
|
||||
private void ChangedEvent(Object sender, DeviceUpdateEvent e) {
|
||||
if(sender.GetType().HasAbstract(typeof(ACommandClass))) {
|
||||
if (this.events.ContainsKey(((ACommandClass)sender).Id)) {
|
||||
this.SetValues(sender, ((ACommandClass)sender).Id, this.events[((ACommandClass)sender).Id]);
|
||||
protected override void LibUpadteThread(Object state) {
|
||||
try {
|
||||
DeviceUpdateEvent e = state as DeviceUpdateEvent;
|
||||
if (e.Parent.GetType().HasAbstract(typeof(ACommandClass))) {
|
||||
if (this.events.ContainsKey(((ACommandClass)e.Parent).Id)) {
|
||||
this.SetValues(e.Parent, ((ACommandClass)e.Parent).Id, this.events[((ACommandClass)e.Parent).Id]);
|
||||
}
|
||||
}
|
||||
} catch { }
|
||||
}
|
||||
|
||||
protected override void SetValueHook(String id, String prop, String value) {
|
||||
@ -49,5 +52,7 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void EventLibSetter() { }
|
||||
}
|
||||
}
|
@ -20,7 +20,10 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
}
|
||||
|
||||
#region Events
|
||||
protected override void EventOutput(Object sender, DeviceUpdateEvent e) {
|
||||
protected override void LibUpadteThread(Object state) {
|
||||
try {
|
||||
if (this.mqttConnect) {
|
||||
DeviceUpdateEvent e = state as DeviceUpdateEvent;
|
||||
String topic = "";
|
||||
String data = "";
|
||||
if (e.Parent.GetType().HasInterface(typeof(ISenml))) {
|
||||
@ -33,8 +36,10 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
this.Update?.Invoke(this, new SenmlEvent(topic, data));
|
||||
}
|
||||
}
|
||||
} catch { }
|
||||
}
|
||||
|
||||
protected override void EventInput(Object sender, BackendEvent e) { }
|
||||
protected override void MqttUpdate(Object sender, BackendEvent e) { }
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -37,5 +37,9 @@ namespace BlubbFish.IoT.Bots.ZwayBot.Moduls {
|
||||
}
|
||||
this.Update?.Invoke(this, new StatusPollingEvent("Polling", "all nodes"));
|
||||
}
|
||||
|
||||
public override void EventLibSetter() { }
|
||||
|
||||
protected override void LibUpadteThread(Object state) { }
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user