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

darthi

Wäre es auch denkbar, dass ihr das Modul soweit updated, dass es mit den Xiaomi Philips Birnen arbeitet? Leider funktionieren diese ad-hoc nicht über die Mi LED Desk Lamp Funktion, obwohl sie eigentlich die gleichen Funktionen haben.

Markus M.

Zitat von: darthi am 30 Juni 2017, 09:55:11
Wäre es auch denkbar, dass ihr das Modul soweit updated, dass es mit den Xiaomi Philips Birnen arbeitet? Leider funktionieren diese ad-hoc nicht über die Mi LED Desk Lamp Funktion, obwohl sie eigentlich die gleichen Funktionen haben.
Hast du nen Link dazu?
Was funktioniert nicht? Gar nichts?
Bekommst du überhaupt nen Token beim Verbinden? Wenn nicht könnte es daran liegen.
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

Markus M.

Zitat von: oli82 am 30 Juni 2017, 09:45:29Kannst du in der nächsten Version eine Versionierung einführen?
Das Datum steht jeweils in der Datei.
Aktuell ist das Ganze noch work in progress.
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

ralf-ms

Hi Markus,

Vielen Dank für das Modul!

Funktioniert einwandfrei mit meinem
- Mi Robot
- AirPurifier
und (seit dem letzten Update) der
- Xiaomi Philips EyeCare Smart Lamp

Topp!!

Grüße
Ralf

Markus M.

Zitat von: ralf-ms am 30 Juni 2017, 14:10:17
und (seit dem letzten Update) der
- Xiaomi Philips EyeCare Smart Lamp
Dann funktionieren also beide Schreibtischlampen, ich hab die andere.

Brauchst du noch irgendwelche Transitions oder cron?
Mir reicht eigentlich der Sleep Mode und bei on/off, brightness und ct kannst du als zweiten Parameter jetzt schon die Zeit mitgeben.
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

stoxx

@scooty
Vielen dank für Deine ausführliche Beschreibung bzgl. Einbindung ins FTUI!
Bei mir haben allerdings die XIAOMI Befehle über das Widget link nicht funktioniert, wie Du es beschrieben hast.
Statt z.B.
Zitatdata-device="XIAOMI_VACUUM"
data-set="start"

musste ich Folgendes verwenden, damit es funzt:
data-fhem-cmd="set XIAOMI_VACUUM start"

@Markus: Das Modul läuft hervorragend, danke dafür!

vg stoxx
FHEM 5.8 auf Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave ..

Manul

Könnte jemand bitte den folgenden Weg, an das Token zu kommen, etwas genauer beschreiben? Vielen Dank!

Zitat von: Markus M. am 11 Juni 2017, 12:49:25
Einrichtung ohne App: (alle FWs?)
- Token auslesen und WLAN-Anmeldung ohne die Xiaomi App vornehmen mit folgendem Request:
  {"id":1111,"method":"miIO.config_router","params":{"country_domain":"sg","ssid":"<SSID>","uid":<XIAOMI_USERID>,"gmt_offset":3600,"passwd":"<PASS>"}}

Markus M.

Zitat von: Manul am 01 Juli 2017, 18:09:52
Könnte jemand bitte den folgenden Weg, an das Token zu kommen, etwas genauer beschreiben? Vielen Dank!
Du liest den Token wie bisher direkt aus dem zurückgesetzten Sauger aus und verwendest dann anstelle der Mi-Home App FHEM zum WLAN einrichten.
Dazu muss FHEM aber direkt mit dem Sauger WLAN verbunden werden.
Alternativ kannst du den Befehl auch mit dem Python Script abschicken. Dazu gehört dann noch ein zweiter Befehl der den Einrichtungsmodus beendet.
Guck am besten mal in den Code.
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

shinebar

Moin, hier mal zur Xiaomi Philips Light Bulb:

Zitat von: Markus M. am 30 Juni 2017, 10:34:02
Hast du nen Link dazu?
Was funktioniert nicht? Gar nichts?
Bekommst du überhaupt nen Token beim Verbinden? Wenn nicht könnte es daran liegen.

