deconz push api (offiziell)

Begonnen von justme1968, 12 Dezember 2017, 20:36:20

Vorheriges Thema - Nächstes Thema

justme1968

das geht aber nur mehr oder weniger zufällig weil im api die daten für alle devices vermutlich auf ein mal aktualisiert werden und abhängig von der reihenfolge. vermutlich hast du so immer noch den vorherigen und nicht den aktuellen wert. wenn sich z.b. nur Bad.Sensor.Hum ändert wird Bad.Sensor.Temp nicht aktualisiert.

es ist besser die werte jeweils über ein notify zu kopieren.

ps: die diversen ReadingsVal in stateFormat sind eigentlich nicht nötig. du kannst die hier: https://fhem.de/commandref.html#set beschriebenen suffixe zum runden auch in stateFormat verwenden. das würde dann etwa so aussehen: T: temperature:r1 P: pressure:i .... ich denke das ist übersichtlicher.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

tommi0013

Hallo zusammen,

mittlerweile werden von deconz über die push-api auch die Werte lastseen und lastannounced übergeben. Siehe hier:
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/2590

Besteht die Möglichkeit, in einem kommenden Update der Module HUEBridge und/oder HUEDevice diese Wete in einem HUEDevice als Reading einzufügen? Momentan löse ich das so, dass ich per HTTPMOD lastseen und lastannounced von deconz (2.05.79, RaspBee auf einem RasPi 3B) auslese (alle 60 Sekunden), und diese dann per notify in das entsprechende Device schreibe. Schicker wäre es natürlich (und dann durch push auch immer aktuell), wenn die Werte direkt als Reading kommen würden.

Hier mal ein list von einer Lampe, die schon mehr als zwei Minuten vom Strom getrennt ist, aber dennoch als "on" angezeigt wird:
Internals:
   DEF        15  IODev=HUEBridge2
   FUUID      5edd3534-f33f-c0d6-9d07-2f6a2f752a8ed571
   FVERSION   31_HUEDevice.pm:0.218370/2020-05-02
   ID         15
   INTERVAL   
   IODev      HUEBridge2
   NAME       HUEBridge2_HUEDevice15
   NR         387
   STATE      on
   TYPE       HUEDevice
   desired    1
   manufacturername Philips
   modelid    LWB010
   name       diei_lmpw_Deckenleuchte
   swversion  1.50.2_r30933
   type       Dimmable light
   uniqueid   00:17:88:01:04:cb:bb:8c-0b
   READINGS:
     2020-08-21 20:52:19   alert           none
     2020-08-21 20:52:19   bri             254
     2020-08-23 21:14:30   onoff           1
     2020-08-23 21:14:30   pct             100
     2020-08-30 18:18:31   reachable       1
     2020-08-30 18:18:31   state           on
   helper:
     alert      none
     battery    -1
     bri        254
     colormode 
     ct         -1
     devtype   
     effect     
     hue        -1
     mode       
     pct        100
     reachable  1
     rgb       
     sat        -1
     update_timeout -1
     xy         
     json:
       etag       606dfe3917c59363cabc3dc42ecc4669
       lastannounced 2020-08-30T16:18:31Z
       lastseen   2020-08-30T16:19:10Z
       manufacturername Philips
       modelid    LWB010
       name       diei_lmpw_Deckenleuchte
       swversion  1.50.2_r30933
       type       Dimmable light
       uniqueid   00:17:88:01:04:cb:bb:8c-0b
       state:
         alert      none
         bri        254
Attributes:
   IODev      HUEBridge2
   alias      diei_lmpw_Deckenleuchte
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   fp_Grundriss 601,602,0,HUEBridge2_HUEDevice15,
   group      HUEDevice
   icon       hue_filled_white_e27_b22
   model      LWB010
   room       1_DieleEingang,HUEDevice
   subType    dimmer
   webCmd     pct::toggle:on:off


Hintergrund: Leider gibt es bei mir in der Wohnung (Mietwohnung, daher kurzfristig nicht änderbar) noch ein paar Lampen, die direkt über den Netzschalter ausgeschaltet werden. Da in deconz (und dann auch in fhem) diese Lampen teilweise erst nach vielen Minuten als "unreachable" markiert werden, sind diese Lampen im Floorplan noch lange "on", obwohl sie mangels Strom eigentlich "off" bzw. "unreachable" sind. Ich würde jetzt gerne mit doif oder notify eine Formel basteln, die in Abhängigkeit von lastseen die Lampen in fhem einfach ausschaltet wenn davon auszugehen ist, dass diese vom Strom getrennt wurden (z. B. lastseen ist älter als 120 Sekunden). Dafür sollten lastseen und lastannounced aber nach Möglichkeit immer aktuell sein.

Oder hat von euch schon jemand eine ähnliche Überlegung gehabt und auch schon eine praktikabele Lösung parat?

Gruß
Thomas


justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

sash.sc

Hallo zusammen.

Ich habe mir jerzt den ConBee 2 Stick gekauf.  Habe diesen auch in FHEM integriert. Läuft !

Jetzt zu meinem Problem.
Ich habe die SW deconz auf einem Win10 rechner installiert. Der Stcik läuft an einem Raspi.
Wie kann ich deconz dazu bringen, dass der stick auf dem raspi gefunden wird? mir geht es hauptsächlich um die Anzeige von dem Netzwerk.
Oder gibt es eine Möglichkeit dies auch in FHEm anzeigen zu lassen ?

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Starsurfer

Moin,
du kannst dir das Netzwerk auf dem Raspi per VNC Viewer Anzeigen lassen, bin mir nur nicht sicher ob dafür ein Desktop auf dem Raspi installiert sein muss.
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/1989
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

sash.sc

Gibt es da keine andere Möglichkeit?
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

schwatter


0815eddi

Hallo zusammen

ich bräuchte mal Unterstützung bei der Integration einens neuen Sensors.
Ich habe mir eine "Tuya Zigbee Smart Sirene mit Temperatur- und Feuchtigkeitsmessung" gekauft.

Deconz hat das Gerät auch erkannt und in FHEM sehe ich jetzt 3 Sensoren vom Typ Humidity, Temperature und Alarm.
So weit - so gut.
Die Sensoren für Humidity und Temperature liefern in ihren Readings auch brav ihre Werte.

Der Alarm-Sensor ist da bei den Readings aber etwas schweigsamer und beschränkt sich auf IOdev - hier mal ein list für das Device:
Internals:
   DEF        sensor 11  IODev=deCONZ
   FUUID      61940d13-f33f-9e1b-2077-c456123bb851db26
   FVERSION   31_HUEDevice.pm:0.239120/2021-03-08
   ID         S11
   INTERVAL   
   IODev      deCONZ
   NAME       HUESensor11
   NR         925
   STATE      ???
   TYPE       HUEDevice
   lastannounced 2021-11-19T17:59:12Z
   lastupdated
   lastupdated_local
   manufacturername _TZE200_d0yu2xgi
   modelid    TS0601
   name       Alarm 11
   on         1
   reachable  1
   type       ZHAAlarm
   uniqueid   5c:02:72:ff:fe:ce:bb:a0-01-0500
   READINGS:
     2021-11-19 19:12:51   IODev           deCONZ
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     json:
       e          changed
       id         11
       r          sensors
       t          event
       uniqueid   5c:02:72:ff:fe:ce:bb:a0-01-0500
       attr:
         id         11
         lastannounced 2021-11-19T17:59:12Z
         lastseen   2021-11-20T19:06Z
         manufacturername _TZE200_d0yu2xgi
         modelid    TS0601
         name       Alarm 11
         productid  NAS-AB02B0 Siren
         swversion 
         type       ZHAAlarm
         uniqueid   5c:02:72:ff:fe:ce:bb:a0-01-0500
     setList:
Attributes:
   IODev      deCONZ
   alias      Alarm 11
   group      HUESensor
   model      TS0601
   room       HUEDevice


Über die Api kann ich sehen, dass als state u. a. der Wert "alarm" verfügbar ist.

{"config":{"enrolled":5,"humiditymaxthreshold":null,"humidityminthreshold":null,"melody":null,"on":true,"pending":[],"preset":null,"reachable":true,"temperaturemaxthreshold":null,"temperatureminthreshold":null,"volume":null},"ep":1,"etag":"9925f50203e05066ee56c056463c6ad1","lastannounced":"2021-11-19T17:59:12Z","lastseen":"2021-11-20T19:08Z","manufacturername":"_TZE200_d0yu2xgi","modelid":"TS0601","name":"Alarm 11","state":{"alarm":false,"lastupdated":"none"},"type":"ZHAAlarm","uniqueid":"5c:02:72:ff:fe:ce:bb:a0-01-0500"}

Den Wert für Alarm würde ich gerne bei den Readings sehen.
Weiter vorne in diesem Thread habe ich gesehen, dass das grundsätzlich über eine zusätzliche Reading-Definition in der 31_HUEDevice.pm möglich ist.

Also habe ich dort folgende Zeile ergänzt und fhem neu gestartet:

$readings{alarm} = $state->{alarm}?'true':'false' if( defined($state->{alarm}) );

Leider hat sich bei den Readings nichts verändert.
Ich frage mich jetzt, ob ich da auf dem richtigen Weg bin oder irgednwo einen Denkfehler habe oder etas übersehen habe.
Kann mich da bitte jemand in die richtige Richtung schubsen?

LG
Eddi

CoolTux

Hallo Eddi,

Versuche mal

$readings{alarm} = $state->{alarm} if ( defined($state->{alarm}) );


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

0815eddi

Hallo CoolTux

Danke für den Tipp.

Ich glaube die Variante hatte ich auch schon mal probiert.
Habs jetzt aber so wie von dir vorgeschlagen eingetragen - leider ohne Erfolg.
Muss ich außer FHEM restarten sonst noch irgendwas machen oder müsste die Änderung dann sofort ziehen?

Eddi

CoolTux

Nur neustarten. Musst aber auf die Zeilen achten. Aktuell wäre der Eintrag gut so ab Zeile 1629 auf gehoben


      $readings{water} = $state->{water} if( defined($state->{water}) );
      $readings{fire} = $state->{fire} if( defined($state->{fire}) );
      $readings{tampered} = $state->{tampered} if( defined($state->{tampered}) );
      $readings{battery} = $state->{battery} if( defined($state->{battery}) );
      $readings{batteryPercent} = $state->{battery} if( defined($state->{battery}) );
      $readings{alarm} = $state->{alarm} if( defined($state->{alarm}) );    <-------------------------------------------------------
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

0815eddi

Habs jetzt wie vorgeschlagen platziert:

$readings{water} = $state->{water} if( defined($state->{water}) );
      $readings{fire} = $state->{fire} if( defined($state->{fire}) );
      $readings{tampered} = $state->{tampered} if( defined($state->{tampered}) );
      $readings{battery} = $state->{battery} if( defined($state->{battery}) );
      $readings{batteryPercent} = $state->{battery} if( defined($state->{battery}) );
      $readings{alarm} = $state->{alarm} if ( defined($state->{alarm}) );
      $readings{batteryState} = $state->{lowbattery}?'low':'ok' if( defined($state->{lowbattery}) );


Leider ohne Erfolg.
Testweise hab ich es auch unter batteryState geschoben - aber gleiches Ergebnis.

Kann man über einen höheren verbose-Level (dann vermutlich bei der HueBridge?)  da irgendwas mitlesen. Welcher Level wäre dann sinnvoll?

justme1968

ich habe alarm hinzugefügt. ist ab morgen im update.

aber so lange lastupdated auf none steht gibt es noch kein reading und es wird nichts angezeigt. sobald es das erste mal einen alarm gab sollte das reading auch angelegt werden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

0815eddi

Hallo justme

Zitat
ich habe alarm hinzugefügt. ist ab morgen im update.

aber so lange lastupdated auf none steht gibt es noch kein reading und es wird nichts angezeigt. sobald es das erste mal einen alarm gab sollte das reading auch angelegt werden.

Danke für die schnelle Unterstützung und Umsetzung!

Es hat zwar etwas gedauert und ich weiß noch nicht ganz genau welcher Aufruf der API jetzt dazu geführt hat, aber nach mehreren Fehlversuchen war pötzlich das Reading da:

Readings
IODev deCONZ 2021-11-22 18:32:02
alarm 0 2021-11-22 21:26:47
reachable 1 2021-11-22 21:26:48


Ich bin zwar noch nicht so sicher, wie ich jetzt über FHEM einen Alarm auslösen kann (das ist ja am Ende das Ziel), aber damit beschäftige ich mich dann ab morgen.

Eddi


nebukadnezza

Hallo Community,

hoffe ich bin in diesem Faden richtig mit meinem Problem.
Habe einen Zigbee Rauchmelder Heiman HS3SA auf einem Conbee II mit Phoscon/deconz angelernt. Funktioniert hat das. Allerdings kommt ein Update anscheinend nur, wenn Alarm (bis jetzt nur mit Testknopf drücken) ausgelöst wird. Dann aber verlässlich.
D.h. die Readings werden laut Zeitstempel zwischendurch nicht upgedated und ich kann somit über die readings nicht feststellen, ob das Device noch sendet bzw. den aktuellen Batterielevel auslesen.


Hier mal ein paar Versionsinfos:
Zitat
fhem.pl 26115 2022-06-04 09:50:00Z rudolfkoenig
30_HUEBridge.pm 26204 2022-07-09 18:04:20Z justme1968

Phoscon:
Version 2.17.00 / 07/06/2022
Firmware 26720700

Interessant finde ich, dass wenn ich mir die API in Phoscon anschau, dass lastseen sehr wohl mehrmals pro Tag einen neuen Zeitstempel hat. lastupdate hingegen nicht, wenn nix passiert.


"4": {
        "config": {
            "battery": 100,
            "enrolled": 1,
            "on": true,
            "pending": [],
            "reachable": true
        },
        "ep": 1,
        "etag": "0edc0c11b813d2879ffaef733cd96574",
        "lastannounced": null,
        "lastseen": "2022-08-18T08:53Z",
        "manufacturername": "Heiman",
        "modelid": "SmokeSensor-EM",
        "name": "Schlafzimmer Smoke Sensor",
        "state": {
            "fire": false,
            "lastupdated": "2022-08-18T07:54:32.982",
            "lowbattery": false,
            "tampered": false
        },
        "swversion": "1.1.1",
        "type": "ZHAFire",
        "uniqueid": "00:0d:6f:00:16:4a:13:b0-01-0500"
    }
}
           

Das lastseen Reading des Devices im fhem zeigt aber das Datum vom lastupdate der API an und nicht von lastseen der API:

Zitat
lastseen 2022-08-18T07:54Z 2022-08-18 09:54:32

Passt hier was nicht zusammen oder hab ich da einen Denkfehler?

Danke!