Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Xiaomi Roborock inn i Homeseer (Linux)


ZoRaC

Anbefalte innlegg

EDIT:

Se egen guide for å få til det samme i Windows her:

 

—————

 

Det finnes en tråd med litt diskusjon rundt det å få Xiaomi-støvsugere inn i HomeSeer her: 
https://www.hjemmeautomasjon.no/forums/topic/4080-xiaomi-mi-roborock-robotstøvsuger/

Resultatet i den tråden er at @Rogerbl har laget en integrasjon som han selger via sin nettbutikk.

 

Når jeg kjøpte min første Roborock S5 denne uka så syntes jeg 800 kr var litt for mye for en programvare til en støvsuger jeg betalte 2400 kr for (no offence, @Rogerbl :)).

 

Så da måtte jeg ta saken i egne hender og ordne det selv. :P 

image.thumb.png.6ec43c6e209ec13ce9fd5025f185edc0.png

 

Jeg skal her forsøke å beskrive hvordan dette er gjort, forhåpentligvis godt nok til at flere kan kopiere løsningen. :) 

Jeg kjører Ubuntu, så om dette er mulig å få til på Windows har jeg ingen anelse om...

 

Programvare som brukes:

* En MQTT-broker (f.eks Moquitto)

* mcsMQTT-plugin til HomeSeer

* python-miio

* mqtt-launcher

 

Start med installasjon av python-miio: https://python-miio.readthedocs.io/en/latest/discovery.html

Uthenting av token var veldig enkelt med Android, som beskrevet her: https://python-miio.readthedocs.io/en/latest/discovery.html#tokens-from-mi-home-logs

 

Når du får "mirobo discover" fungerer så kan du gå videre. :) 

 

Hvis du ikke har en MQTT-broker, sett opp det og test at den fungerer, f.eks Mosquitto: https://mosquitto.org/download/

 

Installer og konfigurere mcsMQTT-plugin i HomeSeer og sjekk at den fungerer.

 

Lag "/usr/local/HomeSeer/scripts/vacuum.sh":

#!/bin/bash
IP=192.168.1.10
TOKEN=1234567868767786345

mosquitto_pub -h localhost -t vacuum/status -m "$(miiocli -o json vacuum --ip $IP --token $TOKEN status)"
mosquitto_pub -h localhost -t vacuum/consumable_status -m "$(miiocli -o json vacuum --ip $IP --token $TOKEN consumable_status)"
mosquitto_pub -h localhost -t vacuum/status/carpet_mode -m "$(miiocli -o json vacuum --ip $IP --token $TOKEN carpet_mode)"

Kjør den og sjekk at du finner disse i mcsMQTT. Hak av for "associate" på de samme enheten som jeg har over.

Gå inn på enheten og gjør justeringer på prefix/suffix, osv etter eget ønske.

 

Legg til vacuum/control i mcsMQTT, med dette oppsettet:

image.png.9da3fe836109d77edc35f3bbb09b8928.png

 

Legg inn mqtt-launcher.py og .conf i /scripts-mappa:

https://github.com/jpmens/mqtt-launcher

 

Legg dette i mqtt-launcher.conf:

logfile         = 'logfile'
mqtt_broker     = 'localhost'       # default: 'localhost'. If using TLS, this must be set to the domain name signed by your TLS certificate.
mqtt_port       = 1883              # default: 1883
mqtt_clientid   = 'mqtt-launcher-1'
mqtt_username   = None
mqtt_password   = None
mqtt_tls        = None              # default: No TLS

topiclist = {

    # topic                     payload value       program & arguments
    "vacuum/control"          :   {
                                'start'        :   [ '/usr/local/bin/mirobo', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'start' ],
                                'find'         :   [ '/usr/local/bin/mirobo', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'find'    ],
                                'home'          :   [ '/usr/local/bin/mirobo', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'home' ],
                                'spot'          :   [ '/usr/local/bin/mirobo', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'spot' ],
                                'pause'          :   [ '/usr/local/bin/mirobo', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'pause' ],
                            },
    "vacuum/control/fanspeed"          :   {
                                None          :   [ '/usr/local/bin/mirobo', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'set_fan_speed', '@!@' ],
                            },
    "vacuum/control/carpet_mode"          :   {
                                None          :   [ '/usr/local/bin/miiocli', 'vacuum', '--ip', '192.168.1.10', '--token', '2313213213221321231', 'set_carpet_mode', '@!@' ],
                            },
}

(bytt ut "2313213213221321231" med token)

 

Endre denne linjen i mqtt-launcher.py: https://github.com/jpmens/mqtt-launcher/blob/master/mqtt-launcher.py#L43

Legg inn CONFIG="/usr/local/HomeSeer/scripts/mqtt-launcher.conf"

 

Kjør mqtt-launcher.py.

Når du ser at det fungerer, legg den inn som en service, slik at den kjører automatisk, slik som beskrevet her:

https://github.com/jpmens/mqtt-launcher/issues/20

 

Det var en "lyn-guide" på hvordan dette er satt opp. :) 

Kan utdype mer senere, ellers er det bare å spørre så skal jeg svare så godt jeg kan, selv om jeg verken kan noe særlig om MQTT eller Python... :P 

Endret av ZoRaC
Lenke til Windows-guide
  • Like 2
Lenke til kommentar
Del på andre sider

Flott! Man kan også bruke iobroker til dette , de har adapter til både Roborock'en og Mqtt klient og server.
Da får du ved hjelp av mcsMqtt plugin'en i Hs3 importert de samme devicene til Hs3.
Forskjellen mellom dette og min løsning(som når koster 400 kr) er at jeg har lagt inn sonebasert  rengjøring og waypoints.
Sonebasert rengjøring har ikke denne Roborock'en( s5) men det har etterfølgeren S6. 
Bakdelen med S6 er at den koster rundt 6 tusen kr pr. idag. Ja så mangler den waypoints . ?
 

Lenke til kommentar
Del på andre sider

2 timer siden, Moskus skrev:

Hvis noen leser dette og lurer på hvilken støvsuger de skal bruke, så kan det nevnes at Neato er et alternativ. Plugin koster $30, men det tar maks 2 minutter å sette den opp.

 

Men de koster et par tusen mer enn S5, så vidt jeg kan se?

  • Like 1
Lenke til kommentar
Del på andre sider

20 timer siden, Rogerbl skrev:

som når koster 400 kr

 

Hadde ikke fått med meg det - da begynner det jo faktisk å nærme deg aktuelt. ? men, ser du også går veien via MQTT, så da er det ikke så mye å spare på det...

 

Hadde jeg kunnet VB.net så skulle jeg ha laget meg en ordentlig plugin, uten MQTT. miiocli-kommandoene returnerer jo JSON, så det burde ikke være noe problem å kalle miiocli via VB.net og parse JSON-output man får i retur. :) Da hadde det vært nok å oppgi IP og token til plugin, så hadde resten fungert av seg selv. :)  Får satse på at @Moskus sliter ute Neatoen sin og kjøper seg en Roborock. ? 

 

6 timer siden, Moskus skrev:

Vel...

 

image.png

 

image.png

 

Spørs om jeg har sammenlignet billigste Roborock med dyreste Neato... ? 

Lenke til kommentar
Del på andre sider

8 timer siden, ZoRaC skrev:

Hadde jeg kunnet VB.net så skulle jeg ha laget meg en ordentlig plugin, uten MQTT. miiocli-kommandoene returnerer jo JSON, så det burde ikke være noe problem å kalle miiocli via VB.net og parse JSON-output man får i retur. :) Da hadde det vært nok å oppgi IP og token til plugin, så hadde resten fungert av seg selv. :)

 

Fikk ikke sove, så da ble det litt googling. Har funnet svar på det jeg lurte på, så da blir det trolig et VB-script eller en plugin etterhvert, som ikke benytter MQTT. :) 

 

«Teaser»:

Sitat

 

imports System.Diagnostics
IMPORTS Newtonsoft.Json
IMPORTS Newtonsoft.Json.Linq

Sub Main(parm as object)
Dim obj as New JObject
Dim psi As New ProcessStartInfo()

psi.FileName = "/bin/bash"
psi.Arguments = "-c ""miiocli -o json_pretty vacuum --ip 192.168.1.10 --token 123123123123123 status"""
psi.RedirectStandardOutput = True
psi.RedirectStandardError = True
psi.CreateNoWindow = False
psi.WindowStyle = ProcessWindowStyle.Hidden
psi.UseShellExecute = False

Dim process As Process = Process.Start(psi)
Dim processoutput As String = process.StandardOutput.ReadToEnd()

process.WaitForExit()

hs.writelog("Output", processoutput)

obj = JsonConvert.DeserializeObject(processoutput)

hs.writelog("Output", obj.Item("clean_time").ToString)

End Sub

 

Gir dette i loggen:

Sitat

Output 351

Output { "state": 8, "fan_power": 100, "dnd_enabled": 0, "map_present": 1, "in_cleaning": 0, "lab_status": 1, "in_fresh_state": 1, "clean_area": 7075000, "error_code": 0, "msg_ver": 2, "msg_seq": 414, "battery": 100, "in_returning": 0, "clean_time": 351 }

 

Men, jeg tror ikke jeg gidder programmere resten på mobilen, så det får bli etterhvert! ? 

  • Like 1
  • Thanks 1
Lenke til kommentar
Del på andre sider

5 minutter siden, Moskus skrev:

Bonuspoeng hvis du slipper et eksternt Python-script! :D 

 

Haha! Tror ikke jeg skal ta jobben med å porte Python-miio til VB.net - siden jeg verken kan Python eller VB.net... ? 

 

En fordel er at noen andre sørger for at det fortsatt fungerer om Xiaomi gjør endringer. ;) 

Lenke til kommentar
Del på andre sider

  • 2 uker senere...
På 30.8.2019 den 18.40, Moskus skrev:

Hvis noen leser dette og lurer på hvilken støvsuger de skal bruke, så kan det nevnes at Neato er et alternativ. Plugin koster $30, men det tar maks 2 minutter å sette den opp.

Vi har no to Neato Botvac Connected på drift, så sånn sett koster vel plugin berre $15 per støvsuger ;)

  • Haha 2
Lenke til kommentar
Del på andre sider

Har nå også montert et Arlo kamera på min Roborock og koblet sammen dette og Mqtt styringen av Roborock.

På denne måten kan jeg få robotstøvsugeren til å stoppe om der er personer eller dyr i veien for den.
Jeg kan også sende den på patrulje rundt i huset når jeg er bortreist. Ved deteksjon av uvanlig lyd f.eks. ?
Men patruljering er bare mulig om man har waypoint mulighet. Da kan man sende den til soverommet f.eks.

Endret av Rogerbl
  • Like 3
Lenke til kommentar
Del på andre sider

Har ikke hatt tid til å se nærmere på dette, men har laget en norsk spårkpakke til støvsugeren i det minste. [emoji4] 
 
https://github.com/dgiese/dustcloud/blob/cc4f2ffe6d002a88b36f0bbb18782f3e12994a1f/devices/xiaomi.vacuum/audio_generator/language/audio_no.csv
Flott! Regner med at jeg må roote eller legge inn custom fw for å få inn dette?

(er forresten et ekstra blankt tegn på slutten av linje 68 som github ikke liker)

Sent fra min BLA-L29 via Tapatalk

Lenke til kommentar
Del på andre sider

8 timer siden, Hilmar skrev:

Flott! Regner med at jeg må roote eller legge inn custom fw for å få inn dette?

 

Nei, du bare laster det opp med python-miio (install_sound):

https://python-miio.readthedocs.io/en/latest/miio.html

 

8 timer siden, Hilmar skrev:


(er forresten et ekstra blankt tegn på slutten av linje 68 som github ikke liker)

 

Ser det ikke på mobilen, men skal sjekke det. :) 

  • Thanks 1
Lenke til kommentar
Del på andre sider

  • 3 uker senere...

Hei!

Fikk ikke til å installere. Denne feilmeldingen kom etter at jeg kjørte kommandoen mirobo -ip x.x.x.x --token yyyyyyyy install-sound audio_no.csv :


Installing from audio_no.csv (md5: None) for id 10000
INFO:miio.updater:Serving on 0.0.0.0:54015, timeout 10
INFO:miio.updater:Using local audio_no.csv (md5: 5c01bf1e69de33e5c6efab5f3eb79ff2)
Hosting file at http://192.168.100.54:54015/audio_no.csv
ERROR:miio.updater:No request was made..
ERROR:miio.device:Got error when receiving: timed out
Error: No response from the device

*********

får pinget den og andre kommandoer går greit. Noen tips?

Endret av Rogerbl
Lenke til kommentar
Del på andre sider

På 5.10.2019 den 15.45, ZoRaC skrev:

Hvilken modell har du?

Er PC og støvsuger på samme nettverk?

Har du siste firmware på støvsugeren?

Prøvd å slå av og på støvsugeren med hovebryteren?

Har s5 med firmware 3.3.9.001886 som er den siste firmwaren.
Pc og roborock er på samme nettverk og jeg får pinget den fra pc.
Fant ut at jeg manglet en "-" foran ip parameteret, men det løste ikke saken...
kom endel videre men får 0% downloaded:
Installing from audio_no.csv (md5: None) for id 10000
INFO:miio.updater:Serving on 0.0.0.0:64219, timeout 10
INFO:miio.updater:Using local audio_no.csv (md5: 5c01bf1e69de33e5c6efab5f3eb79ff2)
Hosting file at http://172.17.171.161:64219/audio_no.csv
<SoundInstallStatus sid: None (state: SoundInstallState.Unknown, error: 0) - progress: 0>
Downloading (0 %)
Downloading (0 %)
ERROR:miio.updater:No request was made..

Error (0 %)
Error during installation: 2

****************

Kan være at brannmuren min ikke tillater nedlasting fra 172.17.171.161?
Men det er ikke såå viktig med norsk tale, vi forstår engelsk her i huset! ?

Endret av Rogerbl
Lenke til kommentar
Del på andre sider

  • 1 måned senere...
On 31/08/2019 at 23:54, ZoRaC said:

 

Fikk ikke sove, så da ble det litt googling. Har funnet svar på det jeg lurte på, så da blir det trolig et VB-script eller en plugin etterhvert, som ikke benytter MQTT. :) 

 

«Teaser»:

 

Gir dette i loggen:

 

Men, jeg tror ikke jeg gidder programmere resten på mobilen, så det får bli etterhvert! ? 

 

Ble vist en S6 på meg sisy helg. :)

Har du kommet noe videre med VB-script eller plugin? ? 

Lenke til kommentar
Del på andre sider

2 timer siden, JohnMartin skrev:

Har du kommet noe videre med VB-script eller plugin? ? 


Nei, dessverre. Har hatt den i HomeSeer via MQTT i noen mnd nå, foreløpig ikke satt opp et eneste event eller brukt statusene til noe som helst... ? så jeg er litt usikker på om jeg skal ta meg tid til å gjøre noe mer eller bare ha det som det er... 

Lenke til kommentar
Del på andre sider

1 hour ago, ZoRaC said:


Nei, dessverre. Har hatt den i HomeSeer via MQTT i noen mnd nå, foreløpig ikke satt opp et eneste event eller brukt statusene til noe som helst... ? så jeg er litt usikker på om jeg skal ta meg tid til å gjøre noe mer eller bare ha det som det er... 


Må gjerne finne iveren etter å se på en mer native plugin for RoboRock. Har selv en S6 jeg gjerne skulle automatisert, og er ikke helt sikker på mqtt veien. 
Kjøre HS på windows og er ikke sterkt motivert av å bruke masse tid på å få noe til å funke som jeg i utgangspunktet ikke skjønner noe av :)

Lenke til kommentar
Del på andre sider

On 05/12/2019 at 07:27, ZoRaC said:


Nei, dessverre. Har hatt den i HomeSeer via MQTT i noen mnd nå, foreløpig ikke satt opp et eneste event eller brukt statusene til noe som helst... ? så jeg er litt usikker på om jeg skal ta meg tid til å gjøre noe mer eller bare ha det som det er... 

 

Ja, jeg ser den. Er appen såpass bra at du klarer å automatisere alt via den?

Med turnus på begge to, så er det ingen dag som er like hos oss, så spørs om appen er bra nok for oss.

Kan hende jeg bare må begi meg ut på den skumle ferden med MQTT ?

Lenke til kommentar
Del på andre sider

På 5.12.2019 den 8.53, Kenneth skrev:


Må gjerne finne iveren etter å se på en mer native plugin for RoboRock. Har selv en S6 jeg gjerne skulle automatisert, og er ikke helt sikker på mqtt veien. 
Kjøre HS på windows og er ikke sterkt motivert av å bruke masse tid på å få noe til å funke som jeg i utgangspunktet ikke skjønner noe av :)


Om jeg skulle laget et script/plugin så vil det nok uansett bare blitt noe som hadde brukt Python-miio i bunn, så man måtte fått det til å fungere uansett (mulig det funker på Windows, men vet ikke). 
 

9 timer siden, JohnMartin skrev:

@ZoRaC, må dette kjøres på HS3 maskinen, eller kan jeg kjøre ubuntu i VM for dette? ?

 

Det er en av de sterke sidene til MQTT - så dette kan du kjøre på hva som helst, bare den kan kommunisere med MQTT-brokeren du bruker i HomeSeer! :) 

Lenke til kommentar
Del på andre sider

9 hours ago, ZoRaC said:

Det er en av de sterke sidene til MQTT - så dette kan du kjøre på hva som helst, bare den kan kommunisere med MQTT-brokeren du bruker i HomeSeer! :) 

 

Akkurat. Da er det jo en mulighet å kjøre enda en VM sånn at jeg kan følge guiden :)
Skal lese litt mer om muligheten å kjøre på windows først.

Lenke til kommentar
Del på andre sider

@ZoRaC, ok takk for tilbake mld :). Så for meg noe ala det Homassistant har med en "enkel" plugin. Ser at ikke det det er for alle å lage en slik plugin, jeg får vurdere hva jeg skal gjøre. Ser at noen har installert Homeassistant for så å knytte HS opp mot denne igjen for å få inn Roborock devucene.. Ikke en smooth løsning, men pt finn finnes det ikke en enkel løsning sånn jeg forstår det.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.