Hallo zusammen
ich versuche eine Sonoff RF Bridge über FHEM zum laufen zu bekommen. Bisher völlig erfolglos, weil mir wohl entscheidende Infos fehlen.
Im Prinzip habe ich es versucht nach dieser Anleitung zu machen: https://www.tpdesign.de/sonoff-in-fhem-integrieren-tasmota-und-mqtt-device
bzw: https://haus-automatisierung.com/hardware/fhem/2018/03/22/fhem-tutorial-reihe-part-56-sonoff-rf-bridge.html
Das Problem, es setzt voraus, dass ich ein Tasmota Device einrichten kann. das geht aber scheinbar nicht.
Anahnd dieser Aleitung: https://github.com/klein0r/fhem-tasmota habe ich es versucht:
update add https://raw.githubusercontent.com/klein0r/fhem-tasmota/master/controls_tasmota.txt -> https://raw.githubusercontent.com/klein0r/fhem-tasmota/master/controls_tasmota.txt is already in the list
update check tasmota -> nothing to do...
update all tasmota -> Events (Filter: global) FHEM log Reset Create/Modify Device
2019.08.08 01:42:23 1 : nothing to do...
create device -> Please highlight exactly one complete event line
es gibt aber keine Zeile um ein neues zu generieren
Dann habe ich herausgefunden, dass wohl die Tasmota Konfig auf dem MQTT basiert, aber standardmäßig der MQTT2 Installiert wird
Infos dazu wie ich die Bridge mit MQTT2 einrichten kann habe ich nicht gefunden.
Aber einen Eintrag wie wie ich den MQTT einrichten kann: https://forum.fhem.de/index.php?topic=27532.0
der setzt aber auch darauf auf, dass es die Dateien 00_MQTT.pm, 10_MQTT_BRIDGE und 10_MQTT_DEVICE.pm gibt, die scheint es aber nicht zu geben
ehrlich gesagt bin ich ziemlich am verzweifeln
Die verlinkten Blogs kenne ich nicht, bei Problemen mit deren Anleitung ist sinnvoller direkt beim Blogschreiber nachzufragen, und nicht hier.
Den Sonoff RF Bridge kenn ich auch nicht, ich kann nur generell zu Sonoff/MQTT/Tasmota was sagen:
- da MQTT/MQTT_DEVICE insb. fuer Anfaenger zu kompliziert ist, habe ich MQTT2_SERVER/MQTT2_DEVICE geschrieben, was alles moegliche automatische anlegt.
- um ein Sonoff/Tasmota Geraet in FHEM einzubinden muss man in FHEM "define m2s MQTT2_SERVER 1883 global" eingeben, auf der Tasmota Oberflaeche/MQTT Configuration/Host den FHEM Rechner angeben, und danach in FHEM bei dem automatisch angelegten MQTT2_DEVICE das passende attrTemplate anwenden.
- Details zu MQTT2 sind z.Bsp. hier zu finden: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele
Danke für deine Rückmeldung.
Ich bin halt Neuling bei FHEM und muss halt vieles Probieren.
Weshalb ich hies geschrieben habe ist, weil es Tutorials gibt via MQTT, aber mein FHEM kein MQTT kennt, sondern nur MQTT2 und ich auch kein MQTT zum laufen bekomme.
Ich wollte halt das FHEM dann auf MQTT bringen, damit ich die Anleitungen weiter probieren kann. Derzeit macht es ja wenig Sinn dort nachzufragen, weil deren Anleitungen auf anderen Voraussetzungen basieren.
Die Einrichtung des Sonoff funktioniert. Das Device erscheint auch im FHEM und wird automatisch erkannt.
Das mit dem Template habe ich auch versucht.
Es gibt ja ein spezielles Template für die RF Bridge.
Es ist aber für mich nicht selbst erklärend und ich konnte auch keine Doku dazu finden.
Ich finde z.B. im Template nichts, wo ich eintragen kann, welche Daten an die RF Bridge zum Aussenden via 433 MHZ übertragen werden sollen.
Eine Doku zum Template würde ggf auch reichen.
Leider habe ich grundsätzlich in der FHEM Doku nichts zur Anwedung von Templates gefunden
Moin
Dir ist schon klar, dass MQTT2 == MQTT ist!? Rudolf hat das nur MQTT2 genannt, um eine klarere Differenzierung zu bekommen, da es MQTT schon gab.
Wenn man sich in aller Ruhe einmal das Wiki zu MQTT(2) durchliest, und auch die Einsteigerdoku, dann sollte man auch dahinterkommen, wie es in fhem ungefaehr laeuft!
Gruss Christoph
Zitat von: pc1246 am 08 August 2019, 13:41:19
Moin
Dir ist schon klar, dass MQTT2 == MQTT ist!? Rudolf hat das nur MQTT2 genannt, um eine klarere Differenzierung zu bekommen, da es MQTT schon gab.
ne, sorry verstehe ich nicht
MQTT 2 ist MQTT muss aber anders heißen da es MQTT schon gab?
Wenn es das schon gab, wofür braucht es dann einen neuen Namen ? Das macht es doch nur unnötig komplziert 2 Namen für das gleich zu verwenden. Aus der Doku hatte ich heraus gelesen, das es erhebliche unterschiede zwischen MQTT2 und MQTT gibt. MQTT soll vel Komplizierter sein als MQTT2
WNN das MQTT2_DEVICE == MQTT-DEVICE ist, warum dann die unterschiedlichen Namen.
Ich bin verwirrt.
Zitat
Wenn man sich in aller Ruhe einmal das Wiki zu MQTT(2) durchliest, und auch die Einsteigerdoku, dann sollte man auch dahinterkommen, wie es in fhem ungefaehr laeuft!
Gruss Christoph
Wie es ungefähr bei FHEM läuft habe ich auch verstanden.
Aber mit ungefähr funktioniert es leider nicht.
Da für mich derzeit nur das Schalten von Licht relevant ist, ist es auch recht einfach; eine Lampe , ein Schalter, ein Schaltgerät wobei Schalter und Schaltgerät eines sind.
Hier ist es aber anders ein Schaltgerät hat mehrere Schalter und schaltet mehrere Lampen separat.
Es reicht nicht mehr nur noch dem Schaltergerät zu sagen gehe auf on, sondern ich habe hierbei den Punkt, dass ich dem Schaltgerät sagen muss welchen Schalter ich jetzt bedienen möchte.
Moin
Du musst Dich doch nur von dem Namen loesen. Definiere doch einfach ein MQTT2 device, und ab dann ist es fuer Dich wie MQTT! Die Schichten dazwischen koennen Dir doch voellig egal sein! Bei MQTT musst Du noch einen MQTT-Server (moskitto) aufsetzen, das entfaellt mit MQTT2, da der in fhem schon einfach mitlaeuft!
Gruss Christoph
Zitat von: mollyman01 am 08 August 2019, 13:55:35
ne, sorry verstehe ich nicht
MQTT 2 ist MQTT muss aber anders heißen da es MQTT schon gab?
Wenn es das schon gab, wofür braucht es dann einen neuen Namen ? Das macht es doch nur unnötig komplziert 2 Namen für das gleich zu verwenden. Aus der Doku hatte ich heraus gelesen, das es erhebliche unterschiede zwischen MQTT2 und MQTT gibt. MQTT soll vel Komplizierter sein als MQTT2
Ich bin verwirrt.
Für die MQTT-Module benötigt man einen separaten MQTT-Server, z.B. Mosquitto. Das Modul MQTT2_SERVER stellt einen FHEM-internen MQTT-Server bereit, man muß also außerhalb von FHEM keinen separaten Server konfigurieren.
Eine gute erste Anlaufstelle zur Erklärung ist "MQTT2-Module - Praxisbeispiele (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele)" im Wiki. Außerdem auch die MQTT Einführung (https://wiki.fhem.de/wiki/MQTT).
Zitat von: mahowi am 08 August 2019, 14:07:34
Für die MQTT-Module benötigt man einen separaten MQTT-Server, z.B. Mosquitto. Das Modul MQTT2_SERVER stellt einen FHEM-internen MQTT-Server bereit, man muß also außerhalb von FHEM keinen separaten Server konfigurieren.
Eine gute erste Anlaufstelle zur Erklärung ist "MQTT2-Module - Praxisbeispiele (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele)" im Wiki. Außerdem auch die MQTT Einführung (https://wiki.fhem.de/wiki/MQTT).
Leider hat der Server meine ausführlich geschriebene Antwort aufgrund eines Timout verworfen. :-(
Damit das nicht wieder passiert hier die Kurzfassung nochmal
Bitte nicht falsch verstehen.
Die angegeben Punkte sind bekannt und habe ich mehrfach gelesen.
Ein erläutertes Praxisbeispeil zu Tasmota gibt es unter Praxisbeispiele nicht.
Es gibt 10 Zeilen high Level Erklärung zur MQTT und Tasmota, konkrete Erläuterungen leider nicht.
Auch bei MQTT finde ich nuzr den Hinweis, dass es die Möglichkeit gibt Per publish-Befehl am IO-Gerät payload mitzugeben, eine Erläuterung dazu wie das geht leider nicht.
Genau das hätte ich im Paxisbeispiel erwartet, ich konnte es aber bishe rnicht finden.
Das Einsteiger PDF hat mir sehr geholfen und einen prinzipielles Verständnis zu generieren und einfache Schalter Lampe Relationen erfolgreich zu bilden.
Aber zu meiner Fragestellung konnte ich nichts darin finden, was mir hilft.
Daraus auch die Information, dass dieses über Attribute erfolgen muss. Auch das Template dazu ist bekannt. Allerdings finde ich keine Erklärung wozu welches Attribut was als Syntax erlaubt ist und wie und wofür das zu nutzen ist ist. Room und Icon sind da ja noch recht selbsterklärend.
Das ist ja der Grund warum ich hier im Forum die Frage stelle, weil ich mit der vorhandenen Doku keinen belastbaren Ansatz finde.
Moin
Ich versuche es noch einmal. Loese Dich von den Namen!
Wenn Du anstelle von "MQTT_DEVICE" und "Mosquitto_MQTT_Broker" die entsprechenden Namen von MQTT2 nimmst, kann gerade nicht ins Wiki, dann bleibt alles gleich, wie in Deinem verlinkten Beispiel!
Ansonsten kann Dir hier im fhem-Forum keiner eine haargenaue Anleitung fuer MQTT/MQTT2 schreiben. Das musst Du Dir leider selbst erlesen, was mir eigentlich auch noch bevorsteht.
Gruss Christoph
HI
ich erwarte auch keine haargenaue Anleitung.
Aber ein MQTT_DEVICE hat ganz andere Set/Attribute als ein MQTT2_DEVICE.
ZitatMQTT_DEVICE
[EN DE]
.......
The set extensions are supported with useSetExtensions attribute.
Set eventMap if your publishSet commands are not on/off.
Dieses Set benötige ich:
attr RF_Stein eventMap #05541:on #05544:off
attr RF_Stein publishSet on off toggleon off toggle /Smarthome/Buero/sonoffrf/cmnd/RfCode
Das Telegramm soll ja nicht on oder off senden sondern 001015 oder RfKey1 bei mir.
publishSet gibt es aber nicht beim MQTT2_DEVICE, das gibt es nur bein MQTT_DEVICE (zumindest nach https://fhem.de/commandref.html)
das setList, was möglicherweise als alternative für MQTT2_DEVICE in frage käme scheint aber keine Lösung zu sein.
Hier mein letzter Versuch:
zu sendender Befehl an das Tasmota Device:
/Mhome/WZ/tele/RFBridge/RfKey1
daher anhand des Template folgende Definition:
defmod MQTT2_RFBridge_F81192 MQTT2_DEVICE RFBridge_F81192
attr MQTT2_RFBridge_F81192 IODev myBroker
attr MQTT2_RFBridge_F81192 event-on-change-reading .*
attr MQTT2_RFBridge_F81192 model A_01d_tasmota_rf
attr MQTT2_RFBridge_F81192 readingList TELETOPIC/INFO.:.* { json2nameValue($EVENT) }\
TELETOPIC/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"json_raw"=>$EVENT} : undef }\
TELETOPIC/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"Data"=>"$4"} : undef }\
RFBridge_F81192:/Mhome/WZ/tele/RFBridge/STATE:.* { json2nameValue($EVENT) }\
RFBridge_F81192:/Mhome/WZ/tele/RFBridge/RESULT:.* { json2nameValue($EVENT) }\
RFBridge_F81192:/Mhome/WZ/stat/RFBridge/RESULT:.* { json2nameValue($EVENT) }
attr MQTT2_RFBridge_F81192 setList power:noArg /Mhome/WZ/cmd/RFBridge/RfKey1\
volumeup:noArg CMNDTOPIC/RFsend VOLUMEUPCMD\
rfsend:textField CMNDTOPIC/RFsend {"Protocol":"$EVTPART1","Bits":$EVTPART2,"Data":"0x$EVTPART3"}
attr MQTT2_RFBridge_F81192 stateFormat state\
<br>\
<a href="http://IPAddress" target="_blank">IPAddress</a>
attr MQTT2_RFBridge_F81192 webCmd power
allerdings kommt beim Device gar nichts an. Es scheint als wenn der Broker nichts sendet, da in der Konsole kein Eintrag erscheint
Sorry fürs OT
Aber das mit der Namensgebung hat mich am Anfang auch irritiert, es entsteht der Eindruck es ging um eine neue Version des MQTT protokoll. vielleicht wäre es sinnstiftender wenn der MQTT2_SERVER besser MQTT_SERVER2 (oder MQTT_OWNSERVER, oder, oder, oder...) hieß?
indenraumwerf OToff
Zitat von: DasQ am 09 August 2019, 08:27:49
Sorry fürs OT
Aber das mit der Namensgebung hat mich am Anfang auch irritiert, es entsteht der Eindruck es ging um eine neue Version des MQTT protokoll. vielleicht wäre es sinnstiftender wenn der MQTT2_SERVER besser MQTT_SERVER2 (oder MQTT_OWNSERVER, oder, oder, oder...) hieß?
indenraumwerf OToff
Moin
Ja, aber dafuer ist es lange zu spaet! Und wenn man sich ein wenig einliest, dann wird das eigentlich schnell klar!
Aber sich schlau lesen ist bei fhem nun mal Grundvoraussetzung!
Gruss Christoph
Zitat von: DasQ am 09 August 2019, 08:27:49
Sorry fürs OT
Aber das mit der Namensgebung hat mich am Anfang auch irritiert, es entsteht der Eindruck es ging um eine neue Version des MQTT protokoll. vielleicht wäre es sinnstiftender wenn der MQTT2_SERVER besser MQTT_SERVER2 (oder MQTT_OWNSERVER, oder, oder, oder...) hieß?
indenraumwerf OToff
Je mehr ich lese, dest sicherer bin ich mir, dass die Namensgebung gar nicht so schlecht ist.
Ich bin zwar Anfänger und habe keine Erfahrung mit FHEM und bitte nicht falsch verstehen, aber diese Aussage:
ZitatWenn Du anstelle von "MQTT_DEVICE" und "Mosquitto_MQTT_Broker" die entsprechenden Namen von MQTT2 nimmst, kann gerade nicht ins Wiki, dann bleibt alles gleich, wie in Deinem verlinkten Beispiel!
ist sehr Problematisch, wenn nicht sogar falsch.
Ein einfacher Blick in die Commandref oder spätestens in FHEM zeigt auch warum.
MQTT_DEVICE hat Attribute, die es bei MQTT2_DEVICE gar nicht gibt.
Es ist halt sehr blöde, wenn aber genau diese Attribute benötigt werden.
Ich habe viele Lösungen gefunden für mein Problem, aber alle basieren auf einem MQTT_DEVICE mit dem Attribut
publishSet
. Dieses gibt es aber laut FHEM und der Commandref nicht für MQTT2_DEVICES
MQTT:
Zitatattr <name> publishSet [[<reading>:]<commands_or_options>] <topic>
configures set commands and UI-options e.g. 'slider' that may be used to both set given reading ('state' if not defined) and publish to configured topic
example:
attr mqttest publishSet on off switch:on,off level:slider,0,1,100 /topic/123
das ähnlichste pendant dazu wäre vermutlich:
MQTT2:
Zitat◦setList cmd [topic|perl-Expression] ...
When the FHEM command cmd is issued, publish the topic. Multiple tuples can be specified, each of them separated by newline, the newline does not have to be entered in the FHEMWEB frontend. Example:
attr dev setList\
on tasmota/sonoff/cmnd/Power1 on\
off tasmota/sonoff/cmnd/Power1 off
This example defines 2 set commands (on and off), which both publish the same topic, but with different messages (arguments).
Notes: ◾arguments to the set command will be appended to the message published (not for the perl expression)
◾the command arguments are available as $EVENT, $EVTPART0, etc., the name of the device as $NAME, both in the perl expression and the "normal" topic variant.
◾the perl expression must return a string containing the topic and the message separated by a space.
◾SetExtensions is activated
◾if the topic name ends with :r, then the retain flag is set
Leider funktioniert es bei mir nicht in der Form, wie es das Template A_01d_tasmota_rf vorgibt.
Versuche mit varianten laut der Commandref Doku
Zitatattr dev setList\
on /Mhome/WZ/cmd/RFBridge/RfKey1
führten leider auch zu keinem besseren Ergebnis
Ich bin derzeit fast geneigt das FHEM neu aufzusetzen und dann mit MQTT zu arbeiten, da dieses für meine Anwendungsfälle deutlich besser dokumentiert ist. Aber eine zukunftsfähige Lösung ist das nicht und maximal Plan B
ZitatLeider funktioniert es bei mir nicht in der Form, wie es das Template A_01d_tasmota_rf vorgibt.
Was heisst das genau?
Was steht im Log bei einem "attr myBroker verbose 5" ?
Was genau soll gesendet werden?
Zitatattr dev setList on /Mhome/WZ/cmd/RFBridge/RfKey1
Schaut merkwuerdig aus, da hier ken Message definiert wurde, nur das topic.
Zitat von: rudolfkoenig am 09 August 2019, 12:17:00
Was heisst das genau?
Was steht im Log bei einem "attr myBroker verbose 5" ?
Was genau soll gesendet werden?
Schaut merkwuerdig aus, da hier ken Message definiert wurde, nur das topic.
zu A1 Wenn ich das Template nehme, so wie es standardmäßig ausgefüllt ist, soll es funktionieren, so habe ich das hier im Forum in ein paar BEiträgen gelesen. Es passiert aber nichts, es wird nichts zur Bridge übertragen.
zu A2 Ich bin jetzt das WE weg und starte am Montag dann die Log-Aufzeichnung
zu B das "/Mhome/WZ/cmd/RFBridge/RfKey1" ist das, was als Message transportiert werden und soll. Es soll den Schalter 1 auslösen wenn On gedrückt wird
Zitatzu B das "/Mhome/WZ/cmd/RFBridge/RfKey1" ist das, was als Message transportiert werden und soll.
Eine Nachricht besteht aus topic + message (leerzeichengetrennt), und damit fehlt hier das Message.
/Mhome/WZ/cmd/RFBridge/...
Hallo,
so wie das schon aussieht hast du in der MQTT-Konfiguration des Sonoff am Parameter topic = %topic% (sonoff) Änderungen vorgenommen, das wird in den Videos empfohlen wird hier aber mit dem MQTT2-Template nichts.
Stell mal alles wieder auf Standard (Wiki (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Tasmota) gleich am Anfang beschrieben), lösch dein bisheriges Device, restarte den Sonoff das wieder ein neues Device angelegt wird und wende daruf dann das Template an.
Mehr kann ich wsl. leider auch nicht helfen da ich keine Bridge besitze, aber ein list (https://forum.fhem.de/index.php/topic,71806.msg633579.html#msg633579) kannst du auf alle Fälle von dem neuen Device noch zeigen.
Gruß
Thomas
Habe das Sonoff umbenannt:
Zitatclient (DVES_F81192)
DVES_%06X
Zitattopic = %topic% (sonoff)
DVES_%06X
dann habe ich FHEM gelöscht und neu Installiert.
Dann habe ich:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
2019.08.11 20:48:35 1: usb create starting
2019.08.11 20:48:35 3: Probing ZWDongle device /dev/serial0
2019.08.11 20:48:35 3: Probing CUL device /dev/ttyAMA0
2019.08.11 20:48:36 3: Probing TCM_ESP3 device /dev/ttyAMA0
2019.08.11 20:48:36 3: Probing ZWDongle device /dev/ttyAMA0
2019.08.11 20:48:36 3: Probing SIGNALDuino device /dev/ttyAMA0
2019.08.11 20:48:36 3: Probing MYSENSORS device /dev/ttyAMA0
2019.08.11 20:48:36 3: Probing ArduCounter device /dev/ttyAMA0
2019.08.11 20:48:37 3: Probing ElsnerWS device /dev/ttyAMA0
2019.08.11 20:48:38 3: Probing FRM device /dev/ttyAMA0
2019.08.11 20:48:43 1: usb create end
2019.08.11 20:48:43 0: Featurelevel: 5.9
2019.08.11 20:48:43 0: Server started with 6 defined entities (fhem.pl:19805/2019-07-09 perl:5.028001 os:linux user:fhem pid:9076)
2019.08.11 21:02:22 3: MQTT2_FHEM_Server: port 1883 opened
2019.08.11 21:02:24 2: autocreate: define MQTT2_Leuchtturm_68068B MQTT2_DEVICE Leuchtturm_68068B
2019.08.11 21:02:24 2: autocreate: define FileLog_MQTT2_Leuchtturm_68068B FileLog ./log/MQTT2_Leuchtturm_68068B-%Y.log MQTT2_Leuchtturm_68068B
2019.08.11 21:02:25 2: autocreate: define MQTT2_DVES_F81192 MQTT2_DEVICE DVES_F81192
2019.08.11 21:02:25 2: autocreate: define FileLog_MQTT2_DVES_F81192 FileLog ./log/MQTT2_DVES_F81192-%Y.log MQTT2_DVES_F81192
2019.08.11 21:02:27 2: AttrTemplates: got 99 entries
habe dann bei
MQTT2_DVES_F81192
das Template
A_01d_tasmota_rf
eingestellt.
defmod MQTT2_DVES_F81192 MQTT2_DEVICE DVES_F81192
attr MQTT2_DVES_F81192 IODev MQTT2_FHEM_Server
attr MQTT2_DVES_F81192 event-on-change-reading .*
attr MQTT2_DVES_F81192 model A_01d_tasmota_rf
attr MQTT2_DVES_F81192 readingList /Mhome/WZ/tele/DVES_F81192/INFO.:.* { json2nameValue($EVENT) }\
/Mhome/WZ/tele/DVES_F81192/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"json_raw"=>$EVENT} : undef }\
/Mhome/WZ/tele/DVES_F81192/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"Data"=>"$4"} : undef }\
DVES_F81192:/Mhome/WZ/tele/DVES_F81192/STATE:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_F81192 room MQTT2_DEVICE
attr MQTT2_DVES_F81192 setList power:noArg /Mhome/WZ/cmnd/DVES_F81192/RFsend POWERCMD\
volumeup:noArg /Mhome/WZ/cmnd/DVES_F81192/RFsend VOLUMEUPCMD\
rfsend:textField /Mhome/WZ/cmnd/DVES_F81192/RFsend {"Protocol":"$EVTPART1","Bits":$EVTPART2,"Data":"0x$EVTPART3"}
attr MQTT2_DVES_F81192 stateFormat state\
<br>\
<a href="http://IPAddress" target="_blank">IPAddress</a>
setstate MQTT2_DVES_F81192 state\
<br>\
<a href="http://192.168.178.40" target="_blank">192.168.178.40</a>
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Epoch 1565550454
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 FallbackTopic cmnd/DVES_F81192_fb/
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 GroupTopic sonoffs
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Heap 28
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 Hostname DVES_F81192-4498
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 IPAddress 192.168.178.40
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 LWT Online
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 LoadAvg 19
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 Module Sonoff Bridge
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 POWER
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 RestartReason Software/System restart
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Sleep 50
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 SleepMode Dynamic
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Time 2019-08-11T20:07:34
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Uptime 0T00:15:18
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 UptimeSec 918
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 Version 6.6.0.3(sonoff)
setstate MQTT2_DVES_F81192 2019-08-11 21:02:25 WebServerMode Admin
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_AP 1
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_BSSId 98:9B:CB:65:ED:49
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_Channel 1
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_Downtime 0T00:00:00
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_LinkCount 1
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_RSSI 80
setstate MQTT2_DVES_F81192 2019-08-11 21:07:35 Wifi_SSId testnet
dazu das List
Internals:
CFGFN
CID DVES_F81192
DEF DVES_F81192
DEVICETOPIC MQTT2_DVES_F81192
FUUID 5d506641-f33f-e9c7-3720-4247ed5861ff991a
IODev MQTT2_FHEM_Server
NAME MQTT2_DVES_F81192
NR 82
STATE state
<br>
<a href="http://192.168.178.40" target="_blank">192.168.178.40</a>
TYPE MQTT2_DEVICE
READINGS:
2019-08-11 21:07:35 Epoch 1565550454
2019-08-11 21:02:25 FallbackTopic cmnd/DVES_F81192_fb/
2019-08-11 21:02:25 GroupTopic sonoffs
2019-08-11 21:07:35 Heap 28
2019-08-11 21:02:25 Hostname DVES_F81192-4498
2019-08-11 21:02:25 IPAddress 192.168.178.40
2019-08-11 21:02:25 LWT Online
2019-08-11 21:07:35 LoadAvg 19
2019-08-11 21:02:25 Module Sonoff Bridge
2019-08-11 21:02:25 POWER
2019-08-11 21:02:25 RestartReason Software/System restart
2019-08-11 21:07:35 Sleep 50
2019-08-11 21:07:35 SleepMode Dynamic
2019-08-11 21:07:35 Time 2019-08-11T20:07:34
2019-08-11 21:07:35 Uptime 0T00:15:18
2019-08-11 21:07:35 UptimeSec 918
2019-08-11 21:02:25 Version 6.6.0.3(sonoff)
2019-08-11 21:02:25 WebServerMode Admin
2019-08-11 21:07:35 Wifi_AP 1
2019-08-11 21:07:35 Wifi_BSSId 98:9B:CB:65:ED:49
2019-08-11 21:07:35 Wifi_Channel 1
2019-08-11 21:07:35 Wifi_Downtime 0T00:00:00
2019-08-11 21:07:35 Wifi_LinkCount 1
2019-08-11 21:07:35 Wifi_RSSI 80
2019-08-11 21:07:35 Wifi_SSId testnet
Attributes:
IODev MQTT2_FHEM_Server
event-on-change-reading .*
model A_01d_tasmota_rf
readingList /Mhome/WZ/tele/DVES_F81192/INFO.:.* { json2nameValue($EVENT) }
/Mhome/WZ/tele/DVES_F81192/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"json_raw"=>$EVENT} : undef }
/Mhome/WZ/tele/DVES_F81192/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"Data"=>"$4"} : undef }
DVES_F81192:/Mhome/WZ/tele/DVES_F81192/STATE:.* { json2nameValue($EVENT) }
room MQTT2_DEVICE
setList power:noArg /Mhome/WZ/cmnd/DVES_F81192/RFsend POWERCMD
volumeup:noArg /Mhome/WZ/cmnd/DVES_F81192/RFsend VOLUMEUPCMD
rfsend:textField /Mhome/WZ/cmnd/DVES_F81192/RFsend {"Protocol":"$EVTPART1","Bits":$EVTPART2,"Data":"0x$EVTPART3"}
stateFormat state
<br>
<a href="http://IPAddress" target="_blank">IPAddress</a>
Irgendwas muss jetzt aber noch gemacht werden, damit es schalter gibt und ich diese nutzen kann
Zitat von: rudolfkoenig am 09 August 2019, 14:19:37
Eine Nachricht besteht aus topic + message (leerzeichengetrennt), und damit fehlt hier das Message.
Habe hierzu nochmal nachgelesen (https://github.com/arendst/Sonoff-Tasmota/wiki/Sonoff-RF-Bridge-433) bei der Bridge ist es wohl etwas anders, weil die kennt nicht on/ off/ toggle
Die Bridge kennt ja nur ihre 16 RfKeys welcher davon on oder off ist ja eine definitionsache Gerät 1 kann mit
RfKey1
angeschaltet und mit
RfKey9
ausgeschaltet
*******edit**********(hab das posting umgedreht)(und ich hab keine rfbridge)
die rfbridge kann scheinbar mehrere schaltlogiken.
1. raw (https://github.com/arendst/Sonoff-Tasmota/wiki/Sonoff-RF-Bridge-433)
2. angelernt (https://community.home-assistant.io/t/mqtt-rf-switch-config/59960)
du willst so wie ich das les, angelernt schalten. das kann das template soweit mir bekannt ist noch nicht.
mir wäre ein list
vor dem template zuweisen wichtig und das man das standart tasmotatopic verwedet, so ist das etwas blindesstochernimheuhaufen ::) (deine logik kannst dann wenns funktioniert einbaun)
aber ich versuchs trozdem mal, etwas in der art:
attr MQTT2_DVES_F81192 setList RfKey1:on,off Mhome/WZ/cmnd/DVES_F81192/RfKey1 $EVTPART1wobei "RfKey1" nach dem setlist, noch eine unbekannte ist da mir das "list" fehlt und danach konsequent in der namensgebung weiter verwendet wird.
btw. gibts dazu schon mehrere threads
mqtt2.template für RFbridge von Sonoff entwickeln (https://forum.fhem.de/index.php/topic,99042.0.html)
und
Zitat von: Beta-User am 20 März 2019, 15:03:30
Hi,
für den Fall, das dein Anliegen noch aktuell ist, ist mir zwar immer noch nicht ganz klar, was aus welchem Anlaß wohin geschickt wird, aber zwei eventuell passende Puzzlesteinchen kann ich evtl. - ohne Erfoglsgarantie - anbieten :) ...
a) Entweder wir machen eine Auswertung von {"RfKey4":"Learned sent"} usw., indem wir alle JSON-Messages mit "RfKey[\d]+" anders behandeln (siehe hier: https://forum.fhem.de/index.php/topic,98723.msg920946.html#msg920946), oder
b) was evtl. einfacher ist: wir versuchen eine Art "Nachbehandlung" mit $JSONMAP vorzunehmen, indem wir eine etwas "schräge" JSONMAP nutzen, da weiß ich aber nicht, ob das klappt.... Testen könntest du
attr MQTT2_Bridge1 jsonMap RfKey3:{"switch2"=>"on"} RfKey4:{"switch2"=>"off"}
attr MQTT2_Bridge1 readingList [...]
stat/smarthome/sonoff1/RESULT:.* { json2nameValue($EVENT, '', $JSONMAP) }
quelle (https://forum.fhem.de/index.php/topic,95752.msg886591.html#msg886591)
***alter anfang***
Im Prinzip musst dir nur dein setList selber basteln. stateFormat und webCmd anpassen.
Dazu bügelst dir ein annähernd passendes Template drauf und passt das an.
Hier ein Beispiel von mein Sonoff (tasmota) Touch
defmod SonOff_Wz MQTT2_DEVICE SonOff_Wz
attr SonOff_Wz IODev MQTT2_Broker
attr SonOff_Wz autocreate 0
attr SonOff_Wz devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot 1.on:on:POWER1+off 1.off:off:POWER1+on 2.on:on:POWER2+off 2.off:off:POWER2+on
attr SonOff_Wz group Licht
attr SonOff_Wz model A_02a_tasmota_2ch_unified
attr SonOff_Wz readingList tele/sonoff_Wz/LWT:.* LWT\
tele/sonoff_Wz/STATE:.* { json2nameValue($EVENT) }\
tele/sonoff_Wz/SENSOR:.* { json2nameValue($EVENT) }\
tele/sonoff_Wz/INFO.:.* { json2nameValue($EVENT) }\
stat/sonoff_Wz/RESULT:.* { json2nameValue($EVENT) }\
tele/sonoff_Wz/UPTIME:.* { json2nameValue($EVENT) }\
stat/sonoff_Wz/POWER1:.* POWER1\
stat/sonoff_Wz/POWER2:.* POWER2
attr SonOff_Wz room Wohnzimmer
attr SonOff_Wz setList POWER1:on,off,toggle cmnd/sonoff_Wz/POWER1 $EVTPART1\
POWER2:on,off,toggle cmnd/sonoff_Wz/POWER2 $EVTPART1
attr SonOff_Wz setStateList on off toggle
attr SonOff_Wz sortby 4
attr SonOff_Wz stateFormat <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
1:POWER1\
2:POWER2\
uptime: Uptime
und schaut dann so aus
Zitat von: DasQ am 12 August 2019, 09:01:34
*******edit**********(hab das posting umgedreht)(und ich hab keine rfbridge)
die rfbridge kann scheinbar mehrere schaltlogiken.
1. raw (https://github.com/arendst/Sonoff-Tasmota/wiki/Sonoff-RF-Bridge-433)
2. angelernt (https://community.home-assistant.io/t/mqtt-rf-switch-config/59960)
du willst so wie ich das les, angelernt schalten. das kann das template soweit mir bekannt ist noch nicht.
mir wäre ein list vor dem template zuweisen wichtig und das man das standart tasmotatopic verwedet, so ist das etwas blindesstochernimheuhaufen ::) (deine logik kannst dann wenns funktioniert einbaun)
aber ich versuchs trozdem mal, etwas in der art:
attr MQTT2_DVES_F81192 setList RfKey1:on,off Mhome/WZ/cmnd/DVES_F81192/RfKey1 $EVTPART1
wobei "RfKey1" nach dem setlist, noch eine unbekannte ist da mir das "list" fehlt und danach konsequent in der namensgebung weiter verwendet wird.
Erstmal danke für deine Mühe.
sorry das, mit dem list hatte ich dann wohl falsch verstanden.
Ich schaue mal, das ich das nachher nochmal nachziehe.
Ich verstehe noch nicht ganz die Logik dieser Zeile "setList RfKey1:on,off Mhome/WZ/cmnd/DVES_F81192/RfKey1 $EVTPART1". Die Bridge ist ja nicht wie ein normaler Schalter.
RfKey1:on,off ?
Der RfKey1 hat entweder den Code für On (Data 001014) oder für off (Data 001015).
Bei mir ist es so RfKey1 ist der On-Schalter, RfKey2 der Off-Schalter.
brauche ich dann nicht zwei Zeilen, eine für On und eine für Off ?
z.B. so
setList RfKey1:on Mhome/WZ/cmnd/DVES_F81192/RfKey1 $EVTPART1 \
RfKey2:off Mhome/WZ/cmnd/DVES_F81192/RfKey2 $EVTPART1
Zum besseren Verständnis für mich; warum ziehst du auf die Variabele $EVTPART1 ab? Der Wert ist immer 1 und kann nicht anders sein (1 = send default RF data for RfKey<x> using RfSync, RfLow, RfHigh and RfHost parameters)
Wäre das wichtig, wenn ich statt auf RfKey auf RfSync, RfLow, RfHigh, RfData gehe?
Ich probiere das dann nachher aus.
------- edit -------
Die beiden Threads sind mir bekannt gewesen ( hatte vor dem ersten Posten die Suchfunktion vom Forum bemüht), haben mir aber leider nicht weitergeholfen
Beim Template Entwicklungsthread habe ich leider überhaupt nicht nachvollziehen können, was die da machen und wie das funktioniert. Alles was da in eckigen udn geschweiften Klammern steht sind für mich leider reine Böhmische Dörfer.
Bei dem anderen Thread hatte ich "abgekupfert", aber es eben nicht zum laufen bekommen. Aus dem Thread kommt auch der Background zu den zwei Zeilen für on und off
Wie gesagt ,,Versuch"
Ich hab keine solche Bridge und muss das ganze blind machen.
Nur kurz noch hinterher gefragt. Du hast die Fernbedienung in tasmota angelernt?
Und du kannst über die tasmota weboberfläche schalten?
Wenn ja mach das List erst nachdem du ein paar mal geschaltet hast.
ja schon klar. Danke für deine Mühe.
hier das list:
Internals:
CFGFN
CID DVES_F81192
DEF DVES_F81192
DEVICETOPIC MQTT2_DVES_F81192
FUUID 5d5191fd-f33f-e9c7-4a6f-45ea1255607be86c
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_MSGCNT 8
MQTT2_FHEM_Server_TIME 2019-08-12 18:24:18
MSGCNT 8
NAME MQTT2_DVES_F81192
NR 35
STATE ???
TYPE MQTT2_DEVICE
READINGS:
2019-08-12 18:23:32 Epoch 1565627012
2019-08-12 18:23:32 Heap 27
2019-08-12 18:21:17 LWT Online
2019-08-12 18:23:32 LoadAvg 41
2019-08-12 18:21:17 POWER
2019-08-12 18:24:17 RfKey1 Learned sent
2019-08-12 18:24:18 RfKey2 Learned sent
2019-08-12 18:23:08 RfReceived_Data 001014
2019-08-12 18:23:08 RfReceived_High 1130
2019-08-12 18:23:08 RfReceived_Low 360
2019-08-12 18:23:08 RfReceived_RfKey 2
2019-08-12 18:23:08 RfReceived_Sync 9930
2019-08-12 18:23:32 Sleep 50
2019-08-12 18:23:32 SleepMode Dynamic
2019-08-12 18:23:32 Time 2019-08-12T17:23:32
2019-08-12 18:23:32 Uptime 0T21:31:16
2019-08-12 18:23:32 UptimeSec 77476
2019-08-12 18:23:32 Wifi_AP 1
2019-08-12 18:23:32 Wifi_BSSId 98:9B:CB:65:ED:49
2019-08-12 18:23:32 Wifi_Channel 1
2019-08-12 18:23:32 Wifi_Downtime 0T00:02:08
2019-08-12 18:23:32 Wifi_LinkCount 19
2019-08-12 18:23:32 Wifi_RSSI 80
2019-08-12 18:23:32 Wifi_SSId testnet
Attributes:
IODev MQTT2_FHEM_Server
readingList DVES_F81192:/Mhome/WZ/tele/DVES_F81192/LWT:.* LWT
DVES_F81192:/Mhome/WZ/cmnd/DVES_F81192/POWER:.* POWER
DVES_F81192:/Mhome/WZ/tele/DVES_F81192/RESULT:.* { json2nameValue($EVENT) }
DVES_F81192:/Mhome/WZ/tele/DVES_F81192/STATE:.* { json2nameValue($EVENT) }
DVES_F81192:/Mhome/WZ/stat/DVES_F81192/RESULT:.* { json2nameValue($EVENT) }
room MQTT2_DEVICE
so theoretisch funktioniert es jetzt so:
defmod MQTT2_DVES_F81192 MQTT2_DEVICE DVES_F81192
attr MQTT2_DVES_F81192 IODev MQTT2_FHEM_Server
attr MQTT2_DVES_F81192 alias AZ_IT_SPOT
attr MQTT2_DVES_F81192 autocreate 0
attr MQTT2_DVES_F81192 model A_01a_tasmota_basic_state_power1
attr MQTT2_DVES_F81192 readingList /Mhome/WZ/tele/DVES_F81192/LWT:.* LWT\
/Mhome/WZ/tele/DVES_F81192/STATE:.* { json2nameValue($EVENT) }\
/Mhome/WZ/tele/DVES_F81192/SENSOR:.* { json2nameValue($EVENT) }\
/Mhome/WZ/tele/DVES_F81192/INFO.:.* { json2nameValue($EVENT) }\
/Mhome/WZ/stat/DVES_F81192/RESULT:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_F81192 room Arbeitszimmer,MQTT2_DEVICE
attr MQTT2_DVES_F81192 setList off:noArg Mhome/WZ/cmnd/DVES_F81192/RfKey2\
on:noArg Mhome/WZ/cmnd/DVES_F81192/RfKey1
attr MQTT2_DVES_F81192 setStateList on off
setstate MQTT2_DVES_F81192 set_off
setstate MQTT2_DVES_F81192 2019-08-12 18:58:48 LWT
setstate MQTT2_DVES_F81192 2019-08-12 18:57:46 SaveData on
setstate MQTT2_DVES_F81192 2019-08-12 18:57:46 SetOption26 on
setstate MQTT2_DVES_F81192 2019-08-12 18:57:45 StateText1 off
setstate MQTT2_DVES_F81192 2019-08-12 18:57:45 StateText2 on
setstate MQTT2_DVES_F81192 2019-08-12 18:57:46 StateText3 toggle
setstate MQTT2_DVES_F81192 2019-08-12 18:57:46 StateText4 hold
setstate MQTT2_DVES_F81192 2019-08-12 19:03:42 state set_off
ich bekomme dafür eine Zeile die so aussieht:
ZitatAZ_IT_SPOT on off
Das ist so auch fein.
Jetzt fehlen aber die restlichen Zeilen.
RfKey3 macht nur Toggle im Schlafzimmer und RfKey4 macht toggle im Flur. Dafür hatte ich gerne jeweils eine Zeile.
ICh habe gelesen, das man ein Device Splitten kann, aber nicht wie
Sorry, dass ich das erst jetzt sehe...
Das mit dem Splitten geht so: einfach eine RAW-Definition nehmen, den Device-Namen für das Duplikat angeben, und dann die Attribute löschen, die man nicht braucht bzw. dazufügen, was man haben will.
Ansonsten wäre es auch möglich, die toggle-Befehle in das "Einheitsdevice" mit reinzubasteln, z.B. in die Richtung:
attr MQTT2_DVES_F81192 setList off:noArg Mhome/WZ/cmnd/DVES_F81192/RfKey2\
on:noArg Mhome/WZ/cmnd/DVES_F81192/RfKey1\
Flur:noArg Mhome/WZ/cmnd/DVES_F81192/RfKey4\
Dabei ist aber suboptimal, dass es ein Toggle-Befehl ist; manchmal gibt es "versteckte Codes", mit denen wirklich Ein- und Ausschalten getrennt werden kann.
Das mit json_raw ist nur als eine Art Zwischeninfo gedacht. Du kannst daraus separate Devices basteln, wenn du den ankommenden JSON analysierst bzw. regexe baust, die das in "angemessene" Readingwerte (wie "state open" bzw. "state closed") umwandeln.
Ein Beispiel, wie das geht, ist in OpenMQTTGateway_simple_RF433_switch enthalten. Würde mich freuen, wenn du das auch als "nicht-FHEM-Profi" mit der regex selbst mal ausprobieren würdest (auf der genannten Basis weiterentwickeln). Zum Testen, ob eine Regex paßt, würde ich z.B. https://regexr.com empfehlen.
Sonst bitte nochmal melden.
1. Editiere nicht in der cfg rum, das ist fehlerträchtig...
(RAW-Editor nutzen, Wiki: Import von Code-Snippets)
2. "==" für Textvergleiche wird (fast) nie wahr.
3. TELETOPIC/RESULT:... ist Mist, da ist was schiefgegangen beim Anwenden des attrTemplate. Sollte jeweils wohl tele/sonoffRF/RESULT:... sein.
4. Löse das innerhalb des Moduls/des MQTT2-Devices; Beispiel:
tele/sonoffRF/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...(ED2EFE)...RfKey...([^"]+)..., ? {"state"=>"on"} : undef }\
Nochmal: Mach das innerhalb des Devices und dann für jedes Funk-Device eine konkrete Abfrage (bzw. zwei für ein/aus usw.). Genau wie vorgeschlagen.
Einfach die RAW-Definition nehmen und unter anderem Namen mit den konkreten Regex-Ausdrücken arbeiten und die readingList-Zeilen auf das beschränken, was du brauchst (also bei on/off zwei readingList-Einträge, den Rest kannst du weglassen.)...
Das ist schon alles.
Das "template"-Device dient "nur" dazu, erst mal an die Daten und regexe zu kommen.
Danke für die Hilfe, aber ich verstehe das gar nicht, daher wollte ich per notify schalten, naja ... ist einfach zu kompliziert :-[
Finde nicht, dass es kompliziert ist:
Du filterst direkt die eingehende Message für "open" raus (bzw. zusätzlich noch "closed"), und packst das dann in "state" von einem eigenen Device, das (nur) diese beiden Zustände kennt.
Nur der regex-Ausdruck sieht kompliziert aus, wenn man damit bisher nichts zu tun hatte, das ist aber auch schon alles...
Aber bitte: viele Wege führen nach Rom, meine Empfehlung ist, den Expresszug ohne "Umsteigen" zu nehmen, aber es geht auch anders...
(Aber einfach nur auf bestimmte Readinginhalte von "Data" zu triggern, ist eine Anfängeraufgabe, die du m.E. dann im entsprechenden Bereich gesondert stellen solltest. Hier würde ich gerne den "Expressweg" diskutieren ohne Krücken; wenn der TE das anders sieht, kann er dir gerne behilflich sein).