Worx Mähroboter starten & Stoppen / HTTP-Post-Request

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • LJSven
    Extension Master
    • 28.01.2016
    • 136

    #31
    Ich habe es jetzt über die Dreambox gemacht - wollte es eigentlich vermeiden, aber ich komme hier nicht weiter. Mit diesem Befehl über die Drembox funktioniert es wunderbar.
    curl -u admin:WORX-PIN -H "Accept: application/json" -H "Content-type: application/x-www-form-urlencoded" -X POST -d 'data=[["settaggi",12,1]]' http://IP-VOM-WORX/jsondata.cgi

    Kommentar

    • type0n
      Dumb Home'r
      • 07.01.2017
      • 18

      #32
      Hallo zusammen!

      Bei uns werkelt seit einigen Wochen ein WG796E.1 und verschafft mir seither mehr Freizeit! Ich habe mich daher heute mal mit der Integration in den Miniserver beschäftigt.
      Zuerst ging es mir nur um die Visualisierung der Mähzeiten, doch schnell hatte ich auch den Wunsch den Mäher auch ausserhalb der Mähzeiten zur Arbeit zu überreden.

      Ein wenig Recherche und Sniffing später, habe ich einige Infos ans Licht gebracht.

      Hier mal Auswahl der über den Webserver des Mähers zugreifbaren Dateien (habe ich in der Firmware des Mähers gefunden) :

      XXXX=Pin des Mähers
      IP-MAEHER= die IP Adresse des Mähers

      http://admin:XXXX@IP-MAEHER/jsondata.cgi

      Hier mal ein Auszug von meinem Mäher:
      Code:
      {"versione_fw":2.61,"lingua":1,"ore_funz":[0,37,0,37,62,0,0],"ora_on":[0,15,0,15,13,0,0],"min_on":[0,0,0,0,0,0,0],"allarmi":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"settaggi":[0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"mac":[0,35,167,164,222,114],"time_format":1,"date_format":1,"rit_pioggia":120,"area":0,"enab_bordo":1,"percent_programmatore":0,"indice_area":9,"tempo_frenatura":20,"perc_rallenta_max":70,"canale":0,"num_ricariche_batt":260,"num_aree_lavoro":1,"dist_area":[1,1,1,1],"perc_per_area":[1,1,1,1],"area_in_lavoro":0,"email":"","perc_batt":"100","ver_proto":1,"state":"home","workReq":"user req manual homing","message":"none","batteryChargerState":"idle","distance":4}

      http://admin:XXXX@IP-MAEHER/debugPage.html

      Hier findet man die aktuellen Zustand des Mähers z.B. die Mähzeiten, den Status des Mäher (In der Ladestation, folgt Kabel, mäht etc.)

      Als JSON bekommt man das über http://admin:XXXX@IP-MAEHER/jsonDebug.cgi

      Hier findet man ein Seite mit Livedaten, mit z.B. der Temperatur des Akkus, Ladestrom, Daten des Beschleunigungsmessers, Motordrehzahlen und vielem mehr.

      http://admin:XXXX@IP-MAEHER/index.htm bzw. http://admin:XXXX@IP-MAEHER/index.html

      führt zur "App" Oberfläche des Mähers im Browser.

      http://admin:XXXX@IP-MAEHER/log.html

      Hier kann man sich die letzten Einträge im internen Log des Mähers ansehen z.B. Messerlaufzeit der letzten Fahrt, start der Akkuladung etc..

      Als JSON bekommt man dies über http://admin:XXXX@IP-MAEHER/jsonLog.cgi

      http://admin:XXXX@IP-MAEHER/js/app.js.gz

      Hier findet man die der App zugrundeliegenden Funktionen und somit auch die setzbaren Parameter.

      http://admin:XXXX@IP-MAEHER/locale/de.js

      Diverse Übersetzungen der Statusmeldungen (da/de/en/es/fi/fr/it/nb/nl/pt/sv).


      Nun aber zum starten und stoppen des Mähers über Loxone. Ganz ehrlich, die Doku des virtuellen Ausgangs/virtuellen Ausgangs Befehl sind wirklich dürftig!
      Ohne vielfaches probieren, hat man keine Chance die genau Funktion zu ergründen.

      Ich habe das nun so gelöst:

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Ausgang.png Ansichten: 1 Größe: 11,1 KB ID: 118450

      Dazu kommen nun 2 virtuelle Ausgangs Befehle, einer für Stoppen und einer fürs Starten.

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: start.png Ansichten: 1 Größe: 43,9 KB ID: 118451

      Befehl bei EIN:/jsondata.cgi
      HTTP-Erweiterung bei EIN:Content-Type: application/x-www-form-urlencoded\nAccept: application/json
      HTTP-Post-Befehl bei EIN:data=%5B%5B%22settaggi%22%2C11%2C1%5D%5D
      Decoded sende ich also: data=[["settaggi",11,1]]
      HTTP Methode bei EIN:POST
      Ich habe das gleiche Setting bei AUS eingesetzt, somit wird das ganze 2 mal ausgeführt, ist zwar nicht unbedingt nötig, habe es aber ohne nicht getestet.
      Wiederholungen und Abstand der Wierderholungen habe ich auf 1 gesetzt (hier muss ich noch testen ob es nicht sinnvoll ist dies zu erhöhen, ich habe ein recht weitläufiges Grundstück und bin mir nicht sicher ob der Mäher überall WLAN Empfang hat).

      Zum stoppen wir hier alles analog eingestellt nur der settaggi rückt um ein Feld auf 12 vor.
      Decoded sende ich also: data=[["settaggi",12,1]]

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: stopp.png Ansichten: 1 Größe: 43,6 KB ID: 118452

      Ob das ganze geklappt hat, kann man über jsondata.cgi am Parameter "workReq" erkennen.

      stoppen setzt:user req manual homing

      starten setzt:user req grass cut

      Ich habe einfach 2 Taster in die Config gesetzt, diese setzen dann den Befehl ab.
      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: visu.png Ansichten: 1 Größe: 9,7 KB ID: 118453

      Funktioniert bei mir einwandfrei!

      Somit lassen sich auch andere Werte setzen, z.B. die Startzeiten der einzelnen Tage z.B. Sonntag um 15Uhr mit dem mähen beginnen und um 19:45Uhr geht es für den Mäher zurück zur Ladestation.

      Beispiel:
      data=[["ora_on",6,15],["ore_funz",6,37]]

      Encoded also:
      data=%5B%5B%22ora_on%22%2C6%2C15%5D%2C%5B%22ore_fu nz%22%2C6%2C37%5D%5D

      Wichtig dabei ist das data= NICHT codiert wird!

      Perfekt ist auch, das man nicht bei jedem senden alle Felder senden muss, sondern ganz gezielt nur den Wert der geändert werden soll.

      Ich hoffe ich konnte helfen.

      Schönen Abend!

      P.S. Als nächstes möchte ich versuchen über die Visu die Start- und Stoppzeiten des Mäher zu setzen. Hat jemand eine Idee wie sich das umsetzen lässt (evtl. Schaltuhr/Wecker)? An anderer Ansatz ist es den Mäher wetterabhänig zu starten, dazu mus ich aber erstmal meine Ventus W266 mittels ESP8266 dazu überreden mit dem MS zu reden, aber das ist eine andere Baustelle...

      P.P.S. Das ist mein erster Beitrag, ich lese schon ein Weile mit, habe aber nur selten Zeit mal was zu schreiben.
      Zuletzt geändert von type0n; 30.09.2017, 19:51.
      Loxberry, 1x MS, 1x 1-Wire, 11x Extension, 1x Airbase, viele ESP8266/ESP32 Geräte über UDP MQTT, Shellies! Novelan Solewärmepumpe, 10kWp PV mit SMA STL-9000, einige RaPis,FritzBoxen etc. Alte Hütte von 1770 mit rund 370m² für 2 Parteien, vollentkernt ab 2011, Einzug 2013, Fertigstellung , ein wenig Umlage 9K m²

      Kommentar


      • michli-max
        michli-max kommentierte
        Kommentar bearbeiten
        Danke für die Anleitung geht bestens. Für Start und Stopp könnte man doch eine Schaltzeituhr noch vor die Taster oder direkt vor die Ausgänge setzen. Dann kann man in der visu die Zeiten einstellen.

      • Gast
        Gast kommentierte
        Kommentar bearbeiten
        Das nenne ich mal eine perfekte Anleitung!
        Einspielen -> geht!

        DANKE
    • Drunkard
      LoxBus Spammer
      • 27.08.2015
      • 277

      #33
      Weiß jemand, ob ich die Werte von einem Landroid S Modell abgreifen kann?

      Kommentar


      • michli-max
        michli-max kommentierte
        Kommentar bearbeiten
        Einfach mal nach dem Post #32 selber testen
    • Michael Rene Maurer
      LoxBus Spammer
      • 25.08.2015
      • 221

      #34
      Hallo Leute, möchte mir den Worx Landroid Mähroboter M1000i

      Link:https://www.obi.at/maehroboter/worx-...000i/p/3189917

      zulegen, kann man bei disem Gerät auch eine Verbindung mit dem MS herstellen?

      Danke für die Info
      LG Michi
      LG MRM

      Kommentar

      • Drunkard
        LoxBus Spammer
        • 27.08.2015
        • 277

        #35
        Ich lasse mir jetzt per iobroker und node-red ein paar Werte vom Landroid S in der Loxone Visu anzeigen. Es sind noch deutlich mehr möglich. Werde demnächst auch noch versuchen den Robi darüber zu starten und stoppen.

        Kommentar


        • sonorobby
          sonorobby kommentierte
          Kommentar bearbeiten
          Wie genau machst du das?

        • michli-max
          michli-max kommentierte
          Kommentar bearbeiten
          Kannst du mal das Icon vom Mäher das du in der Visu verwendest teilen.
      • Drunkard
        LoxBus Spammer
        • 27.08.2015
        • 277

        #36
        ioBroker holt die Werte vom Roboter. Von dort werden sie über node-red an einen virtuellen Eingang an Loxone weitergegeben.

        Kommentar

        • andineu
          Dumb Home'r
          • 16.09.2015
          • 29

          #37
          Hallo Zusammen Erst mal total klasse das How to
          Funktioniert alles super

          Ich hab nur eine Frage: würde gerne den Regensensor auslesen.

          Das bekomme ich im explorer angezeigt:

          {"landroid":{"state":"home","boardTemperature": 8.4 ,"distance":-72280,"wheelLeftDistance":-144552,"wheelRightDistance":-9,"angle":-25096,"rainSensor":3838,"aree":{"index":0,"vet":[1,1,1,1,1,1,1,1,1,1]},"battery":{"percentage":100,"voltage":27.33,"t em perature":3.2,"ntcResistance":23900},"batteryCharg er":{"state":"idle","chargeCurrent":0.00},"accel er ometer":{"gravity":[0.043,0.064,1.006],"angle":[1.000000,3.000000,0.000000]},"gyroscope":{"angularSpeed":[-0.760,1.159,5.556],"angle":[-14358500.000000,22793490.000000,1867970.750000]},"motor":[{"speed":0,"maxSpeed":51,"speedReduction":0,"rp m": 0,"feedbackError":0,"acceleration":100,"decelera ti on":220,"fault":false},{"speed":0,"maxSpeed":51, "s peedReduction":0,"rpm":0,"feedbackError":0,"accele ration":100,"deceleration":220,"fault":false},{"sp eed":0,"maxSpeed":92,"speedReduction":0,"rpm":0," f eedbackError":0,"acceleration":100,"deceleration": 250,"fault":false}],"guide":{"straightSpeed":0,"turningSpeed":0,"m eas uredWheelDeltaDistance":0,"requiredWheelDeltaDista nce":0,"deltaSpeedCorrection":0}},"id":{"stop1":f a lse,"stop2":false,"lift1":false,"lift2":false,"tra ppedLeft":false,"trappedRight":false,"door1":false ,"door2":false},"dipSw":{"sw1":false,"sw2":fals e," sw3":false,"sw4":false},"wireSensor":{"fwVer":0.7 0 ,"left":"inside","right":"outside"}}



          Und würde gerne den "rainSensor":3838" als Status einlesen

          Bei Loxone kommt aber nur eine "51" an ????

          Virtueller Eingang: http://mein pw :mein benutzer @"Worxy IP"/jsonDebug.cgi

          Befehlserkennung: \i"rainSensor":\i\1


          Habt ihr eine Idee was ich falsch mache?

          Vielen dank für eure Hilfe

          Gruss Andi
          Zuletzt geändert von andineu; 28.10.2018, 07:01.

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5159

            #38
            andineu
            Hallo,
            Versuchs mal mit:
            \i"rainSensor":\i\v
            oder noch einfacher mit
            rainSensor":\v

            Woran könnte es auch noch liegen:
            Der Wert kommt erst nach der Zeit welche im Abfragezyklus eingestellt ist.
            Du musst Dir die Rohdaten anzeigen lassen.
            lg Romildo

            Kommentar

            • svethi
              Lebende Foren Legende
              • 25.08.2015
              • 6318

              #39
              Nö, am Abfragezyklus scheitert es nicht. Er fragte nach dem 1. Byte, da hat er bekommen. 3 -> (ASCII) 51.
              Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

              Kommentar

              • romildo
                Lebende Foren Legende
                • 25.08.2015
                • 5159

                #40
                svethi
                Wo Du recht hast, hast Du recht

                Der Wert könnte aber auch ein Relikt von anderen Versuchen sein.
                Der Wert wird dann erst wieder erneuert wenn eine Befehlserkennung auch vorhanden ist.
                Daher sollte er meine Vorschläge in#38 von oben nach unten abarbeiten
                lg Romildo

                Kommentar

                • andineu
                  Dumb Home'r
                  • 16.09.2015
                  • 29

                  #41
                  Hallo zusammen es klappt Danke

                  \i"rainSensor":\i\v

                  Jetzt kann des nächste heiße und trockene Sommer kommen!!!

                  Danke Gruss Andi

                  Kommentar

                  • andineu
                    Dumb Home'r
                    • 16.09.2015
                    • 29

                    #42
                    Mist und bei dem zweiten brauch ich schon wider Hilfe

                    wie kann ich die 3 Beschleunigungswerte einzel einlesen

                    "gravity":[0.043,0.064,1.006]

                    Nochmals VIELEN DANK
                    Gruss Andi

                    Kommentar

                    • romildo
                      Lebende Foren Legende
                      • 25.08.2015
                      • 5159

                      #43
                      Es bringt Dir ja nichts, wenn wir Dir jetzt jede Abfrage zeigen.
                      Schau dir mal die Dokumentation dazu an und überleg doch mal wie das gehen könnte.
                      Die Vorgehensweise unterscheidet sich ja nicht von der vorherigen Frage bezüglich Regensensor.

                      Wenn Du nicht weiterkommst, dann zeigst Du wie Du es versucht hast und sagst uns was Dir nicht klar ist.
                      lg Romildo

                      Kommentar

                      • andineu
                        Dumb Home'r
                        • 16.09.2015
                        • 29

                        #44
                        OK danke, geht klar.

                        Ich schau mir das an und melde mich dann nochmal

                        vielleicht klappt es ja ;D..... OK der erst geht ( danke für die Beschreibung die ist echt hilfreich)
                        Mal sehe wie ich den ersten jetzt überspringe

                        OK ich hab es gerafft
                        gravity":[\v
                        gravity":[\s6\v
                        gravity":[\s12\v

                        Echt super
                        Gruss Andi
                        Zuletzt geändert von andineu; 28.10.2018, 20:56.

                        Kommentar

                        • LJSven
                          Extension Master
                          • 28.01.2016
                          • 136

                          #45
                          Ich habe alles so eingegeben, wie du es vorgemacht hast - allerdings läuft er nicht los. Hast du eine Idee? Wenn ich den Befehl

                          curl -X POS "http://admin:1708@192.168.2.45/jsondata.cgi" -d 'data=[["settaggi",11,1]]'

                          eingebe - funktioniert es.

                          Kommentar


                          • LJSven
                            LJSven kommentierte
                            Kommentar bearbeiten
                            Wo ist denn der Fehler bei mir? Sehe nichts.

                          • romildo
                            romildo kommentierte
                            Kommentar bearbeiten
                            Ich hab nicht alles verglichen aber:
                            HTTP-Erweiterung bei EIN:Content-Type: application/x-www-form-urlencoded\nAccept: application/json
                            und
                            HTTP-Erweiterung bei EIN:application/x-www-form-urlencoded\nAccept: application/json
                            ist doch nicht das Gleiche.

                          • LJSven
                            LJSven kommentierte
                            Kommentar bearbeiten
                            Du hast recht! Sorry, mein Fehler. Jetzt geht es!
                        Lädt...