userReadings werden nicht gesetzt

Begonnen von 87insane, 16 September 2019, 17:18:42

Vorheriges Thema - Nächstes Thema

87insane

Hallo zusammen,

ich habe mal wieder ein Thema an dem ich hänge.

Ich habe eine Waschmaschine und einen Trockner. Beide haben im Eintrag userReadings folgendes stehen:
userReadings
total_temp:running.*true.* { ReadingsVal("$name","total",0) },
gang:running.*false.* { ReadingsVal("$name","total",0) - ReadingsVal("$name","total_temp",0) },
running {(ReadingsVal("$name","power",0) > ReadingsVal("$name","swerta",0)) ? 'true' : 'false'}


Das Reading running, wird bei beiden korrekt gesetzt.
Die Readings gang und total_temp macht nur die Waschmaschine korrekt. Im Trockner passiert da leider nichts.
total_temp sollte nur den aktuellen Wert aus total in total_temp schreiben. Das passiert aber beim Trockner nicht. Deswegen klappt auch die Berechnung von "gang" am Ende nicht.

Wenn ich total auslesen will und das über die Kommandozeile teste, geht es ({ ReadingsVal("s_trockner","total","error") }). Auch wenn ich "s_trockner" im userReading anstelle von "$name" eingebe, geht es nicht.

Wenn ich manuell setreading auf total_temp setze, geht es auch. Ich bin hier ratlos.
Der einzige Unterschied der mir noch einfällt, wäre das eine Gerät (Waschmaschine) ist ein Shelly und kommt über MQTT2 rein. Der Trockner ist ein TPLink Zwischenstecker.

Ich hoffe ich habe einfach nur die ganze Zeit was übersehen. Mir ist nicht klar warum "s_trockner total" nicht ausgelesen werden kann vom userReadings aber über die Kommandozeile schon. Wenn ich mir die Benachrichtigungen (pushbullet) ansehe auf meinem Handy. Bekomme ich nachdem ich total_temp z.B. manuell über setreading setze auch den korrekten Zeitstempel vom Reading ausgelesen. Also wenn das Ding vor 2 Minuten von mir manuell beschrieben wurde, steht in der Nachricht auch die korrekte Zeit. Nur der Inhalt des Readings will nicht. Hoffe ich habe alles gut genug erklärt, bin selber ganz durch den Wind nun.

Anbei mal jeweils ein List der Geräte.

Trockner (GEHT NICHT):


Internals:
   CFGFN      ./FHEM/Energie.cfg
   DEF        192.168.20.20
   FUUID      5c443c13-f33f-fcb4-e2e7-1e81da53f8d83f39
   HOST       192.168.20.20
   INTERVAL   60
   NAME       s_trockner
   NEXTUPDATE Mon Sep 16 17:11:07 2019
   NR         38
   STATE      on
   TIMEOUT    1
   TYPE       TPLinkHS110
   OLDREADINGS:
   READINGS:
     2019-09-16 17:10:07   active_mode     schedule
     2019-09-16 17:10:07   alias           s_trockner
     2019-08-13 17:34:17   aname           Der Trockner
     2019-09-16 17:10:07   current         0.013098
     2019-09-16 17:10:07   daily_average   0.45975
     2019-09-16 17:10:07   daily_total     0.000
     2019-09-16 17:10:07   decode_json     ok
     2019-09-16 17:10:07   dev_name        Wi-Fi Smart Plug With Energy Monitoring
     2019-09-16 17:10:07   deviceId        8006874906580C5CE4E5412EEE59F5AF18DFD0AA
     2019-09-16 17:10:07   err_code        0
     2019-09-16 17:10:07   feature         TIM:ENE
     2019-09-16 17:10:07   fwId            00000000000000000000000000000000
     2019-08-29 12:00:17   gang            0
     2019-09-16 17:10:07   hwId            45E29DA8382494D2E82688B52A0B2EB5
     2019-09-16 17:10:07   hw_ver          1.0
     2019-09-16 17:10:07   icon_hash       
     2019-09-16 17:10:07   latitude        49.222381
     2019-09-16 17:10:07   led_off         1
     2019-09-16 17:10:07   longitude       9.984479
     2019-09-16 17:10:07   mac             50:C7:BF:BD:86:52
     2019-09-16 17:10:07   model           HS110(EU)
     2019-09-16 17:10:07   monthly_total   7.356
     2019-09-16 17:10:07   oemId           3D341ECE302C0642C99E31CE2430544B
     2019-09-16 17:10:07   on_time         969388
     2019-09-16 17:10:07   power           0
     2019-09-16 17:10:07   relay_state     1
     2019-09-16 17:10:07   rssi            -73
     2019-09-16 17:10:07   running         false
     2019-09-16 17:10:07   state           on
     2019-09-16 17:10:07   sw_ver          1.2.5 Build 171213 Rel.101523
     2019-08-13 17:35:53   swerta          45
     2019-08-13 17:36:07   swerte          40
     2019-09-16 17:10:07   total           4.054
     2019-09-16 17:09:59   total_temp      0
     2019-09-16 17:10:07   type            IOT.SMARTPLUGSWITCH
     2019-09-16 17:10:07   updating        0
     2019-09-16 17:10:07   voltage         239.060665