bei mir funktioniert die Lampe (http://www.gearbest.com/smart-lighting/pp_644095.html) sehr gut.

  • ins Netzwerk eingebunden mit der Mi-App (Achtung: Locale muss Mainland China sein, mein MiRobot ist in den USA eingerichtet, musste erst umschalten - leider sieht man da die Geräte aus dem jeweils anderen locale nicht mehr..)
  • In FHEM als XiaomiDevice eingerichtet, subType SmartLamp und stateformat power gesetzt

Ergebnis: on/off/toggle / brightness gehen, ct nicht.

Markus: Vielen Dank! Wenn Du noch eine Lampe zum testen brauchst - ich habe noch eine, die ich im Moment nicht benötige, schicke ich Dir für die coole Arbeit gern. Im Moment wird noch ein Update der Lampe auf die 1.30 angeboten (Device-Firmware, nicht WifiFirmware) - da bin ich im Moment noch unsicher. Never touch a running system :) Gern kann ich auch Debug-Infos liefern, falls Du Interesse hast. (Wie immer: Du machst das in Deiner Freizeit und für die Community - das ist mir völlig bewusst, auf keinen Fall eine Aufforderung oder Druck hier reinlesen)

Viele Grüße
Danny

[/list]Internals:
   DEF        192.168.180.39
   FD         27
   NAME       Philips_Lamp_1
   NR         95
   STATE      on
   TYPE       XiaomiDevice
   device_type
   mac        28:6C:07:AC:18:2F
   model      philips.light.bulb
   token      89b8fece86cf52d2d069a907e017cb00
   wifi_firmware 1.3.0
   Readings:
     2017-07-01 19:20:58   brightness      71
     2017-07-01 19:11:48   device_firmware 1.2.7_0028
     2017-07-01 19:11:48   device_lifetime 0.76
     2017-07-01 19:20:58   power           on
     2017-07-01 19:11:48   wifi_auth_fail_count 0
     2017-07-01 19:11:48   wifi_conn_fail_count 0
     2017-07-01 19:11:48   wifi_conn_success_count 1
     2017-07-01 19:11:48   wifi_dhcp_fail_count 0
     2017-07-01 19:11:48   wifi_rssi       -72
     2017-07-01 19:11:48   wifi_state      online
   Helper:
     ConnectionState connected
     crypt      AES
     dev        0330
     id         96b9
     ip         192.168.180.39
     last_read  1498929658
     packetid   64
     port       54321
     sequence   1498926364
     timers     0
     token      89b8fece86cf52d2d069a907e017cb00
     Packet:
                  power_off
       37         set_light
Attributes:
   stateFormat power
   subType    SmartLamp



darthi

Zitat von: Markus M. am 30 Juni 2017, 10:34:02
Hast du nen Link dazu?
Was funktioniert nicht? Gar nichts?
Bekommst du überhaupt nen Token beim Verbinden? Wenn nicht könnte es daran liegen.

Hi,

erst einmal ein Link zu den Glühbirnen: http://www.gearbest.com/smart-lighting/pp_644095.html
Funktionieren mit der Mi Home App problemlos.

Und ja, es funktioniert in FHEM gar nichts. Beim Versuch zu Verbinden erhalte ich den Token "00000000000000000000000000000000". Da hat also irgendwas schon nicht geklappt. Ich habe sie nur als Subtype "SmartLamp" definiert. Hier meine Device Infos:
Internals:
   DEF        192.168.101.120
   FD         14
   NAME       Philips
   NR         67
   STATE      power
   TYPE       XiaomiDevice
   device_type
   token      00000000000000000000000000000000
   Helper:
     ConnectionState connected
     crypt      AES
     dev        039d
     id         3d25
     ip         192.168.101.120
     last_read  1498947358
     packetid   7
     port       54321
     sequence   1498944201
     token      00000000000000000000000000000000
     Packet:
       1          wifi_stats
       2          device_info
       3          get_serial_number
       4          lamp_data
       5          lamp_data
       6          power_off
Attributes:
   subType    SmartLamp
   verbose    0


edit: Ich habe leider, anders als shinebar, die Firmware Version 1.3.0 auf der Birne.

