Autor Thema: deconz push api (offiziell)  (Gelesen 20284 mal)

Offline dwi

  • New Member
  • *
  • Beiträge: 42
Antw:deconz push api (offiziell)
« Antwort #105 am: 22 November 2018, 21:07:20 »
Moin,
Ich bin vor ein paar Wochen auch auf RaspBee vom Dresden electronics umgestiegen, vor allem um meine busch jäger zll Schalter in fhem nutzen zu können. Theoretisch funktioniert es auch ganz gut mit der push api. Allerdings dauert es bei mir manchmal bis zu 5s bevor die Lichter auf einen Tastendruck reagieren. Das ist für den WAF nicht hilfreich.

Anbei ein List vom RaspBee:
Internals:
   DEF        1.2.3.4
   FD         5
   INTERVAL   60
   NAME       RaspBee
   NOTIFYDEV  global
   NR         70
   NTFY_ORDER 50-RaspBee
   PORT       41284
   STATE      connected
   TYPE       HUEBridge
   apiversion 1.0.9
   buf       
   host       1.2.3.4
   mac        aa:bb:cc:dd:ee:ff
   manufacturer Royal Philips Electronics
   modelName  Philips hue bridge 2012
   modelid    deCONZ
   name       Hue Network
   swversion  2.5.40
   updatestate 0
   websocket  1
   websocketport 443
   zigbeechannel 25
   READINGS:
     2018-11-19 21:25:59   lastError       resource, /lights/23, not available
     2018-11-22 20:52:55   state           connected
   helper:
     apiversion 65545
     count      0
     last_config_timestamp 1542916373
     offsetUTC  3600
     updatestate 0
Attributes:
   createGroupReadings 1
   httpUtils  1
   icon       hue_bridge
   key        <abcdeffff>
   noshutdown 1
   queryAfterSet 1
   room       Administration
   verbose    1

Drücke ich einen Schalter (bj zll oder auch hue tap) ändert sich in der Rest api vom RaspBee sofort der state. Im fhem bleibt aber manchmal der alte für wenige Sekunden drinne bevor der neue da steht. Meistens klappt es innerhalb von einer Sekunde, aber die Ausreißer stören ein wenig.
Ist meine Konfiguration korrekt? Muss ich für die push api noch etwas machen? Hat jemand anderes auch das Problem und ggf eine Idee?
Ich habe auf die Status Änderungen pro Schalter einen notify, der entsprechend des Status Codes fhem lightscenes schaltet. Aber diese verzögern eigentlich nicht, der state in fhem wird einfach nicht 'in nahezu Echtzeit' aktualisiert.

Ich habe deconz in Version 2.5.40 mit Firmware 26260500.

Viele Grüße
dwi

Offline Starsurfer

  • Full Member
  • ***
  • Beiträge: 331
    • Projekt-Heimwerken
Antw:deconz push api (offiziell)
« Antwort #106 am: 19 Dezember 2018, 22:24:11 »
Moin,
ich benutze auch den Conbee Stick, wenn ich es nicht falsch verstanden habe, werden neue Devices automatisch angelegt?
Wenn ich autocreate ausführe, wird mir immer Create 0 Devices angezeigt, auch wenn neue vorhanden sind. Ist jetzt nicht problematisch, da ich die bisher von Hand angelegt habe.
Allerdings habe ich Probleme mit dem Aquara Bewegungsmelder, den habe ich angelegt State steht aber immer auf unreachable, es gibt kein Motion Reading, Bewegungen werden aber in der Phoscon App angezeigt?