Attributes:
   alias      Keller Wäsche Trockner
   devStateIcon { my $pic = ReadingsVal($name,"running","") eq "true"?'scene_clothes_dryer@green':'scene_clothes_dryer';;  my $text = ReadingsVal($name,"running","") eq "true"?"Trockner läuft - Aktuell: ".ReadingsVal($name,"power","")." W":'Standby';;  "<div><a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\"></a>&nbsp;&nbsp;&nbsp;".FW_makeImage($pic)." $text </div>" }
   disable    0
   event-on-change-reading .*
   group      Strom
   interval   60
   room       FHEM / Info,Keller
   userReadings total_temp:running.*true.* { ReadingsVal("$name","total","error") },
gang:running.*false.* { ReadingsVal("$name","total","error") - ReadingsVal("$name","total_temp","error") },
running {(ReadingsVal("$name","power",0) > ReadingsVal("$name","swerta",0)) ? 'true' : 'false'}
   verbose    1
   webCmd     :



Waschmaschine (GEHT):


Internals:
   CID        shellyplug_s_040C7E
   DEF        shellyplug_s_040C7E
   DEVICETOPIC MQTT2_shellyplug_s_040C7E
   FUUID      5d4c47d9-f33f-fcb4-c859-f484bf00612f2b75
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 58560
   MQTT2_FHEM_Server_TIME 2019-09-16 17:11:17
   MSGCNT     58560
   NAME       MQTT2_shellyplug_s_040C7E
   NR         382
   STATE      on
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-08-13 17:34:03   aname           Die Waschmaschine
     2019-09-16 17:02:49   fw_ver          20190821-095311/v1.5.2@4148d2b7
     2019-09-15 14:38:32   gang            1.73
     2019-09-16 17:02:49   id              shellyplug-s-040C7E
     2019-09-16 17:02:49   ip              192.168.20.23
     2019-09-16 17:02:49   mac             4C11AE040C7E
     2019-09-16 17:02:49   new_fw          false
     2019-09-16 17:02:49   online          true
     2019-09-16 17:11:17   overtemperature 0
     2019-09-16 17:11:17   power           0
     2019-09-16 17:11:17   relay0          on
     2019-09-16 17:11:17   relay_0_energy  1.77
     2019-09-16 17:11:17   running         false
     2019-09-16 17:10:47   statRelay_0_energy Hour: 0.000000000000000000 Day: 0.010000000000000007 Month: -3.699999999999996625 Year: 0.370000000000030083 (since: 2019-08-16 )
     2019-09-16 17:10:47   statRelay_0_energyDay 0.010000000000000007
     2019-09-15 23:59:55   statRelay_0_energyDayLast 1.750000000000000000
     2019-09-16 16:59:55   statRelay_0_energyLast Hour: 0.000000000000000000 Day: 1.750000000000000000 Month: 4.070000000000030482 Year: - (since: 2019-08-16 )
     2019-09-16 17:10:47   statRelay_0_energyMonth -3.699999999999996625
     2019-08-31 23:59:55   statRelay_0_energyMonthLast 4.070000000000030482
     2019-09-16 17:10:47   statRelay_0_energyYear 0.370000000000030083
     2019-09-16 17:11:17   state           on
     2019-08-13 17:35:21   swerta          4
     2019-08-13 17:35:34   swerte          4
     2019-09-16 17:11:17   temperature     29.35
     2019-09-16 17:11:17   temperature_f   84.83
     2019-09-15 11:39:26   total_temp      0.02
   helper:
     _98_statistics statisticsDEV
