Homebridge - Keine Status Übergabe?

Begonnen von marcel151, 01 Dezember 2019, 11:14:21

Vorheriges Thema - Nächstes Thema

TomLee

Marcel kannst du bitte deine Sonoff Steckdose auch mal dem jsonmap (wie in meinem Beispiel) und ohne userReadings, setStateList und statFormat konfigurieren. Wird bei dir dann auch der Status korrekt in Home angezeigt ?

MadMax-FHEM

Zitat von: marcel151 am 02 Dezember 2019, 14:00:02
Das wird über sendelro gemacht
sudo /opt/fhem/bin/sendElro -u 1 -i 2 -S 1 0 1 für an und 0 für aus.

Ja aber das ist ja der "native" Befehl, den das fhem-Device schickt/schicken muss...
...aber wie steuerst du das fhem-Device!?

Also das "Gerät/Device" DoseB !?

Doch sicher mit irgendwas wie:

set DoseB on

Denn (wie geschrieben):

entweder "erkennt" homebridge/homekit/wieauchimmer das Gerät "einfach so", also wie/wo der Status "steht" und wie "geschalten" wird...
...oder es muss eben über das homebridgeMapping "beigebracht" werden.

Wie der Name sagt: es wird das "Mapping" beschrieben (für homekit) zwischen dem was fhem hat/braucht und dem was für Homekit notwendig ist/dort "verstanden" wird...

Du kannst auch hier mal schauen:

https://wiki.fhem.de/wiki/Homebridge_User_Configs

https://wiki.fhem.de/wiki/Alexa_und_Mappings

Da alexa-fhem und homebridge und sogar (Teile von) ghome (oder wie genau die Umsetzung mit Google heißt) vom selben Entwickler kommen und ähnliche/gleiche Codebasis haben gehen (meist) auch Mappings der jeweils anderen "Geschmacksrichtungen" ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

marcel151

#17
Zitat von: TomLee am 02 Dezember 2019, 14:08:24
Marcel kannst du bitte deine Sonoff Steckdose auch mal dem jsonmap (wie in meinem Beispiel) und ohne userReadings, setStateList und statFormat konfigurieren. Wird bei dir dann auch der Status korrekt in Home angezeigt ?

Ja das geht, allerdings schreibt er mir automatisch folgendes in die readingList:

DVES_1C766E:cmnd/sonoff1/POWER:.* POWER
DVES_1C766E:stat/sonoff1/POWER1:.* POWER1
DVES_1C766E:stat/sonoff1/RESULT:.* { json2nameValue($EVENT) }
DVES_1C766E:tele/sonoff1/STATE:.* { json2nameValue($EVENT) }


Aber wenn ich userReadings, setStateList und statFormat rausnehme geht es trotzdem noch.

Zitat von: MadMax-FHEM am 02 Dezember 2019, 14:12:16
Ja aber das ist ja der "native" Befehl, den das fhem-Device schickt/schicken muss...
...aber wie steuerst du das fhem-Device!?

Also das "Gerät/Device" DoseB !?

Doch sicher mit irgendwas wie:

set DoseB on

Denn (wie geschrieben):

entweder "erkennt" homebridge/homekit/wieauchimmer das Gerät "einfach so", also wie/wo der Status "steht" und wie "geschalten" wird...
...oder es muss eben über das homebridgeMapping "beigebracht" werden.

Wie der Name sagt: es wird das "Mapping" beschrieben (für homekit) zwischen dem was fhem hat/braucht und dem was für Homekit notwendig ist/dort "verstanden" wird...

Ja genau, mit set DoseB on oder off Schalte ich die Dose. Muss ich denn nun noch was in homebridgemapping packen?

Beta-User

Vielleicht solltest du die firmware erst mal aktualisieren (6.3 ist drauf, richtig?). Habe das zwar nicht im Detail verfolgt, denke aber, dass es da ein paar Änderungen gab, so dass es sowas ggf. gar nicht mehr gibt?
stat/sonoff1/POWER1:.* POWER1
Ansonsten wäre es einfach:

stat/sonoff1/POWER1:.* state
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

marcel151

6.6.0 ist aktuell drauf. Allerdings habe ich mit den Sonoff-Steckdosen keine Probleme mehr, es klappt mittlerweile alles. Ich habe aktuell "nur" noch das beschriebene Problem mit den 433MHz Dosen, dass dort der Status nicht übergeben wird.

Beta-User

Hmm, wenn das auch in den aktuellen Versionen über STATTOPIC/POWER1 reinkommt, wäre es trotzdem die Frage, ob man es allg. gleich für alle Tasmota-templates nach state mappt (via readingList)?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

