Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]Roomba xml oder json Datei auslesen und auswerten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

[gelöst]Roomba xml oder json Datei auslesen und auswerten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 2 Kommentatoren 1.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • coyoteC Offline
    coyoteC Offline
    coyote
    Most Active
    schrieb am zuletzt editiert von
    #1

    Morgen,

    ich möchte gerne eine xml oder json Datei (was einfacher ist) vom Roowifi Modul auslesen und auswerten. Entweder in eine kleine Tabelle oder lieber noch in einzelne Datenpunkte, da ich nicht alle Daten benötige.

    Wichtig wären zum Beispiel erst mal Ladestatus, Strom, Temperatur.

    Die xml sieht so aus:

    ! <response><r0><name>'Bumps Wheeldrops'</name>
    ! <value>3</value></r0>
    ! <r1><name>'Wall'</name>
    ! <value>0</value></r1>
    ! <r2><name>'Cliff Left'</name>
    ! <value>0</value></r2>
    ! <r3><name>'Cliff Front Left'</name>
    ! <value>0</value></r3>
    ! <r4><name>'Cliff Front Right'</name>
    ! <value>0</value></r4>
    ! <r5><name>'Cliff Right'</name>
    ! <value>0</value></r5>
    ! <r6><name>'Virtual Wall'</name>
    ! <value>0</value></r6>
    ! <r7><name>'Motor Overcurrents'</name>
    ! <value>0</value></r7>
    ! <r8><name>'Dirt Detector - Left'</name>
    ! <value>0</value></r8>
    ! <r9><name>'Dirt Detector - Right'</name>
    ! <value>0</value></r9>
    ! <r10><name>'Remote Opcode'</name>
    ! <value>0</value></r10>
    ! <r11><name>'Buttons'</name>
    ! <value>0</value></r11>
    ! <r12><name>'Distance'</name>
    ! <value>0</value></r12>
    ! <r13><name>'Angle'</name>
    ! <value>0</value></r13>
    ! <r14><name>'Charging State'</name>
    ! <value>3</value></r14>
    ! <r15><name>'Voltage'</name>
    ! <value>16198</value></r15>
    ! <r16><name>'Current'</name>
    ! <value>-47</value></r16>
    ! <r17><name>'Temperature'</name>
    ! <value>27</value></r17>
    ! <r18><name>'Charge'</name>
    ! <value>2696</value></r18>
    ! <r19><name>'Capacity'</name>
    ! <value>2696</value></r19></response>

    Dis json so:

    ! "response": {
    ! "r0": {
    ! "name": "Bumps Wheeldrops",
    ! "value": "3"
    ! },
    ! "r1": {
    ! "name": "Wall",
    ! "value": "0"
    ! },
    ! "r2": {
    ! "name": "Cliff Left",
    ! "value": "0"
    ! },
    ! "r3": {
    ! "name": "Cliff Front Left",
    ! "value": "0"
    ! },
    ! "r4": {
    ! "name": "Cliff Front Right",
    ! "value": "0"
    ! },
    ! "r5": {
    ! "name": "Cliff Right",
    ! "value": "0"
    ! },
    ! "r6": {
    ! "name": "Virtual Wall",
    ! "value": "0"
    ! },
    ! "r7": {
    ! "name": "Motor Overcurrents",
    ! "value": "0"
    ! },
    ! "r8": {
    ! "name": "Dirt Detector - Left",
    ! "value": "0"
    ! },
    ! "r9": {
    ! "name": "Dirt Detector - Right",
    ! "value": "0"
    ! },
    ! "r10": {
    ! "name": "Remote Opcode",
    ! "value": "0"
    ! },
    ! "r11": {
    ! "name": "Buttons",
    ! "value": "0"
    ! },
    ! "r12": {
    ! "name": "Distance",
    ! "value": "0"
    ! },
    ! "r13": {
    ! "name": "Angle",
    ! "value": "0"
    ! },
    ! "r14": {
    ! "name": "Charging State",
    ! "value": "3"
    ! },
    ! "r15": {
    ! "name": "Voltage",
    ! "value": "16198"
    ! },
    ! "r16": {
    ! "name": "Current",
    ! "value": "-47"
    ! },
    ! "r17": {
    ! "name": "Temperature",
    ! "value": "27"
    ! },
    ! "r18": {
    ! "name": "Charge",
    ! "value": "2696"
    ! },
    ! "r19": {
    ! "name": "Capacity",
    ! "value": "2696"
    ! }
    ! }
    ! }

    Die xml/json wird einfach über http://IP_des_Moduls/roomba.xml oder roomba.json angefragt.

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      Hallo coyote,

      hast du die Suche mal bemüht? Es gibt sogar einen Adapter:

      http://forum.iobroker.net/viewtopic.php … ifi#p14982

      Wenn du dir den ansiehst, findest auch ein paar Befehle für ein Skript: https://github.com/hometm/ioBroker.room ... omba-rw.js

      Gruß

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • coyoteC Offline
        coyoteC Offline
        coyote
        Most Active
        schrieb am zuletzt editiert von
        #3

        Hallo Pix,

        doch den Adapter kenne ich schon und habe ich auch installiert, nur komme ich damit nicht richtig klar. Schau mal in meinen Screenshot mit den Datend es Adapter. Bei Temperatur steht 217 drin? Was ist 217? Die Temperatur beträgt momentan 27°C

        Wenn der Adapter läuft sind auch die Daten auf der Web Page des Roowifi Moduls leer, denke das Teil kommt dann mit beiden Anfragen nicht klar.

        Gut ok, in die JS des Adapters hab ich noch nicht geschaut.

        Trotzdem interessiert es mich generell, wie ich eine xml/json auslesen könnte um diese weiter zu verarbeiten. Ich möchte gerne nur ein paar Daten der Seite zyklisch abrufen und dann in VIS darstellen

        536_roomba.png

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #4

          Hallo coyote,

          hier ist das Beispiel für den Homepilot Adapter: http://forum.iobroker.net/viewtopic.php … esen#p7494

          Ich wandel das mal ab für den Roofi:

          ! ````
          /* Roofi einlesen
          Roofi Modul Daten in JS Variablen schreiben
          02.07.2015 erstellt von Pix für Homepilot
          26.08.2016 angepasst für Roofi
          */
          ! var ip = 'xxx.xxx.xxx.xxx'; // IP des Moduls eintragen
          var logging = true; // Weniger Log Ausgaben mit false
          ! // ab hier nix mehr ändern
          var request = require('request');
          ! createState('Roomba.json', {
          def: '',
          read: true,
          write: true,
          desc: 'JSON Ausgabe des RooWifi Moduls',
          name: 'Roofi JSON',
          type: 'string'
          });
          createState('Roomba.Distance', {
          def: 0,
          read: true,
          write: true,
          desc: 'RooWifi Entfernung',
          name: 'Distance',
          type: 'number',
          unit: 'mm'
          });
          createState('Roomba.Angle', {
          def: 0,
          read: true,
          write: true,
          desc: 'RooWifi Richtung',
          name: 'Angle',
          type: 'number',
          unit: '°'
          });
          createState('Roomba.Temperature', {
          def: 0,
          read: true,
          write: true,
          desc: 'RooWifi Temperatur',
          name: 'Temperature',
          type: 'number',
          unit: '°C'
          });
          ! function readRoofi() {
          var link = 'http://' + ip + '/roomba.json';
          log('Start Roofi Daten einlesen');
          request(link, function (error, response, body) {
          if (!error && response.statusCode == 200) {
          var result;
          try{
          result = JSON.parse(body);
          var data = JSON.stringify(result, null, 2);
          if (logging) log(data);
          setState('Roomba.json', data);
          if (logging) log('Kein Fehler beim Einlesen des Roofi Moduls:-D');
          } catch (e) {
          log('Parse Fehler (Roofi Modul):' + e);
          }
          if (result) {
          setState('Roomba.Distance', result.response.r12.value);
          setState('Roomba.Angle', result.response.r13.value);
          setState('Roomba.Temperature', result.response.r17.value);
          // hier entsprechend erweitern

                      // Logging nur zu Testzwecken nötig
                      if (logging) log('Roofi Distanz: ' + result.response.r12.value + 'mm');
                      if (logging) log('Roofi Richtung: ' + result.response.r13.value + '°');
                      if (logging) log('Roofi Temperatur: ' + result.response.r17.value + '°C');
                  }
              } else log('Fehler (Roofi Abfrage: ' + error);
          });   // Ende request 
          log('Daten aus Roofi Modul eingelesen');
          

          }

          ! // Minütlich
          schedule("*/1 * * * *", readRoofi);
          ! // 15 Sekundenabstände
          //schedule({second: [5, 20, 35, 50]}, readRoofi);
          ! // Skriptstart
          readRoofi();
          ! ````
          Erstmal zum Test und zur Veranschaulichung gibt es die Abfragen von drei Werten. Evtl. Musst du das Skript einmal neustarten, damit die States angelegt werden.

          Viel Spaß und Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • coyoteC Offline
            coyoteC Offline
            coyote
            Most Active
            schrieb am zuletzt editiert von
            #5

            Danke Dir Pix, das sieht sehr gut aus, damit kann ich arbeiten. Genau so hatte ich mir das vorgestellt.

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            797

            Online

            32.4k

            Benutzer

            81.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe