HowTo's: iRobot Roomba - über WiFi steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • McBeaver
    Smart Home'r
    • 25.08.2015
    • 69

    #16
    Mein RooWifi-Modul ist gestern angekommen! Habe es mittlerweile auch schon geschafft, meinen Roomba 871 in Loxone zu integrieren. Im Grunde genommen ist es ziemlich simpel.

    Wie die verschiedenen Kommandos aussehen (Clean, Spot und Dock) wurde ja bereits weiter oben beschrieben (Beitrag #9). Für das Auslesen der verschiedenen Sensoren bzw. Status verwende ich die roomba.xml und auf der Loxone Seite einen virtuellen HTTP-Eingang mit den entsprechenden HTTP Eingangs Befehlen.

    Vorgangsweise:

    Schritte Roomba
    1) Zuweisung einer fixen IP-Adresse im RooWifi-Modul, ansonsten funktioniert das ganze nicht! Diesen Schritt möchte ich jetzt nicht näher erläutern, dazu einfach in die Anleitung des RooWifi-Moduls schauen

    Schritte Loxone
    1) Anlegen eines Virtuellen HTTP Eingangs "Roomba" (kann auch anders heißen) mit den entsprechenden Zugangsdaten und IP-Adresse.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: virtueller HTTP Eingang.jpg
Ansichten: 1392
Größe: 13,5 KB
ID: 43153

    2) Anlegen eines Virtuellen HTTP Eingangsbefehl für jede gewünschte Sensorabfrage. Der Sensorname in der Befehlserkennung muss genau jenem in der roomba.xml entsprechen! Um alle möglichen Sensorwerte (welche abgefragt werden können) zu sehen, einfach auf die Seite http://IP-des-RooWifi-Moduls/roomba.xml gehen.

    Hier das Beispiel für die Abfrage der Temperatur

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: HTTP Befehl.jpg
Ansichten: 1428
Größe: 49,3 KB
ID: 43154



    Ich persönlich frage nur 5 Sensorwerte ab, da ich damit alles vom Roomba weiß, was ich wissen möchte. Daten wie z.B. Schmutzsensoren links/rechts, Fahrwinkel, Absturzsensoren usw. interessieren mich eigentlich nicht.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Virtuelle Eingänge.jpg
Ansichten: 1335
Größe: 13,8 KB
ID: 43156



    FERTIG! Loxone weiß jetzt, wie sich der Roomba fühlt!
    Angehängte Dateien
    Zuletzt geändert von McBeaver; 27.05.2016, 15:25.

    Kommentar

    • McBeaver
      Smart Home'r
      • 25.08.2015
      • 69

      #17
      Nun können die Werte in der Loxone Config weiterverarbeitet werden. Da der Ladezustand des Akkus nicht direkt ausgelesen werden kann, muss dieser erst berechnet werden. Dies geschieht durch eine einfache Division des Wertes "Charge" durch den Wert "Capacy", multipliziert mal 100. Der Formelbaustein ist dafür super geeignet.

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Akku.jpg
Ansichten: 1358
Größe: 13,0 KB
ID: 43161

      Habe mir weiters noch einen Statusbaustein zusammengebaut, mit welchem der aktuelle Status des Roombas ersichtlich ist. Auch dieser kann unglücklicherweise nicht direkt vom RooWifi-Modul ausgelesen werden. Dazu verwende ich die Sensorwerte "Current" und "Charging State".
      Der Wert "Current" gibt den aktuellen Stromverbrauch des Roombas an: wenn der Roomba nichts macht (weder fahren noch saugen) sinkt der Stromverbrauch unter 200mA. Damit kann man bereits bestimmen, ob der Roomba saugt oder nicht. Zusammen mit dem Wert "Charging State" (Ladestatus) kann man bestimmen, ob sich dieser nun am Dock befindet und den Akku läd oder nur irgendwo rumsteht.

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Status Roomba.jpg
Ansichten: 1323
Größe: 9,6 KB
ID: 43162

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Status.jpg
Ansichten: 1372
Größe: 78,0 KB
ID: 43163

      Was ich über den "Charging State" herausgefunden habe:
      0 => nicht am Dock
      1 => weiß ich noch nicht (weiß das jemand??)
      2 => Akku wird geladen
      3 => Erhaltungsladung (sog. Trickle Charging), heißt im Prinzip : Akku geladen


      So, nu seid ihr dran!
      Zuletzt geändert von McBeaver; 27.05.2016, 15:26.

      Kommentar


      • larassimon
        larassimon kommentierte
        Kommentar bearbeiten
        VIELEN DANKE! für deine Anleitung, hat auf den ersten Moment funktioniert, zu dem Charging State habe ich folgendes gefunden:

        - 0 No charging
        - 1 Charging Recovrey--> Was soll uns dieser Status sagen?
        - 2 Charging
        - 3 Trickle Charging
        - 4 Waiting --> was jetzt waiting bedeuten soll habe ich hingegen noch nicht rausgefunden, denn Status 4 wird angezeigt sobald der Kollege nicht in der Ladestation steht, aber auch wenn er fährt .. mh :/
        - 5 Charging Error

      • wp10
        wp10 kommentierte
        Kommentar bearbeiten
        hallo, beim Wert Capacity scheint es sich um einen konstanten Wert zu handeln?! Ich hab eine nicht originalen Lithium-Ionen-Akku 4400mAh im Gerät und es werden auch 2696 angezeigt.

        Vielen Dank für deine gute Dokumentation, ich konnte das sehr gut nachbauen.
    • McBeaver
      Smart Home'r
      • 25.08.2015
      • 69

      #18
      Was ich bisher auch noch nicht herausgefunden habe, ist die Mitteilung ob der Auffangbehälter voll ist. Das wäre in der Tat ziemlich interessant für die Weiterverarbeitung mit Loxone...

      Weiß jemand, wie man zu diesem Wert/Status kommt?

      Kommentar

      • maxw
        Lox Guru
        • 25.08.2015
        • 1376

        #19
        Hallo Leute, coole Sache! Hat einer von euch Lust ein durchgängiges HowTo ins Wiki zu stellen?

        Kommentar


        • svethi
          svethi kommentierte
          Kommentar bearbeiten
          Oder zu dem schon vorhandenem Wiki hinzufügen ;-)
      • patriwag
        LoxBus Spammer
        • 28.08.2015
        • 436

        #20
        Ich bin jetzt mit der Ansteuerung des Roomba 980 etwas weiter. Mittels Charlesproxy habe ich es geschafft, die SSL Verbindung zwischen iPhone App und dem iRobot Webservice aufzubrechen. Jetzt sehe ich hier diverse Requests und Responses. Per URL kann ich nun den Roomba starten, stoppen und in die Ladestation zurückfahren lassen. Damit sollte ich größte Hürde vermutlich genommen haben. Jetzt bin ich gespannt, wie ich die URLs vom Miniserver aufrufen kann.
        seit 2016 im eigenen LoxHome

        Kommentar

        • larassimon
          Dumb Home'r
          • 22.05.2016
          • 15

          #21
          Ich habe ganze Zeit das Problem gehabt, das der Roomba "Einschläft" und ich ihn dann nicht mehr Starten konnte (Dock, Sport, Clean). Ich habe hierfür eine Lösung gefunden:

          Einen Virtuellen Ausgangsbefehl zu den Befehlen hinzufügen mit folgendem Befehl bei Ein:

          /rwr.cgi?exec=1

          Daraufhin Piepst der Roomba einmal, das Display geht an und ich kann ihn anschließend mit Befehlen ansprechen! In Loxone hab ich das mit einem verzögerten Impuls umgesetzt.
          Angehängte Dateien

          Kommentar

          • larassimon
            Dumb Home'r
            • 22.05.2016
            • 15

            #22
            Guten Abend alle zusammen,

            nachdem wir nun geklärt haben wie wir den Roomba steuern habe ich eine frage und noch eine Ergänzung. Zuerst die Ergänzung. Man kann den Roomba in den Driver Mode versetzen und dann manuell fahren. Beispielsweise nach erfolgreicher Reinigung und zurück im Dock 2 Sekunden Rückwärts (unter dem Schrank raus) das er ausgeleert wird. Hierfür muss man zuerst den Driver Mode aktivieren, anschließend den Befehl für Rückwärts geben und anschließend den Befehl Idle für Stopp, hier noch mal alle Parameter die möglich sind:

            Parameter für http://<IP>/rwr.cgi?exec=<Befehl>
            rwr.cgi?exec=h "start driver mode"
            rwr.cgi?exec=j "main brush"
            rwr.cgi?exec=k "side brush"
            rwr.cgi?exec=a "vorwärts"
            rwr.cgi?exec=b "15 Grad Links"
            rwr.cgi?exec=c "45 Grad Links"
            rwr.cgi?exec=d "90 Grad links"
            rwr.cgi?exec=l "rückwärts"
            rwr.cgi?exec=e "15 Grad Rechts"
            rwr.cgi?exec=g "90 Grad Rechts"
            rwr.cgi?exec=f "45 Grad Rechts"
            rwr.cgi?exec=1 "IDLE"
            rwr.cgi?exec=4 "Clean"
            rwr.cgi?exec=5 "Spot"
            rwr.cgi?exec=6 "Dock"

            So jetzt meine Frage / Problem. Mein RooWifi verliert leider in den weit entferntesten Ecken meiner Wohnung die WLAN Verbindung. Ich verwende eine Apple Airport Extreme, mit meinem iPhone etc. habe ich in der ganzen Wohnung fast überall vollen empfang. Leider ist es so, dass das Roowifi Modul bei Verbindungsverlust sich nach kurzer Zeit zurück setzt - also die WLAN Verbindung verlernt sozusagen. Hat jemand eine Idee wie ich das vermeiden kann? Die Airport Extreme steht schon fast ziemlich in der Mitte der Wohnung. Ich weis nicht ob ich mit einem anderen Router die Reichweite wirklich erweitern kann. Hat jemand von euch das gleiche Problem? Für mich wäre es auch kein Problem wenn das Modul während dem fahren nicht meldet, aber sobald es zurück im WLAN Bereich ist sollte es melden, das funktioniert aber leider nicht

            Kommentar


            • wp10
              wp10 kommentierte
              Kommentar bearbeiten
              hallo,
              mindestens bei meinem Roomba 581 ist die Webseite falsch. Ich geh davon aus dass die Webseiten bei allen roowifi-Modulen die ab 11/2016 ausgeliefert wurden falsch sind. Siehe Webseite der Roomba-Steuerung, die Befehle von "Main Brush" und "Vacuum" sind mit rwr.cgi?exec=j identisch. (z.B. in Chrome Browser mit der Maus auf den Button, Rechtsklick Element untersuchen). Befehl i kommt auf der Webseite nicht vor.

              Folgendes ist bei einem Roomba 581 korrekt:
              /rwr.cgi?exec=i "main brush"
              rwr.cgi?exec=j "vacuum"

            • Gast
              Gast kommentierte
              Kommentar bearbeiten
              Gibt es eine Moeglichkeit diese Befehle auch an einen iRobot Roomba 980 OHNE RooWifi zu senden?
              Ich kann dem Roomba 980, ohne RooWifi, ein paar wenige Befehle senden wie Start, Stop, Clean, Dock. Was mir fehlt ist den Roomba per Befehl ca. 2m rückwärts fahren zu lassen, damit er aus seinem Versteck/Garage kommt! Hast du allenfalls eine Idee wie ich dies umsetzen könnte?
          • Gast

            #23
            Hallo Zusammen. Seit dieser Woche ist nun auch mein Roowifi Modul angekommen und bereits in der Config integriert. Soweit funktioniert alles gut. Jedoch gibt es noch ein kleines Problem. Momentan schalte ich immer über Nacht meinen Wifi Accesspoint über eine Smartsocket Air zeitgesteuert aus und am Morgen wieder an.Böse Strahlung ;-). Am Morgen blinkt das Roowifi Modul normal ( W-LAN verbunden) jedoch lässt sich der Roomba mit den http Befehlen nicht mehr ansprechen und die /roomba.xml auch nicht auslesen. Ich habe festgestellt wenn ich dann einmal über mein Smartphone den Webserver des Roowifi Moduls aufrufe ( http://Ip-Roowifi Modul + dann das Login Eingebe ) wenige Augenblicke später die Kommunikation wieder funktioniert. Hat Jemand eine Lösung hierfür oder kann mir sagen wie ich diese manuelle Aktion im Miniserver automatisieren könnte. Den Accesspiont dauern in Betrieb zu haben wäre nur eine absolute Notlösung für mich.Vielen Dank im Voraus.

            Kommentar

            • wrack solutionist
              Extension Master
              • 09.09.2016
              • 183

              #24
              Hi,

              ich habe auf https://github.com/koalazak/dorita980. Ein Javascript entdeckt , welches den roomba 980 fernsteuern kann. Dieses kann ich zwar auf der pi aufrufen, weiß jedoch nicht wie ich die Integration mit der Loxone hinbekomme. Ich bin absolut neu in js und wäre für jeden Hinweis dankebar.



              var myRobot = new dorita980.Local('XXXX', 'XXXX','XXX)

              // go home!
              myRobot.dock().then((response) => {
              console.log(response);
              }).catch((err) => {
              console.log(err);
              });



              Michael

              Kommentar

              • wp10
                Dumb Home'r
                • 20.02.2016
                • 10

                #25
                Hallo, ist jemandem bekannt wie ich im Driver Mode Main brush, Vacuum und Side Brush beim Fahren aktivieren kann? Ich kann immer nur eines anschalten beim Roomba 581. Ist das bei euch auch so?

                Ich kann so zwar rumfahren, aber nicht sauber machen.

                Kommentar

                • Gast

                  #26
                  Hallo zusammen,

                  in Beitrag 16 wird schön beschrieben, was man in der Befehlserkennung eines Virtuellen HTTP Eingangsbefehl eingeben muss, um einen Status aus RooWifi auzuwerten.
                  Ich habe aber den Thinking Cleaner Aufsatz, der eine andere Art der XML-Ausgabe ausgibt (siehe auch angehängtes Bild).
                  Gugst du hier:
                  <full_status>
                  <firmware>
                  <version>1.0.103-310C-FCC</version>
                  <wifi_version>310C</wifi_version>
                  <uuid>c2f0756240c0ca17</uuid>
                  :
                  :
                  </firmware>
                  </full_status>

                  Nun habe ich schon stundenlang probiert, den Befehl zu schreiben, aber ich bekomme immer nur "0,0" (also keinen Wert) zurück.
                  Kann mir jemand sagen, wie ein Beispiel-Befehl für meinen Tininking Cleaner lauten muss?

                  Vielen Dank.

                  Kommentar

                  • svethi
                    Lebende Foren Legende
                    • 25.08.2015
                    • 6334

                    #27
                    Welchen Wert willst Du denn abfragen und wie lautet denn Dein Versuch?
                    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                    Kommentar

                    • Gast

                      #28
                      Ich möchte z. B. den Akku-Status abfragen, der in der XML so aussieht:
                      <battery_charge>100</battery_charge>

                      Mein missglückter Versuch:
                      <full_status><power_status><battery_charge>\v

                      Kommentar

                      • Gast

                        #29
                        Hat keiner eine Idee?

                        Kommentar

                        • Gast

                          #30
                          Ich frag noch mal nach. Einer muss doch die Antwort wissen.
                          ;-)

                          Kommentar

                          Lädt...