List Device:
Internals:
   CFGFN     
   DEF        13  IODev=deCONZ
   ID         13
   INTERVAL   
   IODev      deCONZ
   NAME       Bewegungsmelder_01
   NR         62274
   STATE      Initialized
   TYPE       HUEDevice
   desired    1
   manufacturername LUMI
   modelid    lumi.sensor_motion.aq2
   name       Bewegungsmelder_01
   type       ZHAPresence
   uniqueid   00:15:8d:00:02:b5:d1:76-01-0406
   READINGS:
     2018-12-19 22:05:58   pct             100
     2018-12-19 21:21:52   state           unreachable
   helper:
     alert     
     bri        -1
     colormode 
     ct         -1
     devtype   
     effect     
     hue        -1
     on         -1
     pct        -1
     reachable  0
     rgb       
     sat        -1
     update_timeout 1
     xy         
Attributes:
   DbLogExclude .*
   IODev      deCONZ
   devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green
   event-on-change-reading .*
   icon       motion_detector@blue
   model      lumi.sensor_motion.aq2
   room       HUEDevice
   timestamp-on-change-reading state
Zotak Zbox + LaCrosseGateway + CURL 433 + 868 + HM-MOD-RPI-PCB WLAN + ConBee + Migateway
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - PCA301 - Intertechno IT1500
Arduino Mega - MQTT - Pluggit 300

Offline Starsurfer

  • Full Member
  • ***
  • Beiträge: 331
    • Projekt-Heimwerken
Antw:deconz push api (offiziell)
« Antwort #107 am: 20 Dezember 2018, 08:22:32 »
Hm hat sich erledigt. Der Bewegungsmelder war falsch angelegt. Jetzt funktioniert es.
Zotak Zbox + LaCrosseGateway + CURL 433 + 868 + HM-MOD-RPI-PCB WLAN + ConBee + Migateway
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - PCA301 - Intertechno IT1500
Arduino Mega - MQTT - Pluggit 300

Offline Starsurfer

  • Full Member
  • ***
  • Beiträge: 331
    • Projekt-Heimwerken
Antw:deconz push api (offiziell)
« Antwort #108 am: 20 Dezember 2018, 16:37:00 »
Ich nochmal, stehe heute irgendwie auf dem Schlauch.
Muß ich für das LUX Reading des Bewegungsmelders ein zweites Device anlegen, oder bekomme ich das Reading irgendwie mit zum Bewegungsmelder?
Zotak Zbox + LaCrosseGateway + CURL 433 + 868 + HM-MOD-RPI-PCB WLAN + ConBee + Migateway
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - PCA301 - Intertechno IT1500
Arduino Mega - MQTT - Pluggit 300

Offline sinus61

  • Full Member
  • ***
  • Beiträge: 492
Antw:deconz push api (offiziell)
« Antwort #109 am: 20 Dezember 2018, 16:47:08 »
Das hat eine andere Sensor ID, also ein zweites Device. Kann man dann bei Bedarf mit Userreadings zusammenfassen.

Offline Starsurfer

  • Full Member
  • ***
  • Beiträge: 331
    • Projekt-Heimwerken
Antw:deconz push api (offiziell)
« Antwort #110 am: 20 Dezember 2018, 16:57:08 »
Ok danke
Zotak Zbox + LaCrosseGateway + CURL 433 + 868 + HM-MOD-RPI-PCB WLAN + ConBee + Migateway
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - PCA301 - Intertechno IT1500
Arduino Mega - MQTT - Pluggit 300

Offline habl

  • Full Member
  • ***
  • Beiträge: 120
Antw:deconz push api (offiziell)
« Antwort #111 am: 28 Dezember 2018, 21:03:52 »
Hm hat sich erledigt. Der Bewegungsmelder war falsch angelegt. Jetzt funktioniert es.

hab momentan das gleiche Problem, wie wird er denn richtig angelegt?

Offline Starsurfer

  • Full Member
  • ***
  • Beiträge: 331
    • Projekt-Heimwerken
Antw:deconz push api (offiziell)
« Antwort #112 am: 28 Dezember 2018, 21:14:48 »
Mit get DEINDECONZ sensors nach ZHAPresence suchen. Dort sollte motion oder nomotion ausgegeben werden.

