Tasmota Sonoff RF Bridge

Begonnen von mollyman01, 08 August 2019, 01:49:13

Vorheriges Thema - Nächstes Thema

mollyman01

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

rudolfkoenig

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

mollyman01

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

pc1246

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
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

mollyman01

#4
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.

pc1246

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
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

mahowi

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" im Wiki. Außerdem auch die MQTT Einführung.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

mollyman01

#7
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" im Wiki. Außerdem auch die MQTT Einführung.

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.

pc1246

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
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

mollyman01

#9
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.

mollyman01

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

DasQ

#11
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
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

pc1246

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
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

mollyman01

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

rudolfkoenig

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.