Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Hilfe bei Script zum auslesen von ebus Daten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hilfe bei Script zum auslesen von ebus Daten

    This topic has been deleted. Only users with topic management privileges can see it.
    • Steffen Sauer
      Steffen Sauer last edited by

      Hallo.
      Ich Probiere ach gerade mit Skripten aus dem Forum zum auslesen der ebus Daten rum.

      / =============================================================================
      // Auslesen von Einzelwerten vom eBusd
      // =============================================================================
      var root = 'eBus'; // root of state inside 'javascript.0'
      var host = 'RPi2-2'; // set to your host running ebusd
      var port = 8888; // default ebusd port
      var logging = false; // "true" oder "false" wenn nicht gewünscht
      var net = require('net'); //
      var conn = false;
      // =============================================================================
      var element = 'FlowTemp';
      // ebusctl read -f FlowTemp
      // 51.19;ok
      var req = 'read -f ' + element;
      var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz

      // =============================================================================
      // Datenpunkte anlegen
      // =============================================================================
      createState(pfad, 0, {name: "Vorlauftemperatur" ,rolle: 'value.temperature' ,type: 'string',unit: '°C'});
      
      // ----------------------------------------------------------  Start
      if (logging) log('1\. Start trying eBus abfrage');
      var client = new net.Socket();
      client.connect(port, host, function() {
      if (logging) log('2\. Connected to ebusd on ' + host + ':' + port);
      conn = true;
      client.write(req + '\n');
      if (logging) log('3\. TX-Befehl: "' + req + '" wird gesendet');
      });
      
      // =============================================================================
      // Funktion Daten abfragen
      // =============================================================================
      function parse(data) {
      var arr = data.toString().split(/\r?;/);            // wie viele Werte werden durch ";" getrennt
      if (logging) log("Menge  : " + arr.length);
      var fields = data.toString().split('\;');           // hier wird auf den = getriggert
      if (logging) log('Felder : ' + fields);
      if(fields.length > 1) {                         // wenn mehrere Felder gefunden wurden
      if (logging) log('WertVor : ' + fields[0]);
      var WertVor =fields[0];
      if (logging) log("WertNach: " + fields[1]);
      fields[0] = fields[0].replace(' ','_');
      if (logging) log("Feld 1 : " + fields[0]);
      if (logging) log("Feld 2 : " + fields[1]);
      setState(pfad, WertVor);                            // Werte setzen
      }
      }
      
      // =============================================================================
      // Daten abfragen
      // =============================================================================
      var databuf = '';
      client.on('data', function(data) {
      var prev = 0, next;
      var datastr = data.toString();
      if (logging) log("4\. RX-Daten : " + datastr);
      while ((next = datastr.indexOf('\n\n', prev)) > -1) {
      databuf += datastr.substring(prev, next);
      parse(databuf);
      databuf = '';
      prev = next + 1;
      }
      databuf += datastr.substring(prev);
      client.write('quit\n');
      });
      
      // =============================================================================
      // ? Ende
      // =============================================================================
      client.on('close', function() {
      conn = false;
      log('Connection to ebusd closed');
      });
      
      // =============================================================================
      // Funktion aufrufen
      // =============================================================================
      function getData() {
      client.connect(port, host, function() {
      if (logging) log('Connected to ebusd on ' + host + ':' + port);
      client.write(req + '\n');
      if (logging) log('TX-Befehl: "' + req + '" wird gesendet');
      });
      }
      
      schedule('*/1 * * * *', getData);
      

      Leider bisher ohne erfolg. Der entsprechende Beitrag ist auch schon ein wenig in die Jahre gekommen, Pfads dort keiner mehr antwortet. 🙈

      Die Daten als solche greife ich per MQTT ab. Das hier veröffentlichte Skript zur Einzelabfrage erstellt die Verzeichnisstruktur, holt den Wert ab aber bekommt ihn nicht gespeichert.

      18:10:05.727 info javascript.0 (4914) Start javascript script.js.Heizung.eBus.Einzelwert_test
      18:10:05.764 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: 1. Start trying eBus abfrage
      18:10:05.788 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: registered 0 subscriptions and 1 schedule
      18:10:05.793 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: 2. Connected to ebusd on iobroker3:8888
      18:10:05.795 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: 3. TX-Befehl: "read -f Hc1FlowTemp" wird gesendet
      18:10:06.584 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: 4. RX-Daten : 23
      18:10:06.586 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: Menge : 1
      18:10:06.587 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: Felder : 23
      18:10:06.619 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: 4. RX-Daten : connection closed
      18:10:06.620 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: Menge : 1
      18:10:06.622 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: Felder : connection closed
      18:10:06.637 info javascript.0 (4914) script.js.Heizung.eBus.Einzelwert_test: Connection to ebusd closed
      18:10:08.680 info javascript.0 (4914) Stop script script.js.Heizung.eBus.Einzelwert_test

      Unter Objekten steht dann immer 0 als Vorlauftemperatur.
      Weiß jemand wo der Fehler liegt?

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      894
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      1
      1
      362
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo