Zustand Garagentor mit 2 Xiaomi Sensoren erfassen

Begonnen von wertz, 24 Januar 2020, 22:02:07

Vorheriges Thema - Nächstes Thema

wertz

Hallo zusammen,
ich hoffe ihr könnt einem (sehr) blutigen Anfänger helfen.
In dieser Woche habe ich jeden Abend "versucht" meine 2 Xiaomi-Fenster-Sensoren (Fensterkontakt_EZ_Garage und Fensterkontakt_EZ_Garten) für die Positionsbestimmung meines Garagentores zu nutzen.
Die 2 Xiaomi Fenstersensoren die bereits schon mit einem MQTT Broker funktionieren und den Status "open" bzw. "close" anzeigen, wollte ich mit einem Dummmy und einem DOIF auslesen und somit den Zustand meines Garagentores erfassen bzw. anzeigen.
Dazu habe ich den Dummy Garage_Garagentor und das DOIF Garage_DOIF angelegt.

Im DOIF werden die state der Sensoren nicht aktualisiert und wenn ich im Dummy den state mit set ändere wird dieser im DOIF auch nicht aktualisiert.

Ziel war es mit dem DOIF aufgrund der Zustände der Sensoren zu bestimmen, ob das Tor geöffnet ist, geschlossen ist, auffährt oder zufährt.

dazu habe ich folgendermaßen den Dummy angelegt:

define Garage_Garagentor dummy
attr Garage_Garagentor devStateIcon open:fts_garage_door_10@red closed:fts_garage_door_100@green closing:fts_garage_door_60@green opening:fts_garage_door_40@red
attr Garage_Garagentor icon fts_garage
attr Garage_Garagentor room 8.2 Garage
attr Garage_Garagentor setList open closed opening closing


und das DOIF angelegt:

define Garage_DOIF DOIF ##Tor öffnet sich\ ([Garage_Garagentor:state] eq "closed" and [Fensterkontakt_EZ_Garage:status] eq "open" and \
[Fensterkontakt_EZ_Garten:status] eq "open")\ (set Garage_Garagentor opening)\ ## Tor ist auf\ DOELSEIF\
([Fensterkontakt_EZ_Garage:status] eq "open" and [Fensterkontakt_EZ_Garten:status] eq "close")\ (set Garage_Garagentor open)\ ## Tor\
schliesst sich\ DOELSEIF ([Garage_Garagentor:state] eq "open" and [Fensterkontakt_EZ_Garage:status] eq "open" and [Fensterkontakt_EZ_Garten:status] eq "open")\ (set Garage_Garagentor closing)\ ##Tor ist geschlossen\ DOELSEIF\
([Fensterkontakt_EZ_Garage:status] eq "close" and [Fensterkontakt_EZ_Garten:status] eq "open")\
\

Dazu:

List Garage_Garagentor (Dummy)
Internals:
   CFGFN     
   NAME       Garage_Garagentor
   NR         51163
   STATE      closed
   TYPE       dummy
   READINGS:
     2020-01-24 20:44:20   closed         
     2020-01-24 21:31:41   state           closed
Attributes:
   devStateIcon open:fts_garage_door_10@red closed:fts_garage_door_100@green closing:fts_garage_door_60@green opening:fts_garage_door_40@red Funk1:fts_garage_door_60@green Funk2:fts_garage_door_40@red
   icon       fts_garage
   room       8.2 Garage
   setList    open closed opening closing

und

List Garage_DOIF (DOIF)
Internals:
   CFGFN     
   DEF        ##Tor öffnet sich\ ([Garage_Garagentor:state] eq "closed" and [Fensterkontakt_EZ_Garage:status] eq "open" and
[Fensterkontakt_EZ_Garten:status] eq "open")\ (set Garage_Garagentor opening)\ ## Tor ist auf\ DOELSEIF
([Fensterkontakt_EZ_Garage:status] eq "open" and [Fensterkontakt_EZ_Garten:status] eq "close")\ (set Garage_Garagentor open)\ ## Tor
schliesst sich\ DOELSEIF ([Garage_Garagentor:state] eq "open" and [Fensterkontakt_EZ_Garage:status] eq "open" and [Fensterkontakt_EZ_Garten:status] eq "open")\ (set Garage_Garagentor closing)\ ##Tor ist geschlossen\ DOELSEIF
([Fensterkontakt_EZ_Garage:status] eq "close" and [Fensterkontakt_EZ_Garten:status] eq "open")


   MODEL      Perl
   NAME       Garage_DOIF
   NR         51324
   NTFY_ORDER 50-Garage_DOIF
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2020-01-24 21:33:28   mode            enabled
     2020-01-24 21:33:28   state           initialized
   Regex:
   condition:
     0         
   devices:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   perlblock:
     0         
   uiState:
   uiTable:
Attributes:
   do         always
   room       8.2 Garage

Ich mache das etwas grundlegend falsch, davon bin ich überzeugt  :-\ und würde mich freuen wenn ihr mir zur Lösung meines Problems helfen würdet.
Lieber Gruß
WERTZ



