Xiaomi WiFi Devices Modul (Vacuum/Airpurifier/Fan) - 72_XiaomiDevice (Support)

Begonnen von Markus M., 11 Juni 2017, 12:48:58

Vorheriges Thema - Nächstes Thema

Markus M.

Dann finde mal irgendwie raus wie sich das setzen lässt:

set Philips_Lamp_1 json {"id":124,"method":"set_cct","params":[5000, "smooth",1000]}
set Philips_Lamp_1 json {"id":125,"method":"set_cct","params":[5000]}
set Philips_Lamp_1 json {"id":126,"method":"set_cct_abx","params":[5000, "smooth",1000]}
set Philips_Lamp_1 json {"id":127,"method":"set_cct_abx","params":[5000]}
set Philips_Lamp_1 json {"id":128,"method":"set_prop","params":["cct",5000]}

FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

darthi

Es läuft über
set Philips_Lamp_1 json {"id":124,"method":"set_cct","params":[100]}
Der Wert muss zwischen 1 und 100 sein. Wobei 1 warmweiss ist und 100 kaltweiss.

Hab das Modul gerade mal testweise auf die Philips Birnen angepasst mit dem "cct"-Wert. Den "ct" Wert für die Schreibtischlampen habe ich aber überschrieben. Das Modul funktioniert also so nur für die Philips Lampen korrekt. Ich habe es angehängt.
Ist aber für mich jetzt schon einmal eine super Lösung, um die Philips Birnen in FHEM zu steuern!

Vielen Dank Markus für deine Hilfe und Arbeit! Wenn du Zeit hast, kannst du es sicherlich noch einmal sauber in dein Modul implementieren, am Besten unter einem neuen subType PhilipsBULB.

Markus M.

Zitat von: darthi am 02 Juli 2017, 14:48:03Wenn du Zeit hast, kannst du es sicherlich noch einmal sauber in dein Modul implementieren, am Besten unter einem neuen subType PhilipsBULB.

Längst passiert, im ersten Beitrag.
Was tun eigentlich snm und dv?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

darthi

Zitat von: Markus M. am 02 Juli 2017, 15:06:34
Längst passiert, im ersten Beitrag.
Super, vielen Dank!
Mir ist aber eben aufgefallen, dass da irgendwas aktuell noch mit den cct und ct Readings vertauscht ist. Außerdem darf set cct erst bei 1 und nicht bei 0 beginnen.

Markus M.

Zitat von: darthi am 02 Juli 2017, 15:22:21Mir ist aber eben aufgefallen, dass da irgendwas aktuell noch mit den cct und ct Readings vertauscht ist. Außerdem darf set cct erst bei 1 und nicht bei 0 beginnen.
Stimmt. Sollte jetzt besser funktionieren.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

darthi

Danke!
Die Reading sind aber immer noch vertauscht bzw. verkehrt. Wenn ich cct einstelle, taucht es als ct Reading auf. Das cct Reading bleibt auf 0.
Zeigt das cct Reading vielleicht auf den ct Wert, den ja die Philips Lampe nicht unterstützt?

Markus M.

Zitat von: darthi am 02 Juli 2017, 16:21:31
Danke!
Die Reading sind aber immer noch vertauscht bzw. verkehrt. Wenn ich cct einstelle, taucht es als ct Reading auf. Das cct Reading bleibt auf 0.
Zeigt das cct Reading vielleicht auf den ct Wert, den ja die Philips Lampe nicht unterstützt?

Kann es sein dass deine Lampe bei unbekannten Werten die du anfrägst nicht mit einem leeren String oder undef antwortet sondern das in der Antwort komplett verwirft?!

set lamp json {"id":123,"method":"get_prop","params":["cct","emptystring","bright","dv","x"]} sollte ein Array der Länge 5 liefern
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Manul

Zwei Fragen zum Roboter bzw. Modul:

Weiß jemand, in welcher Einheit "device_lifetime" angegeben wird?

Kann es sein, daß die DND-Zeit sich auf eine andere Zeitzone bezieht? Weiß jemand, auf welche? Ich würde auf chinesische Standardzeit (UTC+8) tippen, hat das schon mal jemand überprüft?

Markus M.

