Autor Thema: [gelöst] deconz API und Aqara Cube  (Gelesen 1355 mal)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 27502
[gelöst] deconz API und Aqara Cube
« am: 08 Januar 2020, 20:36:44 »
Hallo Andre,

Wenn man den Cube auf seiner liegenden Fläche im Uhrzeigersinn oder gegen den Uhrzeigersinn dreht ändert sich nicht der Wert 2001 oder 1002 oder so sondern in der phoscon App sieht man das sich die Gradzahl ändert von nagtiv zu positiv und bei entgegengesetzte Richtung von positiv zu negativ.

Was brauchst Du damit dies in FHEM mit dargestellt wird.


Grüße
Marko
« Letzte Änderung: 08 Januar 2020, 23:40:49 von CoolTux »
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/
Mein Dokuwiki:
https://www.cooltux.net

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21032
Antw:deconz API und Aqara Cube
« Antwort #1 am: 08 Januar 2020, 21:38:09 »
mit verbose 4 oder 5 im log schauen was gesendet wird.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline KyleK

  • Jr. Member
  • **
  • Beiträge: 97
Antw:deconz API und Aqara Cube
« Antwort #2 am: 08 Januar 2020, 23:31:23 »
deconz legt für den Aqara Cube 2 sensor devices an: Eins für die Flips und Swipes (und drop und double-tap), und eins für die rotation.

Mein Device für die Flips:
defmod ZW.Flip HUEDevice sensor 17  IODev=deCONZ
attr ZW.Flip IODev deCONZ
attr ZW.Flip room System->HUEDevice
attr ZW.Flip stateFormat action (side)
attr ZW.Flip userReadings first \
{\
  my $string = ReadingsVal($name,"state","");;;;\
  my $first  = substr($string, 0, 1);;;;\
  if($first gt "0" and $first lt "7")\
  {\
    return $first\
  }\
  else\
  {\
    return 'unknown'\
  }\
}, \
last \
{\
  my $string = ReadingsVal($name,"state","");;;;\
  my $last  = substr($string, 3, 1);;;; \
  if($last gt "0" and $last lt "7")\
  {\
    return $last\
  }\
  else\
  {\
    return 'unknown'\
  }}, \
action \
{\
   my $string = ReadingsVal($name,"state","");;;;\
   my $first  = substr($string, 0, 1);;;; \
   my $last   = substr($string, 3, 1);;;; \
   if ($string eq "7007") {return 'shake'}\
   elsif($string eq "7008") {return 'drop'}\
   elsif ($first eq $last) {return 'doubletap'}  \
   elsif ($last eq "0") {return 'swipe'} \
   elsif ($string =~ /(1006|2005|3004|4003|5002|6001)/) {return 'flip180'}\
   elsif ($string =~ /(1002|1003|1004|1005|2001|2003|2004|2006|3001|3002|3005|3006|4001|4002|4005|4006|5001|5003|5004|5006|6002|6003|6004|6005)/)\
   {\
     return 'flip90'\
   }\
   else {return 'unknown'}}, \
side \
{\
   my $string = ReadingsVal($name,"state","");;;;\
   my $first  = substr($string, 0, 1);;;;  \
   if ($first eq "1") {return 'upper'} \
   elsif ($first eq "2") {return 'behind'} \
   elsif ($first eq "3") {return 'left'} \
   elsif ($first eq "4") {return 'right'} \
   elsif ($first eq "5") {return 'front'} \
   elsif ($first eq "6") {return 'under'} \
   else {return 'unknown'}}, \
last_side \
{\
   my $string = ReadingsVal($name,"state","");;;; \
   my $last  = substr($string, 3, 1);;;; \
   if ($last eq "1") {return 'upper'} \
   elsif ($last eq "2") {return 'behind'} \
   elsif ($last eq "3") {return 'left'} \
   elsif ($last eq "4") {return 'right'} \
   elsif ($last eq "5") {return 'front'} \
   elsif ($last eq "6") {return 'under'} \
  else {return 'unknown'}}

Und für Rotate:
defmod ZW.Rotate HUEDevice sensor 18  IODev=deCONZ
attr ZW.Rotate IODev deCONZ
attr ZW.Rotate room System->HUEDevice
attr ZW.Rotate stateFormat rotate
attr ZW.Rotate userReadings rotate {\
   \
  my $state = ReadingsVal($name,"state","");;\
  if ($state gt 0)\
  {\
     return 'right'\
  }\
  elsif ($state lt 0)\
  {\
     return 'left'\
  }\
  else\
  {\
     return 'unknown'\
  }\
}

Ich werte dann in einem DOIF die Stati der beiden Sensoren aus und führe Aktionen aus.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Offline volschin

  • Hero Member
  • *****
  • Beiträge: 1618
Antw:deconz API und Aqara Cube
« Antwort #3 am: 08 Januar 2020, 23:33:36 »
Wenn ich mich recht erinnere, gab es ein umfangreicheres Reverse Engineering dazu in einem Issue von deCONZ.
Intel NUC+Ubuntu 20.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show5, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 27502
Antw:deconz API und Aqara Cube
« Antwort #4 am: 08 Januar 2020, 23:40:26 »
deconz legt für den Aqara Cube 2 sensor devices an: Eins für die Flips und Swipes (und drop und double-tap), und eins für die rotation.

