Ich habe eine Sonoff S20 mit Tasmota geflasht, aber beim Schalten wird der Zustand nicht korrekt wiedergegeben. Jetzt zum Beispiel ist sie ausgeschaltet, ich sehe aber
Internals:
IODev Mosquitto
NAME Sonoff_s20_2
NR 162
STATE on
TYPE MQTT_DEVICE
READINGS:
2018-06-18 08:14:23 LWT Online
2018-06-18 08:26:24 POWER on
2018-06-18 08:26:24 STATE {"Time":"2018-06-18T07:26:23", "Uptime":17, "Vcc":3.260, "POWER":"on", "Wifi":{"AP":1, "SSID":"XXXXXXXX", "RSSI":86, "APMac":"XX:XX:XX:XX:XX:XX"}}
2018-06-18 08:26:24 Time 2018-06-18T07:26:23
2018-06-18 08:26:24 Uptime 17
2018-06-18 08:26:24 Vcc 3.26
2018-06-18 08:26:24 Wifi_AP 1
2018-06-18 08:26:24 Wifi_APMac 38:10:XX:XX:XX:XX
2018-06-18 08:26:24 Wifi_RSSI 86
2018-06-18 08:26:24 Wifi_SSID XXXXXXXXX
2018-06-18 08:29:09 state off
2018-06-18 08:29:09 transmission-state outgoing publish sent
message_ids:
publishSets:
:
topic /cmnd/sonoffs202/POWER
values:
on
off
sets:
off
on
subscribe:
tele/sonoffs202/LWT
tele/sonoffs202/STATE
subscribeExpr:
^tele\/sonoffs202\/LWT$
^tele\/sonoffs202\/STATE$
subscribeQos:
tele/sonoffs202/LWT 0
tele/sonoffs202/STATE 0
subscribeReadings:
tele/sonoffs202/LWT:
cmd
name LWT
tele/sonoffs202/STATE:
cmd
name STATE
Attributes:
IODev Mosquitto
devStateIcon .*:noIcon:noFhemwebLink
group Schalter
publishSet on off /cmnd/sonoffs202/POWER
room Schalter
stateFormat {(ReadingsVal($name,"LWT", "") eq "Online" ) ? ReadingsVal($name,"POWER", "error") : 'offline'}
subscribeReading_LWT tele/sonoffs202/LWT
subscribeReading_STATE tele/sonoffs202/STATE
useSetExtensions 1
verbose 0
webCmd on:off
Weiß jemand, wie man das hinbekommt? Was mache ich falsch?
Hi,
Was zeigt Dir die Tasmota Oberfläche an?
Ist es immer in FHEM eine Invertierte Anzeige oder ist es ein Delay?
Gruß Arnd
Gesendet von iPhone mit Tapatalk
Du meinst das in den Readings POWER und STATE das "on"? Das wird bei meinem S20 richtig angezeigt, allerdings grossgeschrieben.
Auch die Uptime wird bei Deinem eigenartig angezeigt. Meine Uptimes sehen eher so aus: "Uptime":"25T15:22:17"
Wie ist denn der Status Deiner Firmware? Tasmota-Kommandozeile:
11:24:30 CMD: state
11:24:30 MQT: stat/sonoff_s20_01/RESULT = {"Time":"2018-06-18T11:24:30","Uptime":"2T00:27:14","Vcc":3.457,"POWER":"OFF","Wifi":{[...]}}
11:24:35 CMD: status 2
11:24:35 MQT: stat/sonoff_s20_01/STATUS2 = {"StatusFWR":{"Version":"5.12.0","BuildDateTime":"2018-03-22T13:35:38","Boot":31,"Core":"2_4_1","SDK":"2.2.1(cfd48f3)"}}
Auf anderen Sonoffs habe ich inzwischen 5.14.0 installiert. Das verhaelt sich in dieser Hinsicht aber genauso wie 5.12.0.
Gruss Helmut
Vielen Dank für die Antworten. Also ich habe Program version 5.6.1g (bei Zugriff über die Weboberfläche -> Information). Als Zustand bekomme ich
STATUS = {"Status":{"Module":8, "FriendlyName":"sonoff-s20-2", "Topic":"sonoffs202", "ButtonTopic":"0", "Power":0, "PowerOnState":3, "LedState":1, "SaveData":1, "SaveState":1, "ButtonRetain":0, "PowerRetain":0}}
STATUS1 = {"StatusPRM":{"Baudrate":115200, "GroupTopic":"sonoffs", "OtaUrl":"http://raspfhem.fritz.box:80/api/arduino/sonoff.ino.bin", "Uptime":20, "Sleep":0, "BootCount":10, "SaveCount":55, "SaveAddress":"F5000"}}
STATUS2 = {"StatusFWR":{"Program":"5.6.1g", "BuildDateTime":"2018-04-29T13:01:53", "Boot":6, "Core":"2_3_0", "SDK":"1.5.3(aec24ac9)"}}
STATUS3 = {"StatusLOG":{"Seriallog":1, "Weblog":2, "Syslog":0, "LogHost":"raspfhem.fritz.box", "SSId1":"XXXXXX", "SSId2":"indebuurt2", "TelePeriod":300, "Option":"55800009"}}
STATUS4 = {"StatusMEM":{"ProgramSize":475, "Free":464, "Heap":24, "ProgramFlashSize":1024, "FlashSize":1024, "FlashMode":3}}
STATUS5 = {"StatusNET":{"Hostname":"sonoffs202-1422", "IPaddress":"192.168.2.31", "Gateway":"192.168.2.1", "Subnetmask":"255.255.255.0", "DNSServer":"192.168.2.1", "Mac":"XX:XX:XX:XX:XX", "Webserver":2, "WifiConfig":3}}
STATUS6 = {"StatusMQT":{"Host":"192.168.2.7", "Port":1883, "ClientMask":"DVES_%06X", "Client":"WHATEVER", "User":"DVES_USER", "MAX_PACKET_SIZE":475, "KEEPALIVE":15}}
STATUS7 = {"StatusTIM":{"UTC":"Mon Jun 18 09:51:58 2018", "Local":"Mon Jun 18 10:51:58 2018", "StartDST":"Sun Mar 25 02:00:00 2018", "EndDST":"Sun Oct 28 03:00:00 2018", "Timezone":1}}
STATUS10 = {"StatusSNS":{"Time":"2018-06-18T10:51:58"}}
STATUS11 = {"StatusSTS":{"Time":"2018-06-18T10:51:58", "Uptime":20, "Vcc":3.260, "POWER":"off", "Wifi":{"AP":1, "SSID":"XXXXXX", "RSSI":82, "APMac":"XX:XX:XX:XX"}}}
Die Weboberfläche reagiert sofort, also wenn geschaltet wird, steht dort sofort ON oder OFF, je nachdem, was nun gerade gilt. Die Kleinschreibung von POWER habe vermutlich ich zu verantworten, weil ich das mal im Sourcecode geändert habe.
Mir erscheint das eher ein Problem von FHEM zu sein. Denn das Gerät selbst merkt, dass es on oder off ist und reagiert. Aber die Oberfläche meines FTUI sowie des FHEMWEB reagiert nicht sofort. Kann das was mit longpoll zu tun haben?
Zitat von: andies am 18 Juni 2018, 11:56:06
Aber die Oberfläche meines FTUI sowie des FHEMWEB reagiert nicht sofort. Kann das was mit longpoll zu tun haben?
Ah, dann ist das bei mir falsch 'ruebergekommen. FTUI benutze ich nicht und im FHEMWEB wird das bei mir sofort aktualisiert.
Das longpoll-Attribut habe ich auf "websocket" eingestellt.
Gruss Helmut
Ich glaube inzwischen, dass es ein MQTT Problem ist. Wie meldet denn der Schalter dem broker zurück, dass er geschaltet hat? Gibt es keine Rückmeldung "ich habe fertig"? Auf der Webseite des Gerätes selbst ist sofort zu sehen, dass der Sonoff reagiert hat.
Man könnte mit Teleperiod arbeiten. Die Teleperiod habe ich schon auf 30 eingestellt, aber auch das ist zu langsam. Der geringste Wert ist 10. Aber selbst dann würde ich zehn Sekunden warten müssen, bis aus dem state on dann endlich off wird (und umgekehrt).
Also im Moment des Schaltens setzt der Tasmota-Sonoff einen MQTT ab.
So sieht das auf meiner mqtt-Konsole aus.
Das wird von FHEM gesendet wenn ich einen Schalt absetze:
09:12:43 cmnd/eingang/Power/set ON
Und das antwortet der Sonoff sofort drauf:
09:12:43 stat/eingang/POWER ON
Nachtragung:
Ich habe gerade nochmal ein wenig probiert. In der Version 5.13.1 wird bei mir diese Stat-Meldung nicht abgesetzt, in der 5.14 geht das (wieder?).
Zitat von: andies am 21 Juni 2018, 07:12:25
Ich glaube inzwischen, dass es ein MQTT Problem ist. Wie meldet denn der Schalter dem broker zurück, dass er geschaltet hat? Gibt es keine Rückmeldung "ich habe fertig"?
Ich bin noch mal in mich gegangen und musste feststellen, dass ich zu Anfang vor demselben Problem stand und an meine
Loesung bei der Antwort nicht mehr gedacht habe. Ich habe RESULT subskribiert und das im stateFormat ausgewertet. Dabei
muss ich gestehen, dass ich inzwischen Deinen Code fuer stateFormat uebernommen habe. Danke fuer die Anregung. Beim
expandJSON habe ich das Attribut "addReadingsPrefix 1" gesetzt.
attr sonoff_pow_01 subscribeReading_RESULT stat/sonoff_pow_01/RESULT
attr sonoff_pow_01 stateFormat {(ReadingsVal($name,"LWT", "") eq "Online") ? ReadingsVal($name,"RESULT_POWER", "error") : 'offline'}
Gruss Helmut
Danke, das probiere ich gleich mal aus.
Entschuldigt, aber ich kenne mich überhaupt nicht gut aus. Wo finde ich denn das expandJSON-Device in das ich "addReadingsPrefix 1" eintragen muss. Oder muss ich es erst erstellen?
Jürgen