Attributes:
   IODev      MQTT2_FHEM_Server
   alias      Keller Waschmaschine
   devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "false" || ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "true" ? "rot" : ReadingsVal($name,"online","false") eq "true" && ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";;  my $pic = ReadingsVal($name,"running","") eq "true"?'scene_laundry_room_fem@green':'scene_laundry_room_fem';;  my $text = ReadingsVal($name,"running","") eq "true"?"Waschmaschine läuft - Aktuell: ".ReadingsVal($name,"power","")." W":'Standby';;  my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";;  "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\"></a>".FW_makeImage($pic)." $text </div>" }
   event-on-change-reading .*
   genericDeviceType switch
   group      Strom
   model      A_10a_shellyplug
   readingList shellies/shellyplug-s-040C7E/relay/0:.* state
  shellies/shellyplug-s-040C7E/relay/0:.* relay0
  shellies/shellyplug-s-040C7E/input/0:.* input0
  shellies/shellyplug-s-040C7E/online:.* online
  shellies/shellyplug-s-040C7E/announce:.* { json2nameValue($EVENT) }
  shellies/announce:.* { $EVENT =~ m,..id...shellyplug-s-040C7E...mac.*, ? json2nameValue($EVENT) : undef }
  shellies/shellyplug-s-040C7E/relay/0/power:.* {'power' => $EVENT > 1 ? $EVENT : '0'}
  shellies/shellyplug-s-040C7E/temperature:.* temperature
  shellies/shellyplug-s-040C7E/overtemperature:.* overtemperature
  shellies/shellyplug-s-040C7E/relay/0/energy:.* {'relay_0_energy' => sprintf("%.2f",$EVENT/60/1000)}
  shellies/shellyplug-s-040C7E/temperature_f:.* temperature_f
   room       FHEM / Info,Keller,MQTT
   setList    off:noArg shellies/shellyplug-s-040C7E/relay/0/command off
  on:noArg shellies/shellyplug-s-040C7E/relay/0/command on
  x_update:noArg shellies/shellyplug-s-040C7E/command update_fw
  x_mqttcom shellies/shellyplug-s-040C7E/command $EVTPART1
   userReadings total_temp:running.*true.* { ReadingsVal("$name","relay_0_energy",0) },
gang:running.*false.* { ReadingsVal("$name","relay_0_energy",0) - ReadingsVal("$name","total_temp",0) },
running {(ReadingsVal("$name","power",0) > ReadingsVal("$name","swerta",0)) ? 'true' : 'false'}




DANKE an alle :)

amenomade

Leider kann man mit deinen "list" nicht genau feststellen, was passiert ist.

Deine Readings total_temp werden jedes Mal gesetzt, wenn ein Ereignis "running true" kommt.
Die stehen aber in den "list" auf false.

Anscheinend ist beim Trockner running letztes Mal um 17:09:59 true gewesen und dabei war total gleich 0
Und bei der Waschmaschine gestern um 11:39 und dabei war total 0.02 (komischerweise gibt es im Device kein Reading "total" laut list)

Um etwas sagen zu können, muss man die Events aus dem Eventmonitor, oder die Log sehen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

87insane

Wer viel schreibt, kann viel vergessen. Uff...sorry.

Hatte erwähnt das es unterschiedliche geräte sind aber vergessen userReadings von der Waschmaschine mit zu senden. Da sind aber auch nur anstelle von "total" das Energy Reading vom shelly drin. Hatte es sogar heute Mittag nochmal hin und her kopiert, weil ich dachte es fehlt ggf nur ein Komma oder so und ich sehe das einfach nicht.

Das der trockner Direkt aus war ist normal. Wenn ich via setreading auf das Energy Reading einen wert gebe, der Running auf True setzt, danach aber relativ schnell ein Status Update des Gerätes dahinter.

Event oder / und log mache ich morgen. Sende ich nach. Danke schon mal :)

87insane

#3
Hey und guten Morgen,

hier mal ein EventMonitor Auszug....
2019-09-17 07:57:01 TPLinkHS110 s_trockner power: 100
2019-09-17 07:57:01 TPLinkHS110 s_trockner running: true
2019-09-17 07:57:23 TPLinkHS110 s_trockner on_time: 1022622
2019-09-17 07:57:23 TPLinkHS110 s_trockner current: 0.012649
2019-09-17 07:57:23 TPLinkHS110 s_trockner power: 0
2019-09-17 07:57:23 TPLinkHS110 s_trockner voltage: 237.152871
2019-09-17 07:57:23 TPLinkHS110 s_trockner running: false