Hier mal das Beispiel:
defmod Bewegungsmelder_Kueche HUEDevice sensor 12  IODev=deCONZ
attr Bewegungsmelder_Kueche DbLogExclude .*
attr Bewegungsmelder_Kueche IODev deCONZ
attr Bewegungsmelder_Kueche event-on-change-reading .*
attr Bewegungsmelder_Kueche room HUEDevice
attr Bewegungsmelder_Kueche timestamp-on-change-reading state

Zotak Zbox + LaCrosseGateway + CURL 433 + 868 + HM-MOD-RPI-PCB WLAN + ConBee + Migateway
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - PCA301 - Intertechno IT1500
Arduino Mega - MQTT - Pluggit 300

Offline habl

  • Full Member
  • ***
  • Beiträge: 120
Antw:deconz push api (offiziell)
« Antwort #113 am: 29 Dezember 2018, 07:40:22 »
Danke für deine Info.

ich habe mich von dem deutschen "Bewegungsmelder" irritieren lassen ::) Richtig ist natürlich Presence 3 zu nehmen.

ID  NAME            FHEM            TYPE               
 1: Daylight                        Daylight           
 2: Bewegungsmelder                 ZHALightLevel       
 3: Presence 3                      ZHAPresence         


Weiss doch jeder, dass ein Bewegungsmelder nur die Helligkeit messen kann  8)

Offline rdi

  • Newbie
  • Beiträge: 1
Antw:deconz push api (offiziell)
« Antwort #114 am: 29 Dezember 2018, 12:39:56 »
EDIT: Hat sich erledigt, nach mehrfachem Neustart und Update läuft die Kommunikation jetzt über Websocket

Falls sich noch jemand fragen sollte, wie man das auf einen Blick prüfen kann:

HueBridge (deConz) auswählen, Internals, websocket = 1. Dieser Eintrag fehlte bei mir bis dato völlig.

Viele Grüße!



Hier mein ursprüngliches Problem:

Hallo zusammen,

sorry, falls ich etwas offensichtliches übersehen sollte. Ich stehe mit FHEM noch ganz am Anfang.

Ich habe jetzt diesen Thread und die Anleitung auf coldcorner komplett durchgearbeitet und schaffe es irgendwie trotzdem nicht eine Push-Verbindung herzustellen.

Mein aktuelles Setup sieht wie folgt aus:
- deConz mit ConBee und FHEM auf einem Raspberry Pi
- Einige Hue-Lampen und Aqara-Sensoren erfolgreich in der Phoscon App gebunden
- Verbindung zu deConz als HueBridge erfolgreich hergestellt anhand der Anleitung auf coldcorner
- Hue-Lampen wurden automatisch gefunden und hinzugefuegt
- Xiaomi-Sensoren manuell hinzugefuegt wie auf coldcorner. Werte werden bereitgestellt und sind plausibel
- Attribut httpUtils 1 für deconz gesetzt

Was hier augenscheinlich nicht passiert, ist eine Push-Kommunikation über Websocket. Zustandsänderungen (z.B. der Hue-Lampen) kommen erst mit dem nächsten Periodischen Update (1/min) in FHEM an.

Wie kann ich sicherstellen, dass FHEM das Push-Api von deCONZ nutzt?

Vielen Dank!

Edit:

das deConz-Websocket-API funktioniert einwandfrei, es sieht für mich wirklich so aus, als würde sich FHEM nicht auf das WebSocket-API verbinden, sondern auf das standard REST-API

« Letzte Änderung: 29 Dezember 2018, 13:46:04 von rdi »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Mirak

  • New Member
  • *
  • Beiträge: 13
Antw:deconz push api (offiziell)
« Antwort #115 am: 23 Februar 2019, 20:45:17 »
Moin HRE_7390_pi,

ich habe diese Woche auch meinen ConBee Adapter in fhem eingepflegt, allerdings mit Version .39 da es danach wohl Probleme mit den Aqara-Sensoren gab.
Habe aber das gleiche "Logproblem" wie du, auch schon einmal alles zurück gesetzt, neu eingebunden, Ports gewechselt etc. - nichts zu machen!
Da aber alles ohne Probleme funktioniert überlege ich gerade ob ich diese Logeinträge einfach entfernen/unterbinden soll.

