Hallo ich bin neu auf dem Gebiet von Fhem. Seit ca 12 Wochen. Und eins muss man sagen es macht süchtig ;) ;)
Ich habe folgendes Problem was mich jetzt schon seit 2 Wochen zur Verzweiflung treibt
Ich habe 2 Sonoff – Basic Geräte in Fhem integriert dazu habe ich 2 anliegen
1 . anzeigen lassen der Sonoff Geräte beim Schaltwechsel zb. über Alexa.
2. Zu der Temperatur Anzeige der Sonoff Geräte das sie über DeviceOverview
Angezeigt werden
Was ich schon geschafft habe ist das die Geräte schon mal in Fhem angezeigt werden sowie auch geschaltet werden können. Was ich aber nicht hinkriege ist das der jeweilige wert sich dann ändert.
zb. wenn ich über Alex das Licht einschalte wird der state nicht geändert. Er verbleibt in der alten Stellung.
das ist die Einstellung vom Test Sonoff
Test Sonoff
defmod Sonoff_Test MQTT_DEVICE
attr Sonoff_Test IODev Mosquitto
attr Sonoff_Test event-on-change-reading state
attr Sonoff_Test eventMap ON:on OFF:off TOGGLE:toggle
attr Sonoff_Test publishSet publishSet on off toggle cmnd/Sonoff_Test/POWER
attr Sonoff_Test room Test
attr Sonoff_Test stateFormat state
attr Sonoff_Test subscribeReading_state state/Sonoff_Test/POWER
attr Sonoff_Test webCmd on:off:toggle
setstate Sonoff_Test off
setstate Sonoff_Test 2017-11-22 11:58:48 state OFF
setstate Sonoff_Test 2017-11-22 13:25:08 transmission-state subscription acknowledged
Der 2te Basic ist genauso eingestellt natürlich nur mit einem anderen Namen und Pfad.
zu Punkt 2 wie bekomme ich die Aktuelle Temperatur in der DeviceOverview angezeigt.
Folgendes habe ich konfiguriert
Sonoff Test
defmod Sonoff_Temp MQTT_DEVICE
attr Sonoff_Temp IODev Mosquitto
attr Sonoff_Temp icon temperature_humidity
attr Sonoff_Temp room Test
attr Sonoff_Temp stateFormat {sprintf("Temperatur: %.1f Grad Feuchte: %.1f ",ReadingsVal($name,"DHT22_Temperature",0),ReadingsVal($name,"DHT22_Humidity",0))}
attr Sonoff_Temp subscribeReading_Sensor tele/Sonoff_Test/SENSOR
setstate Sonoff_Temp Temperatur: 0.0 Grad Feuchte: 0.0
setstate Sonoff_Temp 2017-11-22 15:07:36 DHT22_Feuchtigkeit 45
setstate Sonoff_Temp 2017-11-22 15:07:36 DHT22_Temperatur 20.6
setstate Sonoff_Temp 2017-11-22 15:07:36 Sensor {"Zeit":"2017-11-22T15:07:36", "DHT22":{"Temperatur":20.6, "Feuchtigkeit":45.0}, "TempUnit":"C"}
setstate Sonoff_Temp 2017-11-22 15:07:36 TempUnit C
setstate Sonoff_Temp 2017-11-22 15:07:36 Zeit 2017-11-22T15:07:36
setstate Sonoff_Temp 2017-11-22 15:07:36 transmission-state incoming publish received
Sonoff KU
defmod Sonoff_KU_Temp MQTT_DEVICE
attr Sonoff_KU_Temp IODev Mosquitto
attr Sonoff_KU_Temp icon temperature_humidity
attr Sonoff_KU_Temp room Test
attr Sonoff_KU_Temp stateFormat {sprintf("Temperatur: %.1f Grad Feuchte: %.1f ",ReadingsVal($name,"DHT22_Temperature",0),ReadingsVal($name,"DHT22_Humidity",0))}
attr Sonoff_KU_Temp subscribeReading_Sensor tele/Sonoff_KU_Licht/SENSOR
setstate Sonoff_KU_Temp Temperatur: 0.0 Grad Feuchte: 0.0
setstate Sonoff_KU_Temp 2017-11-22 15:10:36 DHT22_Feuchtigkeit 40.3
setstate Sonoff_KU_Temp 2017-11-22 15:10:36 DHT22_Temperatur 22.8
setstate Sonoff_KU_Temp 2017-11-22 15:10:36 Sensor {"Zeit":"2017-11-22T15:10:36", "DHT22":{"Temperatur":22.8, "Feuchtigkeit":40.3}, "TempUnit":"C"}
setstate Sonoff_KU_Temp 2017-11-22 15:10:36 TempUnit C
setstate Sonoff_KU_Temp 2017-11-22 15:10:36 Zeit 2017-11-22T15:10:36
setstate Sonoff_KU_Temp 2017-11-22 15:10:36 transmission-state incoming publish received
Die expandJSON habe ich für beide Geräte einzelnd angelegt oder ist es zu viel des Guten.
Als Temperatur Fühler benutze ich einen DHT 22 angeschlossen an GPIO 14
defmod Sonoff_Temp_Read expandJSON Sonoff_Temp.*:.*:.{.*}
attr Sonoff_Temp_Read room Test
setstate Sonoff_Temp_Read 2017-11-22 15:12:36
setstate Sonoff_Temp_Read 2017-11-22 14:35:39 state active
defmod Sonoff_KU_Temp_Read expandJSON Sonoff_KU_Temp.*:.*:.{.*}
attr Sonoff_KU_Temp_Read room Test
setstate Sonoff_KU_Temp_Read 2017-11-22 15:10:36
setstate Sonoff_KU_Temp_Read 2017-11-22 14:40:53 state active
expandJSON ist um erhlich zu sein für einen Anfänger ganz schön tricky.
so ganz steige ich dort noch nicht durch :-[
hat vielleicht jemand einen Tip wie ich es lösen kann.
Passen denn die Topis zu 100%? Die müssen genau so heißen wie sie im Broker ankommen.
eigentlich ja
zb für Sonoff Test ein und ausschalten
Client mosqsub/1079-Raspberryp received PUBLISH (d0, q0, r0, m0, 'stat/Sonoff_Test/POWER', ... (3 bytes))
stat/Sonoff_Test/POWER OFF
Client mosqsub/1079-Raspberryp received PUBLISH (d0, q0, r0, m0, 'stat/Sonoff_Test/ERGEBNIS', ... (14 bytes))
das kommt vom Sensor zb vn der Küche
tele/Sonoff_KU_Licht/SENSOR {"Zeit":"2017-11-22T16:00:39", "DHT22":{"Temperatur":21.7, "Feuchtigkeit":41.9}, "TempUnit":"C"}
das wird mir über telnet mosquitto ausgegeben.
ich habe noch 2 bilder mit angehangen so sieht man es vielleicht besser. beim Sensor wird der Wert ja angezeigt aber nicht oben übernommen.
Hier der Ansatz zur Lösung!
https://forum.fhem.de/index.php/topic,79474.msg715588.html#msg715588 (https://forum.fhem.de/index.php/topic,79474.msg715588.html#msg715588)
Wenn ich das richtig sehe passt das aber nicht!
attr Sonoff_Temp subscribeReading_Sensor tele/Sonoff_Test/SENSOR
Client mosqsub/1079-Raspberryp received PUBLISH (d0, q0, r0, m0, 'stat/Sonoff_Test/ERGEBNIS', ... (14 bytes))
Deine SENSOR Info kommt ja von einem anderen Gerät:
tele/Sonoff_KU_Licht/SENSOR {"Zeit":"2017-11-22T16:00:39", "DHT22":{"Temperatur":21.7, "Feuchtigkeit":41.9}, "TempUnit":"C"}
Beim expandJSON probier mal
Sonoff_Temp:Sensor:.{.*}
Dann das stateFormat noch auf die richtigen Readings ändern.
Zitat von: Tedious am 23 November 2017, 10:32:19
Wenn ich das richtig sehe passt das aber nicht!
attr Sonoff_Temp subscribeReading_Sensor tele/Sonoff_Test/SENSOR
Client mosqsub/1079-Raspberryp received PUBLISH (d0, q0, r0, m0, 'stat/Sonoff_Test/ERGEBNIS', ... (14 bytes))
Deine SENSOR Info kommt ja von einem anderen Gerät:
tele/Sonoff_KU_Licht/SENSOR {"Zeit":"2017-11-22T16:00:39", "DHT22":{"Temperatur":21.7, "Feuchtigkeit":41.9}, "TempUnit":"C"}
Das passt schon ich habe 2 Geräte. Einmal den Sonoff_Test und einmal den Sonoff_KU_Licht beide liefern unterschiedliche Werte die auch in den Readings angezeigt werden nur das sie nicht nach oben in dieDevice Overview übertragen werden.
Das erste Problem hat sich erledigt. Ich hatte einen Schreibfehler in der Sonoff_Test subscribeReading_state ich hatte ein a zuviel darum hat er es nicht gesehen. In dem anderem Sonoff hies es nict stat, sondern tele also das geht schonmal
falsch
attr Sonoff_Test subscribeReading_state state/Sonoff_Test/POWER
Richtig
attr Sonoff_Test subscribeReading_state stat/Sonoff_Test/POWER
falsch
attr Sonoff_KU subscribeReading_state stat/Sonoff_KU_Licht/POWER
richtig
attr Sonoff_KU subscribeReading_state tele/Sonoff_KU_Licht/POWER
es lag dadran das ich in der user_config was neues angelegt hatte
Client mosqsub/1014-Raspberryp received PUBLISH (d0, q0, r0, m0, 'tele/Sonoff_KU_Licht/STATUS', ... (147 bytes))
tele/Sonoff_KU_Licht/STATUS {"Zeit":"2017-11-24T18:45:23", "Laufzeit":92, "VCC":3.178, "POWER":"ON", "WLAN":{"AP":1, "SSID":"WarPig", "RSSI":100, "APMac":"44:4E:6D:00:0F:64"}}
Client mosqsub/1014-Raspberryp received PUBLISH (d0, q0, r0, m0, 'tele/Sonoff_KU_Licht/SENSOR', ... (96 bytes))
tele/Sonoff_KU_Licht/SENSOR {"Zeit":"2017-11-24T18:45:23", "DHT22":{"Temperatur":22.1, "Feuchtigkeit":44.5}, "TempUnit":"C"}
Client mosqsub/1014-Raspberryp sending PINGREQ
Client mosqsub/1014-Raspberryp received PINGRESP
Client mosqsub/1014-Raspberryp received PUBLISH (d0, q0, r0, m0, 'tele/Sonoff_Test/STATUS', ... (147 bytes))
tele/Sonoff_Test/STATUS {"Zeit":"2017-11-24T18:46:49", "Laufzeit":99, "VCC":3.160, "POWER":"OFF", "WLAN":{"AP":1, "SSID":"WarPig", "RSSI":66, "APMac":"44:4E:6D:00:0F:64"}}
Client mosqsub/1014-Raspberryp received PUBLISH (d0, q0, r0, m0, 'tele/Sonoff_Test/SENSOR', ... (96 bytes))
tele/Sonoff_Test/SENSOR {"Zeit":"2017-11-24T18:46:49", "DHT22":{"Temperatur":19.4, "Feuchtigkeit":50.3}, "TempUnit":"C"}
Sonoff_Temp:Sensor:.{.*} hat nichts gebracht ist immer noch nicht zu sehen
ich habe es so definiert
defmod Sonoff_Temp_Read expandJSON Sonoff_Temp:Sensor:.{.*}
attr Sonoff_Temp_Read room Test
ich habe keine weiteren readings oder so eingefügt
Heureka das Problem ist endlich gelöst. Ich habe laut Heureka das Problem ist endlich gelöst. pink99panther hat mir einen Tipp gegeben. Ich habe die expandJSON auf Sonoff_Tempo:Sensor:.{.*} geändert was erst keinen Erfolg brachte. Anschließend habe ich noch die state bearbeitet in {sprintf("Temperatur: %.1f Grad Feuchte: %.1f ",ReadingsVal($name,"DHT22_Temperatur",0),ReadingsVal($name,"DHT22_Feuchtigkeit",0))} und tada es wird angezeigt
Das komische ist, daß ich es schonmal so geschrieben hatte und es nicht geklappt hatte und es nicht funktioniert hat erst als ich einen komplett Neustart vom Raspberry gemacht hatte wurde es erst angezeigt. Ein Fhem Neustart hat nichts gebracht .
Also jetzt läuft endlich die Anzeige der Temperatur sowie der on off Anzeige ich habe es jetzt so gemacht.
Licht Einstellung
defmod Sonoff_KU MQTT_DEVICE
attr Sonoff_KU IODev Mosquitto
attr Sonoff_KU alias Küche Oberlicht
attr Sonoff_KU event-on-change-reading state
attr Sonoff_KU eventMap ON:on OFF:off TOGGLE:toggle
attr Sonoff_KU icon light_downlight
attr Sonoff_KU publishSet publishSet on off toggle cmnd/Sonoff_KU_Licht/POWER
attr Sonoff_KU room Küche
attr Sonoff_KU stateFormat state
attr Sonoff_KU subscribeReading_state tele/Sonoff_KU_Licht/POWER
attr Sonoff_KU webCmd on:off:toggle
setstate Sonoff_KU on
setstate Sonoff_KU 2017-12-04 16:37:02 state ON
setstate Sonoff_KU 2017-12-04 16:37:02 transmission-state incoming publish received
Temp Einstellung
defmod Sonoff_KU_Temp MQTT_DEVICE
attr Sonoff_KU_Temp IODev Mosquitto
attr Sonoff_KU_Temp alias Küche Temperatur
attr Sonoff_KU_Temp icon temperature_humidity
attr Sonoff_KU_Temp room Küche
attr Sonoff_KU_Temp stateFormat {sprintf("Temperatur: %.1f Grad Feuchte: %.1f ",ReadingsVal($name,"DHT22_Temperatur",0),ReadingsVal($name,"DHT22_Feuchtigkeit",0))}
attr Sonoff_KU_Temp subscribeReading_Sensor tele/Sonoff_KU_Licht/SENSOR
expandJSON
defmod ej3 expandJSON Sonoff.*:.*:.{.*}
attr ej3 alias Sonoff Tools
attr ej3 icon hue_room_garage
attr ej3 room SonoffTools
so Funktioniert es bis jetzt super.
Vielen Dank für die Hilfe :)
was heisst irgendwo?
schreibe ich das ende der cfg bekomme ich ein: Unknown module expandJSON
ZitatUnknown module expandJSON
Ein FHEM Update ausführen.