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

neturmel

Hallo,

ich versuche gerade meinen neuen Xiaomi Mijia G1 in FHEM einzubinden
Gibt es gerade für 135 EUR bei real.de, für das Geld ein echtes Schnäppchen, auch wenn er natürlich nicht so viel kann wie teureren Modelle

- keine echte Map, er zeigt in der App nur an, wie der Raum für ihn aussieht, man kann aber keine Zonen definieren
- Navigation über Gyro und nicht über Lasersensoren, das sieht aber trotzdem recht intelligent aus und nicht mehr so chaotisch wie beim iLife V6 Vorgänger bei mir

An den Einschränkungen könnte natürlich auch mein Scheitern mit der Steuerung liegen. Ich bin leider nicht mehr allzusehr im FHEM-Thema, weil meine sonstigen Gerätschaften einfach schon seit Jahren
problemlos funktionieren.  Aber vielleicht erkennt ja jemand, woran es liegt.

Zuerst mal sind FHEM und Staubsauger im selben Netz und der Staubsauger ist vom Raspi anpingbar. Ich konnte mit micloud  bzw. xiaomi_tokens das Token auslesen.

Das ist zwar jetzt nicht lebenswichtig, schließlich kann ich ja auch über die App steuern, aber irgendwie ärgert es mich doch, dass ich nicht weiterkomme.

Vielleicht sieht ja ein Exporte hier gleich woran es liegt (oder ob Xiaomi bei dem Modell was geändert hat)


Internals:
   DEF        192.168.178.103 aae245a09de26...
   FD         50
   FUUID      5f85884b-f33f-af1d-be56-6c493...
   NAME       staubi
   NR         155
   STATE      ???
   TYPE       XiaomiDevice
   hardware   esp32
   mac        64:90:C1:A3:...
   mcu_firmware 6138
   model      mijia.vacuum.v2
   token      aae245a09de26...
   wifi_firmware cef6c09-dirty
   READINGS:
     2020-10-13 14:15:09   device_firmware 2.0.8
     2020-10-13 14:15:09   device_uptime   22.34
     2020-10-13 14:45:15   error           undefinedcommand
     2020-10-13 14:15:09   wifi_rssi       -38
   helper:
     ConnectionState connected
     crypt      AES
     delay      60
     dev        1400
     id         dd9c
     ip         192.168.178.103
     last_read  1602593115
     packetid   20
     port       54321
     sequence   1602510890
     token      aae245a09de26...
     packet:
       17         get_status
       18         get_status
       19         get_status
Attributes:
   icon       Botvac_VR200
   room       Wohnzimmer
   subType    VacuumCleaner
   verbose    5


Beim reconnect mit verbose 5 erhalte ich Folgendes

2020.10.13 11:49:25 3: staubi: disconnecting
2020.10.13 11:49:25 2: staubi: connecting
2020.10.13 11:49:25 3: staubi: initialized
2020.10.13 11:49:25 5: staubi: initSend
2020.10.13 11:49:25 5: staubi Send SUCCESS
2020.10.13 11:49:25 5: staubi > 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
2020.10.13 11:49:25 5: staubi < 21310020000000001400dd9c000117fbffffffffffffffffffffffffffffffff (32)
2020.10.13 11:49:29 4: staubi: write {"id":67,"method":"miIO.info","params":[""]} (44)
2020.10.13 11:49:29 5: staubi: send 21310050000000001400dd9c000117ff4ea525e237fc06203646717b93d7b05c5a5bc6de397045645ae7d01be383a65af81efca22d477054d586ba8ee88ebffb38ca6d8d94b501daa76d0b304ca65573
2020.10.13 11:49:29 5: staubi Send SUCCESS
2020.10.13 11:49:29 5: staubi > 21310050000000001400dd9c000117ff4ea525e237fc06203646717b93d7b05c5a5bc6de397045645ae7d01be383a65af81efca22d477054d586ba8ee88ebffb38ca6d8d94b501daa76d0b304ca65573
2020.10.13 11:49:29 4: staubi: write {"id":68,"method":"miIO.wifi_assoc_state","params":[""]} (56)
2020.10.13 11:49:29 5: staubi: send 21310060000000001400dd9c000117ffcc80219d7fe706e111db6986baa0e9967b7ec727dcf534c3501cba4a4e768f1fdb18e9cc304e36d7cb6393ca9da79aadc8393d5ed4f0447ecd7e0ed1975291580946a95da677ac540ae178975c7dc562
2020.10.13 11:49:29 5: staubi Send SUCCESS
2020.10.13 11:49:29 5: staubi > 21310060000000001400dd9c000117ffcc80219d7fe706e111db6986baa0e9967b7ec727dcf534c3501cba4a4e768f1fdb18e9cc304e36d7cb6393ca9da79aadc8393d5ed4f0447ecd7e0ed1975291580946a95da677ac540ae178975c7dc562
2020.10.13 11:49:29 4: staubi: write {"id":69,"method":"get_serial_number","params":[""]} (52)
2020.10.13 11:49:29 5: staubi: send 21310060000000001400dd9c000117ff83ec19820d582e707c853630c7d75e72211a3ed188e3cf4379e62c61333a9444828f5bc80e07142c3c4c310a17929e403fee89da6f2552db439f752a6e1fe4ae2a66cc04bc029e5f3e13f802d1d6cf71
2020.10.13 11:49:29 5: staubi Send SUCCESS
2020.10.13 11:49:29 5: staubi > 21310060000000001400dd9c000117ff83ec19820d582e707c853630c7d75e72211a3ed188e3cf4379e62c61333a9444828f5bc80e07142c3c4c310a17929e403fee89da6f2552db439f752a6e1fe4ae2a66cc04bc029e5f3e13f802d1d6cf71
2020.10.13 11:49:29 4: staubi: write {"id":70,"method":"get_timezone","params":[""]} (47)
2020.10.13 11:49:29 5: staubi: send 21310050000000001400dd9c000117ff0279d753313529781a1e573e5302b239c91eb4e322988ae0372b954e064899c00ce78d928fd1e758f21092a3b074a153bc730c88bbe1ac7e5d57eecbb4b7f02d
2020.10.13 11:49:29 5: staubi Send SUCCESS
2020.10.13 11:49:29 5: staubi > 21310050000000001400dd9c000117ff0279d753313529781a1e573e5302b239c91eb4e322988ae0372b954e064899c00ce78d928fd1e758f21092a3b074a153bc730c88bbe1ac7e5d57eecbb4b7f02d
2020.10.13 11:49:30 5: staubi < 213101e0000000001400dd9c00011800f71395b8c69a38e3e22577da3eb763363350afb5d1cc3a7cdd784c2278615a109995896fe4ec335f5c07aaac0783b72fe158df2b66de9d5d76752dd0671a62f0a99a7ee9f82af99618aebf5cc2b124d4650fee81e69c56549312f0ed2fa937a819b78a32d78cf07a010f854cb5853fed72e46759ce53a54b463529a30bdf1db5b5c061ef2fb4cf8de0d0d0c14f2da6d052451a1350f3dcd105eae84828d736af8f6f9217ec772242082279c7b486b66866f3a00f16a0f9ee49dffa44fb17ec9ec974150c9366fe8ba70ad7ec1b3f608295ab612416570d727dc3a6daa57119d6c05b553c575c0af55ca49086ff53274a070307d7f12aa5596f7cce836822bedf598654c97e0eed8a26ce9144758282735bbb56c5eca6101a9c0d29b3bca8e5111f982bc47802efa7dfe0822809cdec4d0a3ecbc729cf16d16c2cc072006032e01e65ce750a9e1a880f699d9a3566bf5a1551a789d09cbee03135dbefd27162f9026358ddb9dc21c95f8123eb5dc2a8b04646e679da5cfe8201bc6f5c8da942447a7728757a3052cb4a4bc011a52f9e0660087a9fdc759b38da3e43cb80affeea5f436d697e777e8559bc6fd1282f110da7e432a0e7445ee183a94051e1665d47ea46f6bc7bf5ea69a93957c253fef975 (480)
2020.10.13 11:49:30 5: staubi: decrypted
{"id":67,"result":{"life":71679,"uid":6366...,"model":"mijia.vacuum.v2","token":"aae245a09de26...","ipflag":1,"fw_ver":"2.0.8","mcu_fw_ver":"6138","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":62876,"mac":"64:90:C1:A3:...","wifi_fw_ver":"cef6c09-dirty","ap":{"ssid":"nope","bssid":"98:9B:CB:21:...","rssi":-38,"primary":11},"netif":{"localIp":"192.168.178.103","mask":"255.255.255.0","gw":"192.168.178.1"}},"exe_time":70}
2020.10.13 11:49:30 5: staubi: parse id 67
$VAR1 = {
          'exe_time' => 70,
          'result' => {
                        'life' => 71679,
                        'wifi_fw_ver' => 'cef6c09-dirty',
                        'model' => 'mijia.vacuum.v2',
                        'mcu_fw_ver' => '6138',
                        'uid' => 6366...,
                        'mac' => '64:90:C1:A3:5F:6F',
                        'miio_ver' => '0.0.8',
                        'netif' => {
                                     'gw' => '192.168.178.1',
                                     'mask' => '255.255.255.0',
                                     'localIp' => '192.168.178.103'
                                   },
                        'mmfree' => 62876,
                        'hw_ver' => 'esp32',
                        'token' => 'aae245a09de26...',
                        'ap' => {
                                  'primary' => 11,
                                  'ssid' => 'nope',
                                  'bssid' => '98:9B:CB:21:...',
                                  'rssi' => -38
                                },
                        'fw_ver' => '2.0.8',
                        'ipflag' => 1
                      },
          'id' => 67
        };

2020.10.13 11:49:30 4: staubi: parse id 67 / device_info
2020.10.13 11:49:30 4: staubi: msg ref is HASH
2020.10.13 11:49:30 5: staubi < 21310070000000001400dd9c000118007252c4f2f82a21993ca68daf994db75644ebeaee5beff438fe5300a84694eb837f43bd7a71b98badd726a6eb3c7ff22d0af3e2c4103225e6d742809db83283e5b42e51f3436b829ee53012bd1ea05065e5a9ecbe1dcb14435909bedec904a20e (112)
2020.10.13 11:49:30 5: staubi: decrypted
{"id":68,"error":{"code":-9999,"message":"undefined command"},"exe_time":200}
2020.10.13 11:49:30 5: staubi: parse id 68
$VAR1 = {
          'exe_time' => 200,
          'id' => 68,
          'error' => {
                       'message' => 'undefinedcommand',
                       'code' => -9999
                     }
        };

2020.10.13 11:49:30 4: staubi: parse id 68 / wifi_stats
2020.10.13 11:49:30 4: staubi: msg ref is
2020.10.13 11:49:30 5: staubi < 21310070000000001400dd9c00011800597cf9a4ecb45c9221a17207486487a20b596bfb487347094bf643e6cb52a2e6865fbdbf2825734ccd9d2721d29150f2925da2bd011fd66770feadd2e1bfc044f1bb4fc025570025feaa08075a8332e8d07209c068671653eedebfc6077ca271 (112)
2020.10.13 11:49:30 5: staubi: decrypted
{"id":69,"error":{"code":-9999,"message":"undefined command"},"exe_time":370}
2020.10.13 11:49:30 5: staubi: parse id 69
$VAR1 = {
          'id' => 69,
          'error' => {
                       'message' => 'undefinedcommand',
                       'code' => -9999
                     },
          'exe_time' => 370
        };

2020.10.13 11:49:30 4: staubi: parse id 69 / get_serial_number
2020.10.13 11:49:30 4: staubi: msg ref is
2020.10.13 11:49:30 5: staubi < 21310070000000001400dd9c00011800d8ada65484966d05888438fbaaf3020ceb11273b075113681b6746248141ab6806d28197bc691227efd878f2794cbf69bf5bed1c3f8e2becc66005d860a43b81daeae545e5f04253c115e6f8cafc3617a2afeb0a2fb3a7e005a41cfc8f57f84c (112)
2020.10.13 11:49:30 5: staubi: decrypted
{"id":70,"error":{"code":-9999,"message":"undefined command"},"exe_time":560}
2020.10.13 11:49:30 5: staubi: parse id 70
$VAR1 = {
          'exe_time' => 560,
          'id' => 70,
          'error' => {
                       'code' => -9999,
                       'message' => 'undefinedcommand'
                     }
        };