marcel151

#21
Aktuell ist glaube 7.1.1.1, oder? Kann bei Gelegenheit die Steckdosen einmal updaten.  :) Es wäre aber nett wenn Ihr mir auch noch bei dem zweiten Problem helfen könntet, auch wenn es nicht direkt zu MQTT passt.

EDIT: Wie heißt es so schön, never change a running system. Jetzt sind die Dosen auf 7.1.1.1 und die Statusübergabe hat da wieder nicht geklappt. Mit hinzufügen des userReadings :
userReadings state:POWER1:.* {ReadingsVal($name,"POWER1","")}
klappt es wieder.

Meine aktuelle Konfiguration:
Internals:
   CID        DVES_1C852C
   DEF        DVES_1C852C
   DEVICETOPIC Sonoff3
   FUUID      5de3978f-f33f-c236-6e7f-69ea3f20a5328cce
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 52
   MQTT2_FHEM_Server_TIME 2019-12-02 15:31:18
   MSGCNT     52
   NAME       Sonoff3
   NR         439
   STATE      off
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-12-02 15:12:19   FallbackTopic   cmnd/DVES_1C852C_fb/
     2019-12-02 15:12:19   GroupTopic      cmnd/sonoffs/
     2019-12-02 15:27:23   Heap            27
     2019-12-02 15:12:19   Hostname        sonoff3-1324
     2019-12-02 15:12:19   IPAddress       192.168.2.171
     2019-12-02 15:12:19   LWT             Online
     2019-12-02 15:27:23   LoadAvg         19
     2019-12-02 15:12:19   Module          Sonoff Basic
     2019-12-02 15:27:23   MqttCount       1
     2019-12-02 15:09:43   OtaUrl          http://thehackbox.org/tasmota/tasmota.bin
     2019-12-02 15:31:18   POWER1          off
     2019-12-02 15:12:19   RestartReason   Software/System restart
     2019-12-01 11:51:59   SaveData        on
     2019-12-01 11:51:59   SetOption26     on
     2019-12-02 15:27:23   Sleep           50
     2019-12-02 15:27:23   SleepMode       Dynamic
     2019-12-01 11:51:58   StateText1      off
     2019-12-01 11:51:58   StateText2      on
     2019-12-01 11:51:58   StateText3      toggle
     2019-12-01 11:51:59   StateText4      hold
     2019-12-02 15:27:23   Time            2019-12-02T15:27:22
     2019-12-02 15:09:44   Upgrade         Version 6.6.0 from http://thehackbox.org/tasmota/tasmota.bin
     2019-12-02 15:27:23   Uptime          0T00:15:12
     2019-12-02 15:27:23   UptimeSec       912
     2019-12-02 15:12:19   Version         7.1.1.1(eb1785c-tasmota)
     2019-12-02 15:12:19   WebServerMode   Admin
     2019-12-02 10:37:24   subscriptions   cmnd/DVES_1C852C_fb/# cmnd/sonoff3/# cmnd/sonoffs/#
