Odkurzacz xiaomi

Odkopię temat i zapytam czy poradziłeś sobie z tym na AIS? co bym nie zrobił to Platform error vacuum.miio2 - Integration ‘miio2’ not found. lub “miio” lub “mioo2”

Dołożyłem też integrację Viomise i tak o dziwo jest wykrywana ale encja i tak niedostępna

Trudno wywnioskować o jaką integrację chodzi ale jezeli się nie mylę (?) to spróbuj zamiast oryginalnego GitHub - nqkdev/home-assistant-vacuum-styj02ym zainstalować tego forka:
GitHub - JoaquinBeceiro/home-assistant-vacuum-styj02ym. Napewno bez problemu ładuje się do HA w wersji core-2021.8.1, odkurzacza nie mam więc nie sprawdzę dalej.

Zrób tak:

Witam.
Chciałbym odświeżyć temat odkurzacza xiaomi. Posiadam odkurzacz viomi.vacuum.v19 i chciałbym go dopisać do bramki. Zrobiłęm wszystko co było opisane wyżej. Z jedną zmianą a mianowicie token wyciągnąłem programem token_extractor. Po dodaniu wpisu do pliku configuracyjnego sprawdzam konfigurację i nie mam błędów, Restart i nic… Mój wpis do konfigu wygląda tak:

odkurzacz

vacuum:

  • platform: xiaomi_miio
    host: 192.168.2.129
    token: 4e766a5361744d6971xxxxxxxxxxxxxxxxx
    name: odkurzacz
    adres ip napewno jest dobry, nie wiem co z tokenem ale sprawdzam kilka razy programem i podaje taki sam i adres ip się zgadza.
    Co jest nie tak…

Od kilku wersji wstecz nie działała mi integracja Xiaomi Mii. Każda próba jej zainstalowania kończyła się komunikatem o niepowodzeniu uruchomienia konfiguracji.
Dziś udało się zainstalować, sam proces konfiguracji wygląda inaczej niż opisywany wcześniej w tym wątku. Podajemy login, hasło do profilu Mii oraz serwer na którym działamy i to wszystko. Odkurzacz (tylko jego miałem z urządzeń xiaomi) dodał się bez problemu.
Wśród wielu usług dostępna jest “Xiaomi Miio: Vacuum go to” i trzeba podać koordynaty x/y na które urządzenie ma się udać. Jak sprawdzić jakie są koordynaty konkretnego miejsca? Chodzi mi stworzenie automatyzacji która spowoduje wysłanie odkurzacza w określone miejsce.

Edit:
Znalazłem w dokumentacji integracji, że pozycja stacji bazowej to x=25500 y=25500.
Dalej poszło już z górki :slight_smile: Metodą doświadczalną ustaliłem koordynaty miejsca, które mnie interesuje. Teraz odkurzacz śmiało mknie do drzwi kiedy mam mu wyczyścić zasobnik :slight_smile:

Dziękuję @kssawery za odświeżenie tematu.
Jeszcze przed tygodniem próbowałem łączyć się z odkurzaczem poprzez:
platform: xiaomi_miio
host: 192.168.0.100
token: 8061a981e920deb80xxxxxxxxxxxxx
name: odkurzacz

I zwracało tylko błędy (token pobrany przez starszą wersję aplikacji Xiaomi Home).

Przy próbie zalogowania się przez integracje Xiaomi Miio poszło bez problemów:
Bez tytułu2

Dostępne usługi są opisane na stronie:
https://www.home-assistant.io/integrations/xiaomi_miio#xiaomi-mi-robot-vacuum

Mnie interesuje możliwość załączenia posprzątania tylko korytarza po wyjściu z domu.
Mam problem ze zdefiniowaniem nazw pokoi zgodnie z utworzoną mapą w aplikacji Xiaomi Home. Znalazłem możliwość pobrania nazw poprzez wywołanie usługi:

miiocli vacuum --ip <ip of the vacuum> --token <your vacuum token> get_room_mapping

Szczegóły opisane tutaj:
https://www.home-assistant.io/integrations/xiaomi_miio#retrieving-room-numbers

Chciałbym wywołać usługę:

service: xiaomi_miio.vacuum_clean_segment
target:
  device_id: 8061a981e920deb80xxxxxxxxxxxxx
data:
  segments:
    - 22

Czy komuś to zadziałało (obecnie losowo próbuje namierzyć numer danego pokoju)?

mi nie działa miiocli na viomi2

ERROR:miio.miioprotocol:Got error when receiving: timed out
Error: No response from the device

mirobo dicover - mówi że jest nie wspierany:

WARNING:miio.discovery:Found unsupported device viomi-vacuum-v6_miio428222610._miio._udp.local.

Ha, działa :slight_smile: Tak jak napisali w dokumentacji, nr od 16 wzwyż są przypisane do stref zdefiniowanych przez usera. U mnie akurat jest 6 takich stref ale ich kolejność jest według klucza którego nie potrafię odkryć. Metodą prób dowiedziałem się że pomieszczenie oznaczone przeze mnie jako 1 ma nr 19, 2 to 21, 3 - 20, 4 - 17 itd. Może ma to związek z koordynatami o których pisałem w poprzednim poście?
Niemniej działa :slight_smile:
Może pomoże ktoś w stworzeniu automatyzacji, która spowoduje że wykona się się tylko w dniu w którym odkurzacz sprzątał?

Jeżeli robisz w NodeRed to mogę Ci dać gotowca żeby jechał rano pod śmietnik jak w dniu poprzednim sprzątał.

1 polubienie

Cześć, jak już się pochwaliłeś to daj. :grinning: może wkońcu wezmę się za integrację swojego.

Zasada jest prosta, jak jest cleaning przez 5 min to zapisujemy sobie w global że odkurzacz pracował,
rano jak mam komunikat poranny to jeżeli odkurzacz ma status że pracował to jedzie do kosza, jak opróżnię i odeślę go do bazy to zmienia się status że odkurzacz nie pracował.
Możecie sobie dać injecta rano z godziną, żeby o konkretnej pojechał.
Status czy pracował wykorzystuje również w automatyzacjach, np. jak nikogo nie ma w domu to ma odkurzać, ale jak pracował dzisiaj to nie odkurzaj ponownie.

[{"id":"ad6c8366.80498","type":"server-state-changed","z":"6f5c3793.8d3fb8","name":"","server":"4d0e02c9.2307bc","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"vacuum.roborock_vacuum_s5","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"‘cleaning’","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":"5","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":230,"y":1800,"wires":[["6740c7c7.7f8998"],[]]},{"id":"6740c7c7.7f8998","type":"change","z":"6f5c3793.8d3fb8","name":"Czy pracował - true","rules":[{"t":"set","p":"odkurzacz_pracowal","pt":"global","to":"true","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":1810,"wires":[[]]},{"id":"b7546b78.5991a8","type":"comment","z":"6f5c3793.8d3fb8","name":"Jak pracował to true","info":"","x":150,"y":1750,"wires":[]},{"id":"5f86dc7d.0f5514","type":"change","z":"6f5c3793.8d3fb8","name":"Czy pracował - false","rules":[{"t":"set","p":"odkurzacz_pracowal","pt":"global","to":"false","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":1850,"wires":[[]]},{"id":"1806b20d.f826fe","type":"inject","z":"6f5c3793.8d3fb8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"","payloadType":"date","x":340,"y":1850,"wires":[["5f86dc7d.0f5514"]]},{"id":"8bd38500.e1a338","type":"inject","z":"6f5c3793.8d3fb8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":350,"y":1750,"wires":[["6740c7c7.7f8998"]]},{"id":"1deb2cce.92b223","type":"link in","z":"6f5c3793.8d3fb8","name":"","links":["28e4c59e.a987ea"],"x":95,"y":1680,"wires":[["91b11f3e.5eda1"]]},{"id":"91b11f3e.5eda1","type":"switch","z":"6f5c3793.8d3fb8","name":"Czy pracował?","property":"odkurzacz_pracowal","propertyType":"global","rules":[{"t":"eq","v":"true","vt":"str"},{"t":"neq","v":"true","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":240,"y":1680,"wires":[["ab2b8ef6.d7ece"],[]]},{"id":"ab2b8ef6.d7ece","type":"function","z":"6f5c3793.8d3fb8","name":"Kosz","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"entity_id\": \"vacuum.xiaomi_vacuum_cleaner\",\n        \"x_coord\": \"16500\",\n        \"y_coord\": \"32500\"\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":1680,"wires":[["8092a722.afd9c8"]]},{"id":"8092a722.afd9c8","type":"api-call-service","z":"6f5c3793.8d3fb8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"xiaomi_miio","service":"vacuum_goto","entityId":"vacuum.roborock_vacuum_s5","data":"","dataType":"json","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":610,"y":1680,"wires":[["2001445f.2b16cc"]]},{"id":"4cd558cf.8bf468","type":"change","z":"6f5c3793.8d3fb8","name":"Czy pracował - false","rules":[{"t":"set","p":"odkurzacz_pracowal","pt":"global","to":"false","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1260,"y":1680,"wires":[[]]},{"id":"43f19720.282be8","type":"ha-wait-until","z":"6f5c3793.8d3fb8","name":"Czekaj az bedzie docked","server":"4d0e02c9.2307bc","version":0,"outputs":1,"entityId":"vacuum.roborock_vacuum_s5","entityIdFilterType":"exact","property":"state","comparator":"is","value":"‘docked’","valueType":"str","timeout":"","timeoutType":"num","timeoutUnits":"hours","entityLocation":"","entityLocationType":"none","checkCurrentState":true,"blockInputOverrides":true,"x":1030,"y":1680,"wires":[["4cd558cf.8bf468"]]},{"id":"2001445f.2b16cc","type":"delay","z":"6f5c3793.8d3fb8","name":"","pauseType":"delay","timeout":"60","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"x":830,"y":1680,"wires":[["43f19720.282be8"]]},{"id":"02dba79974400bf1","type":"comment","z":"6f5c3793.8d3fb8","name":"Jak poranny komunikat to jedź do kosza","info":"","x":210,"y":1620,"wires":[]},{"id":"4d0e02c9.2307bc","type":"server","name":"Asystent domowy","version":1,"legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
2 polubienia

Problem w tym, że miałem problem z instalacją NodeRed :expressionless: Dlatego próbuję radzić sobie bez niego.
Chodzi mi po głowie pomysł aby wykorzystać clean_stop, podaje datę i godzinę ostatniego zakończenia sprzątania, tylko jak?

Czyli miałeś problem z NodeRed i postanowiłeś zmienić ten problem na inny?
Oczywiście rób jak chcesz, ale jak chcesz robić dużo automatyzacji i to tych skomplikowanych to w NR możesz je robić szybciej i łatwiej, tak uważam.

A to co piszesz to możesz zrobić tą samą logiką tylko nie zapisujesz w global (jest to rodzaj zmiennej w NR) tylko zrobisz sobie pomocnika w HA, w którym będziesz zmieniał stan “pracowal/niepracowal”

Zasada jest prosta, jak jest cleaning przez 5 min to zapisujemy sobie w pomocniku że odkurzacz pracował, rano jak mam komunikat poranny to jeżeli odkurzacz ma status że pracował to jedzie do kosza, jak opróżnię i odeślę go do bazy to zmienia się status w pomocniku że odkurzacz nie pracował.

1 polubienie

A uzywa ktoś może z Viomi? Udało mi się odpalić miio2 po poprawkach, ale nie mogę rozgryźć jak w tej wtyczce wysłać do punktu…

Dziękuję za pomoc, rozwiązałem problem tak jak radziłeś pomocnikiem. Nie chciałem zastąpić problemu innym tylko dojść do rozwiązania, co dzięki Twojej pomocy nastąpiło :wink:
A tak przy okazji, pomożesz z instalacją NR? :smiley:

W tym wątku masz wszystko, z instrukcją krok po kroku.

witam mam problem z tym dodalem wszystkie pliki tak jak w instrukcji
Platform error vacuum.miio2 - Requirements for miio2 not found: [‘python-miio==0.5.9.1’].

witam czy moglbys wyslac me sceeny gdzie wrzuciles custom components miio2 ?