Zitat von: Manul am 02 Juli 2017, 16:56:03
Weiß jemand, in welcher Einheit "device_lifetime" angegeben wird?
Stunden, heisst seit eben device_uptime
Soll ich es zu Sekunden ändern?

ZitatKann es sein, daß die DND-Zeit sich auf eine andere Zeitzone bezieht? Weiß jemand, auf welche? Ich würde auf chinesische Standardzeit (UTC+8) tippen, hat das schon mal jemand überprüft?
Kann sein. Das mit der Zeitzone kriegen die irgendwie nicht auf die Reihe, obwohl beim Setup angegeben. Sommerzeit kennen die meisten Geräte garantiert auch nicht.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Manul

Danke!

Zitat von: Markus M. am 02 Juli 2017, 17:31:01
Stunden, heisst seit eben device_uptime
Soll ich es zu Sekunden ändern?

Ich denke, Stunden ist okay. Was genau gibt diese Zeit denn an? Bei mir ist sie kleiner als die total_clean_time (0.75 vs. 1.36) , ich weiß gerade nicht, wie ich das interpretieren soll.

Zitat von: Markus M. am 02 Juli 2017, 17:31:01
Kann sein. Das mit der Zeitzone kriegen die irgendwie nicht auf die Reihe, obwohl beim Setup angegeben. Sommerzeit kennen die meisten Geräte garantiert auch nicht.

Ich hab's gerade mal ausprobiert, scheint tatsächlich UTC+8 zu sein. Das würde auch die fehlende Sommerzeit erklären, die ist in China wohl abgeschafft. Bei welchem Setup konntest Du/kann man das denn angeben? Ich hab nichts gefunden.

Markus M.

Zitat von: Manul am 02 Juli 2017, 18:20:45
Ich denke, Stunden ist okay. Was genau gibt diese Zeit denn an? Bei mir ist sie kleiner als die total_clean_time (0.75 vs. 1.36) , ich weiß gerade nicht, wie ich das interpretieren soll.
Die Uptime. Zeit seit dem letzten Neustart.

ZitatIch hab's gerade mal ausprobiert, scheint tatsächlich UTC+8 zu sein. Das würde auch die fehlende Sommerzeit erklären, die ist in China wohl abgeschafft. Bei welchem Setup konntest Du/kann man das denn angeben? Ich hab nichts gefunden.
Beim Setup sendet die App automatisch gmt_offset und teilweise die (ebenfalls richtige weil aus dem Telefon ermittelte) Zeitzone an das Gerät.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

darthi

Zitat von: Markus M. am 02 Juli 2017, 16:44:02
Kann es sein dass deine Lampe bei unbekannten Werten die du anfrägst nicht mit einem leeren String oder undef antwortet sondern das in der Antwort komplett verwirft?!

set lamp json {"id":123,"method":"get_prop","params":["cct","emptystring","bright","dv","x"]} sollte ein Array der Länge 5 liefern

Gute Frage... Also der set Befehl von dir (natürlich mit meinem Device :) liefert bei mir nur einen Array der Länge 3 (siehe unten).
Dahingegen aktualisiert "get Stehleuchte data" aktualisiert brightness, cct, color_mode, ct und power.


2017.07.02 18:43:19 5: Stehleuchte: write {"id":123,"method":"get_prop","params":["cct","emptystring","bright","dv","x"]} (79)
2017.07.02 18:43:19 5: Stehleuchte: send 2131007000000000039d3d25000039ecedcaefa737db254b8497deeb7dc7bd9977b74c0284550aec4ef8f6c18ac05ca48e2611b35a4cd4e9c5ec8fee8ec911bbc2049771d16927fbd848b9fbf42c3676e4cb155dccf94c84e106c6b2e798b99d19e2ed152d65633ee4dd6147d8853fd2
2017.07.02 18:43:19 4: Stehleuchte Send SUCCESS
2017.07.02 18:43:19 5: Stehleuchte > 2131007000000000039d3d25000039ecedcaefa737db254b8497deeb7dc7bd9977b74c0284550aec4ef8f6c18ac05ca48e2611b35a4cd4e9c5ec8fee8ec911bbc2049771d16927fbd848b9fbf42c3676e4cb155dccf94c84e106c6b2e798b99d19e2ed152d65633ee4dd6147d8853fd2
2017.07.02 18:43:19 5: Stehleuchte < 2131004000000000039d3d25000039ebe5a01f65ab95d277180daa5782f3f4388eb6c7c7f4bc9e911289abcdab91b8c98b077556c54b4a8dff9016c3d12d2e40 (64)
2017.07.02 18:43:19 4: Stehleuchte - recv seq 14827/1499013799
2017.07.02 18:43:19 4: Stehleuchte: decrypted
{"result":[1,50,0],"id":123}
2017.07.02 18:43:19 4: Stehleuchte: parse id 123
$VAR1 = {
          'id' => 123,
          'result' => [
                        1,
                        50,
                        0
                      ]
        };

