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. settimeout - leider wird nicht gewartet

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

settimeout - leider wird nicht gewartet

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 2 Kommentatoren 239 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.
  • N Offline
    N Offline
    Nachtfuchs 0
    schrieb am zuletzt editiert von Nachtfuchs 0
    #1

    Kurz zur Erklärung:
    mittels RGB-Shelly und Kemo-Komponenten möchte ich die Last eines Verbrauchers steuern. Das funktioniert auch.
    Dazu aus einem EM3 die Werte ausgelesen, auf einen Datenpunkt geschrieben und diese Änderung wieder als Trigger für die Auswertung
    Auch das funktioniert.

    Nun habe ich eine Nulleinspeisung. Daher soll bei Überschuss langsam die ohmesche Last über den RGB-Shelly erhöht werden, um nicht gegeneinander zu arbeiten.

    soweit das Intro und Erklärung vom Script:

    //Als Trigger dient die Wertänderung einer Phase. So wird auf den Datenpunkt der Phasennummer (0. 1 oder 2)
    //geschrieben.
    //Diese Änderung auf dem Datenpunkt dient wiederrum, um die Werte der einzelnen Phasen auszulessen und zu
    //addieren. Das derekte Auslesen der GesamtLeistung beim EM3 ist zu träge, daher die extra Summenbildung  
    
    // Variablen-Deklaration
    //
    //77
    //88
    
    
    let P_Heizung = 1000; // Heizung maximale Leistung, wird wohl nicht gebraucht, da Array
    let P_0 ; let P_1; let P_2;  // aktuelle Watt der Phasen 
    let P_Summe; // Summe der einzelen Wattwerte der Phasen 1..3
    
    // Phase 0
    on({ id: 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power', change: 'ne' }, async (obj) => {
      setState('0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', 0 );  //console.log('Phase 0'); 
      //let Wert_Phase_1 = obj.state.val;  //console.log({'Phase 1' : Wert_Phase_1 });  
    });
    
    // Phase 1
    on({ id: 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter1.Power', change: 'ne' }, async (obj) => {
      setState('0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', 1 ); //console.log('Phase 1');
      //let Wert_Phase_1 = obj.state.val;  //console.log({'Phase 1' : Wert_Phase_1 }); 
    });
    
    // Phase 2
    on({ id: 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter2.Power', change: 'ne' }, async (obj) => {
      setState('0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', 2 );  //console.log('Phase 2');
      //let Wert_Phase_2 = obj.state.val;  //console.log({'Phase 2' : Wert_Phase_2 });
    });
    
    // Phasen gesamt
    
    let HeizStufe_1_Leistung_zu_Prozent = 
      [{'W': 4, 'P':12},{'W':  6,'P':14},{'W': 11,'P':16},{'W': 16,'P':18},{'W': 23,'P':20},{'W': 35,'P':22},
       {'W': 46,'P':24},{'W': 58,'P':26},{'W': 70,'P':28},{'W': 86,'P':30},{'W':107,'P':32},{'W':133,'P':34},
       {'W':149,'P':36},{'W':172,'P':38},{'W':202,'P':40},{'W':225,'P':42},{'W':254,'P':44},{'W':272,'P':46},
       {'W':304,'P':48},{'W':329,'P':50},{'W':354,'P':52},{'W':379,'P':54},{'W':403,'P':56},{'W':413,'P':58},
       {'W':422,'P':60},{'W':432,'P':62},{'W':436,'P':64},{'W':440,'P':66},{'W':443,'P':68},{'W':449,'P':70},
       {'W':10000,'P':100}];   //10000:10 damit die Suche nich ins Leere läuft
    
    
    on({ id: '0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', change: 'ne' }, async (obj) => {
      P_0 = getState('shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power').val;   //console.log({'P_0 :' : P_0});
      P_1 = getState('shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter1.Power').val;   //console.log({'P_1 :' : P_1});
      P_2 = getState('shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter2.Power').val;   //console.log({'P_3 :' : P_2});  
      // wird auf 2 Stellen gerundet, immer wieder Werte mit 5 Nachkommastellen zu sehen sind
      P_Summe = P_0 + P_1 + P_2;    P_Summe = Math.round(P_Summe *100) /-100;
    
      //console.log({'Phase gesamt errechnet ' : P_Summe });
      console.log('Start');
      setTimeout(() => {
        console.log({'Phase gesamt errechnet ' : P_Summe });
        if (P_Summe > 0) {
          console.log({'Einspeisung Watt' : P_Summe});     
          // @ts-ignore
          let Prozent =  (HeizStufe_1_Leistung_zu_Prozent.find( e => e.W > P_Summe ) ).P ;   
          //let Prozent = 35;
          console.log({'Prozent für RGB-Shelly': Prozent});
          setState('shelly.0.SHRGBW2#80A12A#1.white3.brightness', Prozent );
        } else {
          console.log('Netzbezug');
          setState('shelly.0.SHRGBW2#80A12A#1.white3.brightness', 0 );         
        };
        console.log('ich warte nicht');
      },2000 );
      console.log('Ende');
    });
    

    leider funktioniert das setTimeout nicht wie gewünscht.

    aus dem log:

    avascript.0
    2024-03-19 16:05:35.541 info script.js.EM3_1+2+3+gesamt: Start
    javascript.0
    2024-03-19 16:05:34.607 info script.js.EM3_1+2+3+gesamt: ich warte nicht
    javascript.0
    2024-03-19 16:05:34.607 info script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
    javascript.0
    2024-03-19 16:05:34.606 info script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 194.72 }
    javascript.0
    2024-03-19 16:05:34.606 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
    javascript.0
    2024-03-19 16:05:34.552 info script.js.EM3_1+2+3+gesamt: ich warte nicht
    javascript.0
    2024-03-19 16:05:34.551 info script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
    javascript.0
    2024-03-19 16:05:34.551 info script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 194.72 }
    javascript.0
    2024-03-19 16:05:34.550 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
    javascript.0
    2024-03-19 16:05:34.548 info script.js.EM3_1+2+3+gesamt: ich warte nicht
    javascript.0
    2024-03-19 16:05:34.547 info script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
    javascript.0
    2024-03-19 16:05:34.547 info script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 194.72 }
    javascript.0
    2024-03-19 16:05:34.546 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
    javascript.0
    2024-03-19 16:05:32.605 info script.js.EM3_1+2+3+gesamt: Ende
    javascript.0
    2024-03-19 16:05:32.604 info script.js.EM3_1+2+3+gesamt: Start
    javascript.0
    2024-03-19 16:05:32.547 info script.js.EM3_1+2+3+gesamt: Ende
    javascript.0
    2024-03-19 16:05:32.546 info script.js.EM3_1+2+3+gesamt: Start

    Hinweis: ich lasse zu Testzwecken erst mal eine gewisse Menge Einspeisen, daher die Einspeisewerte.

    das "Start" und "Ende" bei jedem Ereignis kommt ist logisch.
    Aber alles was nach der setTimeout kommt sollte nach meiner Meinung 2000ms warten, tut es aber nicht.

    Hmmm.....

    Ich habe zwar schon alle SetTimeout-Fragestellungen durchforstet, konnte aber nichts brauchbares finden.
    Ich danke für einen kleinen Hinweis.

    paul53P 1 Antwort Letzte Antwort
    0
    • N Nachtfuchs 0

      Kurz zur Erklärung:
      mittels RGB-Shelly und Kemo-Komponenten möchte ich die Last eines Verbrauchers steuern. Das funktioniert auch.
      Dazu aus einem EM3 die Werte ausgelesen, auf einen Datenpunkt geschrieben und diese Änderung wieder als Trigger für die Auswertung
      Auch das funktioniert.

      Nun habe ich eine Nulleinspeisung. Daher soll bei Überschuss langsam die ohmesche Last über den RGB-Shelly erhöht werden, um nicht gegeneinander zu arbeiten.

      soweit das Intro und Erklärung vom Script:

      //Als Trigger dient die Wertänderung einer Phase. So wird auf den Datenpunkt der Phasennummer (0. 1 oder 2)
      //geschrieben.
      //Diese Änderung auf dem Datenpunkt dient wiederrum, um die Werte der einzelnen Phasen auszulessen und zu
      //addieren. Das derekte Auslesen der GesamtLeistung beim EM3 ist zu träge, daher die extra Summenbildung  
      
      // Variablen-Deklaration
      //
      //77
      //88
      
      
      let P_Heizung = 1000; // Heizung maximale Leistung, wird wohl nicht gebraucht, da Array
      let P_0 ; let P_1; let P_2;  // aktuelle Watt der Phasen 
      let P_Summe; // Summe der einzelen Wattwerte der Phasen 1..3
      
      // Phase 0
      on({ id: 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power', change: 'ne' }, async (obj) => {
        setState('0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', 0 );  //console.log('Phase 0'); 
        //let Wert_Phase_1 = obj.state.val;  //console.log({'Phase 1' : Wert_Phase_1 });  
      });
      
      // Phase 1
      on({ id: 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter1.Power', change: 'ne' }, async (obj) => {
        setState('0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', 1 ); //console.log('Phase 1');
        //let Wert_Phase_1 = obj.state.val;  //console.log({'Phase 1' : Wert_Phase_1 }); 
      });
      
      // Phase 2
      on({ id: 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter2.Power', change: 'ne' }, async (obj) => {
        setState('0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', 2 );  //console.log('Phase 2');
        //let Wert_Phase_2 = obj.state.val;  //console.log({'Phase 2' : Wert_Phase_2 });
      });
      
      // Phasen gesamt
      
      let HeizStufe_1_Leistung_zu_Prozent = 
        [{'W': 4, 'P':12},{'W':  6,'P':14},{'W': 11,'P':16},{'W': 16,'P':18},{'W': 23,'P':20},{'W': 35,'P':22},
         {'W': 46,'P':24},{'W': 58,'P':26},{'W': 70,'P':28},{'W': 86,'P':30},{'W':107,'P':32},{'W':133,'P':34},
         {'W':149,'P':36},{'W':172,'P':38},{'W':202,'P':40},{'W':225,'P':42},{'W':254,'P':44},{'W':272,'P':46},
         {'W':304,'P':48},{'W':329,'P':50},{'W':354,'P':52},{'W':379,'P':54},{'W':403,'P':56},{'W':413,'P':58},
         {'W':422,'P':60},{'W':432,'P':62},{'W':436,'P':64},{'W':440,'P':66},{'W':443,'P':68},{'W':449,'P':70},
         {'W':10000,'P':100}];   //10000:10 damit die Suche nich ins Leere läuft
      
      
      on({ id: '0_userdata.0.EM3.P1_or_P2_or_P3_geaendert', change: 'ne' }, async (obj) => {
        P_0 = getState('shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power').val;   //console.log({'P_0 :' : P_0});
        P_1 = getState('shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter1.Power').val;   //console.log({'P_1 :' : P_1});
        P_2 = getState('shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter2.Power').val;   //console.log({'P_3 :' : P_2});  
        // wird auf 2 Stellen gerundet, immer wieder Werte mit 5 Nachkommastellen zu sehen sind
        P_Summe = P_0 + P_1 + P_2;    P_Summe = Math.round(P_Summe *100) /-100;
      
        //console.log({'Phase gesamt errechnet ' : P_Summe });
        console.log('Start');
        setTimeout(() => {
          console.log({'Phase gesamt errechnet ' : P_Summe });
          if (P_Summe > 0) {
            console.log({'Einspeisung Watt' : P_Summe});     
            // @ts-ignore
            let Prozent =  (HeizStufe_1_Leistung_zu_Prozent.find( e => e.W > P_Summe ) ).P ;   
            //let Prozent = 35;
            console.log({'Prozent für RGB-Shelly': Prozent});
            setState('shelly.0.SHRGBW2#80A12A#1.white3.brightness', Prozent );
          } else {
            console.log('Netzbezug');
            setState('shelly.0.SHRGBW2#80A12A#1.white3.brightness', 0 );         
          };
          console.log('ich warte nicht');
        },2000 );
        console.log('Ende');
      });
      

      leider funktioniert das setTimeout nicht wie gewünscht.

      aus dem log:

      avascript.0
      2024-03-19 16:05:35.541 info script.js.EM3_1+2+3+gesamt: Start
      javascript.0
      2024-03-19 16:05:34.607 info script.js.EM3_1+2+3+gesamt: ich warte nicht
      javascript.0
      2024-03-19 16:05:34.607 info script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
      javascript.0
      2024-03-19 16:05:34.606 info script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 194.72 }
      javascript.0
      2024-03-19 16:05:34.606 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
      javascript.0
      2024-03-19 16:05:34.552 info script.js.EM3_1+2+3+gesamt: ich warte nicht
      javascript.0
      2024-03-19 16:05:34.551 info script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
      javascript.0
      2024-03-19 16:05:34.551 info script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 194.72 }
      javascript.0
      2024-03-19 16:05:34.550 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
      javascript.0
      2024-03-19 16:05:34.548 info script.js.EM3_1+2+3+gesamt: ich warte nicht
      javascript.0
      2024-03-19 16:05:34.547 info script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
      javascript.0
      2024-03-19 16:05:34.547 info script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 194.72 }
      javascript.0
      2024-03-19 16:05:34.546 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
      javascript.0
      2024-03-19 16:05:32.605 info script.js.EM3_1+2+3+gesamt: Ende
      javascript.0
      2024-03-19 16:05:32.604 info script.js.EM3_1+2+3+gesamt: Start
      javascript.0
      2024-03-19 16:05:32.547 info script.js.EM3_1+2+3+gesamt: Ende
      javascript.0
      2024-03-19 16:05:32.546 info script.js.EM3_1+2+3+gesamt: Start

      Hinweis: ich lasse zu Testzwecken erst mal eine gewisse Menge Einspeisen, daher die Einspeisewerte.

      das "Start" und "Ende" bei jedem Ereignis kommt ist logisch.
      Aber alles was nach der setTimeout kommt sollte nach meiner Meinung 2000ms warten, tut es aber nicht.

      Hmmm.....

      Ich habe zwar schon alle SetTimeout-Fragestellungen durchforstet, konnte aber nichts brauchbares finden.
      Ich danke für einen kleinen Hinweis.

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @nachtfuchs-0 sagte: 2000ms warten, tut es aber nicht.

      Tut es. Zwischen erstem "Start" und der ersten Logausgabe aus dem Timeout liegen 2 Sekunden.

      2024-03-19 16:05:34.546 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
      javascript.0
      2024-03-19 16:05:32.605 info script.js.EM3_1+2+3+gesamt: Ende
      javascript.0
      2024-03-19 16:05:32.604 info script.js.EM3_1+2+3+gesamt: Start
      javascript.0
      2024-03-19 16:05:32.547 info script.js.EM3_1+2+3+gesamt: Ende
      javascript.0
      2024-03-19 16:05:32.546 info script.js.EM3_1+2+3+gesamt: Start
      

      Was soll das Timeout bewirken?

      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

      N 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @nachtfuchs-0 sagte: 2000ms warten, tut es aber nicht.

        Tut es. Zwischen erstem "Start" und der ersten Logausgabe aus dem Timeout liegen 2 Sekunden.

        2024-03-19 16:05:34.546 info script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 194.72 }
        javascript.0
        2024-03-19 16:05:32.605 info script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        2024-03-19 16:05:32.604 info script.js.EM3_1+2+3+gesamt: Start
        javascript.0
        2024-03-19 16:05:32.547 info script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        2024-03-19 16:05:32.546 info script.js.EM3_1+2+3+gesamt: Start
        

        Was soll das Timeout bewirken?

        N Offline
        N Offline
        Nachtfuchs 0
        schrieb am zuletzt editiert von Nachtfuchs 0
        #3

        @paul53
        Was soll das Timeout bewirken?
        es soll langsam die Last zugeführt werden.
        Also bei der Nulleinspeisung werden immer 7..10 Watt eingespeist.
        Somit habe ich einen Indikator.
        Ich schalte jetzt 50 Watt dazu --> will 4 Sekunden warten bis die Nulleinspeisung sich wieder einpendelt.
        werden wieder 7..10 Watt eingespeist kommen die nächten Watt dazu

        Das über den RGB-Shelly an die Kemo-Komponenten, die dann die ohmsche Last steuern.

        Derzeit schalte ich die Last zu, leider wird nicht gewartet, der EM3 sagt Netzbezug, macht den RGB-Shelly zu, und das Spiel beginnt von vorn.
        Derzeit lese ich noch die Wattzahl aus dem Array aus und schalte entsprechend die Prozente.

        javascript.0
        	2024-03-19 16:30:27.510	info	script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        	2024-03-19 16:30:27.509	info	script.js.EM3_1+2+3+gesamt: Start
        javascript.0
        	2024-03-19 16:30:27.507	info	script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        	2024-03-19 16:30:27.506	info	script.js.EM3_1+2+3+gesamt: Start
        javascript.0
        	2024-03-19 16:30:26.937	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
        javascript.0
        	2024-03-19 16:30:26.937	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 12 }
        javascript.0
        	2024-03-19 16:30:26.936	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 3 }
        javascript.0
        	2024-03-19 16:30:26.936	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 3 }
        javascript.0
        	2024-03-19 16:30:26.853	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
        javascript.0
        	2024-03-19 16:30:26.852	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 12 }
        javascript.0
        	2024-03-19 16:30:26.851	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 3 }
        javascript.0
        	2024-03-19 16:30:26.850	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 3 }
        javascript.0
        	2024-03-19 16:30:26.848	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
        javascript.0
        	2024-03-19 16:30:26.848	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 12 }
        javascript.0
        	2024-03-19 16:30:26.847	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 3 }
        javascript.0
        	2024-03-19 16:30:26.847	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 3 }
        javascript.0
        	2024-03-19 16:30:24.935	info	script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        	2024-03-19 16:30:24.935	info	script.js.EM3_1+2+3+gesamt: Start
        javascript.0
        	2024-03-19 16:30:24.849	info	script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        	2024-03-19 16:30:24.848	info	script.js.EM3_1+2+3+gesamt: Start
        javascript.0
        	2024-03-19 16:30:24.846	info	script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        	2024-03-19 16:30:24.845	info	script.js.EM3_1+2+3+gesamt: Start
        javascript.0
        	2024-03-19 16:29:57.089	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
        javascript.0
        	2024-03-19 16:29:57.088	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
        javascript.0
        	2024-03-19 16:29:57.088	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 173.67 }
        javascript.0
        	2024-03-19 16:29:57.086	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 173.67 }
        javascript.0
        	2024-03-19 16:29:57.081	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
        javascript.0
        	2024-03-19 16:29:57.080	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
        javascript.0
        	2024-03-19 16:29:57.079	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 173.67 }
        javascript.0
        	2024-03-19 16:29:57.078	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 173.67 }
        javascript.0
        	2024-03-19 16:29:57.072	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
        javascript.0
        	2024-03-19 16:29:57.072	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
        javascript.0
        	2024-03-19 16:29:57.071	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 173.67 }
        javascript.0
        	2024-03-19 16:29:57.070	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 173.67 }
        javascript.0
        	2024-03-19 16:29:55.085	info	script.js.EM3_1+2+3+gesamt: Ende
        javascript.0
        	2024-03-19 16:29:55.085	info	script.js.EM3_1+2+3+gesamt: Start
        

        Stimmt, er wartet wirklich 2 Sekunden. Aber warum kommen die anderen Meldungen noch so häufig?

        paul53P 1 Antwort Letzte Antwort
        0
        • N Nachtfuchs 0

          @paul53
          Was soll das Timeout bewirken?
          es soll langsam die Last zugeführt werden.
          Also bei der Nulleinspeisung werden immer 7..10 Watt eingespeist.
          Somit habe ich einen Indikator.
          Ich schalte jetzt 50 Watt dazu --> will 4 Sekunden warten bis die Nulleinspeisung sich wieder einpendelt.
          werden wieder 7..10 Watt eingespeist kommen die nächten Watt dazu

          Das über den RGB-Shelly an die Kemo-Komponenten, die dann die ohmsche Last steuern.

          Derzeit schalte ich die Last zu, leider wird nicht gewartet, der EM3 sagt Netzbezug, macht den RGB-Shelly zu, und das Spiel beginnt von vorn.
          Derzeit lese ich noch die Wattzahl aus dem Array aus und schalte entsprechend die Prozente.

          javascript.0
          	2024-03-19 16:30:27.510	info	script.js.EM3_1+2+3+gesamt: Ende
          javascript.0
          	2024-03-19 16:30:27.509	info	script.js.EM3_1+2+3+gesamt: Start
          javascript.0
          	2024-03-19 16:30:27.507	info	script.js.EM3_1+2+3+gesamt: Ende
          javascript.0
          	2024-03-19 16:30:27.506	info	script.js.EM3_1+2+3+gesamt: Start
          javascript.0
          	2024-03-19 16:30:26.937	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
          javascript.0
          	2024-03-19 16:30:26.937	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 12 }
          javascript.0
          	2024-03-19 16:30:26.936	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 3 }
          javascript.0
          	2024-03-19 16:30:26.936	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 3 }
          javascript.0
          	2024-03-19 16:30:26.853	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
          javascript.0
          	2024-03-19 16:30:26.852	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 12 }
          javascript.0
          	2024-03-19 16:30:26.851	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 3 }
          javascript.0
          	2024-03-19 16:30:26.850	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 3 }
          javascript.0
          	2024-03-19 16:30:26.848	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
          javascript.0
          	2024-03-19 16:30:26.848	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 12 }
          javascript.0
          	2024-03-19 16:30:26.847	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 3 }
          javascript.0
          	2024-03-19 16:30:26.847	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 3 }
          javascript.0
          	2024-03-19 16:30:24.935	info	script.js.EM3_1+2+3+gesamt: Ende
          javascript.0
          	2024-03-19 16:30:24.935	info	script.js.EM3_1+2+3+gesamt: Start
          javascript.0
          	2024-03-19 16:30:24.849	info	script.js.EM3_1+2+3+gesamt: Ende
          javascript.0
          	2024-03-19 16:30:24.848	info	script.js.EM3_1+2+3+gesamt: Start
          javascript.0
          	2024-03-19 16:30:24.846	info	script.js.EM3_1+2+3+gesamt: Ende
          javascript.0
          	2024-03-19 16:30:24.845	info	script.js.EM3_1+2+3+gesamt: Start
          javascript.0
          	2024-03-19 16:29:57.089	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
          javascript.0
          	2024-03-19 16:29:57.088	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
          javascript.0
          	2024-03-19 16:29:57.088	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 173.67 }
          javascript.0
          	2024-03-19 16:29:57.086	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 173.67 }
          javascript.0
          	2024-03-19 16:29:57.081	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
          javascript.0
          	2024-03-19 16:29:57.080	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
          javascript.0
          	2024-03-19 16:29:57.079	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 173.67 }
          javascript.0
          	2024-03-19 16:29:57.078	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 173.67 }
          javascript.0
          	2024-03-19 16:29:57.072	info	script.js.EM3_1+2+3+gesamt: ich warte nicht
          javascript.0
          	2024-03-19 16:29:57.072	info	script.js.EM3_1+2+3+gesamt: { 'Prozent für RGB-Shelly': 40 }
          javascript.0
          	2024-03-19 16:29:57.071	info	script.js.EM3_1+2+3+gesamt: { 'Einspeisung Watt': 173.67 }
          javascript.0
          	2024-03-19 16:29:57.070	info	script.js.EM3_1+2+3+gesamt: { 'Phase gesamt errechnet ': 173.67 }
          javascript.0
          	2024-03-19 16:29:55.085	info	script.js.EM3_1+2+3+gesamt: Ende
          javascript.0
          	2024-03-19 16:29:55.085	info	script.js.EM3_1+2+3+gesamt: Start
          

          Stimmt, er wartet wirklich 2 Sekunden. Aber warum kommen die anderen Meldungen noch so häufig?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @nachtfuchs-0 sagte: warum kommen die anderen Meldungen noch so häufig?

          Weil so häufig getriggert wird.

          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

          N 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @nachtfuchs-0 sagte: warum kommen die anderen Meldungen noch so häufig?

            Weil so häufig getriggert wird.

            N Offline
            N Offline
            Nachtfuchs 0
            schrieb am zuletzt editiert von
            #5

            @paul53
            hmm.. "Start" und "Ende" klar. Aber sollte dann nicht alles was innerhalb setTimeout steht für 2 Sekunden ruhen?

            
            2024-03-19 16:30:26.936 { 'Phase gesamt errechnet ': 3 }
            
            2024-03-19 16:30:26.850 { 'Phase gesamt errechnet ': 3 }
            
            2024-03-19 16:30:26.847 { 'Phase gesamt errechnet ': 3 }
            
            2024-03-19 16:29:57.086 { 'Phase gesamt errechnet ': 173.67 }
            
            2024-03-19 16:29:57.078 { 'Phase gesamt errechnet ': 173.67 }
            
            2024-03-19 16:29:57.070 { 'Phase gesamt errechnet ': 173.67 }
            

            ... mal nur den einen Meldungstext rauskopiert.

            paul53P 1 Antwort Letzte Antwort
            0
            • N Nachtfuchs 0

              @paul53
              hmm.. "Start" und "Ende" klar. Aber sollte dann nicht alles was innerhalb setTimeout steht für 2 Sekunden ruhen?

              
              2024-03-19 16:30:26.936 { 'Phase gesamt errechnet ': 3 }
              
              2024-03-19 16:30:26.850 { 'Phase gesamt errechnet ': 3 }
              
              2024-03-19 16:30:26.847 { 'Phase gesamt errechnet ': 3 }
              
              2024-03-19 16:29:57.086 { 'Phase gesamt errechnet ': 173.67 }
              
              2024-03-19 16:29:57.078 { 'Phase gesamt errechnet ': 173.67 }
              
              2024-03-19 16:29:57.070 { 'Phase gesamt errechnet ': 173.67 }
              

              ... mal nur den einen Meldungstext rauskopiert.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @nachtfuchs-0 sagte: sollte dann nicht alles was innerhalb setTimeout steht für 2 Sekunden ruhen?

              Nein, Timeout verzögert nur alles um 2 s.

              Dein Trigger ist ungeeignet. Bilde besser die Summe über die 3 Phasen aus den zeitlich zusammenhängenden Werten.

              const idP0 = 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power';
              const idP1 = 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power';
              const idP2 = 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter2.Power';
              const idsPower = [idP0, idP1, idP2]; 
              const idPower = '0_userdata.0.EM3.Power'; // Gesamtleistung
              
              var timer = null;
              on(idsPower, function() {
                  clearTimeout(timer);
                  timer = setTimeout(function() {
                      const P_0 = getState(idP0).val;   //console.log({'P_0 :' : P_0});
                      const P_1 = getState(idP1).val;   //console.log({'P_1 :' : P_1});
                      const P_2 = getState(idP2).val;   //console.log({'P_3 :' : P_2});  
                      setState(idPower, P_0 + P_1 + P_2, true);
                  }, 200);
              });
              

              Diesen Summenwert nimm dann zum Triggern der Einspeiseregelung.

              on(idPower, (dp) => {
                  // wird auf 2 Stellen gerundet, immer wieder Werte mit 5 Nachkommastellen zu sehen sind
                  const P_Summe = Math.round(dp.state.val * 100) / -100;
              

              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

              N 1 Antwort Letzte Antwort
              1
              • paul53P paul53

                @nachtfuchs-0 sagte: sollte dann nicht alles was innerhalb setTimeout steht für 2 Sekunden ruhen?

                Nein, Timeout verzögert nur alles um 2 s.

                Dein Trigger ist ungeeignet. Bilde besser die Summe über die 3 Phasen aus den zeitlich zusammenhängenden Werten.

                const idP0 = 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power';
                const idP1 = 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter0.Power';
                const idP2 = 'shelly.0.SHEM-3#BCFF4DFD0DEF#1.Emeter2.Power';
                const idsPower = [idP0, idP1, idP2]; 
                const idPower = '0_userdata.0.EM3.Power'; // Gesamtleistung
                
                var timer = null;
                on(idsPower, function() {
                    clearTimeout(timer);
                    timer = setTimeout(function() {
                        const P_0 = getState(idP0).val;   //console.log({'P_0 :' : P_0});
                        const P_1 = getState(idP1).val;   //console.log({'P_1 :' : P_1});
                        const P_2 = getState(idP2).val;   //console.log({'P_3 :' : P_2});  
                        setState(idPower, P_0 + P_1 + P_2, true);
                    }, 200);
                });
                

                Diesen Summenwert nimm dann zum Triggern der Einspeiseregelung.

                on(idPower, (dp) => {
                    // wird auf 2 Stellen gerundet, immer wieder Werte mit 5 Nachkommastellen zu sehen sind
                    const P_Summe = Math.round(dp.state.val * 100) / -100;
                
                N Offline
                N Offline
                Nachtfuchs 0
                schrieb am zuletzt editiert von
                #7

                @paul53
                erst mal Danke für den andere Denkansatz.

                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

                505

                Online

                32.6k

                Benutzer

                82.1k

                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