Hier noch ein Auszug aus meiner Log beim Verusch zu verbinden:
2017.07.01 23:38:22 3: Philips: disconnecting
2017.07.01 23:38:22 2: Philips: connecting
2017.07.01 23:38:22 3: Philips: initialized
2017.07.01 23:38:22 5: Philips: initSend
2017.07.01 23:38:22 4: Philips Send SUCCESS
2017.07.01 23:38:22 5: Philips > 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
2017.07.01 23:38:22 5: Philips < 2131002000000000039d3d250000038400000000000000000000000000000000 (32)
2017.07.01 23:38:22 4: Philips - recv seq 900/1498945102
2017.07.01 23:38:26 5: Philips: write {"id":44,"method":"miIO.wifi_assoc_state","params":[""]} (56)
2017.07.01 23:38:26 5: Philips: send 2131006000000000039d3d2500000388860a6a9323c41e363473179f091099d2393c054465f28f748c715649fc1a25c05e36a2e76f38d1376924a7c988f2507f0f78b6091e5ff3898b439e8e83ea16624f4d1cccdcbb9b8f1a2b1c240101e8a1
2017.07.01 23:38:26 4: Philips Send SUCCESS
2017.07.01 23:38:26 5: Philips > 2131006000000000039d3d2500000388860a6a9323c41e363473179f091099d2393c054465f28f748c715649fc1a25c05e36a2e76f38d1376924a7c988f2507f0f78b6091e5ff3898b439e8e83ea16624f4d1cccdcbb9b8f1a2b1c240101e8a1
2017.07.01 23:38:26 5: Philips: write {"id":45,"method":"miIO.info","params":[""]} (44)
2017.07.01 23:38:26 5: Philips: send 2131005000000000039d3d25000003884a8e42cdfbef51d8490696a56950727e65e6ff14a4e6b91b6dd171538ed09d44687b32a8b99c5f7399d00f4a64edb09e4460b03678245930f7b6d43411badd9b
2017.07.01 23:38:26 4: Philips Send SUCCESS
2017.07.01 23:38:26 5: Philips > 2131005000000000039d3d25000003884a8e42cdfbef51d8490696a56950727e65e6ff14a4e6b91b6dd171538ed09d44687b32a8b99c5f7399d00f4a64edb09e4460b03678245930f7b6d43411badd9b
2017.07.01 23:38:26 5: Philips: write {"id":46,"method":"get_serial_number","params":[""]} (52)
2017.07.01 23:38:26 5: Philips: send 2131006000000000039d3d250000038850fb5fa070a7aa51a2727f7894791a72eddf7d17d5c42b5c51b250318d3eaba87730234b0fee3ca6e34af08954f727efa56cee74b9fe6b06587b1bae809d77f75c0249995d21a255c3ea8d8a90702455
2017.07.01 23:38:26 4: Philips Send SUCCESS
2017.07.01 23:38:26 5: Philips > 2131006000000000039d3d250000038850fb5fa070a7aa51a2727f7894791a72eddf7d17d5c42b5c51b250318d3eaba87730234b0fee3ca6e34af08954f727efa56cee74b9fe6b06587b1bae809d77f75c0249995d21a255c3ea8d8a90702455
2017.07.01 23:38:26 5: Philips < 2131006000000000039d3d2500000388ffffffffffffffffffffffffffffffff (96)
2017.07.01 23:38:26 4: Philips - recv seq 904/1498945106
2017.07.01 23:38:26 4: Philips: decrypted

2017.07.01 23:38:26 2: Philips: invalid JSON:
2017.07.01 23:38:26 5: Philips < 2131005000000000039d3d2500000388ffffffffffffffffffffffffffffffff (80)
2017.07.01 23:38:26 4: Philips - recv seq 904/1498945106
2017.07.01 23:38:26 4: Philips: decrypted

2017.07.01 23:38:26 2: Philips: invalid JSON:
2017.07.01 23:38:26 5: Philips < 2131006000000000039d3d2500000388ffffffffffffffffffffffffffffffff (96)
2017.07.01 23:38:26 4: Philips - recv seq 904/1498945106
2017.07.01 23:38:26 4: Philips: decrypted