steffen83

Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

wertz


wertz

Hallo steffen83
ich habe mir das heute mal durchgelesen und habe herausgefunden dass es noch keine funktionierende Umsetzung für meine Xiaomi Fenstersensoren gibt. :'(
Also stehe ich immer noch vor dem gleichen Problem dass der state meiner Sensoren (die ja in Fhem angelegt sind und ihren state anzeigen) weder in diesem Modul noch in meinem DOIF eingelesen werden.

Würde mich über weitere Hilfe freuen
Danke!

kleineslichtHH

Deine Xiaomi-Fenster-Sensoren erzeugen aber ein event?
Schau mal im eventmonitor  beim wechsel von open auf close.

wertz

Zitat von: kleineslichtHH am 25 Januar 2020, 14:13:08
Deine Xiaomi-Fenster-Sensoren erzeugen aber ein event?
Schau mal im eventmonitor  beim wechsel von open auf close.

Hallo kleineslichtHH,
vielen Dank für deine Nachricht.

Ja machen sie, der state open und close wird angezeigt und im Fhem Tablet UI habe ich ein Symbol angelegt, welches den Zustand in den Farben rot und Blau darstellt.

Ich habe die Tage viel ausprobiert (wie gesagt GAL Größter anzunehmender Laie  ;D) und habe es dann wie folgt gelöst

Sensor Garagentor_Auf pairen, dann wie folgt anlegen:
defmod Sensor_Garage_Auf XiaomiMQTTDevice unknown 0x00158d0002c64c14
attr Sensor_Garage_Auf IODev MQTT
attr Sensor_Garage_Auf devStateIcon open:fts_door_open@red close:fts_door@green
attr Sensor_Garage_Auf room XiaomiMQTTDevice
attr Sensor_Garage_Auf stateFormat state
attr Sensor_Garage_Auf userReadings Sensor_Garage_Auf_Batt {ReadingsVal("Sensor_Garage_Auf","voltage","0")/1000}

Sensor Garagentor_Zu pairen, dann wie folgt anlegen:
defmod Sensor_Garage_Zu XiaomiMQTTDevice MCCGQ01LM 0x00158d0002b5b1e5
attr Sensor_Garage_Zu IODev MQTT
attr Sensor_Garage_Zu devStateIcon open:fts_door_open@red close:fts_door@green
attr Sensor_Garage_Zu room XiaomiMQTTDevice
attr Sensor_Garage_Zu stateFormat state
attr Sensor_Garage_Zu userReadings Sensor_Garage_Zu_Batt {ReadingsVal("Sensor_Garage_Zu","voltage","0")/1000}

Dummy anlegen
defmod Garage_Garagentor dummy
attr Garage_Garagentor devStateIcon open:fts_garage_door_10@red closed:fts_garage_door_100@green closing:fts_garage_door_60@green opening:fts_garage_door_40@red
attr Garage_Garagentor icon fts_garage
attr Garage_Garagentor room 8.2 Garage
attr Garage_Garagentor setList offen geschlossen oeffnet schliesst Fehler

DOIF anlegen
defmod Garagentor2 DOIF ([Garage_Garagentor]eq "geschlossen" and [Sensor_Garage_Zu:state]eq "open" and [Sensor_Garage_Auf:state]eq "open") (set Garage_Garagentor oeffnet) DOELSEIF ([Sensor_Garage_Zu:state]eq "open" and [Sensor_Garage_Auf:state]eq "close") (set Garage_Garagentor offen) DOELSEIF ([Garage_Garagentor]eq "offen" and [Sensor_Garage_Zu:state]eq "open" and [Sensor_Garage_Auf:state]eq "open") (set Garage_Garagentor schliesst) DOELSEIF ([Sensor_Garage_Zu:state]eq "close" and [Sensor_Garage_Auf:state]eq "open") (set Garage_Garagentor geschlossen) DOELSEIF ([Sensor_Garage_Zu:state]eq "close" and [Sensor_Garage_Auf:state]eq "close") (set Garage_Garagentor Fehler)
attr Garagentor2 do always
attr Garagentor2 room 8.2 Garage

Läuft!!

Im Tablet UI auf diese Weise angelegt

<li data-row="5" data-col="8" data-sizex="1" data-sizey="1">
      <header>GARAGENTOR</header>
         <div data-type="symbol"
            data-device="Garage_Garagentor"
            data-states='["offen","schliesst","geschlossen","oeffnet"]'      
            data-icons='["oa-fts_garage_door_10","oa-fts_garage_door_50 fa-blink","oa-fts_garage_door_100","oa-fts_garage_door_50 fa-blink"]'         
            data-colors='["#ff0000","#aa6900","#32a054","#aa6900"]'    
            class="big"></div>
                      <div data-type="label" class="narrow" data-get="Garage_Garagentor:state" class="top-space-2x small"></div>
</li>

Funktioniert auch !!

Gruß
Thomas