Ich habe auch gerade einen ConBee Adapter neu gekauft und eingerichtet. Die Log-Einträge hatte ich auch, habe Sie aber mit verbose = 2 unterbinden können. Ab verbose = 3 erscheinen sie wieder. Ich denke nicht, dass es Fehlermeldungen sind.

Offline choenig

  • Developer
  • Full Member
  • ****
  • Beiträge: 222
Antw:deconz push api (offiziell)
« Antwort #116 am: 29 April 2019, 21:54:48 »
Hi justme1968,

ich habe gerade mein deCONZ mit einem RaspBee eingerichtet, um meine Philips Bewegungsmelder und Remote ohne HueBridge verwenden zu können. Ich hatte die Hoffnung, dass ich über die Websocketverbindung alle Buttonevents bekommen würde (1000 -> 1002), ich bekomme aber nur 1000, manchmal auch 1002 dazu.

Dann hab ich im Logfile gesehen, dass per Websocket alle events reinkommen, die aber im HUEDevice.pm ignoriert werden.

In 31_HUEDevice.pm, Zeile 1291 spring er raus, wenn
      return undef if( $hash->{lastupdated} && $hash->{lastupdated} eq $lastupdated);

Dies verhindert, dass die Events durchgereicht werden, da sie meistens den selben 'lastupdated'-Wert haben.

Ich hab' mir jetzt mal auf die Schnelle geholfen, in dem ich ein AttrVal hinzugefügt habe, welches ich in den relevanten Devices auf 0 gesetzt hab:
      return undef if( $hash->{lastupdated} && $hash->{lastupdated} eq $lastupdated && AttrVal( $name, 'skipImmediateEvents', 1 ));

Grundsätzlich wär' ich eher der Meinung, das 'return undef' nicht zu machen, wenn sich die 'events' unterscheiden, allerdings hat die Zeile vermutlich einen Hintergrund und es ist sicher nicht trivial, herauszufinden, ob die 'events' sich unterscheiden.

Gibt es einen besseren Weg alle events durchzulassen? Wenn das Attribut Deiner Meinung nach was brauchbares ist, kann ich auch gerne einen vollständigen Patch machen, mit Doku und so.

+++ EDIT 1 +++

Nachdem ich es jetzt mal eine Zeit so laufen hatte, hab' ich festgestellt, dass jetzt auch regelmässige Updates, die kein event sind, zum Schalten führen, das war nicht meine Absicht :(.

Hab' es darum jetzt mal bei mir umgebaut, so dass er den state noch mit überprüft, so geht es jetzt erstmal besser, aber es ist halt *nur* der state, die anderen Readings werden nicht überprüft.

@@ -1286,9 +1286,21 @@ HUEDevice_Parse($$)
         $lastupdated_local = $lastupdated;
       }
 
+      $readings{state} = $state->{status} if( defined($state->{status}) );
+      $readings{state} = $state->{flag}?'1':'0' if( defined($state->{flag}) );
+      $readings{state} = $state->{open}?'open':'closed' if( defined($state->{open}) );
+      $readings{state} = $state->{lightlevel} if( defined($state->{lightlevel}) && !defined($state->{lux}) );
+      $readings{state} = $state->{buttonevent} if( defined($state->{buttonevent}) );
+      $readings{state} = $state->{presence}?'motion':'nomotion' if( defined($state->{presence}) );
+      $readings{state} = $state->{fire}?'fire':'nofire' if( defined($state->{fire}) );
+
       $hash->{lastupdated} = ReadingsVal( $name, '.lastupdated', undef ) if( !$hash->{lastupdated} );
       $hash->{lastupdated_local} = ReadingsVal( $name, '.lastupdated_local', undef ) if( !$hash->{lastupdated_local} );
-      return undef if( $hash->{lastupdated} && $hash->{lastupdated} eq $lastupdated );
+      if( $hash->{lastupdated} && $hash->{lastupdated} eq $lastupdated ) {
+         return undef if ( AttrVal( $name, 'skipImmediateEvents', 1 ) );
+         my $curState = ReadingsVal( $name, "state", undef );
+         return undef unless ( defined($curState) && defined($readings{state}) && $curState ne $readings{state} )
+      }
 
       Log3 $name, 4, "$name: lastupdated: $lastupdated, hash->{lastupdated}:  $hash->{lastupdated}, lastupdated_local: $lastupdated_local, offsetUTC: $offset";
       Log3 $name, 5, "$name: ". Dumper $result if($HUEDevice_hasDataDumper);
@@ -1296,14 +1308,6 @@ HUEDevice_Parse($$)
       $hash->{lastupdated} = $lastupdated;
       $hash->{lastupdated_local} = $lastupdated_local;
 
-      $readings{state} = $state->{status} if( defined($state->{status}) );
-      $readings{state} = $state->{flag}?'1':'0' if( defined($state->{flag}) );
-      $readings{state} = $state->{open}?'open':'closed' if( defined($state->{open}) );
-      $readings{state} = $state->{lightlevel} if( defined($state->{lightlevel}) && !defined($state->{lux}) );
-      $readings{state} = $state->{buttonevent} if( defined($state->{buttonevent}) );
-      $readings{state} = $state->{presence}?'motion':'nomotion' if( defined($state->{presence}) );
-      $readings{state} = $state->{fire}?'fire':'nofire' if( defined($state->{fire}) );
-
       $readings{dark} = $state->{dark}?'1':'0' if( defined($state->{dark}) );
       $readings{humidity} = $state->{humidity} * 0.01 if( defined($state->{humidity}) );
       $readings{daylight} = $state->{daylight}?'1':'0' if( defined($state->{daylight}) );

+++ EDIT 2 +++

justme1968 hat einen 'fix' dafür eingecheckt. Es funktioniert jetzt einwandfrei :)

LG
Christian
« Letzte Änderung: 30 Mai 2019, 09:01:28 von choenig »

Offline t1me2die

  • Full Member
  • ***
  • Beiträge: 411
Antw:deconz push api (offiziell)
« Antwort #117 am: 21 August 2019, 20:07:23 »
...
Jetzt mein Hauptanliegen:
3) folgende Einträge hab ich alle 6 Minuten im Log.
Da meine Hue Lampen noch nicht da sind und momentan also nur das Gateway läuft,
die frage ob es nur ein Status ist oder irgendwo ein Fehler in meiner Config:

2018.11.14 20:08:46 3: deCONZ: websocket opened to 192.168.2.23:443
2018.11.14 20:08:46 3: deCONZ: websocket: Switching Protocols ok
2018.11.14 20:14:46 3: deCONZ: websocket opened to 192.168.2.23:443
2018.11.14 20:14:46 3: deCONZ: websocket: Switching Protocols ok
2018.11.14 20:20:46 3: deCONZ: websocket opened to 192.168.2.23:443
2018.11.14 20:20:46 3: deCONZ: websocket: Switching Protocols ok
2018.11.14 20:26:46 3: deCONZ: websocket opened to 192.168.2.23:443
2018.11.14 20:26:46 3: deCONZ: websocket: Switching Protocols ok
2018.11.14 20:32:46 3: deCONZ: websocket opened to 192.168.2.23:443
2018.11.14 20:32:46 3: deCONZ: websocket: Switching Protocols ok
2018.11.14 20:38:46 3: deCONZ: websocket opened to 192.168.2.23:443
2018.11.14 20:38:46 3: deCONZ: websocket: Switching Protocols ok

Habe das selbe Problem, konntest du schon herausfinden, weshalb die Meldung auftaucht?

Gruß
Mathze