2020.10.13 11:49:30 4: staubi: parse id 70 / get_timezone
2020.10.13 11:49:30 4: staubi: msg ref is
2020.10.13 11:49:32 4: staubi: write {"id":71,"method":"get_consumable","params":[""]} (49)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c00011802d2a68642d4ac1c55292151a4e727899266a3ffde69f0073aa60c125e47b20666105fe9923bca88973eaf3b60900b3e775ca1b8473ce149b92cbe361cb025af94465715cce4940cfd00ec2c729d01d11a
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c00011802d2a68642d4ac1c55292151a4e727899266a3ffde69f0073aa60c125e47b20666105fe9923bca88973eaf3b60900b3e775ca1b8473ce149b92cbe361cb025af94465715cce4940cfd00ec2c729d01d11a
2020.10.13 11:49:32 4: staubi: write {"id":72,"method":"get_clean_summary","params":[""]} (52)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c00011802c95dea6fe03b09feff54e24bd0132dbed99580e3a2adf7d4285e31054594c0727e731dcc04d50de6ad730162aefa7e040c71a5653fa183468102c24d8faab1a93ee17ec682c07ec00b169353253f5201
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c00011802c95dea6fe03b09feff54e24bd0132dbed99580e3a2adf7d4285e31054594c0727e731dcc04d50de6ad730162aefa7e040c71a5653fa183468102c24d8faab1a93ee17ec682c07ec00b169353253f5201
2020.10.13 11:49:32 4: staubi: write {"id":73,"method":"get_dnd_timer","params":[""]} (48)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c000118024806e998b85de2ccea56fabb61267a2542ef927946b44976cc88ca5cd45cadd1d8443e991e8227f3392a0a4eada385f682209fc7a8f2ddd9a8af295ea682480cd564fdbdd617e3a14f2198ba01b90726
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c000118024806e998b85de2ccea56fabb61267a2542ef927946b44976cc88ca5cd45cadd1d8443e991e8227f3392a0a4eada385f682209fc7a8f2ddd9a8af295ea682480cd564fdbdd617e3a14f2198ba01b90726
2020.10.13 11:49:32 4: staubi: write {"id":74,"method":"get_timer","params":[""]} (44)
2020.10.13 11:49:32 5: staubi: send 21310050000000001400dd9c0001180253d77c1dc8d95d1bd3437e2cbb43ab99886e93ff638e88da9d8d5dad50410c0890a8e54f1b176943c8d99bbe61efa63fcfa89e155be41f2f043aaa7ab4da00c9
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310050000000001400dd9c0001180253d77c1dc8d95d1bd3437e2cbb43ab99886e93ff638e88da9d8d5dad50410c0890a8e54f1b176943c8d99bbe61efa63fcfa89e155be41f2f043aaa7ab4da00c9
2020.10.13 11:49:32 4: staubi: write {"id":75,"method":"get_sound_volume","params":[""]} (51)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c00011802b075b5c4a7eca74eeac2988276b44900b46a81e627143a916d609ed478809752e291dc69a8e09c41e398b9da647288fe3332b8de116d474081795adb54abac997712a4970f54864f170197666d58db04
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c00011802b075b5c4a7eca74eeac2988276b44900b46a81e627143a916d609ed478809752e291dc69a8e09c41e398b9da647288fe3332b8de116d474081795adb54abac997712a4970f54864f170197666d58db04
2020.10.13 11:49:32 4: staubi: write {"id":76,"method":"get_carpet_mode","params":[""]} (50)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c0001180227288d60743dd08a220e161f62e634265363f522b8f02fb02aa83955f9f6171446fb2a29cac546b4005d6fb334a53d92ecf0eee5ea9b8c004e54e78e69943d2b1fc12197d6411d14e9bb10d01709bb38
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c0001180227288d60743dd08a220e161f62e634265363f522b8f02fb02aa83955f9f6171446fb2a29cac546b4005d6fb334a53d92ecf0eee5ea9b8c004e54e78e69943d2b1fc12197d6411d14e9bb10d01709bb38
2020.10.13 11:49:32 4: staubi: write {"id":77,"method":"get_fw_features","params":[""]} (50)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c000118022fcd590c101a14ae0e354cb5588f3cbcf1b0d980a2e153c026ba6951086c16bf37170bc44236fc282dcd1b79c84da6fbff247d7ff77853cc0d6b12d87c183bb3ffed3b13a41cb8de98523d8bae9a9661
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c000118022fcd590c101a14ae0e354cb5588f3cbcf1b0d980a2e153c026ba6951086c16bf37170bc44236fc282dcd1b79c84da6fbff247d7ff77853cc0d6b12d87c183bb3ffed3b13a41cb8de98523d8bae9a9661
2020.10.13 11:49:32 4: staubi: write {"id":78,"method":"app_get_locale","params":[""]} (49)
2020.10.13 11:49:32 5: staubi: send 21310060000000001400dd9c00011802779c94df2ffd675e30509ac11a23ad7c45e37519c56eac5ba81ddd34ab9a77d54913cff2cec39be0c126b493cf5bc7d2a9e46266202b845011eeb1208529990f3d0f7bca068e740c7a983c541f17cb6d
2020.10.13 11:49:32 5: staubi Send SUCCESS
2020.10.13 11:49:32 5: staubi > 21310060000000001400dd9c00011802779c94df2ffd675e30509ac11a23ad7c45e37519c56eac5ba81ddd34ab9a77d54913cff2cec39be0c126b493cf5bc7d2a9e46266202b845011eeb1208529990f3d0f7bca068e740c7a983c541f17cb6d
2020.10.13 11:49:33 5: staubi < 21310070000000001400dd9c00011802ecb7b06aa72d8ca419f81e20175711d55fec9abe215b40fe5f2b29f45488c216b5e426c5a2b7313378fd88807ffc75b2811486dd1b3088fc7c570cd667f9823ff75a0fca42e7c3b1bdcddce6baafa2350dea0057b3408105b4dd7554df2bf3ce (112)
2020.10.13 11:49:33 5: staubi: decrypted
{"id":71,"error":{"code":-9999,"message":"undefined command"},"exe_time":160}
2020.10.13 11:49:33 5: staubi: parse id 71
$VAR1 = {
          'error' => {
                       'code' => -9999,
                       'message' => 'undefinedcommand'
                     },
          'id' => 71,
          'exe_time' => 160
        };

