ESP8266, webfrontend, Homebridge Anzeige und Aktionen synchronisieren

Begonnen von supernova1963, 19 November 2016, 19:44:19

Vorheriges Thema - Nächstes Thema

supernova1963

Ich bitte um Hilfe und den richtigen Lösungsansatz für das Zusammenspiel dieser Komponenten. Ich habe bereits sehr viele Änderungen sowohl in ESPEasy (inversed), eventMap und homebridgeMapping ausprobiert, leider ohne durchgehenden Erfolg.
Schwierigkeiten habe ich mit dem HombridgeMapping und eventMap.
So wie nachstehend konfiguriert ist ohne HomebridgeMapping das Schalten und fast alle Status Anzeigen fast gleich.
Ausnahmen:
In Home wird die Leuchte ersteinmal als ein angezeigt, obwohl diese aus ist.
Mit einem Klick ändert sich die Anzeige auf aus, ohne zu schalten.
Wenn ich danach in Home einschalte, schaltet auch die Leuchte.
Schalte ich in Home erneut, wird die Leuchte ausgeschaltet, der Status in Home wechselt kurz auf aus, springt aber zurück auf ein.
Durch erneutes tippen wird der Status wieder synchron.

defmod ESPEasy_Schaltsteckdose03_Strom ESPEasy 192.168.x.x 80 espBridge Schaltsteckdose03_Strom
attr ESPEasy_Schaltsteckdose03_Strom IODev espBridge
attr ESPEasy_Schaltsteckdose03_Strom Interval 300
attr ESPEasy_Schaltsteckdose03_Strom alias 02_Stehlampe
attr ESPEasy_Schaltsteckdose03_Strom devStateIcon off:ios-on-green:off on:ios-off:on absent:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr ESPEasy_Schaltsteckdose03g_Strom event-on-change-reading .*
attr ESPEasy_Schaltsteckdose03_Strom eventMap /gpio 12 off:on/gpio 12 on:off/status gpio 12:check/
attr ESPEasy_Schaltsteckdose03_Strom genericDeviceType light
attr ESPEasy_Schaltsteckdose03_Strom group ESPEasy Device
attr ESPEasy_Schaltsteckdose03_Strom icon light_floor_lamp
attr ESPEasy_Schaltsteckdose03_Strom presenceCheck 1
attr ESPEasy_Schaltsteckdose03_Strom readingSwitchText 1
attr ESPEasy_Schaltsteckdose03_Strom room 02 Esszimmer,Homekit
attr ESPEasy_Schaltsteckdose03_Strom setState 3
attr ESPEasy_Schaltsteckdose03_Strom stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Schalter","")}
attr ESPEasy_Schaltsteckdose03_Strom webCmd :

setstate ESPEasy_Schaltsteckdose03_Strom on
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 17:41:46 GPIO12 1
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 17:41:46 GPIO12_mode output
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 18:19:52 Schalter on
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-04 07:12:46 presence present
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 18:18:48 state Sch: on


justme1968

bevor du homekit angehst muss das device in fhem komplett laufen. wenn du damit fertig bist:
- in welchem reading steckt der aktuelle zustand?
- mit welchen kommandos wird ein und aus geschaltet?

wenn etwas nicht synchron ist bekommt homebridge-fhem keine rückmeldung über den aktuell zustand. meist weil das reading nicht bekannt/konfiguriert ist. wenn das schalten nicht geht dann deshalb weil die kommandos nicht bekannt/konfiguriert sind. ein blick auf die homebridge-fhem konsole hilft hier weiter.

ein homebridgeMapping für an und aus sollte etwa so aussehen:attr <name> homebridgeMapping On=<reading>,cmdOn=<kommando ein>,cmdOff=<kommando aus>

gruss
  andre

ps: bist du sicher das du das hier: off:ios-on-green:off on:ios-off:on so willst? d.h. beim klicken auf das icon soll nichts passieren?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

supernova1963

Vielen Dank, ich versuche es gleich.

Betreffend stateIcon, hier habe nur die Icons getauscht. Es funktioniert!

justme1968

wenn an erster und dritter stelle jeweils das gleiche steht kannst du über ein klick auf das icon nicht schalten: off:ios-off:off on:ios-on-green:on


wenn bei einem zustand jeweils das kommando für das gegenteil steht kann man beim klick auf das icon schalten:off:ios-off:on on:ios-on-green:off
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

supernova1963

#4
Du hast natürlich recht. Aber meine ganzen verzweifelten Versuche haben dazu geführt, dass ich jetzt doppelt invertiert (eventMap, StateIcon). Es funktioniert im WebFrontend.

Aber bei dem homebridgeMapping mache ich was falsch.
Mein Versuch:
attr ESPEasy_Schaltsteckdose03_Strom homebridgeMapping On=Schalter off,cmdOn=gpio+12+off,cmdOff=gpio+12+on

scheiterte. Home schaltet bei dem 2. antippen invers.

Der Gpio des ESP schaltet das Relais, wenn er auf GND gezogen wird (=0=off).
Gibt eine elegantere Lösung?

justme1968

bring erst mal alles in fhem und fhemweb so in ordnung das nicht doppelt invertiert wird.

danach kommt homebridge.

in deinem homebridgeMapping ist ein leerzeichen zwischen Schalter und off. das gehört da nicht hin.

so sollte es gehen:attr ESPEasy_Schaltsteckdose03_Strom homebridgeMapping On=state,cmdOn=gpio+12+off,cmdOff=gpio+12+on

statt den gpio kommandos kannst du auch on und off verwenden wenn es die im device gibt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

supernova1963

Ich hab' von Grund auf neu begonnen. Jetzt funktioniert alles.

defmod ESPEasy_Schaltsteckdose03_Strom ESPEasy 192.168.x.x 80 espBridge Schaltsteckdose03_Strom
attr ESPEasy_Schaltsteckdose03_Strom IODev espBridge
attr ESPEasy_Schaltsteckdose03_Strom Interval 300
attr ESPEasy_Schaltsteckdose03_Strom alias 02_Stehlampe
attr ESPEasy_Schaltsteckdose03_Strom devStateIcon on:ios-on-green:off off:ios-off:on absent:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr ESPEasy_Schaltsteckdose03_Strom event-on-change-reading .*
attr ESPEasy_Schaltsteckdose03_Strom eventMap /gpio 12 on:off/gpio 12 off:on/status gpio 12:check/
attr ESPEasy_Schaltsteckdose03_Strom genericDeviceType light
attr ESPEasy_Schaltsteckdose03_Strom group ESPEasy Device
attr ESPEasy_Schaltsteckdose03_Strom homebridgeMapping On=Schalter,cmdOn=GPIO+12+0,cmdOff=GPIO+12+1
attr ESPEasy_Schaltsteckdose03_Strom icon light_floor_lamp
attr ESPEasy_Schaltsteckdose03_Strom presenceCheck 1
attr ESPEasy_Schaltsteckdose03_Strom readingSwitchText 1
attr ESPEasy_Schaltsteckdose03_Strom room 02 Esszimmer,Homekit
attr ESPEasy_Schaltsteckdose03_Strom setState 3
attr ESPEasy_Schaltsteckdose03_Strom stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Schalter","")}
attr ESPEasy_Schaltsteckdose03_Strom webCmd :

setstate ESPEasy_Schaltsteckdose03_Strom off
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 17:41:46 GPIO12 1
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 17:41:46 GPIO12_mode output
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 22:48:46 Schalter off
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-04 07:12:46 presence present
setstate ESPEasy_Schaltsteckdose03_Strom 2016-11-19 22:45:21 state Sch: off


Danke justme1968