Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Script] Eieruhr

    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

    [Script] Eieruhr

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

      Kein Problem 😄

      mfg

      dna909

      Bostil 1 Reply Last reply Reply Quote 0
      • Bostil
        Bostil @dna909 last edited by

        Hallo @dna909, funktioniert das Script bei dir noch ohne Weiteres? Bei mir wird per Javascript schon nicht mehr das "Eieruhr"-Objekt unter javascript angelegt. Danke.

        D 1 Reply Last reply Reply Quote 0
        • D
          dna909 @Bostil last edited by

          @Bostil Jupp, bei mir läuft es. Bringt das Script denn irgendwelche Fehlermeldungen?

          Gruß

          dna909

          1 Reply Last reply Reply Quote 1
          • Bostil
            Bostil last edited by

            Danke für deine schnelle Rückmeldung @dna909

            • es werden garkeine Objekte / Datenpunkte unter Javascript.0 angelegt
            • als Fehlermeldung erhalte ich im Script nun eher sporadisch folgendes:

            22:01:47.246 error javascript.0 (1412) script.js.common.Eieruhr compile failed: at script.js.common.Eieruhr:22

            Mein Script:

            // Eieruhr dna909 (heinbloed@nu-is-en.de)
            // **************************************************************************
            // v0.1 initial
            // v0.2 Erweiterung Eitemperatur + Gewicht
            // v0.3 Formel Garzeit angepasst (13.10.2017)
            // **************************************************************************
            //
            // Datenpunkte:
            //
            // start: true/false
            // Stop: true/false
            // fertig: true/false //Wert für viele tolle Dinge
            // Haerte: "w","m","h" //weich,medium,hart
            // Groesse: "s","m","l","xl" //Eigröße
            // Timer: "mm:ss"
            // Reset: true/false
            // Gewicht: g //Eigewicht
            // Temperatur: °C //Eitemperatur
            // Switch: true/false //true=nach Größe ; false=nach Gewicht
            ///////////////////////////////////////////////////////////////////////////////
            ! // Datenpunkte
            ! var instanz = "javascript.0";
            var objekt = "Eieruhr";
            ! var start = instanz+"."+objekt+"."+"start";
            var fertig = instanz+"."+objekt+"."+"fertig";
            var haerte = instanz+"."+objekt+"."+"Haerte";
            var groesse = instanz+"."+objekt+"."+"Groesse";
            var stop = instanz+"."+objekt+"."+"Stop";
            var timer = instanz+"."+objekt+"."+"Timer";
            var reset = instanz+"."+objekt+"."+"Reset";
            var gewicht = instanz+"."+objekt+"."+"Gewicht";
            var temp = instanz+"."+objekt+"."+"Temperatur";
            ! ///////////////////////////////////////////////////////////////////////////////
            var SiedePunkt=100; //Siedepunkt Wasser
            var InnenTemp=[62,68,82]; //Kerntemperatur Eigelb (weich,medium,hart)
            var TempStart=7; //Eitemperatur
            var EiGroesse=[50,60,70,80]; //S,M,L,XL-Eigewicht
            ! ///////////////////////////////////////////////////////////////////////////////
            ! //// Initialwerte
            ! haerte_math=InnenTemp[0];
            gewicht_math=EiGroesse[1];
            ! ///////////////////////////////////////////////////////////////////////////////
            ! on({id: new RegExp( groesse +"|"+ haerte +"|"+ temp +"|"+ gewicht) , change: "ne"}, function (obj) {
            
            switch (getState(haerte).val) {
            case "w":
                haerte_math=InnenTemp[0];
                break;
            case "m":
                haerte_math=InnenTemp[1];
                break;
            case "h":
                haerte_math=InnenTemp[2];
                break;
            case "":
                console.log("error");
                break;
            }
            
            ! if (getState(gewicht).val < EiGroesse[1]){
            setState(groesse, "s");
            }else{
            if ((getState(gewicht).val >= EiGroesse[1]) && (getState(gewicht).val < EiGroesse[2])) {
            setState(groesse,"m");
            }else{
            if ((getState(gewicht).val >= EiGroesse[2]) && (getState(gewicht).val < EiGroesse[3])) {
            setState(groesse,"l");
            }else{
            if ((getState(gewicht).val >= EiGroesse[3])) {
            setState(groesse,"xl");
            }
            }
            }
            
            }
            TempStart=(getState(temp).val);
            gewicht_math=(getState(gewicht).val);
            
            ! timer1();
            ! });
            ! on({id: start, change: "ne"}, function (obj) {
            if (getState(start).val === true) {
            setState(fertig, false);
            setState(reset, false);
            setState(stop, false);
            interval = setInterval(countdown, 1000);
            
            }
            });
            
            ! on({id: reset, change: "ne"}, function (obj) {
            if (getState(reset).val ===true) {
            clearInterval(interval);
            setState(start, false);
            setState(fertig, false);
            setState(reset, false);
            setState(stop, false);
            timer1();
            }
            });
            ! /// Berechnung der Kochzeit ///////////////////////////////////////////////////
            ! function timer1() {
            
            ze1 = 0.517*Math.pow(gewicht_math, 2/3)*Math.log (0.76*((SiedePunkt - TempStart)/(SiedePunkt-haerte_math)));
            ze2 = Math.round(ze1 * 60);             // Kochzeit in Sekunden
            minuten=Math.floor(ze2/60);         // Minuten
            sekunden=ze2 - (minuten*60);        // Sekunden
            ! if (minuten < 10){
            fz_m="0";
            } else {
            fz_m="";
            }
            
             if (sekunden < 10){
                 fz_s="0";
             }else {
                 fz_s="";
             }
             
            zeit= fz_m + minuten.toString() + ":" + fz_s + sekunden.toString();
            setState(timer, zeit);
            ! }
            ! // Countdown
            ! function countdown() {
            if (ze2 > 0 ) {
            if (getState(stop).val ===false) {
            ze2--;
            minuten=Math.floor(ze2/60); // Minuten
            sekunden=ze2 - (minuten*60); // Sekunden
            }
            if (minuten < 10){
            fz_m="0";
            } else {
            fz_m="";
            }
            
                if (sekunden < 10){
                 fz_s="0";
                 }else {
                 fz_s="";
                }
             
                zeit= fz_m + minuten.toString() + ":" + fz_s + sekunden.toString();
                setState(timer, zeit);
             
            } else {
                clearInterval(interval);
                setState(start, false);
                setState(fertig, true);
                setStateDelayed(fertig, false, 60000, true);
            }
            }
            
            ! // Datenpunkte erzeugen
            ! function createStates () {
            
            createState(start, false, {
            name: 'Eieruhr starten',
            desc: 'Eieruhr starten',
            type: 'boolean',
            role: 'state',
            unit: ''
            });
            
            createState(fertig, false, {
            name: 'Eieruhr fertig',
            desc: 'Eieruhr fertig',
            type: 'boolean',
            role: 'state',
            unit: ''
            });
            
            createState(haerte, "w", {
            name: 'Eierhärte',
            desc: 'Eierhärte',
            type: 'String',
            role: 'value',
            unit: ''
            });
            
            ! createState(groesse, "m", {
            name: 'Eiergröße',
            desc: 'Eiergröße',
            type: 'string',
            role: 'value',
            unit: ''
            });
            ! createState(stop, false, {
            name: 'Eieruhr fertig',
            desc: 'Eieruhr fertig',
            type: 'boolean',
            role: 'state',
            unit: ''
            });
            
            createState(timer, "00:00", {
            name: 'Timer',
            desc: 'Timer',
            type: 'string',
            role: 'value',
            unit: ''
            });
            
            ! createState(reset, false, {
            name: 'Eieruhr reset',
            desc: 'Eieruhr reset',
            type: 'boolean',
            role: 'state',
            unit: ''
            });
            ! createState(gewicht, 50, {
            name: 'Eigewicht',
            desc: 'Eigewicht',
            type: 'number',
            role: 'value',
            unit: 'g'
            });
            
            createState(temp, 0, {
            name: 'Eitemperatur',
            desc: 'Eitemperatur',
            type: 'number',
            role: 'value',
            unit: '°C'
            });
            
            ! }
            ! ///////////////////////////////////////////////////////////////////////////////
            ! createStates();
            setTimeout(timer1,1000);
            ! ````
            
            1 Reply Last reply Reply Quote 0
            • Bostil
              Bostil last edited by Bostil

              Okay liebe Eierliebhaber inklusive @dna909

              Problem ausfindig gemacht: zu Beginn der Zeilen 21 / 22 und 24 befanden sich Zeichen, die zumindest bei mir das Erstellen der Datenpunkte unterbunden hatten.

              Folgendes, leicht angepasstes Script klappt bei mir im Jahre 2020:

              //   Eieruhr    dna909 (heinbloed@nu-is-en.de)
              //   **************************************************************************
              //   v0.1       initial
              //   v0.2       Erweiterung Eitemperatur + Gewicht
              //   v0.3       Formel Garzeit angepasst (13.10.2017)
              //   **************************************************************************
              //
              //  Datenpunkte:
              //  
              //  start:      true/false
              //  Stop:       true/false
              //  fertig:     true/false          //Wert für viele tolle Dinge
              //  Haerte:     "w","m","h"         //weich,medium,hart
              //  Groesse:    "s","m","l","xl"    //Eigröße
              //  Timer:      "mm:ss"
              //  Reset:      true/false
              //  Gewicht:    g                   //Eigewicht
              //  Temperatur: °C                  //Eitemperatur
              //  Switch:		true/false			//true=nach Größe ; false=nach Gewicht
              ///////////////////////////////////////////////////////////////////////////////
              // Datenpunkte
              var instanz =   "javascript.0";
              var objekt  =   "Eieruhr";
              var start        =   instanz+"."+objekt+"."+"start";
              var fertig       =   instanz+"."+objekt+"."+"fertig";
              var haerte       =   instanz+"."+objekt+"."+"Haerte";
              var groesse  	 =   instanz+"."+objekt+"."+"Groesse";
              var stop    	 =   instanz+"."+objekt+"."+"Stop";
              var timer   	 =   instanz+"."+objekt+"."+"Timer";
              var reset   	 =   instanz+"."+objekt+"."+"Reset";
              var gewicht 	 =   instanz+"."+objekt+"."+"Gewicht";
              var temp   		 =   instanz+"."+objekt+"."+"Temperatur";
               ///////////////////////////////////////////////////////////////////////////////
              var SiedePunkt=100;             //Siedepunkt Wasser
              var InnenTemp=[62,68,82];       //Kerntemperatur Eigelb (weich,medium,hart)
              var TempStart=7;                //Eitemperatur
              var EiGroesse=[50,60,70,80];    //S,M,L,XL-Eigewicht
              ///////////////////////////////////////////////////////////////////////////////
              //// Initialwerte
              haerte_math=InnenTemp[0];
              gewicht_math=EiGroesse[1];
              ///////////////////////////////////////////////////////////////////////////////
              on({id: new RegExp( groesse +"|"+ haerte +"|"+ temp +"|"+ gewicht) , change: "ne"}, function (obj) {
               
                  switch (getState(haerte).val) {
                  case "w":
                      haerte_math=InnenTemp[0];
                      break;
                  case "m":
                      haerte_math=InnenTemp[1];
                      break;
                  case "h":
                      haerte_math=InnenTemp[2];
                      break;
                  case "":
                      console.log("error");
                      break;
              }
               	if (getState(gewicht).val < EiGroesse[1]){
              	    setState(groesse, "s");
              	}else{
              	    if ((getState(gewicht).val >= EiGroesse[1]) && (getState(gewicht).val < EiGroesse[2])) {
              	       setState(groesse,"m"); 
              	}else{
              	    if ((getState(gewicht).val >= EiGroesse[2]) && (getState(gewicht).val < EiGroesse[3])) {
              	     setState(groesse,"l");   
              	}else{
              	    if ((getState(gewicht).val >= EiGroesse[3])) {
              	     setState(groesse,"xl");   
              	}
              }
              }
               
              }
                      TempStart=(getState(temp).val);
                      gewicht_math=(getState(gewicht).val);
              timer1();
              });
              on({id: start, change: "ne"}, function (obj) {
                  if (getState(start).val === true) {
                  setState(fertig, false);
                  setState(reset, false);
                  setState(stop, false);
                  interval = setInterval(countdown, 1000);
               
                  }
               
              });
              on({id: reset, change: "ne"}, function (obj) {
                  if (getState(reset).val ===true) {
                      clearInterval(interval);
                      setState(start, false);
                      setState(fertig, false);
                      setState(reset, false);
                      setState(stop, false);
                      timer1();
                  }
              });
              /// Berechnung der Kochzeit ///////////////////////////////////////////////////
              function timer1() {
               
                  ze1 = 0.517*Math.pow(gewicht_math, 2/3)*Math.log (0.76*((SiedePunkt - TempStart)/(SiedePunkt-haerte_math)));
                  ze2 = Math.round(ze1 * 60);             // Kochzeit in Sekunden
                  minuten=Math.floor(ze2/60);         // Minuten
                  sekunden=ze2 - (minuten*60);        // Sekunden
               if (minuten < 10){
                       fz_m="0";
                   } else {
                       fz_m="";
                   }
               
                   if (sekunden < 10){
                       fz_s="0";
                   }else {
                       fz_s="";
                   }
               
                  zeit= fz_m + minuten.toString() + ":" + fz_s + sekunden.toString();
                  setState(timer, zeit);
               }    
              // Countdown
              function countdown() {
                  if (ze2 > 0 ) { 
                          if (getState(stop).val ===false) {
                          ze2--;
                          minuten=Math.floor(ze2/60);      // Minuten
                          sekunden=ze2 - (minuten*60);          // Sekunden
                          }
                      if (minuten < 10){
                       fz_m="0";
                      } else {
                       fz_m="";
                      }
               
                      if (sekunden < 10){
                       fz_s="0";
                       }else {
                       fz_s="";
                      }
               
                      zeit= fz_m + minuten.toString() + ":" + fz_s + sekunden.toString();
                      setState(timer, zeit);
               
                  } else {
                      clearInterval(interval);
                      setState(start, false);
                      setState(fertig, true);
                      setStateDelayed(fertig, false, 60000, true);
                  }
              }
              // Datenpunkte erzeugen
              function createStates () {
               
               createState(start, false, {
                      name: 'Eieruhr starten',
                      desc: 'Eieruhr starten',
                      type: 'boolean',
                      role: 'state',
                      unit: ''
                  });      
               
               createState(fertig, false, {
                      name: 'Eieruhr fertig',
                      desc: 'Eieruhr fertig',
                      type: 'boolean',
                      role: 'state',
                      unit: ''
                  });          
               
               createState(haerte, "w", {
                      name: 'Eierhärte',
                      desc: 'Eierhärte',
                      type: 'String',
                      role: 'value',
                      unit: ''
                  });          
              createState(groesse, "m", {
                      name: 'Eiergröße',
                      desc: 'Eiergröße',
                      type: 'string',
                      role: 'value',
                      unit: ''
                  });          
              createState(stop, false, {
                      name: 'Eieruhr fertig',
                      desc: 'Eieruhr fertig',
                      type: 'boolean',
                      role: 'state',
                      unit: ''
                  });          
               
               createState(timer, "00:00", {
                      name: 'Timer',
                      desc: 'Timer',
                      type: 'string',
                      role: 'value',
                      unit: ''
                  });          
              createState(reset, false, {
                      name: 'Eieruhr reset',
                      desc: 'Eieruhr reset',
                      type: 'boolean',
                      role: 'state',
                      unit: ''
                  });   
              createState(gewicht, 50, {
                      name: 'Eigewicht',
                      desc: 'Eigewicht',
                      type: 'number',
                      role: 'value',
                      unit: 'g'
                  });        	
               
              createState(temp, 0, {
                      name: 'Eitemperatur',
                      desc: 'Eitemperatur',
                      type: 'number',
                      role: 'value',
                      unit: '°C'
                  });        	
               
              }
              ///////////////////////////////////////////////////////////////////////////////
              createStates();
              setTimeout(timer1,1000);
              
              

              Danke für das schöne Script @dna909

              D 1 Reply Last reply Reply Quote 0
              • D
                dna909 @Bostil last edited by

                @Bostil Das lag scheinbar daran, das bei der Umstellung der Forensoftware das Script falsch formatiert wurde. Irgendwie stimmten da die Tags nicht mehr. Habe das aber im ersten Beitrag angepasst.

                Gruß

                dna909

                Z 1 Reply Last reply Reply Quote 0
                • Z
                  zahnheinrich @dna909 last edited by

                  @dna909
                  Leider nicht angepasst.
                  Die Zeichen ">!" sind immer noch drin!

                  Negalein 1 Reply Last reply Reply Quote 0
                  • Negalein
                    Negalein Global Moderator @zahnheinrich last edited by

                    @zahnheinrich sagte in [Script] Eieruhr:

                    Die Zeichen ">!" sind immer noch drin!

                    habs ausgebessert

                    Z 1 Reply Last reply Reply Quote 0
                    • Z
                      zahnheinrich @Negalein last edited by

                      @Negalein
                      Jupp passt jetzt 👍

                      1 Reply Last reply Reply Quote 0
                      • K
                        kgw last edited by kgw

                        erledigt.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        758
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        javascript
                        9
                        21
                        4105
                        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