2020.10.13 11:49:33 4: staubi: parse id 71 / get_consumable
2020.10.13 11:49:33 4: staubi: msg ref is
2020.10.13 11:49:33 5: staubi < 21310070000000001400dd9c0001180376880112546de803724b900ca9dde804022aa23a54abfdc427ba0321a67c8aea938fd14668010f0f2c6a052a5d6c581c09e3203ae93bc3a363194218620680fe157c4cfba8875ef8f390fb021d9a9836d8b90bd710fa3bac97bd2c3a8a9410be (112)
2020.10.13 11:49:33 5: staubi: decrypted
{"id":72,"error":{"code":-9999,"message":"undefined command"},"exe_time":270}
2020.10.13 11:49:33 5: staubi: parse id 72
$VAR1 = {
          'error' => {
                       'message' => 'undefinedcommand',
                       'code' => -9999
                     },
          'id' => 72,
          'exe_time' => 270
        };

2020.10.13 11:49:33 4: staubi: parse id 72 / get_clean_summary
2020.10.13 11:49:33 4: staubi: msg ref is
2020.10.13 11:49:33 5: staubi < 21310070000000001400dd9c0001180379ca3e33c514431a3552c337e0ad191e831e8292a2802cd40842b825eb38f99e8f00e49904cffe889ff25856a2e99df166342431447ef9f2b8037e70ca94af5eca3a52aad660ca01a6192aff56ccb3a41ecab6b1f6af1b2bd3c420e721120cc3 (112)
2020.10.13 11:49:33 5: staubi: decrypted
{"id":73,"error":{"code":-9999,"message":"undefined command"},"exe_time":380}
2020.10.13 11:49:33 5: staubi: parse id 73
$VAR1 = {
          'id' => 73,
          'error' => {
                       'code' => -9999,
                       'message' => 'undefinedcommand'
                     },
          'exe_time' => 380
        };

2020.10.13 11:49:33 4: staubi: parse id 73 / get_dnd_timer
2020.10.13 11:49:33 4: staubi: msg ref is
2020.10.13 11:49:33 5: staubi < 21310070000000001400dd9c0001180365a10de2d71e239e15c22805e1654b4cbb1d6a2af8fc1bf0e47a59fcfc203ebef552a81246c6fb8289b56195ba34e6eea2d4cf4048d06f27f329db748ce844295097d3a79e005d55ba1eec68ed9060f7c802b0258e7bae392b8ea85d95f57a76 (112)
2020.10.13 11:49:33 5: staubi: decrypted
{"id":74,"error":{"code":-9999,"message":"undefined command"},"exe_time":480}
2020.10.13 11:49:33 5: staubi: parse id 74
$VAR1 = {
          'id' => 74,
          'error' => {
                       'message' => 'undefinedcommand',
                       'code' => -9999
                     },
          'exe_time' => 480
        };

2020.10.13 11:49:33 4: staubi: parse id 74 / get_timer
2020.10.13 11:49:33 4: staubi: msg ref is
2020.10.13 11:49:33 5: staubi < 21310070000000001400dd9c00011803cbcfb4ee3a64cca6ad7a0c92cf101084f9ba637bd627c74c04b6d5d42df395540d5f98a50f9f602f54376af5bcbc9ae232172fc7383ba28c4c5cafb4d7c85778d6a580376dc25ec469387a82ea4f155d861ec9e0595ba55e562b369d902949ac (112)
2020.10.13 11:49:33 5: staubi: decrypted
{"id":75,"error":{"code":-9999,"message":"undefined command"},"exe_time":680}
2020.10.13 11:49:33 5: staubi: parse id 75
$VAR1 = {
          'exe_time' => 680,
          'error' => {
                       'code' => -9999,
                       'message' => 'undefinedcommand'
                     },
          'id' => 75
        };

2020.10.13 11:49:33 4: staubi: parse id 75 / get_sound_volume
2020.10.13 11:49:33 4: staubi: msg ref is
2020.10.13 11:49:33 5: staubi < 21310070000000001400dd9c0001180329f835d80071e618fc930d382378b3436849d43f4ecf8ed0ba4e079821f820697d3fa59cde2c286ab5fabb8c7906849fa463398ab8b4f4b28b9fa5f4288e57767525d6d63782f5ab808d9c8152377ab62f84951ee774e5399aa4e3553700523a (112)
2020.10.13 11:49:33 5: staubi: decrypted
{"id":76,"error":{"code":-9999,"message":"undefined command"},"exe_time":850}
2020.10.13 11:49:33 5: staubi: parse id 76
$VAR1 = {
          'exe_time' => 850,
          'error' => {
                       'code' => -9999,
                       'message' => 'undefinedcommand'
                     },
          'id' => 76
        };

2020.10.13 11:49:33 4: staubi: parse id 76 / get_carpet_mode
2020.10.13 11:49:33 4: staubi: msg ref is
2020.10.13 11:49:35 4: staubi: write {"id":79,"method":"get_prop","params":["get_status"]} (53)
2020.10.13 11:49:35 5: staubi: send 21310060000000001400dd9c000118050fe5d29dfaf675725c36c3f947e6e8e627987d4193814bc7984e21475f266bc7dca3cd396a93aeefe6fc3c3a8f389d78d5ea5019ead358bf91e07aba042e1425c5651c5ef3a3fe2de077c0e1647f882c
2020.10.13 11:49:35 5: staubi Send SUCCESS
2020.10.13 11:49:35 5: staubi > 21310060000000001400dd9c000118050fe5d29dfaf675725c36c3f947e6e8e627987d4193814bc7984e21475f266bc7dca3cd396a93aeefe6fc3c3a8f389d78d5ea5019ead358bf91e07aba042e1425c5651c5ef3a3fe2de077c0e1647f882c
2020.10.13 11:49:36 5: staubi < 21310070000000001400dd9c000118055a90163ac5e9458af4d82f0c0bd3e77f81c125b030b71155d35683273fa4307025b2834892bac65efc295b3ea137736ed19a47be3b2df4054f428829ecbd67be8d0e9cad351221b201413ce755c237e20a7f49162c3012868a28b3936c51c6b2 (112)
2020.10.13 11:49:36 5: staubi: decrypted
{"id":79,"error":{"code":-9999,"message":"undefined command"},"exe_time":200}
2020.10.13 11:49:36 5: staubi: parse id 79
$VAR1 = {
          'exe_time' => 200,
          'id' => 79,
          'error' => {
                       'message' => 'undefinedcommand',
                       'code' => -9999
                     }
        };

2020.10.13 11:49:36 4: staubi: parse id 79 / get_status
2020.10.13 11:49:36 4: staubi: msg ref is


Edit:
Nachdem ich noch ein bisschen weiter recherchiert habe und auch mit python-miio experimentiert habe, muss man im Moment wohl festhalten, dass die Nicht-Roborock-Devices (noch) nicht unterstützt werden. Falls mir aber jemand verrät, was ich testen/mitschneiden soll, mache ich das gerne.
FHEM, Homebridge, Philips Hue, Innr, Tradfri, Osram, Shelly 1 2 2.5,  LD382A, MQTT, Xiaomi Mijia G1

columbine

Hallo Zusammen,

bin auch stolzer Besitzer eine S5 Max seit einigen Tagen. Konnte ihn auch erfolgreich in fhem einbinden und habe auch schon so einiges automatisiert. Jetzt frage ich mich aber, wie man den Staubbehälterfüllstand abfragen kann, damit er automatisch zu meinem Mülleimer fährt. Könnt ihr mir verraten welche Reading das ist? Danke Euch.

dominik

Zitat von: columbine am 14 Oktober 2020, 16:14:42
Hallo Zusammen,

bin auch stolzer Besitzer eine S5 Max seit einigen Tagen. Konnte ihn auch erfolgreich in fhem einbinden und habe auch schon so einiges automatisiert. Jetzt frage ich mich aber, wie man den Staubbehälterfüllstand abfragen kann, damit er automatisch zu meinem Mülleimer fährt. Könnt ihr mir verraten welche Reading das ist? Danke Euch.

Das wuensche ich mir auch :) Leider gibt es kein Reading, nur ein Event "bin_full". Man muss also auf das Event reagieren. Ich habe aber noch keine Loesung gefunden, dass er erst NACH der Reinigung zum Muelleimer faehrt. Wenn man auf das Event reagiert, faehrt er sonst gleich zum Muelleimer.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

MadMax-FHEM

Ein Reading beim Sauger setzen, wenn das bin_full kommt.
Bei Reinigungsende prüden, ob Reading gesetzt.
Zum Mülleimer fahren (lassen) und Reading zurücksetzen...

Hmmm, muss direkt mal sehen, ob es den Event auch beim V1 gibt...

Aktuell zähle ich die Reinigungen und schicke dann nach X Reinigungen eine Telegram Nachricht: Behälter leeren...
(X ist ein eigenes Attribut und wird/wurde "getuned" und passt ganz gut ;)  )

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

columbine

Zitat von: MadMax-FHEM am 14 Oktober 2020, 18:42:18
Ein Reading beim Sauger setzen, wenn das bin_full kommt.
Bei Reinigungsende prüden, ob Reading gesetzt.
Zum Mülleimer fahren (lassen) und Reading zurücksetzen...