2017.07.01 23:38:26 2: Philips: invalid JSON:
2017.07.01 23:38:29 5: Philips: write {"id":47,"method":"get_prop","params":["power","bright","ct","color_mode","delayoff","flowing","flow_params","name"]} (117)
2017.07.01 23:38:29 5: Philips: send 213100a000000000039d3d250000038b33701860a65c42ee63303c444ded963d8de9944ee60bf6d9c63c5435d926343f112d6d015f6b3ddda086db31288f3643dae25a91826b2c1ceba1f84f6c043053b894489e31dae6644422369b174b81ee39e47a2c559c62b559e144f8301218e2d0bd7037b80c35935c3964674e58e737a69bea862f6a5ba46d0e74e2e83f3f855955e6a8717472b0ce3af6159052eb66
2017.07.01 23:38:29 4: Philips Send SUCCESS
2017.07.01 23:38:29 5: Philips > 213100a000000000039d3d250000038b33701860a65c42ee63303c444ded963d8de9944ee60bf6d9c63c5435d926343f112d6d015f6b3ddda086db31288f3643dae25a91826b2c1ceba1f84f6c043053b894489e31dae6644422369b174b81ee39e47a2c559c62b559e144f8301218e2d0bd7037b80c35935c3964674e58e737a69bea862f6a5ba46d0e74e2e83f3f855955e6a8717472b0ce3af6159052eb66
2017.07.01 23:38:29 5: Philips < 213100a000000000039d3d250000038bffffffffffffffffffffffffffffffff (160)
2017.07.01 23:38:29 4: Philips - recv seq 907/1498945109
2017.07.01 23:38:29 4: Philips: decrypted

2017.07.01 23:38:29 2: Philips: invalid JSON:
2017.07.01 23:38:32 5: Philips: write {"id":48,"method":"get_prop","params":["power","bright","ct","color_mode","delayoff","flowing","flow_params","name"]} (117)
2017.07.01 23:38:32 5: Philips: send 213100a000000000039d3d250000038eab1fb528c7b327a7a6022e780e6948aa4c877e51e2d0ba9be0f8b4f0c47c8eeaa354d7bd2447756edb820ab4d912b58e3d3fe691bd54e9c36e7e832faeafe32c876b3d31bc37e569e1403c0d7f09791946195ed4f95615b3d797c65e9f9fa58d5f322698a2d2875389266b2d1f13d959ad99d90ea333808b38146bfe1e11fa0e46012f76f9d702594b471f991b9fea5a
2017.07.01 23:38:32 4: Philips Send SUCCESS
2017.07.01 23:38:32 5: Philips > 213100a000000000039d3d250000038eab1fb528c7b327a7a6022e780e6948aa4c877e51e2d0ba9be0f8b4f0c47c8eeaa354d7bd2447756edb820ab4d912b58e3d3fe691bd54e9c36e7e832faeafe32c876b3d31bc37e569e1403c0d7f09791946195ed4f95615b3d797c65e9f9fa58d5f322698a2d2875389266b2d1f13d959ad99d90ea333808b38146bfe1e11fa0e46012f76f9d702594b471f991b9fea5a
2017.07.01 23:38:32 5: Philips < 213100a000000000039d3d250000038effffffffffffffffffffffffffffffff (160)
2017.07.01 23:38:32 4: Philips - recv seq 910/1498945112
2017.07.01 23:38:32 4: Philips: decrypted

2017.07.01 23:38:32 2: Philips: invalid JSON:

Markus M.

Zitat von: shinebar am 01 Juli 2017, 19:30:42

Ergebnis: on/off/toggle / brightness gehen, ct nicht.

Leider keine Doku und kein color_mode, den Rest spuckt sie auch nicht aus - probier mal rgb etc., siehe Anhang.

Ansonsten vielleicht raten:
Code (verbose 5) Auswählen
set Philips_Lamp_1 json {"id":123,"method":"get_prop","params":["color_temperature","temperature","colortemperature","level","color","temp","x","irgendwasanderes"]}