2017.07.02 18:43:19 3: Stehleuchte: parse id 123 /
2017.07.02 18:43:19 2: Stehleuchte: message type for id 123 not found!
$VAR1 = {
          'id' => 123,
          'result' => [
                        1,
                        50,
                        0
                      ]
        };

Manul

Zitat von: Markus M. am 02 Juli 2017, 18:26:22
Beim Setup sendet die App automatisch gmt_offset und teilweise die (ebenfalls richtige weil aus dem Telefon ermittelte) Zeitzone an das Gerät.

Okay. Kann man die interne Zeit und Zeitzone des Geräts irgendwie auslesen oder gar setzen? Falls nicht, was hältst Du von einer automatischen Umrechnung localtime<->UTC+8?

Markus M.

Zitat von: darthi am 02 Juli 2017, 18:35:10
Gute Frage... Also der set Befehl von dir (natürlich mit meinem Device :) liefert bei mir nur einen Array der Länge 3 (siehe unten).
Dahingegen aktualisiert "get Stehleuchte data" aktualisiert brightness, cct, color_mode, ct und power.
Dann mach erst mal sauber, eigentlich sollte mit der aktuellen Version jetzt schon alles funktionieren:
deletereading Stehleuchte .*

Nach einem refresh dann bitte ein list vom Device.
Gibt color_mode bei dir was zurück?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

darthi

So hier mein "sauberes" Device:
Internals:
   CFGFN
   DEF        192.168.101.120 db938e401f240f0a8c8ee91c5cef03c6
   FD         21
   NAME       Stehleuchte
   NR         656
   STATE      off
   TYPE       XiaomiDevice
   device_type
   mac        34:CE:00:9A:C9:00
   model      philips.light.bulb
   token      db938e401f240f0a8c8ee91c5cef03c6
   wifi_firmware 1.5.0-dev(7f7a714)
   Readings:
     2017-07-02 19:51:44   brightness      50
     2017-07-02 19:51:44   cct             0
     2017-07-02 19:51:44   color_mode      0
     2017-07-02 19:51:44   ct              1
     2017-07-02 19:51:44   power           off
   Helper:
     ConnectionState connected
     crypt      AES
     dev        039d
     id         3d25
     ip         192.168.101.120
     last_read  1499017904
     packetid   51
     port       54321
     sequence   1498998971
     timers     0
     token      db938e401f240f0a8c8ee91c5cef03c6
     Packet:
Attributes:
   group      Licht
   room       Wohnzimmer
   stateFormat power
   subType    SmartLamp
   webCmd     brightness:cct:on:off
   widgetOverride brightness:colorpicker,BRI,0,1,100 cct:colorpicker,CT,100,1,1


ct und cct stimmen leider nach wie vor nicht. Der cct-Wert wird immer noch im ct-Reading zurückgegeben.
color_mode gibt anscheinend "0" zurück. Aber ggf. gehört die dann auch zu etwas anderen.

Wenn ich mir das mapping aus der MiHome App angucke, könnte das wieder hiermit hinkommen:
<map>
    <string name="power">on</string>
    <int name="snm" value="0" />
    <int name="bright" value="30" />
    <int name="cct" value="1" />
    <int name="dv" value="0" />
</map>


Ich habe zwar keine Ahnung, was snm und dv ist, aber das würde passen. Anscheinend wird dann im Array der snm und dv irgendwo zugeordnet und deswegen passt der Rest nicht mehr? Vielleicht müsstest du die Philips Birne doch von den generellen SubType SmartLamp trennen und als neuen SubType anlegen?!