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. Verständnisfrage: Lineares Abarbeiten von Funktionen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    991

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Verständnisfrage: Lineares Abarbeiten von Funktionen

Geplant Angeheftet Gesperrt Verschoben JavaScript
node-redjavascript
4 Beiträge 2 Kommentatoren 373 Aufrufe 2 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.
  • S Offline
    S Offline
    Shai0Hulud
    schrieb am zuletzt editiert von
    #1

    Hallo, mit meinem Node-Red-Dashboard, welches die Infos von (jetzt noch) einer JS-Funktion erhält, bin ich erstmal zufrieden:

    81ede26c-1ab7-428a-b5c5-002e4bedad27-image.png

    Die Daten werden in einer JS-Funktion aufbereitet:

    // Datenpunkt-ID
        // Solar-Daten
    var idGetSolarprod = 'fritzdect.0.DECT_116570452148.power';
    var idSetSolarprodGZ = '0_userdata.0.Zuhause.SolarproduktionGZ';
    var idGetEinspeisung = 'shelly.0.SHPLG-S#7C87CEBA4615#1.Relay0.Power';
    var idSetEinspeisungGZ = '0_userdata.0.Zuhause.EinspeisungGZ';
    var idGetStromsaldo = 'sonoff.0.Hichi-SGM-1._Verbrauch_Aktuell';
    var idSetStromverbrauchGZ = '0_userdata.0.Zuhause.StromverbrauchGZ';
        // CPU-Daten
    var idGetCPUTakt = 'rpi2.0.cpu.cpu_frequency';
    var idSetCPUTaktString = '0_userdata.0.Zuhause.CPUTaktString';
    var idGetCPULast = 'rpi2.0.cpu.load1';
    var idSetCPULastProz = '0_userdata.0.Zuhause.CPULastProz';
    var idGetCPUTemp = 'rpi2.0.temperature.soc_temp';
    var idSetCPUTempGZ = '0_userdata.0.Zuhause.CPUTempGZ';
     
    // Berechnung aller Infodaten des Node-Red-Dashboards
    function NRDB() {
        var nSolProd = getState(idGetSolarprod).val;
        var nSolProdGZ = Math.trunc(nSolProd) * -1;
    
    	setState(idSetSolarprodGZ, nSolProdGZ, true);
    
        var nEin = getState(idGetEinspeisung).val;
        var nEinGZ = Math.trunc(nEin) * -1;
    
    	setState(idSetEinspeisungGZ, nEinGZ, true);
    
        var nStrSal = getState(idGetStromsaldo).val;
        var nSolProd = getState(idSetSolarprodGZ).val;
        var nEinspeis = getState(idSetEinspeisungGZ).val;
        
        var nStrVer = nStrSal - nSolProd - nEinspeis;
        var nStrVer = Math.trunc(nStrVer);
    
    	setState(idSetStromverbrauchGZ, nStrVer, true);
    
        var nCPUT = getState(idGetCPUTakt).val;
        if (nCPUT < 1000) { 
            var nCPUTS = nCPUT + ' MHz';
        } else {
            var nCPUTS = (nCPUT / 1000) + ' GHz';
            var nCPUTS = nCPUTS.replace(".",",");
        }
        
    	setState(idSetCPUTaktString, nCPUTS, true);
    
        var nCPUL = getState(idGetCPULast).val;
        var nCPULP = Math.trunc(nCPUL * 100);
    
    	setState(idSetCPULastProz, nCPULP, true);
    
        var nCPUT = getState(idGetCPUTemp).val;
        var nCPUTGZ = Math.trunc(nCPUT);
    
    	setState(idSetCPUTempGZ, nCPUTGZ, true);
    }
    
    // Aufruf der Funktion alle 0,5 Sekunden
    setInterval(NRDB, 500);
    

    Zuvor hatte ich für jede Info eine Funktion erstellt:

    33211ceb-7908-459a-8c84-e3852ede3d18-image.png

    Hier ist mir aber immer noch nicht ganz klar, ob diese einzelnen JS-Scripte auch nacheinander abgearbeitet wurden (jedes Script wurde mit setInterval(Info, 500) aufgerufen, was bei mehreren setInterval innerhalb eines Scripts ja definitiv der Fall wäre.

    Zumindest fällt mir beim Aktualisieren des Node-Red-Dashboards jetzt keine schnellere Aktualisierung auf (also vorher 6 Scripte, die jeweils alle 500ms aufgerufen wurden; jetzt 1 Script alle 500ms).

    Oder wird das durch andere Parameter im iobroker beeinflusst?

    T 1 Antwort Letzte Antwort
    0
    • S Shai0Hulud

      Hallo, mit meinem Node-Red-Dashboard, welches die Infos von (jetzt noch) einer JS-Funktion erhält, bin ich erstmal zufrieden:

      81ede26c-1ab7-428a-b5c5-002e4bedad27-image.png

      Die Daten werden in einer JS-Funktion aufbereitet:

      // Datenpunkt-ID
          // Solar-Daten
      var idGetSolarprod = 'fritzdect.0.DECT_116570452148.power';
      var idSetSolarprodGZ = '0_userdata.0.Zuhause.SolarproduktionGZ';
      var idGetEinspeisung = 'shelly.0.SHPLG-S#7C87CEBA4615#1.Relay0.Power';
      var idSetEinspeisungGZ = '0_userdata.0.Zuhause.EinspeisungGZ';
      var idGetStromsaldo = 'sonoff.0.Hichi-SGM-1._Verbrauch_Aktuell';
      var idSetStromverbrauchGZ = '0_userdata.0.Zuhause.StromverbrauchGZ';
          // CPU-Daten
      var idGetCPUTakt = 'rpi2.0.cpu.cpu_frequency';
      var idSetCPUTaktString = '0_userdata.0.Zuhause.CPUTaktString';
      var idGetCPULast = 'rpi2.0.cpu.load1';
      var idSetCPULastProz = '0_userdata.0.Zuhause.CPULastProz';
      var idGetCPUTemp = 'rpi2.0.temperature.soc_temp';
      var idSetCPUTempGZ = '0_userdata.0.Zuhause.CPUTempGZ';
       
      // Berechnung aller Infodaten des Node-Red-Dashboards
      function NRDB() {
          var nSolProd = getState(idGetSolarprod).val;
          var nSolProdGZ = Math.trunc(nSolProd) * -1;
      
      	setState(idSetSolarprodGZ, nSolProdGZ, true);
      
          var nEin = getState(idGetEinspeisung).val;
          var nEinGZ = Math.trunc(nEin) * -1;
      
      	setState(idSetEinspeisungGZ, nEinGZ, true);
      
          var nStrSal = getState(idGetStromsaldo).val;
          var nSolProd = getState(idSetSolarprodGZ).val;
          var nEinspeis = getState(idSetEinspeisungGZ).val;
          
          var nStrVer = nStrSal - nSolProd - nEinspeis;
          var nStrVer = Math.trunc(nStrVer);
      
      	setState(idSetStromverbrauchGZ, nStrVer, true);
      
          var nCPUT = getState(idGetCPUTakt).val;
          if (nCPUT < 1000) { 
              var nCPUTS = nCPUT + ' MHz';
          } else {
              var nCPUTS = (nCPUT / 1000) + ' GHz';
              var nCPUTS = nCPUTS.replace(".",",");
          }
          
      	setState(idSetCPUTaktString, nCPUTS, true);
      
          var nCPUL = getState(idGetCPULast).val;
          var nCPULP = Math.trunc(nCPUL * 100);
      
      	setState(idSetCPULastProz, nCPULP, true);
      
          var nCPUT = getState(idGetCPUTemp).val;
          var nCPUTGZ = Math.trunc(nCPUT);
      
      	setState(idSetCPUTempGZ, nCPUTGZ, true);
      }
      
      // Aufruf der Funktion alle 0,5 Sekunden
      setInterval(NRDB, 500);
      

      Zuvor hatte ich für jede Info eine Funktion erstellt:

      33211ceb-7908-459a-8c84-e3852ede3d18-image.png

      Hier ist mir aber immer noch nicht ganz klar, ob diese einzelnen JS-Scripte auch nacheinander abgearbeitet wurden (jedes Script wurde mit setInterval(Info, 500) aufgerufen, was bei mehreren setInterval innerhalb eines Scripts ja definitiv der Fall wäre.

      Zumindest fällt mir beim Aktualisieren des Node-Red-Dashboards jetzt keine schnellere Aktualisierung auf (also vorher 6 Scripte, die jeweils alle 500ms aufgerufen wurden; jetzt 1 Script alle 500ms).

      Oder wird das durch andere Parameter im iobroker beeinflusst?

      T Offline
      T Offline
      ticaki
      schrieb am zuletzt editiert von ticaki
      #2

      @shai0hulud
      Ich verstehe dein Problem und oder deine Frage nicht wirklich? Wenn du nicht extreme Berechnungen in deinem Skript hast sollten die alle in wenigen ms (wenn überhaupt) abgeschlossen sein und es ist schnuppe ob 1 oder 6 Skripte. Ich nehme an das die Übertragung der Daten und die Aufbereitung einen längeren Delay hat.

      Wenn es dir darum geht das Node-red nicht schnell genug aktualisiert, kann ich dir leider nichts zu sagen. Nutze es nicht.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      1 Antwort Letzte Antwort
      1
      • S Offline
        S Offline
        Shai0Hulud
        schrieb am zuletzt editiert von
        #3

        @ticaki

        Ich habe das mit ein bißchen Rumspielen und Checken der Objects im ioBroker nun bestätigen können, was Du schon vermutet hast: Es liegt an der Übertragung der "Rohdaten" bzw. deren Aktualisierungsrate.

        Der Hichi-Lesekopf zum Beispiel loggt nur alle 10 Sekunden, klar dass ich dann soviele Updates meines Scripts in der Zeit laufen lassen kann wie ich will, die Summe der Werte wird nur max. alle 10 Sekunden stimmen.

        T 1 Antwort Letzte Antwort
        0
        • S Shai0Hulud

          @ticaki

          Ich habe das mit ein bißchen Rumspielen und Checken der Objects im ioBroker nun bestätigen können, was Du schon vermutet hast: Es liegt an der Übertragung der "Rohdaten" bzw. deren Aktualisierungsrate.

          Der Hichi-Lesekopf zum Beispiel loggt nur alle 10 Sekunden, klar dass ich dann soviele Updates meines Scripts in der Zeit laufen lassen kann wie ich will, die Summe der Werte wird nur max. alle 10 Sekunden stimmen.

          T Offline
          T Offline
          ticaki
          schrieb am zuletzt editiert von ticaki
          #4

          @shai0hulud sagte in Verständnisfrage: Lineares Abarbeiten von Funktionen:

          Hichi-Lesekopf

          Das hab ich ehrlich gesagt aufgegeben. Ich mache das mit Grafana und Influx, die Anzeigen die etwas berechnen sind immer mindestens auf 1 Minute zusammengefasst. Bei Echtzeit werden nur Werte angezeigt und zwar nicht genug um nachrechnen zu können. Solarstrom - Einspeisung + Bezug - gemessener Verbrauch = sonstiger Verbrauch (- 2kw) wtf. Wer hat da ein ein paar Balkonkraftwerke auf gestellt :)

          Meine Aktualisisierungraten sind:
          SMA 1sec
          shelly 5 sec
          tasmota 10 sec (oder powerdelta)
          fritzboxDect(ne minute?)

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          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

          520

          Online

          32.6k

          Benutzer

          82.3k

          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