Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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]Homepilot JSON einlesen

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.1k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.2k

[gelöst]Homepilot JSON einlesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 4 Kommentatoren 3.5k 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich steh irgendwie auf dem Schlauch. Nachdem der Node-Red Adapter bei mir zu Zeit spinnt, versuche ich einige der Flows direkt in JavaScript zu realisieren. Nach diesem Vorbild (http://forum.iobroker.net/viewtopic.php?f=21&t=880&sid=968c7f80b8566ec431d300d339231afc) habe ich vor, die JSON Datei meines Hompilot einzulesen. Es sind nur zwei Devices angelernt (zwei Rollläden), deren Position ich in Objekten speichern will.

    JSON Datei: http://homepilot.local/deviceajax.do?devices=1

    ! ````
    { "response" : "get_visible_devices", "status" : "ok", "devices" : [{"did":10000,"name":"Rollo SZ links","description":"Rollotron Standard Schlafzimmer linkes Fenster","initialized":1,"position":80,"productName":"RolloTron Standard","serial":"40","statusesMap":{"Position":80,"Manuellbetrieb":1},"status_changed":1435843704,"deviceGroup":2,"iconSet":{"name":"Rollladen 2","description":"Rollladen Icon-Set mit Streben","strMin":"Auf","strMax":"Zu","valMax":100,"valMin":0,"sprite":{ "imageUri" : "images/sets/rollladen2.png", "numTiles" : 5 },"k":"iconset15"},"iconSetInverted":0,"paired":0,"statusValid":true,"uid":"40 59 0A","visible":true,"groups" : [ ] ,"favoredId":5003,"properties":{"generic":3,"wind":3,"trigger":3,"closingContact":3,"dusk":3,"smoke":3,"sun":3,"temperature":3,"manual":3,"time":3,"dawn":3,"dust":3,"favored":0,"smartphone":3,"motion":3,"temperator":3,"warning":3,"rain":3,"states":[{"cfgKey":"setEveningAuto","cfgId":107,"state":0},{"cfgKey":"setSunAuto","cfgId":105,"state":0},{"cfgKey":"setTimeAuto","cfgId":101,"state":0},{"cfgKey":"setAutomationOverall","cfgId":99,"state":1},{"cfgKey":"setMorningAuto","cfgId":103,"state":0}]},"sortId":914,"sTypes":[],"version":"1.2","sync":-2147481675,"messages":[],"hasErrors":0,"autos":[3,2,0,1,4]},{"did":10001,"name":"Rollo SZ rechts","description":"Rollotron Standard Schlafzimmer rechtesFenster","initialized":1,"position":88,"productName":"RolloTron Standard","serial":"40","statusesMap":{"Position":88,"Manuellbetrieb":0},"status_changed":1435843708,"deviceGroup":2,"iconSet":{"name":"Rollladen 2","description":"Rollladen Icon-Set mit Streben","strMin":"Auf","strMax":"Zu","valMax":100,"valMin":0,"sprite":{ "imageUri" : "images/sets/rollladen2.png", "numTiles" : 5 },"k":"iconset15"},"iconSetInverted":0,"paired":0,"statusValid":true,"uid":"40 58 EA","visible":true,"groups" : [ ] ,"favoredId":5002,"properties":{"generic":3,"wind":3,"trigger":3,"closingContact":3,"dusk":3,"smoke":3,"sun":3,"temperature":3,"manual":3,"time":3,"dawn":3,"dust":3,"favored":0,"smartphone":3,"motion":3,"temperator":3,"warning":3,"rain":3,"states":[{"cfgKey":"setEveningAuto","cfgId":107,"state":0},{"cfgKey":"setSunAuto","cfgId":105,"state":0},{"cfgKey":"setTimeAuto","cfgId":101,"state":0},{"cfgKey":"setAutomationOverall","cfgId":99,"state":0},{"cfgKey":"setMorningAuto","cfgId":103,"state":0}]},"sortId":915,"sTypes":[],"version":"1.2","sync":-2147481767,"messages":[],"hasErrors":0,"autos":[3,2,0,1,4]}] }

    
    Dies ist mein kläglicher Versuch mt JSON.parse, der aber nicht läuft. Was ist falsch?
    
    

    /* Homepilot einlesen

    Homepilot Daten in JS Variablen schreiben

    erstellt: 02.07.2015 von Pix
    */

    createState('Homepilot.json');
    createState('Homepilot.Rollladen.Schlafzimmer.links.Level');
    createState('Homepilot.Rollladen.Schlafzimmer.rechts.Level');

    var link = 'http://homepilot.local/deviceajax.do?devices=1';

    function readHomepilot() {
    log('Start Homepilot Daten einlesen');
    var request = require('request');

    request(link, function (error, response, body) {
        if (!error && response.statusCode == 200) {
    
            JSON.parse(body, {
                explicitArray: false,
                mergeAttrs: true
            },
            function (err, result) {
                var data = JSON.stringify(result, null, 2);
                log(data);
                setState("javascript.0.Homepilot.json", data);
    
                if (err) {
                    log("Fehler: " + err);
                } else {     
                    log('Kein Fehler :-D');
                    setState("javascript.0.Homepilot.Rollladen.Schlafzimmer.links.Level", result.devices[0].position); // device 10000
                    setState("javascript.0.Homepilot.Rollladen.Schlafzimmer.rechts.Level", result.devices[1].position); // device 10001
                }
            });
        } else {
            log('Fehler:' + error);
        }
    
    });   // Ende request 
    log('Daten aus Homepilot eingelesen');
    

    }

    schedule("*/1 * * * *", readHomepilot);
    readHomepilot();

    
    Ich brauche die Devices nicht durchzuiterieren. Wenn man später mal einen Adapter baut, kann das sinnvoll sein. Die manuelle Abfrage über __result.devices[x].position__ reicht mir.
    
    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
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      Irgendwie strange versuchst du JSON.parse zu benutzen:

      /* Homepilot einlesen
      
      Homepilot Daten in JS Variablen schreiben
      
      erstellt: 02.07.2015 von Pix
      */
      var request = require('request');
      createState('Homepilot.json');
      createState('Homepilot.Rollladen.Schlafzimmer.links.Level');
      createState('Homepilot.Rollladen.Schlafzimmer.rechts.Level');
      
      var link = 'http://homepilot.local/deviceajax.do?devices=1';
      
      function readHomepilot() {
          log('Start Homepilot Daten einlesen');
          var request = require('request');
      
          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);
                      log(data);
                      setState("javascript.0.Homepilot.json", data);
                      log('Kein Fehler :-D');
                  } catch (e) {
                      log('Parse Fehler:' + e);
                  }    
                  if (result) {
                      setState("javascript.0.Homepilot.Rollladen.Schlafzimmer.links.Level", result.devices[0].position); // device 10000
                      setState("javascript.0.Homepilot.Rollladen.Schlafzimmer.rechts.Level", result.devices[1].position); // device 10001
                  }
              } else {
                  log('Fehler:' + error);
              }
      
          });   // Ende request 
          log('Daten aus Homepilot eingelesen');
      }
      
      schedule("*/1 * * * *", readHomepilot); 
      readHomepilot();
      
      
      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #3

        Hallo Bluefox,

        try und catch sagen mir gar nix. Jedenfalls geht es jetzt wunderbar. Ist mir erstmal lieber, als länger auf node-red zu setzen.

        Vielen Dank für die schnelle Hilfe!

        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
        • Y Offline
          Y Offline
          ykuendig
          schrieb am zuletzt editiert von
          #4

          Er hat das Script etwas zerlegt, und das Ergebnis von JSON.parse in eine Variable (result) überführt um damit zu arbeiten.

          Mit 'try' wird versucht die nachfolgenden Befehle abzuarbeiten. Sollte ein Fehler auftreten, soll nicht das ganze Script sterben, sondern der Fehler mit 'catch' abgefangen werden. Dort wird in Deinem Fall ein erklärender Log-Eintrag erzeugt.

          Gruss Yves

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

            Danke für die Erklärung. Ich lerne nie aus.

            Allerdings habe ich festgestellt, dass das Skript so deutlich mehr Ressourcen braucht, als der Node-Red Flow. Bei 15sekündlicher Ausführung ging auf dem MacMini der Lüfter an und die cpu Auslastung auf 100%.

            Eigentlich reicht eine Ausführung pro Minute, aber in Node Red waren alle 10s kein Problem.

            Vielleicht schaffe ich es irgendwann, einen Adapter draus zu bauen.

            Gruß

            Pix

            Gesendet von meinem iPhone mit Tapatalk

            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
            • A Offline
              A Offline
              Alexxx2005
              schrieb am zuletzt editiert von
              #6

              Hallo Pix,

              kannst du bitte erklären wo man den Code im Javascript Engine einfügen

              muss komme da nicht weiter, danke.

              Grüße Alex

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

                Hallo Alex,

                So wie hier beschrieben.

                http://forum.iobroker.net/viewtopic.php?t=2011#p17349

                Gruß,

                Pix

                Gesendet mit Tapatalk

                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
                • A Offline
                  A Offline
                  Alexxx2005
                  schrieb am zuletzt editiert von
                  #8

                  Hallo Pix,

                  Danke,

                  der Heftrücken hat noch gefehlt in der Beschreibung

                  nun bekomme ich eine Position ermittelt allerdings

                  stimmt die nicht.

                  Er zeigt mir 100% an obwohl 80 oder 0 sind und das

                  auch noch 5 min. später , hast du da eine Idee an was

                  das liegt

                  1 Antwort Letzte Antwort
                  0

                  Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                  Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                  Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                  Registrieren Anmelden
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  482

                  Online

                  33.0k

                  Benutzer

                  83.6k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2026
                  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