MQTT2_Device / automatische Einbindung S20 funktioniert nicht

Begonnen von Rainer82, 29 November 2019, 20:53:12

Vorheriges Thema - Nächstes Thema

Rainer82

Hallo,

versuche seit mehreren Stunden ein SonOff-S20 Modul unter FHEM anzusprechen, leider ohne Erfolg.

Ich habe noch ein zweites Modul, SonOff POW R2, welches sich automatisch einbindet und geschaltet werden kann.

Anbei das Protokoll für S20: einmal per FHEM on/off und nochmal händisch on/off:

FHEM sendet die Zeilen mit "0"/"1"

Client mosqsub/9628-fhem2018 sending PINGREQ
Client mosqsub/9628-fhem2018 received PINGRESP
Client mosqsub/9628-fhem2018 received PUBLISH (d0, q0, r0, m0, 'CMNDTOPIC/POWER1', ... (1 bytes))
1
Client mosqsub/9628-fhem2018 received PUBLISH (d0, q0, r0, m0, 'CMNDTOPIC/POWER1', ... (1 bytes))
0
Client mosqsub/9628-fhem2018 received PUBLISH (d0, q0, r0, m0, 'stat/S20_1/RESULT', ... (15 bytes))
{"POWER":"OFF"}
Client mosqsub/9628-fhem2018 received PUBLISH (d0, q0, r0, m0, 'stat/S20_1/POWER', ... (3 bytes))
OFF
Client mosqsub/9628-fhem2018 received PUBLISH (d0, q0, r0, m0, 'stat/S20_1/RESULT', ... (14 bytes))
{"POWER":"ON"}
Client mosqsub/9628-fhem2018 received PUBLISH (d0, q0, r0, m0, 'stat/S20_1/POWER', ... (2 bytes))
ON


Und hier noch der automatisch generierte Anteil in der fhem.cfg:

define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
setuuid MQTT2_FHEM_Server 5de16c74-f33f-9f73-c791-257223ae88d3f184
define MQTT2_DVES_67BF6D MQTT2_DEVICE DVES_67BF6D
setuuid MQTT2_DVES_67BF6D 5de17415-f33f-9f73-6be4-7fb47b61a7977b5a
attr MQTT2_DVES_67BF6D IODev MQTT2_FHEM_Server
attr MQTT2_DVES_67BF6D autocreate 0
attr MQTT2_DVES_67BF6D comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/CMNDTOPIC/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr MQTT2_DVES_67BF6D icon hue_filled_outlet
attr MQTT2_DVES_67BF6D model tasmota_basic_state_power1
attr MQTT2_DVES_67BF6D readingList TELETOPIC/LWT:.* LWT\
  TELETOPIC/STATE:.* { json2nameValue($EVENT) }\
  TELETOPIC/SENSOR:.* { json2nameValue($EVENT) }\
  TELETOPIC/INFO.:.* { json2nameValue($EVENT) }\
  STATTOPIC/RESULT:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_67BF6D room MQTT2_DEVICE
attr MQTT2_DVES_67BF6D setList off:noArg    CMNDTOPIC/POWER1 0\
  on:noArg     CMNDTOPIC/POWER1 1\
  toggle:noArg CMNDTOPIC/POWER1 2\
  setOtaUrl:textField CMNDTOPIC/OtaUrl $EVTPART1\
  upgrade:noArg   CMNDTOPIC/upgrade 1
attr MQTT2_DVES_67BF6D setStateList on off toggle
attr MQTT2_DVES_67BF6D stateFormat POWER1
define FileLog_MQTT2_DVES_67BF6D FileLog ./log/MQTT2_DVES_67BF6D-%Y.log MQTT2_DVES_67BF6D
setuuid FileLog_MQTT2_DVES_67BF6D 5de17415-f33f-9f73-5160-fda10ef023960f8e
attr FileLog_MQTT2_DVES_67BF6D logtype text
attr FileLog_MQTT2_DVES_67BF6D room MQTT2_DEVICE
define MQTT2_DVES_32BFF2 MQTT2_DEVICE DVES_32BFF2
setuuid MQTT2_DVES_32BFF2 5de175d6-f33f-9f73-ea81-c6ef9e10514af3aa
attr MQTT2_DVES_32BFF2 IODev MQTT2_FHEM_Server
attr MQTT2_DVES_32BFF2 autocreate 0
attr MQTT2_DVES_32BFF2 comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/cmnd/sonoff_pow_1/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr MQTT2_DVES_32BFF2 devStateIcon {my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot";;;; my $light = ReadingsVal($name,"state","off");;;;"<a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a> uptime: ".ReadingsVal($name,"Uptime",undef).sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power",undef), ReadingsVal($name,"ENERGY_Today",undef), ReadingsVal($name,"ENERGY_Yesterday",undef), ReadingsVal($name,"ENERGY_Total",undef))}
attr MQTT2_DVES_32BFF2 icon hue_filled_outlet
attr MQTT2_DVES_32BFF2 model tasmota_POW
attr MQTT2_DVES_32BFF2 readingList tele/sonoff_pow_1/LWT:.* LWT\
  tele/sonoff_pow_1/STATE:.* { json2nameValue($EVENT) }\
  tele/sonoff_pow_1/SENSOR:.* { json2nameValue($EVENT) }\
  tele/sonoff_pow_1/INFO.:.* { json2nameValue($EVENT) }\
  stat/sonoff_pow_1/RESULT:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_32BFF2 room MQTT2_DEVICE