Regex zu running sollte also passen. Da das Reading ja eh durch mich erzeugt wurde, sollte es ja auch bei allen Geräten gleich aussehen und reagieren. Hab ja sogar .* genommen. Etwas groß aber so kann eigentlich ja nichts durch rutschen in dem Fall.

ZitatAnscheinend ist beim Trockner running letztes Mal um 17:09:59 true gewesen und dabei war total gleich 0
17:09:59 war total 4.054. total_temp war zu dem Zeitpunt 0. Genau das ist ja mein Problem. Es wird aus einem mir unbekanntem Grund nicht gesetzt. total_temp sollte der Wert aus total, zum Zeitpunkt des Starts vom Trockner sein.

Anbei, vollständigkeitshalber auch nochmal userReadings von der Waschmaschine, separat. Bei der ein genutztes Reading abweicht aber der Rest gleich ist:
total_temp:running.*true.* { ReadingsVal("$name","relay_0_energy",0) },
gang:running.*false.* { ReadingsVal("$name","relay_0_energy",0) - ReadingsVal("$name","total_temp",0) },
running {(ReadingsVal("$name","power",0) > ReadingsVal("$name","swerta",0)) ? 'true' : 'false'}


DeeSPe

Ich würde das etwas anders machen:
total_temp:running:.true { ReadingsNum("$name","relay_0_energy",0) },
gang:running:.false { ReadingsNum($name,"relay_0_energy",0) - ReadingsNum($name,"total_temp",0) },
running:(power|swerta):.* {(ReadingsNum($name,"power",0) > ReadingsNum($name,"swerta",0)) ? 'true' : 'false'}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

87insane

Hi,

habe das mal angepasst. Allerdings habe ich die Regex auf swerta bei running weg gelassen, da dieser Wert sich nicht ändert. Er ist nur da um das Script für alle Geräte einheitlich zu machen. So kann ich bei jedem Gerät einen Schwellwert eintragen ab wann es reagieren soll.

Ist zumindest schneller aufgrund der Eingrenzung. Für den Trockner wäre es dann so:

total_temp:running:.true { ReadingsNum("$name","total",0) },
gang:running:.false { ReadingsNum("$name","total",0) - ReadingsNum("$name","total_temp",0) },
running:power:.* {(ReadingsNum("$name","power",0) > ReadingsNum("$name","swerta",0)) ? 'true' : 'false'}


Ich frage mich ob ich das Wiki zu ReadingsNum falsch verstehe. Aber es geht damit ja auch, anscheinend.
Die Sache an sich geht aber noch immer nicht.

Anbei das Event Log. Das Verhalten ist noch identisch zu dem Verhalten vorher. (geht nicht).
2019-09-17 09:38:32 TPLinkHS110 s_trockner power: 100
2019-09-17 09:38:32 TPLinkHS110 s_trockner running: true
2019-09-17 09:39:14 TPLinkHS110 s_trockner on_time: 1028733
2019-09-17 09:39:14 TPLinkHS110 s_trockner current: 0.012861
2019-09-17 09:39:14 TPLinkHS110 s_trockner power: 0
2019-09-17 09:39:14 TPLinkHS110 s_trockner voltage: 238.133898
2019-09-17 09:39:14 TPLinkHS110 s_trockner running: false


total_temp wird weiterhin nicht beschrieben. Hätte mich aber auch gewundert. Das alles ist nun etwas schöner (DANKE dafür) aber vom Prinzip her ja noch genau das gleiche.

Otto123

#6
Hi,

wenn ich das in der FHEM Komandozeile einwerfe:
{my $var="w1";;$var=ReadingsNum($var,"state","Error")}
bekomme ich 29 weil das im state von w1 steht
Wenn ich das mache
{my $var="w1";;$var=ReadingsNum("$var","state","Error")}
Bekomme ich 1 zurück.

Du solltest deinen Code mal in der FHEM Kommandozeile testen  ;)

Ich bin selbst nicht nicht ganz sicher wie richtig oder falsch die " " um die Variable herum sind. Ich hatte letztens bei mir einen Fall (set magic) da war das " " um $EVENT notwendig und ich weiß eigentlich nicht warum.
Dan hat es auch mal so und mal so gemacht ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

#7
Hey Otto123,

mich wundert es da es genauso in dem anderem Gerät funktioniert. Der Code ist 1 zu 1 der gleiche. Hatte auch schon mit und ohne "" bei $name getestet. Hatte auch gedacht, dass ich für sowas keinen Thread mehr aufmachen muss aber ich bin echt am Ende mit meinen Ideen. Über die Kommandozeile, war natürlich mein erster Weg...

