Autor Thema: [gelöst]MQTT und Sonoff Basic  (Gelesen 418 mal)

Offline HomerJ

  • New Member
  • *
  • Beiträge: 4
[gelöst]MQTT und Sonoff Basic
« am: 22 November 2017, 15:29:07 »
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.

« Letzte Änderung: 04 Dezember 2017, 17:12:18 von HomerJ »

Offline Tedious

  • Hero Member
  • *****
  • Beiträge: 1014
  • Indocti discant et ament meminisse periti
Antw:MQTT und Sonoff Basic
« Antwort #1 am: 22 November 2017, 15:36:15 »
Passen denn die Topis zu 100%? Die müssen genau so heißen wie sie im Broker ankommen.
FHEM auf Brix N3150/4GB/500GB mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max! und SonOff, RPI2 mit 1Wire via Fhem2Fhem zur Heizungsüberwachung. Alexa...

Offline HomerJ

  • New Member
  • *
  • Beiträge: 4
Antw:MQTT und Sonoff Basic
« Antwort #2 am: 22 November 2017, 16:05:15 »
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.
« Letzte Änderung: 22 November 2017, 18:04:09 von HomerJ »

Offline pink99panther

  • Full Member
  • ***
  • Beiträge: 231
Antw:MQTT und Sonoff Basic
« Antwort #3 am: 23 November 2017, 08:38:41 »

Offline Tedious

  • Hero Member
  • *****
  • Beiträge: 1014
  • Indocti discant et ament meminisse periti
Antw:MQTT und Sonoff Basic
« Antwort #4 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"}

FHEM auf Brix N3150/4GB/500GB mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max! und SonOff, RPI2 mit 1Wire via Fhem2Fhem zur Heizungsüberwachung. Alexa...

Offline pink99panther

  • Full Member
  • ***
  • Beiträge: 231
Antw:MQTT und Sonoff Basic
« Antwort #5 am: 23 November 2017, 11:20:21 »
Beim expandJSON probier mal
Sonoff_Temp:Sensor:.{.*}
Dann das stateFormat noch auf die richtigen Readings ändern.

Offline HomerJ

  • New Member
  • *
  • Beiträge: 4
Antw:MQTT und Sonoff Basic
« Antwort #6 am: 24 November 2017, 18:57:17 »
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

Offline HomerJ

  • New Member
  • *
  • Beiträge: 4
Antw:MQTT und Sonoff Basic
« Antwort #7 am: 04 Dezember 2017, 16:56:15 »
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  :)
« Letzte Änderung: 04 Dezember 2017, 17:11:17 von HomerJ »