Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]Homepilot JSON einlesen

NEWS

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

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

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

[gelöst]Homepilot JSON einlesen

[gelöst]Homepilot JSON einlesen

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 4 Posters 3.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    pix
    wrote on last edited by
    #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 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #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 Reply Last reply
      0
      • P Offline
        P Offline
        pix
        wrote on last edited by
        #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 Reply Last reply
        0
        • Y Offline
          Y Offline
          ykuendig
          wrote on last edited by
          #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 Reply Last reply
          0
          • P Offline
            P Offline
            pix
            wrote on last edited by
            #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 Reply Last reply
            0
            • A Offline
              A Offline
              Alexxx2005
              wrote on last edited by
              #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 Reply Last reply
              0
              • P Offline
                P Offline
                pix
                wrote on last edited by
                #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 Reply Last reply
                0
                • A Offline
                  A Offline
                  Alexxx2005
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  407

                  Online

                  32.4k

                  Users

                  81.3k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe