MQTT2, Befehle senden

Begonnen von Guzzi-Charlie, 10 Februar 2019, 15:27:08

Vorheriges Thema - Nächstes Thema

Guzzi-Charlie

Also, hier die Ergebnisse der Tests:

attr MQTT2_shelly1_12CB79 readingList shelly1_12CB79:shellies/shelly1-12CB79/relay/0:.* relay0\
shelly1_12CB79:shellies/shelly1-12CB79/relay/0:.* state\
shelly1_12CB79:shellies/shelly1-12CB79/input/0:.* input0\
shelly1_12CB79:shellies/shelly1-12CB79/online:.* online\
shelly1_12CB79:shellies/shelly1-12CB79/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }

funktioniert, aber "relay0" wird nicht gelesen

attr MQTT2_shelly1_12CB79 readingList shelly1_12CB79:shellies/shelly1-12CB79/relay/0:.* state\
shelly1_12CB79:shellies/shelly1-12CB79/relay/0:.* relay0\
shelly1_12CB79:shellies/shelly1-12CB79/input/0:.* input0\
shelly1_12CB79:shellies/shelly1-12CB79/online:.* online\
shelly1_12CB79:shellies/shelly1-12CB79/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }

funktioniert nicht, bzw. nur über FHEM Web-IF (dann wird "relay0" UND "state" gelesen und richtig gesetzt)

attr MQTT2_shelly1_12CB79 readingList shelly1_12CB79:shellies/shelly1-12CB79/relay/0:.* state\
shellies/shelly1-12CB79/relay/0:.* relay0\
shelly1_12CB79:shellies/shelly1-12CB79/input/0:.* input0\
shelly1_12CB79:shellies/shelly1-12CB79/online:.* online\
shelly1_12CB79:shellies/shelly1-12CB79/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }

funktioniert und beide Werte werden gelesen/gesetzt

attr MQTT2_shelly1_12CB79 readingList shellies/shelly1-12CB79/relay/0:.* relay0\
shelly1_12CB79:shellies/shelly1-12CB79/relay/0:.* state\
shelly1_12CB79:shellies/shelly1-12CB79/input/0:.* input0\
shelly1_12CB79:shellies/shelly1-12CB79/online:.* online\
shelly1_12CB79:shellies/shelly1-12CB79/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }

funktioniert und beide Werte werden gelesen/gesetzt
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Guzzi-Charlie

Was Du vorgeschlagen hast "attr stateFormat relay0" hab ich auch gerade nochmal getestet. Das funktioniert zwar, aber dann gibt es eine Inkonsistenz zwischen "relay0" und "state".

attr MQTT2_shelly1_12CB79 readingList shellies/shelly1-12CB79/relay/0:.* relay0\
shellies/shelly1-12CB79/input/0:.* input0\
shellies/shelly1-12CB79/online:.* online\
shellies/shelly1-12CB79/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr MQTT2_shelly1_12CB79 room Kellergeschoß,MQTT2_DEVICE
attr MQTT2_shelly1_12CB79 setList off:noArg shellies/shelly1-12CB79/relay/0/command off\
  on:noArg shellies/shelly1-12CB79/relay/0/command on
attr MQTT2_shelly1_12CB79 sortby 04
attr MQTT2_shelly1_12CB79 stateFormat relay0
attr MQTT2_shelly1_12CB79 webCmd on:off


Bei Bedienung über das FHEM Web-IF werden beide Werte richtig gesetzt
Bei Bedienung über das Shelly Web-IF wird nur "relay0" richtig gesetzt, d.h je nachdem wie der "state" vorher stand ist er gleich, oder unterschiedlich zu "relay0". Das gefällt mir auch nicht wirklich.
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Beta-User

Hmm, spannend...

Dann habe ich vorläufig keine weitere Idee. Man könnte noch mit userreadings rumexperimentieren, aber das finde ich persönlich eigentlich Mist (wird ständig getriggert und man kann den eigentlichen Zeitstempel nicht mehr erkennen...).

Ansonsten würde es mir persönlich genügen, wenn alles, was von FHEM aus geht und ggf. von lokalen Schaltungen soweit sauber abgebildet ist, mit gewissen (unvermeidbaren) Inkonsitenzen kann ich dann persönlich leben; hier scheint ja nur state nicht zu passen, STATE ist ok, und die Anzeige selbst in allen Fällen auch, oder?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guzzi-Charlie

Ja, im Moment scheint es nur um die Inkonsistenz von "state" zu gehen. Mir genügt es im Moment auch erstmal, aber ich werde die Variante benutzen bei der beide Werte konsistent sind und stelle halt bei der "state"-Zuweisung die CID voran. Gefällt mir persönlich besser. Ob das andere Nebenwirkungen hat wird die Zukunft zeigen.

Jetzt werde ich mich mal mit dem Shelly 2 und anschließend mit dem Shelly 4Pro beschäftigen und schauen ob ich das mit den Perl-Befehlen aus dem Tasmota-Template hinbekomme und ob mir das gefällt.

Vielen Dank erstmal für die Unterstützung.

Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Guzzi-Charlie

Hallo,
ich hab mal versucht auf Basis des Sonoff 4-channel Templates etwas auf den Shelly 4Pro zu übertragen, aber das krieg ich nicht gebacken. Dafür verstehe ich einfach zu wenig von der Perl-Syntax.

Das lasse ich jetzt besser bleiben und verwende doch lieber 4 einzelne devices. Vielleicht erschließt sich das mir ja nach einem Jahr intensiver FHEM-Verwendung. Ich hab noch soviel vor. Da beschäftige ich mich besser erstmal mit der Quantität statt den tiefen Details.

Trotzdem nochmals vielen Dank für die Unterstützung bisher.

Ich versuche zwar immer erstmal durch stundenlange Recherche selbst voran zu kommen, aber ich werde sicherlich trotzdem noch öfters Hilfe benötigen.

Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

supernova1963

Nur 'mal laienhaft nachgefragt:

Was steht den in der tasmota console, wenn die jeweiligen Schaltungen durchgeführt werden?

Vielleicht hilft es weiter,

Gernot

Beta-User

Zitat von: Guzzi-Charlie am 12 Februar 2019, 23:39:49
Hallo,
ich hab mal versucht auf Basis des Sonoff 4-channel Templates etwas auf den Shelly 4Pro zu übertragen, aber das krieg ich nicht gebacken. Dafür verstehe ich einfach zu wenig von der Perl-Syntax.
Hi,
eigentlich sollte es kein Hexenwerk sein, und so "tiefes" Perl ist es eigentlich auch nicht. Man kann nach meiner persönlichen Erfahrung an den templates eigentlich ganz gut manches lernen, was state, STATE usw. angeht. Aber es geht ja in dem Fall auch so :) .

@supernova1963:
Ich glaube nicht an ein Problem von der Shelly-MQTT-Seite her, schließlich kommt ja was an. Es werden mit der eingehenden Info aber nicht 2 Readings aktualisiert (wenn man nicht zusätzlich mit der CID rumspielt), sondern leider nur eines - warum auch immer...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guzzi-Charlie

@supernova1963:
ich glaube Du hast da was mißverstanden. Es geht nicht um einen Tasmota-geflashten Shelly. Es geht um die Original-FW und MQTT2.

@Beta-User
Du hast bestimmt Recht. Es sind bestimmt nur Kleinigkeiten, aber wenn einem die fehlen dann klappt es eben auch nicht. Aber wie gesagt: Ich habe noch viel vor und möchte mich nicht tagelang an Sachen aufhalten die mehr, oder weniger der Optik dienen. Funktionieren tut es ja auch anders (z.B. mit 4 devices, oder dummies, oder ...).

Falls Du aber irgendwie ein auf den Shelly angepaßtes Stückchen Code hast, dann probier ich es gerne aus.

Danke und Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Beta-User

Zitat von: Guzzi-Charlie am 13 Februar 2019, 15:34:48
Falls Du aber irgendwie ein auf den Shelly angepaßtes Stückchen Code hast, dann probier ich es gerne aus.

Ungetestet, und weil ich nicht weiß, ob der Shelly auch toggle versteht erst mal ohne das :) .
# shelly4pro unified device using original firmware
name:A_14b_shelly4pro_unified
filter:TYPE=MQTT2_DEVICE
desc:shelly4pro using original firmware <br>NOTE: only one device will be created
par:DEVNAME;Shelly4Pro name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]*)/, ? $1 : undef }
set DEVICE attrTemplate A_10a_shellyplug
attr DEVICE getList \
  power0:noArg shellies/DEVNAME/relay/0/power power0\
  energy0:noArg shellies/DEVNAME/relay/0/energy energy0\
  power1:noArg shellies/DEVNAME/relay/1/power power1\
  energy1:noArg shellies/DEVNAME/relay/1/energy energy1\
  power2:noArg shellies/DEVNAME/relay/2/power power2\
  energy2:noArg shellies/DDEVNAME/relay/2/energy energy2\
  power3:noArg shellies/DEVNAME/relay/3/power power3\
  energy3:noArg shellies/DEVNAME/relay/3/energy energy3
attr DEVICE readingList \
  shellies/DEVNAME/relay/0:.* relay0\
  shellies/DEVNAME/input/0:.* input0\
  shellies/DEVNAME/relay/1:.* relay1\
  shellies/DEVNAME/input/1:.* input1\
  shellies/DEVNAME/relay/2:.* relay2\
  shellies/DEVNAME/input/2:.* input2\
  shellies/DEVNAME/relay/3:.* relay3\
  shellies/DEVNAME/input/3:.* input3\
  shellies/DEVNAME/online:.* online\
  shellies/DEVNAME/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr DEVICE setList \
  relay0:on,off shellies/DEVNAME/relay/0/command $EVTPART1\
  relay1:on,off shellies/DEVNAME/relay/1/command $EVTPART1\
  relay2:on,off shellies/DEVNAME/relay/2/command $EVTPART1\
  relay3:on,off shellies/DEVNAME/relay/3/command $EVTPART1
attr DEVICE stateFormat R0: relay0 R1: relay1 R2: relay2 R3: relay3
attr DEVICE model A_14b_shelly4pro_unified

Bitte testen, und wenn es funktioniert dann mal "relay0:on,off,toggle ..." in der setList austesten. Wenn das klappt, ist es recht einfach, den code vom Tasmota vollends "rüberzuholen"...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guzzi-Charlie

Ok, Danke. Ich werde es nochmal versuchen.

Ich melde mich dann wieder.

Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Beta-User

Hab's mal eingecheckt, das macht es ggf. einfacher.
Wäre nett, wenn du das mit dem toggle testen könntest. Nach dem Editieren dann einfach ein { AttrTemplate_Initialize() } ausführen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guzzi-Charlie

Ok, Danke.

Ich installiere gerade meine vier neuen Shelly 4Pro. Falls ich dazu komme fange ich Heute Nachmittag noch an, ansonsten Morgen.

Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Guzzi-Charlie

Hallo,

@Beta-User
ich habe Gestern Abend noch ein wenig getestet. Ich bin auch etwas weiter gekommen, aber ganz so wie gewünscht funktioniert das Ganze noch nicht. Mit Deinem Original-Script läßt sich in der Device-Overview gar nichts bedienen (mit, oder ohne "toggle"). Lediglich eine richtige (Text-) Anzeige ist damit gegeben, d.h. es werden die Zustände (on/off) aller 4 Relais korrekt dargestellt.

Nach etlichen Tests ist mein aktueller Stand nun folgender:

1. stateFormat habe ich erstmal entfernt (ist ja nur Anzeige und hat keinen Einfluß auf die Bedienung)

2. webCmd eingesetztattr MQTT2_shelly4pro_4BBF45 webCmd relay0:relay1:relay2:relay3
   Dadurch erscheinen 4 "Pulldown-Boxen" mit denen man alle 4 Kanäle korrekt bedienen kann (funktioniert auch "rückwärts" bei Bedienung über das Shelly Web-IF).
   Bei jeder Bedienung wird der Name des Kanals ("relay0, ..1, ..2, ..3") in den state geschrieben
   Damit habe ich etwas gespielt und mit devStateIcon verschiedene Icons für die 4 Kanäle vergeben. Ist aber mehr Spielerei, weil es zeigt halt nur an welcher Kanal (relay) als letztes bedient wurde.
attr MQTT2_shelly4pro_4BBF45 devStateIcon relay0:rc_1 relay1:rc_2 relay2:rc_3 relay3:rc_4
   Aber vielleicht könnte man es irgendwie nutzten um anzuzeigen das irgendein Kanal eingeschaltet ist.

3. webCmdLabel eingesetztattr MQTT2_shelly4pro_4BBF45 webCmdLabel Kanal 1:\
  Kanal 2:\
  Kanal 3:\
  Kanal 4:

   Dadurch konnte ich erreichen, daß die Kanäle untereinander (mehrzeilig) angezeigt werden. Zumindest fast. Der 2. Kanal wird trotzdem in der ersten Reihe hinter Kanal 1 angezeigt.
   Warum, habe ich noch nicht herausgefunden.

4. Dann habe ich noch mit cmdIcon experimentiert. Das hat allerdings zu keinem Ergebnis geführt.

Also wenn man die "Pulldown-Boxen" durch "toggle"-bare Icons ersetzen könnte und die dann tatsächlich alle untereinander stehen würden, dann wäre das schon sehr nahe an dem was ich mir vorstelle.
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Beta-User

Moin,
dass sich das mit dem stateFormat nicht bedienen läßt, ist/war klar. Die Frage war, ob ein toggle möglich ist (sollte in den pulldown-Menüs angezeigt werden und dann da Aktionen auslösen...). Wenn ja, kann man recht einfach einen devStateIcon-Perl-Code basteln, der dann alle 4 Kanäle anzeigt und bedienbar macht... (das mache ich dann schon ;) ). Sonst ist es komplizierter, das würde ich gerne vermeiden.

Was die Label-Geschichte angeht: Vertausche mal Doppelpunkte und Zeilenumbrüche ;) .


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

Guzzi-Charlie

Hallo,

ah, toggle hatte ich in der setList auch schon versucht. Das erscheint bei webCmd-Nutzung auch in der "Dropdown-Box" löst aber bei Betätigung keinerlei Aktionen aus. In der Shelly Doku steht unter MQTT auch nur "on" und "off" als akzeptiertes Kommando.

Das mit dem Doppelpunkt liegt mal wieder an dem zuviel "ungenügendem Wissen". Ich dachte der Doppelpunkt gehört zum Text, hab dann aber gar nicht bemerkt, daß der Doppelpunkt nicht im Text auftaucht. Jetz stehen die Kanäle alle untereinander.

- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2