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. JavaScript
  5. Hilfe bei Script zum auslesen von ebus Daten

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    793

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

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

Hilfe bei Script zum auslesen von ebus Daten

Geplant Angeheftet Gesperrt Verschoben JavaScript
1 Beiträge 1 Kommentatoren 404 Aufrufe 1 Watching
  • Ä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.
  • Steffen SauerS Offline
    Steffen SauerS Offline
    Steffen Sauer
    schrieb am zuletzt editiert von
    #1

    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 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

    876

    Online

    32.5k

    Benutzer

    81.6k

    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