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. [Frage] schedule('*/1 * * * *',?????); # eBus_read-f (Einzelwert)

NEWS

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

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

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

[Frage] schedule('*/1 * * * *',?????); # eBus_read-f (Einzelwert)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 414 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.
  • D Offline
    D Offline
    der_Auge
    schrieb am zuletzt editiert von
    #1

    //–----------------------------------------------------------------------

    // --- Quelle = http://forum.iobroker.net/viewtopic.php ... 205#p42405

    // --- Autor = Hoich

    // -----------------------------------------------------------------------

    Habe das Script etwas angepasst:

    ! ````
    // =============================================================================
    // 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 = true; // fales wenn nicht gewünscht
    var net = require('net'); //
    var element = 'StorageTemp';
    // ebusctl read -f StorageTemp
    // 51.19;ok
    // =============================================================================
    var req = 'read -f ' + element;
    var pfad = 'eBus.'+ element; // Pfad innerhalb der Instanz
    // =============================================================================
    // Datenpunkte anlegen
    // =============================================================================
    createState(pfad, 0, {name: 'eBus.' + element ,desc: 'Aktuelle Temperatur des Warmstartspeichers',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);
    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() {
    log('Connection to ebusd closed');
    });
    ! schedule('*/1 * * * *',data);

    Nun soll er jede Minute laufen
    
    schedule('*/1 * * * *',????);
    
    Wie muss die Zeile richtig aussehen?
    
    Gruß
    
    Jürgen

    Master: DN2820FYKH (4GB) Linux NUC 4.4.0-22-generic #40-Ubuntu x86_64

    Slave: Linux RPi2-1 4.1.19-v7+ #858 v4.4.3 # 2.15.1

    SQL-DB : Linux DS 3.10.77 #7321 x86_64 synology412+

    Test : DS916+ VM Debian

    Test : Tinker mit piVCCU

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Es fehlt die passende Funktion. Wie ich das sehe, muss die Verbindung wieder hergestellt und eine Anforderung gesendet werden.

      ...
      
      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);
      

      EDIT: Allerdings geht diese Funktion davon aus, dass die Verbindung jedesmal geschlossen wird (client.on('close',…). Ist das nicht der Fall, sollten die Variablen (oben im Skript) ergänzt werden

      var conn = false;
      

      Nach Herstellen der Verbindung dann

          if (logging) log('2\. Connected to ebusd on ' + host + ':' + port);
          conn = true;
          client.write(req + '\n');
          ...    
      
      

      Nach Schließen der Verbindung

      client.on('close', function() {
         conn = false;
         log('Connection to ebusd closed');
      });
      

      und Abfrage innerhalb der Funktion getData()

      function getData() {
        if(conn) {
           client.write(req + '\n');
           if (logging) log('TX-Befehl: "' + req + '" wird gesendet');
        } else {
           client.connect(port, host, function() {
              if (logging) log('Connected to ebusd on ' + host + ':' + port);
              conn = true; 
              client.write(req + '\n');
              if (logging) log('TX-Befehl: "' + req + '" wird gesendet');   
           });
        }   
      }
      
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        der_Auge
        schrieb am zuletzt editiert von
        #3

        Danke für die Tipps

        nun wird es sauber abgearbeitet.

        Nun kommt die nächste Baustelle dass ich gleich mehrere Werte abfrage (Array)

        Gruß

        Jürgen

        Master: DN2820FYKH (4GB) Linux NUC 4.4.0-22-generic #40-Ubuntu x86_64

        Slave: Linux RPi2-1 4.1.19-v7+ #858 v4.4.3 # 2.15.1

        SQL-DB : Linux DS 3.10.77 #7321 x86_64 synology412+

        Test : DS916+ VM Debian

        Test : Tinker mit piVCCU

        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

        686

        Online

        32.4k

        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