Hmmm, muss direkt mal sehen, ob es den Event auch beim V1 gibt...

Aktuell zähle ich die Reinigungen und schicke dann nach X Reinigungen eine Telegram Nachricht: Behälter leeren...
(X ist ein eigenes Attribut und wird/wurde "getuned" und passt ganz gut ;)  )

Gruß, Joachim

Danke euch beiden erstmal.

Joachim mega Idee, kannst du evtl. uns den Code dafür zur Verfügung stellen? Oder mal auf die schnelle Deine Idee in Code umwandeln? Ich weiß ist viel verlangt aber ich wäre Dir sehr dankbar. Danke dir!

MadMax-FHEM

Den Code habe ich ja nicht... ;)

Aber im Prinzip doch recht einfach...

Postet doch mal das notify auf bin_full und auf "cleaning finished", dann kann ich "ergänzen"...

Aber wie geschrieben, kein Hexenwerk...

Im notify auf bin_full: setreading $NAME myBinFull yes

Und im notify auf "cleaning finished": if(ReadingsVal($NAME, "myBinFull", "n.a.") eq "yes"){fhem("set $NAME gotoMuellEimer; setreading $NAME myBinFull no")}

Evtl. müssen vor die setreading sleeps und je nachdem wo/wie eingegeben wird auch Strichpunkte verdoppelt werden (meine Vorschläge sind für eine Sub in myUtils)...

Vermutlich geht auch statt 2 notify (wobei man die beiden notify auch auf eins reduzieren kann/könnte) ein DOIF "basteln"...
Nutze aber kein DOIF, daher bin ich da raus...

EDIT: oder meintest du den Code mit eigenem Attribut? Da kommt aber einiges dazu, weil ich in der Routine vor/nach dem Reinigen noch einiges mehr prüfe. V.a. beim V2 mit Wischfunktion... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

dominik

Sehr coole Idee Joachim, irgendwie hatte ich da einen Knoten in meinen Gedanken :D

Ich habe nun folgendes versucht mit 2 DOIFs (walle = XiaomiVacuum, d_walle.emptydustbin = dummy fuer manuelles Ausleeren)
define DI_binfull DOIF ([walle:event] eq "bin_full)
(setreading walle bin_full 1)

define DI_emptybin DOIF (([walle:bin_full] eq "1" and [walle:in_cleaning] eq "no") or [d_walle.emptydustbin:"on"])
(set walle cleaning_mode quiet)
((set walle goto 30000,26400))
(setreading walle bin_full 0)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

columbine

Zitat von: MadMax-FHEM am 14 Oktober 2020, 20:11:58
Den Code habe ich ja nicht... ;)

Aber im Prinzip doch recht einfach...

Postet doch mal das notify auf bin_full und auf "cleaning finished", dann kann ich "ergänzen"...

Aber wie geschrieben, kein Hexenwerk...

Im notify auf bin_full: setreading $NAME myBinFull yes

Und im notify auf "cleaning finished": if(ReadingsVal($NAME, "myBinFull", "n.a.") eq "yes"){fhem("set $NAME gotoMuellEimer; setreading $NAME myBinFull no")}

Evtl. müssen vor die setreading sleeps und je nachdem wo/wie eingegeben wird auch Strichpunkte verdoppelt werden (meine Vorschläge sind für eine Sub in myUtils)...

Vermutlich geht auch statt 2 notify (wobei man die beiden notify auch auf eins reduzieren kann/könnte) ein DOIF "basteln"...
Nutze aber kein DOIF, daher bin ich da raus...

EDIT: oder meintest du den Code mit eigenem Attribut? Da kommt aber einiges dazu, weil ich in der Routine vor/nach dem Reinigen noch einiges mehr prüfe. V.a. beim V2 mit Wischfunktion... ;)

Gruß, Joachim

Danke Joachim, ich habe noch keine notifys werde aber im laufe des Tages welche erstellen. Eine Frage habe ich aber noch. Gibt es eine Meldung sobald man den Behälter entnimmt und wieder einsetzt? Stelle mir das so vor, dass sobald ich den Behälter entleert habe fährt der Sauger dann wieder zur Dockingstation.

Danke euch ihr habt mir sehr geholfen bisher.

MadMax-FHEM

Habe ja noch nicht mal was vom bin_full gewusst... ;)

Habe noch keinen bin_removed/bin_installed gesehen...

Da ich mir eh eine Meldung per Telegram schicke (ich muss ja eh aktiv werden und leeren), schicke ich gleich ein "Kommando" mit.
Da klicke ich dann drauf (nachdem ich geleert habe) und setze so zurück (und könnte den Sauger auch gleich zurück schicken / allerdings hole ich den Behälter ab)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

RappaSan