attr MQTT2_DVES_32BFF2 setList off:noArg    cmnd/sonoff_pow_1/POWER1 0\
  on:noArg     cmnd/sonoff_pow_1/POWER1 1\
  toggle:noArg cmnd/sonoff_pow_1/POWER1 2
attr MQTT2_DVES_32BFF2 setStateList on off toggle
attr MQTT2_DVES_32BFF2 stateFormat {sprintf("aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power",undef), ReadingsVal($name,"ENERGY_Today",undef), ReadingsVal($name,"ENERGY_Yesterday",undef), ReadingsVal($name,"ENERGY_Total",undef))}
attr MQTT2_DVES_32BFF2 webCmd :
define FileLog_MQTT2_DVES_32BFF2 FileLog ./log/MQTT2_DVES_32BFF2-%Y.log MQTT2_DVES_32BFF2
setuuid FileLog_MQTT2_DVES_32BFF2 5de175d6-f33f-9f73-0d36-1ea2049fb7b54cad
attr FileLog_MQTT2_DVES_32BFF2 logtype text
attr FileLog_MQTT2_DVES_32BFF2 room MQTT2_DEVICE



Kann da jemand weiterhelfen ?



rudolfkoenig

Die topics schauen beim ersten Geraet merkwuerdig aus, ich bin die zweite Variante gewoehnt, eine Erklaerung dafuer habe ich aber nicht.
Wie schaut das subscriptions Reading aus?

Rainer82

#2
ZitatWie schaut das subscriptions Reading aus?

Was ist das ?  :-\ Oben habe ich auf dem RasperryPi zum debuggen das hier eingegeben "mosquitto_sub -d -t '#'"

EDIT:

Habe jetzt nochmal alles neu konfiguriert, erst den MQTT2_SERVER und dann die Geräte nacheinander angeschlossen ! Jetzt geht's ...
Kann es sein das der Fehler dadurch entstanden ist, das ich die Geräte abwechselnd eingesteckt hatte ?



rudolfkoenig

Mit "subscriptions Reading" meinte ich eine Zeile in der Detailansicht, im Abschnitt Readings, und in der ersten Spalte "subscriptions".
Da sind die Topics, was der MQTT-Client auswertet, und diese sollten sich in der setList Attribut wiederfinden.

ZitatKann es sein das der Fehler dadurch entstanden ist, das ich die Geräte abwechselnd eingesteckt hatte ?
Ich tippe eher auf eine zu fruehe Zuweisung von attrTemplate, zusammen mit dem nicht richtig Ausfuellen des dabei angezeigten Dialogs.
Aber das ist nur wilde Raterei, was Besseres koennte ich nur nach eine sehr detaillierte Beschreibung des Anmeldevorgangs liefern.

Reinhart

Mosquitto und MQTT2-Server gleichzeitig solltest du NICHT verwenden, das führt zu Fehlfunktionen!

Debuging etc. kannst du ja mit Fhemlog oder EventMonitor durchführen und den Mosquitto deinstallieren.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

rudolfkoenig

ZitatMosquitto und MQTT2-Server gleichzeitig solltest du NICHT verwenden, das führt zu Fehlfunktionen!
Ich praezisiere:
- mosquitto_sub ist ein Clientprogramm, und kann (genauso wie mosquitto_pub) ohne Weiteres mit dem MQTT2_SERVER verwendet werden.
- mosquitto (ohne _sub und _pub) ist ein MQTT-Server, und erledigt die gleiche Aufgabe wie das MQTT2_SERVER Modul, diese beiden sollten nur von solchen Benutzer parallel betrieben werden, die genau wissen was sie wollen.