Zitat von: darthi am 01 Juli 2017, 23:27:29
Beim Versuch zu Verbinden erhalte ich den Token "00000000000000000000000000000000".

Also ein Security Update... Reagiert nun wie der Sauger mit neuer Firmware.
Entweder zurücksetzen und den Token vor dem Einrichten auslesen (sofern das überhaupt geht) oder über die Backup Methode.
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

ralf-ms

Zitat von: Markus M. am 30 Juni 2017, 15:22:34
Dann funktionieren also beide Schreibtischlampen, ich hab die andere.

Brauchst du noch irgendwelche Transitions oder cron?
Mir reicht eigentlich der Sleep Mode und bei on/off, brightness und ct kannst du als zweiten Parameter jetzt schon die Zeit mitgeben.

Alles gut! Danke!
on/off und brightness reichen völlig (Farbtemperatur kann die EyeCare ja nicht).

Manul

Zitat von: Markus M. am 01 Juli 2017, 18:23:25
Du liest den Token wie bisher direkt aus dem zurückgesetzten Sauger aus und verwendest dann anstelle der Mi-Home App FHEM zum WLAN einrichten.

Ah, danke, das hatte ich falsch verstanden. Ich dachte, das wäre eine Methode, um den Token auszulesen und das WLAN einzurichten.

Wie auch immer, Token ist ausgelesen und Sauger in FHEM integriert.

darthi

Zitat von: Markus M. am 02 Juli 2017, 00:23:28
Also ein Security Update... Reagiert nun wie der Sauger mit neuer Firmware.
Entweder zurücksetzen und den Token vor dem Einrichten auslesen (sofern das überhaupt geht) oder über die Backup Methode.
Hmm... den Token vor der Einrichtung auslesen bekomme ich irgendwie nicht hin. Die Flole App scheint nur nach Staubsaugern zu suchen und nicht nach anderen Devices. Das Python Script bekomme ich widerrum unter Windows nicht zum Laufen.

Und mit der Backup Methode mit dem MiToolkit, bekomme ich jedesmal den Fehler "Es scheint ein Fehler aufgetreten zu sein, das Backup ist viel zu klein".

Die Glühbirne downgraden ist anscheinend auch nicht möglich. Habe wohl vor erst Pech gehabt mit dem Birnchen :(

edit:
Hab es nun hinbekommen. Habe das Backup vom MiToolkit manuell mit
java -jar abe.jar unpack 'PfadZu\backup.ab' 'PfadZu\backup.tar'
konvertiert und anschließend entpackt.

Nun konnte ich mit SQLite DB Browser den Token in der Datei \apps\com.xiaomi.smarthome\db\miio2.db anzeigen lassen.

Steuerung klappt mit dem Plugin genauso wie bei shinebar. Vielen Dank! Wenn ich jetzt  noch das Wechseln der Farbtemperatur zum Laufen bekomme, wäre es göttlich :)

Noch ein edit :)
Also anscheinend wird die Farbtemperatur über "cct" gesteuert zwischen 1 und 100, wobei 1 = warmweiss ist und 100 = kaltweiss.
In der entsprechenden StatePhilipsXYZ.xml steht Folgendes:
<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>


Kannst du damit etwas anfangen?

shinebar

Zitat von: Markus M. am 02 Juli 2017, 00:23:28
Leider keine Doku und kein color_mode, den Rest spuckt sie auch nicht aus - probier mal rgb etc., siehe Anhang.

Ansonsten vielleicht raten:
Code (verbose 5) Auswählen
set Philips_Lamp_1 json {"id":123,"method":"get_prop","params":["color_temperature","temperature","colortemperature","level","color","temp","x","irgendwasanderes"]}


Okay, kein Problem - scheint zu funktionieren. In der App heisst der Wert cct, hier kommt auch - als einiziges - ein Result  zurück. Was mir noch aufgefallen ist: Device Lifetime ist vermutlich eher "Uptime", das wurde bei mir heute Nacht genullt (Lampe war aus).

2017.07.02 11:21:19 2: Philips_Lamp_1: message type for id 123 not found!
$VAR1 = {
          'result' => [
                        47
                      ],
          'id' => 123
        };