Attributes:
   IODev      MQTT2_FHEM_Server
   alias      Wohnzimmer-Stern
   autocreate 0
   model      A_01a_tasmota_basic_state_power1
   readingList tele/sonoff3/LWT:.* LWT
  tele/sonoff3/STATE:.* { json2nameValue($EVENT) }
  tele/sonoff3/SENSOR:.* { json2nameValue($EVENT) }
  tele/sonoff3/INFO.:.* { json2nameValue($EVENT) }
  stat/sonoff3/RESULT:.* { json2nameValue($EVENT) }
   room       Homekit,Licht,MQTT,Steckdosen,Wohnzimmer
   setList    off:noArg    cmnd/sonoff3/POWER1 0
  on:noArg     cmnd/sonoff3/POWER1 1
  toggle:noArg cmnd/sonoff3/POWER1 2
  on-for-timer {my $duration = $EVTPART1*10; 'cmnd/sonoff3/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}
   userReadings userReadings state:POWER1:.* {ReadingsVal($name,"POWER1","")}


Komischerweise sieht das Attribut readingList bei einer anderen Dose anders aus:
readingList DVES_1C766E:cmnd/sonoff1/POWER:.* POWER
DVES_1C766E:stat/sonoff1/POWER1:.* POWER1
DVES_1C766E:stat/sonoff1/RESULT:.* { json2nameValue($EVENT) }
DVES_1C766E:tele/sonoff1/STATE:.* { json2nameValue($EVENT) }
DVES_1C766E:tele/sonoff1/LWT:.* LWT
DVES_1C766E:stat/sonoff1/UPGRADE:.* UPGRADE
DVES_1C766E:tele/sonoff1/INFO1:.* { json2nameValue($EVENT) }
DVES_1C766E:tele/sonoff1/INFO2:.* { json2nameValue($EVENT) }
DVES_1C766E:tele/sonoff1/INFO3:.* { json2nameValue($EVENT) }


Funktioniert aber genauso.

MadMax-FHEM

#22
Zitat von: marcel151 am 02 Dezember 2019, 14:38:56
Ja genau, mit set DoseB on oder off Schalte ich die Dose. Muss ich denn nun noch was in homebridgemapping packen?

Drum wundert mich ja, dass es homebridge nicht automatisch erkennt...

Weil das eigentlich "Standard" ist, also Zustand in state und schalten per set DeviceName on/off...

Ansonsten vielleicht (also eigentlich nachdem was du schreibst):


homebridgeMapping clear On=state,valueOn=on,cmdOn=on,cmdOff=off


EDIT: und sicherheitshalber noch genericDeviceType

Hast du mal bei den Beispielen geschaut, ob etwas passt!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

marcel151

#23
Zitat von: MadMax-FHEM am 02 Dezember 2019, 15:34:04
Ansonsten vielleicht (also eigentlich nachdem was du schreibst):


homebridgeMapping clear On=state,valueOn=on,cmdOn=on,cmdOff=off


EDIT: und sicherheitshalber noch genericDeviceType

Hast du mal bei den Beispielen geschaut, ob etwas passt!?

Gruß, Joachim

Habe ich so gesetzt, meine Konfiguration sieht aktuell so aus:
Internals:
   Command    sudo /opt/fhem/bin/sendElro -u 1 -i 2 -S
   DEF        sudo /opt/fhem/bin/sendElro -u 1 -i 2 -S 1 0
   NAME       DoseB
   NR         69
   OffValue   0
   OnValue    1
   STATE      off
   TYPE       GenShellSwitch
   READINGS:
     2019-12-02 15:40:12   state           off
Attributes:
   alias      Stehlampe Wohnzimmer
   fm_type    offbutton,onbutton,lamp
   genericDeviceType light
   group      Steckdosen
   homebridgeMapping clear On=state,valueOn=on,cmdOn=on,cmdOff=off
   room       Steckdosen,AllesÜbersicht,Homekit


Schalten funktioniert sowohl per FHEM als auch per Home App. Wenn ich in Home schalte ändert FHEM sofort den Status, wenn ich dagegen in FHEM schalte tut sich in Home nichts.

Beta-User

Zitat von: marcel151 am 02 Dezember 2019, 15:07:33
Meine aktuelle Konfiguration:
[...]
Wenn das neue auf ohne
DVES_1C766E:stat/sonoff1/POWER1:.* POWER1auskommt, wird (neuerdings?) POWER1 via JSON übertragen. Wenn das so ist (?), dann BITTE das mit JSONMAP testen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

marcel151

Wenn ich weiß, was ich wo eintragen muss helfe ich gerne. Wo darf ich was an der Konfiguration ändern?

Beta-User

Du kannst eine Kopie des Devices anfertigen und damit gefahrlos rumtesten. Ansonsten stand die Anleitung eigentlich schon hier:
Zitat von: Beta-User am 02 Dezember 2019, 07:46:06
Hmm, vermutlich sollte man die Tasmota-Templates auch dahingehend umbauen, dass man teilweise mit JSONMAP arbeitet? Das mit den userReadings gefällt mir nicht so...

Mal unterstellt, die Rückmeldung kommt über "stat":
...
stat/sonoff3/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE jsonMap POWER1:state

(Dann kann man ohne stateFormat und ohne userReadings auskommen).
Wenn stat falsch ist: ggf. mal den MQTT-Verkehr abhören oder auch die JSON-Blobs als Readinginhalt abfangen.
Dazu die Zeile doppeln:
stat/sonoff3/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }stat/sonoff3/RESULT:.* JSON_RESULT
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Warum so umständlich man sieht doch schön in der Konsole auf der Tasmotaoberfläche was da ständig per MQTT rausgeht ?

