Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin Xiaomi Saugroboter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Featurewunsch] Plugin Xiaomi Saugroboter

    Ich würde gerne mal wissen, wer ausser mir noch einen Xiaomi Saugroboter besitzt und es sich lohnen würde ein Plugin zur Steuerung auf Basis dieser Bibliothek zu schreiben.
    https://github.com/rytilahti/python-miio

    #2
    Habe 2 von den kleinen Kerlen, wäre begeistert über ein plugin

    Kommentar


      #3
      Auslesen über die miio bibliothek funktioniert schonmal

      Kommentar


        #4
        Hallo,

        ich habe auch einen Mi Vaccum :-)

        Grüße
        Tommi

        Kommentar


          #5
          falls jemand möchte kann er gerne mal dieses Plugin testen, ich würde sagen es ist ne BETA version :/ funktionier bei mir aber eigentlich ganz gut.

          https://github.com/Bonze255/smarthom...ter/xiaomi_vac

          Kommentar


            #6
            Danke für die Arbeit, ich werds am wochenende ausprobieren

            Kommentar


              #7
              Hallo,

              vielen Dank für das Plugin. Ich habe es gerade in Betrieb genommen und es Funktioniert. Einen ersten Pull-Request habe ich auch schon geschickt ;-)

              Eine Sache stört aber noch. Der Bot sagt jetzt regelmäßig "hey, hier bin ich".

              Im Log sehe ich dabei:
              Code:
              2019-10-05  12:22:34 DEBUG    Xiaomi_Robvac read cycle Unable to decrypt, returning raw bytes: b''
              2019-10-05  12:22:34 DEBUG    Xiaomi_Robvac read cycle Got a response: Container:
              2019-10-05  12:22:34 DEBUG    Xiaomi_Robvac read cycle Discovered 0f8b2872 with ts: 2019-10-05 10:22:34, token: b'ffffffffffffffffffffffffffffffff'
              2019-10-05  12:22:34 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 1, 'params': [''], 'method': 'find_me'}
              2019-10-05  12:22:35 DEBUG    Scheduler    Xiaomi_Robvac read cycle next time: 2019-10-05 12:23:35+02:00
              2019-10-05  12:22:39 DEBUG    Xiaomi_Robvac read cycle Retrying with incremented id, retries left: 3
              2019-10-05  12:22:39 DEBUG    Xiaomi_Robvac read cycle Unable to decrypt, returning raw bytes: b''
              2019-10-05  12:22:39 DEBUG    Xiaomi_Robvac read cycle Got a response: Container:
              2019-10-05  12:22:39 DEBUG    Xiaomi_Robvac read cycle Discovered 0f8b2872 with ts: 2019-10-05 10:22:39, token: b'ffffffffffffffffffffffffffffffff'
              2019-10-05  12:22:39 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 102, 'params': [''], 'method': 'find_me'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle Retrying with incremented id, retries left: 2
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle Unable to decrypt, returning raw bytes: b''
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle Got a response: Container:
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle Discovered 0f8b2872 with ts: 2019-10-05 10:22:44, token: b'ffffffffffffffffffffffffffffffff'
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 203, 'params': [''], 'method': 'find_me'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 203) << {'id': 203, 'result': ['ok']}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 204, 'params': [], 'method': 'get_status'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 204) << {'id': 204, 'result': [{'clean_area': 9895000, 'in_fresh_state': 1, 'lab_status': 1, 'battery': 100, 'error_code': 0, 'map_present': 1, 'in_returning': 0, 'msg_seq': 205, 'clean_time': 590, 'state': 8, 'fan_power': 38, 'msg_ver': 2, 'dnd_enabled': 0, 'in_cleaning': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 205, 'params': [], 'method': 'get_serial_number'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 205) << {'id': 205, 'result': [{'serial_number': 'xxxx'}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 206, 'params': [], 'method': 'get_sound_volume'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 206) << {'id': 206, 'result': [90]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 207, 'params': [], 'method': 'get_dnd_timer'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 207) << {'id': 207, 'result': [{'start_minute': 0, 'end_hour': 8, 'start_hour': 22, 'enabled': 1, 'end_minute': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 208, 'params': [], 'method': 'get_clean_summary'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 208) << {'id': 208, 'result': [24878, 409677500, 15, [1570264373, 1570206196, 1570200442, 1570197753, 1570172982, 1570169401, 1570132100, 1570115607, 1570107001, 1570094650, 1570089775, 1570019181, 1570000193, 1569995013, 1569959740]]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 209, 'params': [1570264373], 'method': 'get_clean_record'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 209) << {'id': 209, 'result': [[1570264373, 1570264963, 590, 9895000, 0, 1]]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 210, 'params': [], 'method': 'get_clean_summary'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 210) << {'id': 210, 'result': [24878, 409677500, 15, [1570264373, 1570206196, 1570200442, 1570197753, 1570172982, 1570169401, 1570132100, 1570115607, 1570107001, 1570094650, 1570089775, 1570019181, 1570000193, 1569995013, 1569959740]]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 211, 'params': [], 'method': 'get_status'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 211) << {'id': 211, 'result': [{'clean_area': 9895000, 'in_fresh_state': 1, 'lab_status': 1, 'battery': 100, 'error_code': 0, 'map_present': 1, 'in_returning': 0, 'msg_seq': 206, 'clean_time': 590, 'state': 8, 'fan_power': 38, 'msg_ver': 2, 'dnd_enabled': 0, 'in_cleaning': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 212, 'params': [], 'method': 'get_status'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 212) << {'id': 212, 'result': [{'clean_area': 9895000, 'in_fresh_state': 1, 'lab_status': 1, 'battery': 100, 'error_code': 0, 'map_present': 1, 'in_returning': 0, 'msg_seq': 207, 'clean_time': 590, 'state': 8, 'fan_power': 38, 'msg_ver': 2, 'dnd_enabled': 0, 'in_cleaning': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 213, 'params': [], 'method': 'get_status'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 213) << {'id': 213, 'result': [{'clean_area': 9895000, 'in_fresh_state': 1, 'lab_status': 1, 'battery': 100, 'error_code': 0, 'map_present': 1, 'in_returning': 0, 'msg_seq': 208, 'clean_time': 590, 'state': 8, 'fan_power': 38, 'msg_ver': 2, 'dnd_enabled': 0, 'in_cleaning': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 214, 'params': [], 'method': 'get_status'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 214) << {'id': 214, 'result': [{'clean_area': 9895000, 'in_fresh_state': 1, 'lab_status': 1, 'battery': 100, 'error_code': 0, 'map_present': 1, 'in_returning': 0, 'msg_seq': 209, 'clean_time': 590, 'state': 8, 'fan_power': 38, 'msg_ver': 2, 'dnd_enabled': 0, 'in_cleaning': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 215, 'params': [], 'method': 'get_status'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 215) << {'id': 215, 'result': [{'clean_area': 9895000, 'in_fresh_state': 1, 'lab_status': 1, 'battery': 100, 'error_code': 0, 'map_present': 1, 'in_returning': 0, 'msg_seq': 210, 'clean_time': 590, 'state': 8, 'fan_power': 38, 'msg_ver': 2, 'dnd_enabled': 0, 'in_cleaning': 0}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 216, 'params': [], 'method': 'get_consumable'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 216) << {'id': 216, 'result': [{'main_brush_work_time': 25332, 'side_brush_work_time': 25332, 'filter_work_time': 25332, 'sensor_dirty_time': 24878}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 217, 'params': [], 'method': 'get_consumable'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 217) << {'id': 217, 'result': [{'main_brush_work_time': 25332, 'side_brush_work_time': 25332, 'filter_work_time': 25332, 'sensor_dirty_time': 24878}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 218, 'params': [], 'method': 'get_consumable'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 218) << {'id': 218, 'result': [{'main_brush_work_time': 25332, 'side_brush_work_time': 25332, 'filter_work_time': 25332, 'sensor_dirty_time': 24878}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 219, 'params': [], 'method': 'get_consumable'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 219) << {'id': 219, 'result': [{'main_brush_work_time': 25332, 'side_brush_work_time': 25332, 'filter_work_time': 25332, 'sensor_dirty_time': 24878}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 220, 'params': [], 'method': 'get_consumable'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 220) << {'id': 220, 'result': [{'main_brush_work_time': 25332, 'side_brush_work_time': 25332, 'filter_work_time': 25332, 'sensor_dirty_time': 24878}]}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 >>: {'id': 221, 'params': [], 'method': 'get_consumable'}
              2019-10-05  12:22:44 DEBUG    Xiaomi_Robvac read cycle 192.168.177.130:54321 (ts: 2019-10-05 10:22:44, id: 221) << {'id': 221, 'result': [{'main_brush_work_time': 25332, 'side_brush_work_time': 25332, 'filter_work_time': 25332, 'sensor_dirty_time': 24878}]}
              2019-10-05  12:22:44 ERROR    Xiaomi_Robvac read cycle Xiaomi_Robvac: Error 'buerste_seite'
              Da sehe ich einen Error und ganz oben ein "Unable to decrypt".
              Hast du eine Idee, wie man dem Bot das abgewöhnt?


              P.S:
              Ich fand es nicht einfach die plugin.yaml zu ermitteln:
              Code:
              xiaomi_vac:
                  class_name: Robvac
                  class_path: plugins.xiaomi_vac
                  ip: '192.168.177.130'
                  token: 'xxx'
              Gruß,
              Hendrik

              Kommentar


                #8
                Hallo Hendrik, das war eigentlich nur als test gedacht, kommentier einfach mal die Zeile 79+81 "
                robots = self.vakuum.find()
                self.logger.debug("Xiaomi_Robvac: Found some Robots!{}".format(robots))" auszukommentieren, dann meldet er sich nicht mehr. Ich hatte die letzten Monate etwas stress, versuche aber das Plugin noch etwas zu modifizieren. Bräuchte auch noch ein schönes widget dazu :/

                Kommentar


                  #9
                  Hallo,

                  danke. Ich habe gerade einen PR mit einem weiteren Bugfix gestellt.

                  Ein Problem habe ich jetzt aber.
                  Code:
                      def update_item(self, item, caller=None, source=None, dest=None):
                          if caller != 'Robvac':
                              #if 'robvac' in item.conf:
                              #    message = item.conf['robvac']
                              if self.has_iattr(item.conf, 'robvac'):
                                  message = item.get_iattr_value(item.conf, 'robvac')
                                  self.logger.debug("Xiaomi_Robvac: Tu dies und das !{0} , weil item {1} geändert wurde".format(message, item))
                  Gibt bei mir:
                  Code:
                  2019-10-12 13:00:19 ERROR    item         lib.item         Item eg.wohnzimmer.robo.zustand: problem running <bound method Robvac.update_item of <plugins.xiaomi_vac.Robvac object at 0x7f2c061d3e10>>: 'Item' object has no attribute 'get_iattr_value' -- item.py:__update:2226
                  > Traceback (most recent call last):
                  >   File "/usr/local/smarthome/lib/item.py", line 2224, in __update
                  >     method(self, caller, source, dest)
                  >   File "/usr/local/smarthome/plugins/xiaomi_vac/__init__.py", line 168, in update_item
                  >     message = item.get_iattr_value(item.conf, 'robvac')
                  Hast du eine Idee, warum item kein get_iattr_value kennt?

                  Gruß,
                  Hendrik

                  Kommentar


                    #10
                    Code:
                     
                     def update_item(self, item, caller=None, source=None, dest=None):         if caller != 'Robvac':             #if 'robvac' in item.conf:             #    message = item.conf['robvac']             if self.has_iattr(item.conf, 'robvac'):                 message = self.get_iattr_value(item.conf, 'robvac')                 self.logger.debug("Xiaomi_Robvac: Tu dies und das !{0} , weil item {1} geändert wurde".format(message, item))
                    Vielleicht statt item ein self?

                    Kommentar


                      #11
                      Ja, das funktioniert. Danke Bernd!

                      Kommentar


                        #12
                        Hi!

                        Kann man davon ausgehen, dass das mit allen Modellen funktioniert, also zB auch mit dem Roborock S6?

                        Hat zufällig auch jemand Erfahrung bezüglich der WLAN Einbindung über WPA2 Enterprise mit Zertifikat oder Gäste-WLAN, das in einer anderen IP Range läuft als der SmarthomeNG Server?

                        Kommentar


                          #14
                          ich nutze leider auch nur die erste Generation (reiner Sauger), prinzipiell sollten alle Geräte unterstützt werden, welche auch durch die miio bibliothek unterstützt werden
                          btw, es gibt auch noch jede menge anderer Paramnter die man auslesen/setzen kannsihe auch https://python-miio.readthedocs.io/en/latest/miio.html unter vacuum

                          Kommentar


                            #15
                            Hallo,

                            vor allem das hier wäre sicher interessant:

                            Code:
                            zoned_clean(zones)[source]
                            Clean zones. : param
                             List zones: List of zones to clean: [[x1,y1,x2,y2, iterations],[x1,y1,x2,y2, iterations]]

                            Damit kann man den Bot dann gezielt irgendwo reinigen lassen.


                            Retrieving the Zone Coordinates

                            USING FLOLEVAC (ANDROID)

                            1. Download FloleVac
                            2. Login with your Xiaomi credentials
                            3. Open Map (make sure you’re on the same network as your vacuum cleaner)
                            4. Select “Zone cleanup” and draw a box around the zone you’d like to clean
                            5. Long press “Cleanup” and the zone coordinates will be copied to your clipboard
                            Gruß,
                            Hendrik
                            Zuletzt geändert von henfri; 13.10.2019, 12:31.

                            Kommentar

                            Lädt...
                            X