Mein Device für die Flips:
defmod ZW.Flip HUEDevice sensor 17  IODev=deCONZ
attr ZW.Flip IODev deCONZ
attr ZW.Flip room System->HUEDevice
attr ZW.Flip stateFormat action (side)
attr ZW.Flip userReadings first \
{\
  my $string = ReadingsVal($name,"state","");;;;\
  my $first  = substr($string, 0, 1);;;;\
  if($first gt "0" and $first lt "7")\
  {\
    return $first\
  }\
  else\
  {\
    return 'unknown'\
  }\
}, \
last \
{\
  my $string = ReadingsVal($name,"state","");;;;\
  my $last  = substr($string, 3, 1);;;; \
  if($last gt "0" and $last lt "7")\
  {\
    return $last\
  }\
  else\
  {\
    return 'unknown'\
  }}, \
action \
{\
   my $string = ReadingsVal($name,"state","");;;;\
   my $first  = substr($string, 0, 1);;;; \
   my $last   = substr($string, 3, 1);;;; \
   if ($string eq "7007") {return 'shake'}\
   elsif($string eq "7008") {return 'drop'}\
   elsif ($first eq $last) {return 'doubletap'}  \
   elsif ($last eq "0") {return 'swipe'} \
   elsif ($string =~ /(1006|2005|3004|4003|5002|6001)/) {return 'flip180'}\
   elsif ($string =~ /(1002|1003|1004|1005|2001|2003|2004|2006|3001|3002|3005|3006|4001|4002|4005|4006|5001|5003|5004|5006|6002|6003|6004|6005)/)\
   {\
     return 'flip90'\
   }\
   else {return 'unknown'}}, \
side \
{\
   my $string = ReadingsVal($name,"state","");;;;\
   my $first  = substr($string, 0, 1);;;;  \
   if ($first eq "1") {return 'upper'} \
   elsif ($first eq "2") {return 'behind'} \
   elsif ($first eq "3") {return 'left'} \
   elsif ($first eq "4") {return 'right'} \
   elsif ($first eq "5") {return 'front'} \
   elsif ($first eq "6") {return 'under'} \
   else {return 'unknown'}}, \
last_side \
{\
   my $string = ReadingsVal($name,"state","");;;; \
   my $last  = substr($string, 3, 1);;;; \
   if ($last eq "1") {return 'upper'} \
   elsif ($last eq "2") {return 'behind'} \
   elsif ($last eq "3") {return 'left'} \
   elsif ($last eq "4") {return 'right'} \
   elsif ($last eq "5") {return 'front'} \
   elsif ($last eq "6") {return 'under'} \
  else {return 'unknown'}}

Und für Rotate:
defmod ZW.Rotate HUEDevice sensor 18  IODev=deCONZ
attr ZW.Rotate IODev deCONZ
attr ZW.Rotate room System->HUEDevice
attr ZW.Rotate stateFormat rotate
attr ZW.Rotate userReadings rotate {\
   \
  my $state = ReadingsVal($name,"state","");;\
  if ($state gt 0)\
  {\
     return 'right'\
  }\
  elsif ($state lt 0)\
  {\
     return 'left'\
  }\
  else\
  {\
     return 'unknown'\
  }\
}

Ich werte dann in einem DOIF die Stati der beiden Sensoren aus und führe Aktionen aus.

Vielen Dank. Das war in der Tat schon die richtige Antwort. Ich habe noch mal geschaut und es wurden tatsächlich 2 passende Geräte für den Cube angezeigt. Ich werde da morgen mal schauen.

Dann hat sich das erstmal erledigt. DANKE
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/
Mein Dokuwiki:
https://www.cooltux.net

Offline Jackie

  • Jr. Member
  • **
  • Beiträge: 88
Antw:[gelöst] deconz API und Aqara Cube
« Antwort #5 am: 17 Dezember 2021, 17:56:37 »
Hallo,

vielen Dank für die tolle Beschreibung, ich habe auf meinem Raspi3, auf dem auch FHEM läuft, die deConz Software installiert und meinen Aqara Cube nach Anleitung eingebunden. Ich habe ein Problem, das nicht direkt mit FHEM zu tun hat, denn es tritt auch schon in der deConz Webapp auf, aber vielleicht hat hier jemand einen Tipp für mich:

der Cube wurde in deConz erfolgreich mit zwei Sensoren angelernt, und wenn ich eine Aktion mit dem Cube durchführe, dann funktioniert das auch eine Weile, wenige Sekunden bis wenige Minuten lang, und dann kommt plötzlich nichts mehr in der Weboberfläche an. Ich muss dann immer kurz auf den kleinen Knopf im Cube drücken, damit er wieder für ein paar Sekunden funktioniert, danach geht er dann wieder nicht.

Was könnte der Grund dafür sein, dass mein Cube nur ab und zu funktioniert? Muss man da noch irgendwas beachten?

 

decade-submarginal