Wenn man den Sauger  (unserer heißt "SauBaer"  :D )auf der Stelle treten läßt, z.B. so:
fhem "set SauBaer volume 0;; define tmp_time1 at +00:00:03 set SauBaer remotecontrol start;; set SauBaer remotecontrol stop";;\

erfolgt nach Entnahme des Behälters ein "Error". Den Zustand könnte man weiter auswerten, z.B. in einem notify.

columbine

Ja du hast recht, eigentlich ist es egal ob er erkennt das der Behälter geleert wurde. Man drückt einfach auf das Haus nachdem man den Behälter entleert hat  und er fährt von alleine zur Dockingstation.

columbine

Zitat von: RappaSan am 15 Oktober 2020, 12:08:40
Wenn man den Sauger  (unserer heißt "SauBaer"  :D )auf der Stelle treten läßt, z.B. so:
fhem "set SauBaer volume 0;; define tmp_time1 at +00:00:03 set SauBaer remotecontrol start;; set SauBaer remotecontrol stop";;\

erfolgt nach Entnahme des Behälters ein "Error". Den Zustand könnte man weiter auswerten, z.B. in einem notify.

Welcher error kommt den dann?

RappaSan

Einfach "Error"...
Versuch macht kluch.
($EVENT eq "Error")

RappaSan

Ich hab folgendes notify, das auf die events reagiert:


define Notify.SauBaer notify SauBaer
{
if ($EVENT eq "disconnected")
{
fhem "set SauBaer reconnect";
}
if (($EVENT eq "Cleaning") || ($EVENT eq "Zoned Clean"))
{
fhem "set WasUsed Ja";
}
if (((Value "WasUsed") eq "Entladen") && (($EVENT eq "Charging") || ($EVENT eq "Docked")))
{
fhem "set WasUsed WaitForEntladen; set SauBaer goto Entladen; set Sonos_Wohnzimmer Speak 40 de SauBär war fleissig, bitte leeren.";

}
if (((Value "WasUsed") eq "WaitForEntladen") && ($EVENT eq "Error"))
{
fhem "set SauBaer remotecontrol stop; set WasUsed Geleert; set Sonos_Wohnzimmer Speak 40 de SauBär wechselt die Windel.";

}
if (((Value "WasUsed") eq "Geleert") && (($EVENT eq "Paused") || ($EVENT eq "Waiting")))
{
#set SauBaer stop;
fhem "set SauBaer volume 50; set WasUsed Nein; set Sonos_Wohnzimmer Speak 40 de SauBär ist jetzt müde und macht Heia.; set SauBaer charge";
}
if ((Value "WasUsed") eq "WaitForEntladen")
{
#Wait-loop, provoziert Error bei Entnahme von Staubbehälter
fhem "set SauBaer volume 0; define tmp_time1 at +00:00:03 set SauBaer remotecontrol start; set SauBaer remotecontrol stop";
}
}


Vielleicht ist das ja etwas verständlicher. :)

columbine

Zitat von: RappaSan am 15 Oktober 2020, 13:40:50
Ich hab folgendes notify, das auf die events reagiert:


define Notify.SauBaer notify SauBaer
{
if ($EVENT eq "disconnected")
{
fhem "set SauBaer reconnect";
}
if (($EVENT eq "Cleaning") || ($EVENT eq "Zoned Clean"))
{
fhem "set WasUsed Ja";
}
if (((Value "WasUsed") eq "Entladen") && (($EVENT eq "Charging") || ($EVENT eq "Docked")))
{
fhem "set WasUsed WaitForEntladen; set SauBaer goto Entladen; set Sonos_Wohnzimmer Speak 40 de SauBär war fleissig, bitte leeren.";

}
if (((Value "WasUsed") eq "WaitForEntladen") && ($EVENT eq "Error"))
{
fhem "set SauBaer remotecontrol stop; set WasUsed Geleert; set Sonos_Wohnzimmer Speak 40 de SauBär wechselt die Windel.";

}
if (((Value "WasUsed") eq "Geleert") && (($EVENT eq "Paused") || ($EVENT eq "Waiting")))
{
#set SauBaer stop;
fhem "set SauBaer volume 50; set WasUsed Nein; set Sonos_Wohnzimmer Speak 40 de SauBär ist jetzt müde und macht Heia.; set SauBaer charge";
}
if ((Value "WasUsed") eq "WaitForEntladen")
{
#Wait-loop, provoziert Error bei Entnahme von Staubbehälter
fhem "set SauBaer volume 0; define tmp_time1 at +00:00:03 set SauBaer remotecontrol start; set SauBaer remotecontrol stop";
}
}


Vielleicht ist das ja etwas verständlicher. :)

Danke dir, würde das gerne nutzten, aber was ist WasUsed?