00:00:00 CFG: aus Flash geladen am FA, zählen 2680
00:00:00 Projekt sonoff SonoffObi Version 6.6.0(release-sonoff)-2_3_0
00:00:00 WIF: verbinden mit AP1 FBF in Modus 11N als sonoffOBI-6183...
00:00:07 WIF: verbunden
00:00:07 HTP: Web-Server aktiv bei sonoffOBI-6183 mit IP-Adresse 192.168.188.68
15:34:08 MQT: Verbindungsversuch...
15:34:08 MQT: verbunden
15:34:08 MQT: tele/sonoffOBI/LWT = Online (beibehalten)
15:34:08 MQT: cmnd/sonoffOBI/POWER =
15:34:08 MQT: tele/sonoffOBI/INFO1 = {"Module":"Generic","Version":"6.6.0(release-sonoff)","FallbackTopic":"cmnd/DVES_55F827_fb/","GroupTopic":"sonoffs"}
15:34:08 MQT: tele/sonoffOBI/INFO2 = {"WebServerMode":"Admin","Hostname":"sonoffOBI-6183","IPAddress":"192.168.188.68"}
15:34:08 MQT: tele/sonoffOBI/INFO3 = {"RestartReason":"Software/System restart"}
15:34:08 MQT: stat/sonoffOBI/RESULT = {"POWER1":"off"}
15:34:08 MQT: stat/sonoffOBI/POWER1 = off
15:34:16 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T15:34:16","Uptime":"0T00:00:17","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":22,"LinkCount":1,"Downtime":"0T00:00:07"}}
15:35:36 MQT: stat/sonoffOBI/RESULT = {"POWER1":"off"}
15:35:36 MQT: stat/sonoffOBI/POWER1 = off
15:39:17 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T15:39:17","Uptime":"0T00:05:18","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":22,"LinkCount":1,"Downtime":"0T00:00:07"}}
15:44:01 APP: Serielles Logging deaktiviert
15:44:18 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T15:44:18","Uptime":"0T00:10:19","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":22,"LinkCount":1,"Downtime":"0T00:00:07"}}
15:44:26 MQT: stat/sonoffOBI/RESULT = {"PulseTime1":"120 (Active 120)"}
15:44:26 MQT: stat/sonoffOBI/RESULT = {"POWER1":"on"}
15:44:26 MQT: stat/sonoffOBI/POWER1 = on
15:44:46 MQT: stat/sonoffOBI/RESULT = {"POWER1":"off"}
15:44:46 MQT: stat/sonoffOBI/POWER1 = off
15:45:21 MQT: stat/sonoffOBI/RESULT = {"POWER1":"off"}
15:45:21 MQT: stat/sonoffOBI/POWER1 = off
15:49:18 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T15:49:18","Uptime":"0T00:15:19","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":24,"LinkCount":1,"Downtime":"0T00:00:07"}}
15:54:18 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T15:54:18","Uptime":"0T00:20:19","Heap":14,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":22,"LinkCount":1,"Downtime":"0T00:00:07"}}
15:59:18 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T15:59:18","Uptime":"0T00:25:19","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":24,"LinkCount":1,"Downtime":"0T00:00:07"}}
16:04:18 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T16:04:18","Uptime":"0T00:30:19","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":24,"LinkCount":1,"Downtime":"0T00:00:07"}}
16:09:18 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T16:09:18","Uptime":"0T00:35:19","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":24,"LinkCount":1,"Downtime":"0T00:00:07"}}
16:14:20 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T16:14:20","Uptime":"0T00:40:21","Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":24,"LinkCount":1,"Downtime":"0T00:00:07"}}
16:19:21 MQT: tele/sonoffOBI/STATE = {"Time":"2019-12-02T16:19:20","Uptime":"0T00:45:21","Heap":14,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"E8:DF:70:50:BB:5A","Channel":11,"RSSI":24,"LinkCount":1,"Downtime":"0T00:00:07"}}


Ich schau später mal das ich eine Steckdose update.




Ich hab mich gerade mit zwei alten MQTT2_Device (2 Kanäle) beschäftigt, eins sah anders aus, da wurde mir das zum ersten mal setStateList klar. :P

Beta-User

 :) Man sieht es, wenn man einen Tasmota hat...
(Also: richtig getippt, und vermutlich hat sich da auch nichts von V6 auf V7 geändert...)

(@TomLee: Deine Meinung, was das JSON-mappen nach state angeht? Die Diskussion sollten wir aber ggf. nach Tasmota allgemein verlagern...)




Was setStateList angeht: Sorry, dass ich das überlesen hatte; vermutlich macht es bei den einkanaligen noch nicht den großen Unterschied, aber spätestens, wenn andere Readings gesetzt werden sollen, wird es interessanter...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Zitat(@TomLee: Deine Meinung, was das JSON-mappen nach state angeht? Die Diskussion sollten wir aber ggf. nach Tasmota allgemein verlagern...)

Weiß nicht was du von mir hören willst, was ich weiß das es schonmal für die structure (Wehnachtsbeleuchtung) die ich heute angelegt habe brauchbar war, weil die steht auch auf undefined wenn in state set_... steht.