Ein gutes Beispiel ist zb:
total_temp:running:.true { ReadingsNum("$name","total",0) },
gang:running:.false { ReadingsNum("$name","total",0) - ReadingsNum("$name","total_temp",0) },
running:power:.* {(ReadingsNum("$name","power",0) > ReadingsNum("$name","swerta",0)) ? 'true' : 'false'}


Das Reading running wird korrekt gesetzt wenn der Wert Power oberhalb des gewünschten Schwellwertes ist. Man sieht direkt wie running auf true springt. Aber die beiden anderen machen leider nix. total_temp müsste als erstes beschrieben werden, mit dem Wert der zu der Zeit in total steht. Wenn ich nun in total_temp via setreading einen Wert rein schreibe und dann POWER über den Schwellwert schicke, müsste da ja irgendwas passieren. Selbst wenn er das Reading nicht kennen würde, müsste dann ja wieder "0" drin stehen, da ja in der Abfrage ReadingsNum("$name","total",0) steht. Mir kommt das vor als wäre dieses eine Reading schreibgeschützt oder so. Hab sogar alle Readings mal aus dem Gerät gelöscht und neu angefangen. Auch ohne Erfolg.

Otto123

Mir fällt noch auf, das ein userReading (gang) auf dem anderen aufbaut. Ich weiß nicht ob das gut geht. Ich erinnere mich da gab es Fälle, da waren alle zwischenzeitlich "leer"

ZitatAuch ohne Erfolg.
Aber sie werden einmalig angelegt?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

#9
In der Waschmaschine werden sie angelegt, berechnet und da geht alles.
Im Trockner wird nur running angelegt. Die beiden anderen Readings leider nicht. Die habe ich zum testen mal rein geworfen (manuell).

Wie sollte es sein?
Running geht auf Wert > swerta und setzt running auf true.
Nun wird das Event für running erzeugt und da wird einfach nur der Wert von total in total_temp geschrieben.
Wenn das Gerät nun fertig ist mit waschen/trocknen wird erst gang berechnet.

Will damit nur sagen das es nicht um ms geht oder so. Ich hatte zum testen auch einfach mal total_temp:running:.true { 666 } oder x andere Varianten getestet. Geht auch nicht. Wo ist der heulende Smilie :-P


EDIT: Gerade nochmal alle Readings aus s_trockner gelöscht. Danach manuell swerta und aname angegeben via Kommandozeile. Danach habe ich POWER auf 100W gesetzt und sofort wurde running angelegt. Der Rest aber nicht... (gang und total_temp).

Otto123

Und wenn Du mal
Zitatverbose    1
anders setzt? Steht dann etwas Informatives im Log?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Leider nein... Habe sogar global mal auf 5 gesetzt :-\

Beta-User

Schuß in's Blaue: Versuch mal, an den ersten beiden den trigger mit ".*" zu erweitern, und ob der Doppelpunkt da evtl. einen Einfluß hat, kann ich auch nicht sagen.

Also so: total_temp:running.*true.* { ReadingsNum("$name","total",0) },
gang:running.*false.* { ReadingsNum("$name","total",0) - ReadingsNum("$name","total_temp",0) },
running:power:.* {(ReadingsNum("$name","power",0) > ReadingsNum("$name","swerta",0)) ? 'true' : 'false'}


Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

#13
userReadings
total_temp:running.*true.* { ReadingsVal("$name","total",0) },
gang:running.*false.* { ReadingsVal("$name","total",0) - ReadingsVal("$name","total_temp",0) },
running {(ReadingsVal("$name","power",0) > ReadingsVal("$name","swerta",0)) ? 'true' : 'false'}


Daher komme ich leider.. In der Waschmaschine läuft das auch genau so (beide Varianten)


Hab das ganze auch nochmal in zwei andere Geräte eingegeben. Dort werden die Readings auch sofort erzeugt. Hab zum testen einfach mal ein paar Lampen genommen.

Otto123

#14
Zitat von: 87insane am 17 September 2019, 13:45:33
Leider nein... Habe sogar global mal auf 5 gesetzt :-\
Das ändert aber nichts an Deinem verbose 1 am Gerät!? Ich will es nur anmerken  ;)

Und irgendwie erinnert mich das an den Thread wo es nicht immer Events vom Gerät gab? Aber Du sagst ja die kommen ...
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz