Ankündigung

Einklappen
Keine Ankündigung bisher.

X1 Web Request auf XML Parser (Robonect Modul für Gardena in Gira X1 einbinden)

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

    X1 Web Request auf XML Parser (Robonect Modul für Gardena in Gira X1 einbinden)

    Hallo zusammen,

    ich würde gerne meinen Gardena Rasenmäher irgendwie in meine Visualisierung auf dem Gira X1 mit einbinden. Leider fehlt mir im Moment der Anknüpfungspunkt, was ich falsch mache. Ich muss dazu sagen, dass ich keine Programmierkenntnisse o.ä. habe, mich aber als halbwegs technisch versierten Endnutzer beschreiben würde. Zumindest habe ich es hinbekommen, unser EFH über die ETS selbst einzurichten und auch ein paar Logiken über den GPA selbst erstellt (z.B. Garagentore, die nur über Impulstaster öffnen/stoppen/schließen mit einem Binärkontakt versehen und jetzt separate Schalter für Hoch & Runter)

    Für den Gardena Rasenmäher habe ich mir das Robonect WLAN Modul gekauft. Dieses verfügt über eine XML-Schnittstelle, die ich auch über den webbrowser erreiche und daten abrufen kann. Ergebnisse siehe erster Screenshot. Wenn ich jetzt versuche, die Daten über den Webrequest Baustein abzurufen, funktioniert das noch. Den Ausgang habe ich im Logikblatt mit dem XML/JSON-Parser verknüpft, doch dieser sagt mir jetzt:

    "Laufzeitfehler: Der Ausdruck muss in einem Knotensatz resultieren" -> Damit kann ich leider überhaupt nichts anfangen und auch mein Freund google bringt mich hier nicht weiter.

    Der Befehl für den Webrequest Baustein lautet: http://192.168.178.77/xml?cmd=status -> über "antwort" bekomme ich auch etwas angezeigt. Probleme gibt es dann, wenn ich diese "Antwort" auf den Input beim XML/JSON-Parser Baustein ziehe.

    Hat jemand eine Idee, was ich falsch mache?

    Vielen Dank!

    You do not have permission to view this gallery.
    This gallery has 2 photos.

    #2
    Du musst halt für die Pfade was gültiges eingeben ... welche acht Parameter möchtest Du denn aus dem XML extrahiert haben?

    Kommentar


      #3
      Was meinst du mit "was gültiges eingeben" - hast du hierfür ein Beispiel ? Die 8 war Zufall, nachdem es bei einem nicht ging, dachte ich das es vielleicht mehr sein müssten... mir würde für den anfang ja reichen, wenn ich den betriebsstatus sehe.

      Kommentar


        #4
        Zitat von Dabu83 Beitrag anzeigen
        Was meinst du mit "was gültiges eingeben" - hast du hierfür ein Beispiel ?
        Beispiele finden sich in der Anleitung zum Baustein.

        Zitat von Dabu83 Beitrag anzeigen
        Die 8 war Zufall, nachdem es bei einem nicht ging, dachte ich das es vielleicht mehr sein müssten...
        Ich glaube, Du hast grundlegend nicht verstanden, wie der Baustein funktioniert. Hast Du denn die Anleitung mal gelesen? Dieser kannst Du entnehmen, dass Du für jeden Ausgang festlegen musst, welchen Datenschnipsel aus dem XML-Baum Du dort ausgegeben bekommen möchtest. Dazu gibst Du den Pfad zu diesem Datenschnipsel in XPath-Syntax ein.

        Hier in aller Kürze: Fang mal mit nur einem Pfad an: /robonect/status/status
        und lass Dir den "ersten Treffer als Zahl" ausgeben.

        Kommentar


          #5
          Zitat von hyman Beitrag anzeigen
          Hier in aller Kürze: Fang mal mit nur einem Pfad an: /robonect/status/status
          und lass Dir den "ersten Treffer als Zahl" ausgeben.
          Und wenn Du die Zahl hast, dann machst Du mit dem Textformatierer weiter und versuchst das hier:

          Wert 0 = Status wird ermittelt
          Wert 1 = Automower parkt
          Wert 2 = Automower mäht
          Wert 3 = Automower sucht die Ladestation
          Wert 4 = Automower lädt
          Wert 5 = Automower sucht (wartet auf das Umsetzen im manuellen Modus)
          Wert 7 = Fehlerstatus
          Wert 8 = Schleifensignal verloren
          Wert 16 = Automower abgeschaltet
          Wert 17 = Automower schläft

          mal einzubauen.

          Damit hättest Du mal den Status sauber ausgelesen. Dann kannst Du ja mit dem Messerstatus mal weitermachen und diesen als 2. Wert auslesen.

          Die Anleitung der Bausteine ist gut und hilfreich.

          Kommentar


            #6
            Und anstatt Du den Status Deines Mähroboters immer nur siehst wenn Deine Frau duscht, solltest Du einen Trigger einrichten (Oszillator), der Dir den Status alle x-Minuten generiert. 😊

            Kommentar


              #7
              Zitat von hyman Beitrag anzeigen
              Beispiele finden sich in der Anleitung zum Baustein.


              Ich glaube, Du hast grundlegend nicht verstanden, wie der Baustein funktioniert. Hast Du denn die Anleitung mal gelesen? Dieser kannst Du entnehmen, dass Du für jeden Ausgang festlegen musst, welchen Datenschnipsel aus dem XML-Baum Du dort ausgegeben bekommen möchtest. Dazu gibst Du den Pfad zu diesem Datenschnipsel in XPath-Syntax ein.

              Hier in aller Kürze: Fang mal mit nur einem Pfad an: /robonect/status/status
              und lass Dir den "ersten Treffer als Zahl" ausgeben.
              Super danke. Das war genau das, was mir fehlte. Mir war nicht bewusst, dass die XML Ausgabe in < > dann als Pfad gilt, den ich mit / eingebe. Das habe ich auf die schnelle auch nicht in der Anleitung zum Baustein gesehen. Also im Prinzip eine Deppenfrage

              Kommentar


                #8
                Zitat von araeubig Beitrag anzeigen

                Und wenn Du die Zahl hast, dann machst Du mit dem Textformatierer weiter und versuchst das hier:

                Wert 0 = Status wird ermittelt
                Wert 1 = Automower parkt
                Wert 2 = Automower mäht
                Wert 3 = Automower sucht die Ladestation
                Wert 4 = Automower lädt
                Wert 5 = Automower sucht (wartet auf das Umsetzen im manuellen Modus)
                Wert 7 = Fehlerstatus
                Wert 8 = Schleifensignal verloren
                Wert 16 = Automower abgeschaltet
                Wert 17 = Automower schläft

                mal einzubauen.

                Damit hättest Du mal den Status sauber ausgelesen. Dann kannst Du ja mit dem Messerstatus mal weitermachen und diesen als 2. Wert auslesen.

                Die Anleitung der Bausteine ist gut und hilfreich.
                Bekomme ich die Übersetzung der Werte irgendwo gesammelt? Robonect Forum z.B. oder gibt es eine Hilfedatei hierfür? Denke, wenn mich die 3 Chaoten hier zu Hause am Wochenende in Ruhe lassen, kann ich das mal in Ruhe angehen. Ich hätte z.B. gerne in der App einfach einen Knopf, mit dem ich den Rasenmäher manuell starten kann, wenn das Wetter es zulässt.

                Kommentar


                  #9
                  Zitat von Dabu83 Beitrag anzeigen

                  Bekomme ich die Übersetzung der Werte irgendwo gesammelt? Robonect Forum z.B. oder gibt es eine Hilfedatei hierfür? Denke, wenn mich die 3 Chaoten hier zu Hause am Wochenende in Ruhe lassen, kann ich das mal in Ruhe angehen. Ich hätte z.B. gerne in der App einfach einen Knopf, mit dem ich den Rasenmäher manuell starten kann, wenn das Wetter es zulässt.
                  Die von mir genannten Werte entstammen einer kurzen Google Suche. Weiteres solltest Du im entsprechenden Forum finden. Genauso wie den manuellen Start hier.

                  Kommentar


                    #10
                    Unbenannt.PNG

                    Um den Status zu ermitteln:
                    Web request -> http://x.x.x.x/xml?cmd=status -> Parser -> XML, Pfad: robonect/status/status; Erster Treffer als Zahl -> Dann Zahlen vergleichen und output generieren

                    Kommentar


                      #11
                      Zitat von Dabu83 Beitrag anzeigen
                      in der App einfach einen Knopf, mit dem ich den Rasenmäher manuell starten kann
                      Wie unsmart. Ob das Wetter passt und ob schon lange genug nicht mehr gemäht wurde, sollte das System doch selber wissen ...

                      Kommentar


                        #12
                        Ja, dass er bei Regen nicht rausfährt bekommt er auch ganz gut hin. Das Wetter holt er sich bei openweathermap. Aber wenn ich abends nach Hause komme und das Viech aufgrund von 4 Regengüssen den ganzen Tag in der Garage parkt und "Wetterpause" macht, will ich ihn halt irgendwann doch mal auf Knopfdruck vom Handy losschicken. Und das dann lieber aus der Gira App als über ein Webinterface.

                        Mal ganz generell, weil ich zu Hause zahlreiche Geräte habe, die irgendwie im WLAN hängen aber nicht in der Gira App: Reicht es für ein Gerät aus, dass es eine offene "API" gibt, damit ich dann (irgendwie) die Verbindung hergestellt bekomme über die Logiken oder erfordert das dann wirkliche Programmierkenntnisse? Gibt es irgendeine sinnvolle Lektüre, mit der man sich das so halbwegs aneignen kann oder eher keine Chance? Ich hab leider einen Job, der mich von 8 - 20 Uhr einspannt + 3 kleine Kinder, aber manchmal finde ich doch abends noch eine ruhige Minute. Mir fehlt bei dem Thema nur aktuell tatsächlich der Einstieg.

                        Ich habe z.B. eine Nibe Wärmepumpe (eigene App), eine Miele Waschmaschine (eigene App), Miele Kochfeld (eigene App), den Gardena Rasenmäher, eine Gira TKS Anlage (eigene App, was ich ehrlich gesagt schwach finde von Gira selbst), eine Telenot Alarmanlage (eigene App) und ein iRobot Staubsauger (eigene App).

                        Kann man allgemein sagen, dass die Grundvoraussetzung immer "API" wäre?

                        Kommentar


                          #13
                          Zitat von matthiaz Beitrag anzeigen
                          Unbenannt.PNG

                          Um den Status zu ermitteln:
                          Web request -> http://x.x.x.x/xml?cmd=status -> Parser -> XML, Pfad: robonect/status/status; Erster Treffer als Zahl -> Dann Zahlen vergleichen und output generieren

                          Hallo Matthiaz

                          das Logikblatt geht aber auch einfacher denke ich. Warum hast Du so viele Vergleicher und Auslöser drin? Das kannst Du doch alles mit dem Textformatierer alleine generieren.

                          Kommentar


                            #14
                            Moin!

                            Zitat von araeubig Beitrag anzeigen
                            das Logikblatt geht aber auch einfacher denke ich.
                            Das dachte ich mir auch. Bei mir sieht es momentan so aus:
                            Screenshot 2021-07-20 153048.jpg

                            Der obere Strang startet oder stoppt den Mähroboter. Der untere Strang fragt minütlich den Status des Mähroboters ab. Und zwar erhalte ich einmal den BinärStatus aktiv/inaktiv, den Status als Textausgabe parkt/schläft/Heimweg/lädt etc. und einmal den Batterieladestand.

                            Jetzt bin ich momentan noch dabei den BinärenStatus (Im Screenshot grün markiert) irgendwie auf meine X1 Variable zum starten/stoppen des Mähers zu bekommen, leider kann ich bei den internen X1 Variablen-Datenpunkten keine hörende Adresse angeben, damit mein Schalter in der X1 Visu auch der Wahrheit entspricht, wenn der Mäher per Timer gestartet wurde. Hier habe ich momentan noch keine Idee....


                            Gruß
                            Zuletzt geändert von Poeschie; 20.07.2021, 15:37.

                            Kommentar


                              #15
                              Hallo,

                              ich nochmal. Manchmal kommt einem die richtige Idee, wenn man über sein Problem schreibt. Um den richtigen Status nun als Rückmeldung an die Schaltvariable zum starten/stoppen des Mähers zu knüpfen habe ich nun nicht interne X1 Variablen-Datenpunkte verwendet, sondern normale Datenpunkte die über den Bus laufen. Somit kann ich eine hörende Adresse Verknüpfen und das ganze sollte funktionieren. Hier meine aktualisierte Logik, vielleicht hilft es ja dem ein oder anderen:

                              Screenshot 2021-07-20 162825.jpg


                              Gruß

                              Kommentar

                              Lädt...
                              X