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. Auslösen eines Skriptes mittel Füllstandssensor

NEWS

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

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

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

Auslösen eines Skriptes mittel Füllstandssensor

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 5 Kommentatoren 2.8k 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #6

    Hallo HKF8770,

    für Deine Fragen musst du dich nicht entschuldigen.

    Die Frostfrage: Du hast das eigentlich doppelt gemoppelt. Du brauchst ja nur auf eine Aktualisierung der Temperatur reagieren. Wenn sich jede 10 Sekunden die Temperatur ändert, dann wird eben jede 10s entschieden, ob Frost herrscht oder nicht. Eine zusätzliche zeitgesteuerte Abfrage ist nicht nötig.

    Stell dir vor, du fährst mit dem Auto durch den Regen. Der Regen ist nicht gleichmäßig, sondern mal stärker mal schwächer. Der moderne Regensensor in der Scheibe reagiert auf den Regen und wischt, wenn die Sicht schlecht ist. Die altmodische Intervallsteuerung wischt zB alle 3s und das ist mal zu früh und mal zu spät. Beide Systeme zusammen machen aber gar keinen Sinn.

    createState('Temperatur.Temperatur_Ostseite'); // erstmal ohne Wert und ohne Häkchen, da sonst ein String erwartet wird
    createState('Temperatur.Temperatur_Ostseite_Frost');
    
    on("hm-rpc.0.KEQ0121727.1.TEMPERATURE"/*Aussensensor Ost.TEMPERATURE*/, function(data) {
        var Temperatur = data.newState.val;
        if (Temperatur < 0) { // aktuelle Temp unter 0 -> Frost
            setState('Temperatur.Temperatur_Ostseite_Frost', true); // hier würde ich statt 'ja' lieber 1 oder true schreiben
            log("---> TEST Ostseite hat es keinen Frost bei: " + Temperatur +" °C", "info");
        } else { 
            setState('Temperatur.Temperatur_Ostseite_Frost', false); // hier lieber 0 oder false
            log("---> TEST Ostseite hat es Frost bei: " + Temperatur +" °C", "info"); 
        } 
        setState('Temperatur.Temperatur_Ostseite', Temperatur); // diese Zeile brauchst nicht in der IF-Abfrage, wird ja in beiden Fällen ausgeführt
    });
    
    

    In VIS kannst du dir über die Sichtbarkeit die Variable 'Temperatur.Temperatur_Ostseite_Frost' ausblenden lassen, wenn sie 'false' ist. Wenn die Variable nur für die Anzeige gedacht ist, nicht aber für die weitere Steuerung, kannst du gleich auf den Temperaturwert zurückgreifen (Wenn "hm-rpc.0.KEQ0121727.1.TEMPERATURE" <0 , dann FROST anzeigen)

    ! Hier das Widget zum Importieren:

    [
      {
        "tpl": "tplMetroTileBoolNumber",
        "data": {
          "visibility-cond": "<",
          "visibility-val": "0",
          "hover": "true",
          "bg_class_false": "bg-amber",
          "bg_class_true": "ribbed-cobalt",
          "icon_class_false": "icon-sun",
          "icon_class_true": "icon-snowflake",
          "badge_bg_class_false": "",
          "badge_bg_class_true": "",
          "brand_bg_class_false": "",
          "brand_bg_class_true": "",
          "visibility-oid": "hm-rpc.0.KEQ0121727.1.TEMPERATURE",
          "state_oid": "",
          "number_oid": "hm-rpc.0.KEQ0121727.1.TEMPERATURE",
          "label_append": " °C",
          "label_false": "Frost
    ",
          "label_true": "Frost
    "
        },
        "style": {
          "left": "299px",
          "top": "213px"
        },
        "widgetSet": "metro"
      }
    ]
    

    Und noch ein Hinweis: @pix:

    on("hm-rpc.0.BidCoS-RF.5.PRESS_SHORT"/aktualisiern Dashui.PRESS_SHORT/, function(obj) { //virtueller Schalter in CCU 2

    solar_produziert(data.newState.val); ` Hier würde der Wert des Tasters mit````
    obj.newState.val

    
    Gruß
    
    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • H Offline
      H Offline
      HKF8770
      schrieb am zuletzt editiert von
      #7

      Ich benötige nochmals Hilfe weil ich es einfach nicht schaffe :cry: :cry:

      Hab das ganze jetzt als Funktion aufgebaut und möchte dass die Funktion durch 3 varianten angestoßen wird. Es müssen aber nicht alle 3 erfüllt sein, sondern nur 1 der 3. So wie es jetzt ist läuft es alle 10 Minuten, aber nicht bei Änderung der Temperatur bzw. des Aktualisierungsknopfes

      function alarm_gefriertruhe(obj) { 
      	var temp = getState("hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/).val;
      	if (temp < -25) {
      		setState('Gefriertruhe.Alarm', false);  
      		log("---> TEST Temperatur Gefriertruhe: o.k.  " + temp +" °C","info"); 
      	} 
      	if (temp > -25) { 
      		setState('Gefriertruhe.Alarm', true);
      		log("---> Temperatur Gefriertruhe: kritisch   " + temp +" °C","info");  
      		sendTo("email", {
      			from:    "test@test.com",
      			to:      "friedhelm.kuehnle@hoerauf.com",
      			subject: "Gefriertruhe",
      			text:    ("Achtung, Gefriertruhe ist nicht kalt genug! Lediglich " + temp +" °C")
      		});
      	} 
      }
      
      on("hm-rpc.0.BidCoS-RF.5.PRESS_SHORT"/*aktualisiern Dashui.PRESS_SHORT*/, function(obj) {   //soll entweder ausgelöst werden bei Änderung hm-rpc.0.BidCoS-RF.5.PRESS_SHORT
      	log("===>Ausgelöst durch CCU2!");
      	alarm_gefriertruhe(obj.newState.val);
      
      	on("hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/, function(obj) {             //oder!! soll entweder ausgelöst werden beihm-rpc.0.KEQ0040908.1.TEMPERATURE
      		log("===>Ausgelöst durch Temperaturänderung!");
      		alarm_gefriertruhe (obj.newState.val);
      
      		schedule("*/10 * * * *", function () {                                                      //oder!! soll entweder ausgelöst werden alle 10 Minuten
      			log("===>Will be triggered every 10 minutes!"); 
      			alarm_gefriertruhe(obj.newState.val);
      		});
      	});
      });
      

      Freddy

      1 Antwort Letzte Antwort
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        schrieb am zuletzt editiert von
        #8

        Probiere mal so:

        function alarm_gefriertruhe() { 
        	var temp = getState("hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/).val;
        	if (temp < -25) {
        		setState('Gefriertruhe.Alarm', false, true);  
        		log("---> TEST Temperatur Gefriertruhe: o.k.  " + temp +" °C","info"); 
        	} 
        	if (temp > -25) { 
        		setState('Gefriertruhe.Alarm', true, true);
        		log("---> Temperatur Gefriertruhe: kritisch   " + temp +" °C","info");  
        		sendTo("email", {
        			from:    "test@test.com",
        			to:      "friedhelm.kuehnle@hoerauf.com",
        			subject: "Gefriertruhe",
        			text:    ("Achtung, Gefriertruhe ist nicht kalt genug! Lediglich " + temp +" °C")
        		});
        	} 
        }
        
        on("hm-rpc.0.BidCoS-RF.5.PRESS_SHORT"/*aktualisiern Dashui.PRESS_SHORT*/, function() {   //soll entweder ausgelöst werden bei Änderung hm-rpc.0.BidCoS-RF.5.PRESS_SHORT
        	log("===>Ausgelöst durch CCU2!");
        	alarm_gefriertruhe();
        });
        on("hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/, function() {             //oder!! soll entweder ausgelöst werden beihm-rpc.0.KEQ0040908.1.TEMPERATURE
        	log("===>Ausgelöst durch Temperaturänderung!");
        	alarm_gefriertruhe ();
        });
        schedule("*/10 * * * *", function () {                                                    //oder!! soll entweder ausgelöst werden alle 10 Minuten
        	log("===>Will be triggered every 10 minutes!"); 
        	alarm_gefriertruhe();
        });
        
        
        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #9

          Hallo,

          zuerst möchte ich dich wirklich bitten, die CODE FUNKTION mit eckigeKlammerAuf Code eckigeKlammerZu hier im Forum zu nutzen.

          Der Fehler in Deinem Skript ist die Strukturierung: Auslöser durch Taster BEINHALTET die Auslösung durch Temperaturänderung. Und diese beinhaltet die schedule Funktion. Die drei Auslöser können aber gleichzeitig laufen. Wie im letzten Thread schon erwähnt, kannst du dir den schedule schenken, wenn du auf die Änderung der Temperatur triggerst. Den manuellen Auslöser auch, aber wenn du es unbedingt willst.

          Ausserdem übergibst du der Funktion alarm_Gefriertruhe mal den neuen Tasterstatus, mal die Temperatur und mal gar nix (schedule). Besser du rufst die Funktion ohne Übergabe auf. Die aktuelle Temperatur wird in diesem Fall eh INNERHALB der Funktion erst ermittelt (var temp = getState…).

          createState('Gefriertruhe.Alarm');
          
          function alarm_gefriertruhe() { 
              var temp = getState("hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/).val;
              if (temp <= -25) {
                  setState('Gefriertruhe.Alarm', false); 
                  log("---> TEST Temperatur Gefriertruhe: o.k. " + temp +" °C","info"); 
              } 
              if (temp > -25) { 
                  setState('Gefriertruhe.Alarm', true);
                  log("---> Temperatur Gefriertruhe: kritisch " + temp +" °C","info"); 
                  sendTo("email", {
                      from: "test@test.com",
                      to: "friedhelm.kuehnle@hoerauf.com",
                      subject: "Gefriertruhe",
                      text: ("Achtung, Gefriertruhe ist nicht kalt genug! Lediglich " + temp +" °C")
                  });
              } 
          }
          
          on({id: "hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/, change: 'ne'} function(obj) { //oder!! soll entweder ausgelöst werden beihm-rpc.0.KEQ0040908.1.TEMPERATURE
              log("===>Ausgelöst durch Temperaturänderung!");
              alarm_gefriertruhe;
          });
          
          // Die nächsten beiden Auslöser sind nicht wirklich nötig, schaden aber auch nicht
          
          on({"hm-rpc.0.BidCoS-RF.5.PRESS_SHORT"/*aktualisiern Dashui.PRESS_SHORT*/, val:true}, function(obj) { //soll entweder ausgelöst werden bei Änderung hm-rpc.0.BidCoS-RF.5.PRESS_SHORT
              log("===>Ausgelöst durch CCU2!");
              alarm_gefriertruhe;
          });
          
          schedule("*/10 * * * *", function () { //oder!! soll entweder ausgelöst werden alle 10 Minuten
              log("===>Will be triggered every 10 minutes!"); 
              alarm_gefriertruhe;
          });
          
          

          Gruß

          Pix

          Edit: Das Logging und ggf. die Email werden bei jeder Aktualisierung der Temperatur gesendet. Im nächsten Post gehts besser.

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #10

            Hallo,

            hier mal die einfache Lösung für die Gefriertruhe. Einmalige Benachrichtigung bei Überschreiten der Temperatur.

            createState('Gefriertruhe.Alarm');
            
            // Benachrichtigung, sobald Alarm gesetzt wurde
            on({id: 'Gefriertruhe.Alarm', change: 'ne'} function(data) { 
                if (data.newState.val) { // Variable wird abgefragt, wenn true, dann Email senden
                    sendTo("email", {
                        from: "test@test.com",
                        to: "friedhelm.kuehnle@hoerauf.com",
                        subject: "Gefriertruhe",
                        text: ("Achtung, Gefriertruhe ist nicht kalt genug! Lediglich " + getState("hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/).val +" °C")
                    });
                }
            });
            
            // Alarmariable wird gesetzt, wenn kritische Temp überschritten
            on({id: "hm-rpc.0.KEQ0040908.1.TEMPERATURE"/*FWT_WZ:1.TEMPERATURE*/, change: 'ne'} function(data) { 
                temp = data.newState.val;
                if (temp > -25) { 
                    setState('Gefriertruhe.Alarm', true);
                    log("---> Temperatur Gefriertruhe: kritisch " + temp +" °C","info"); 
            
                } else {
                    setState('Gefriertruhe.Alarm', false);
                }
            });
            
            

            Gruß

            Pix

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Antwort Letzte Antwort
            0
            • H Offline
              H Offline
              HKF8770
              schrieb am zuletzt editiert von
              #11

              Hallo Pix und Bluefox….danke für eure Hilfe...läuft jetzt. Mit euren Erklärungen kapier sogar ich es :)

              Morgen mach ich mich an die einfache Version von Pix.

              Freddy

              1 Antwort Letzte Antwort
              0
              • wendy2702W Online
                wendy2702W Online
                wendy2702
                schrieb am zuletzt editiert von
                #12

                Hi,

                ich versuche mich auch bei iobroker mal an den Scripten und hoffe das ich es irgendwann mal verstehe.

                Habe dieses Script genommen:

                createState('Zisterne.Literaktuell', '0');
                
                function liter_berechnen(level) {
                    log('Zisterne Berechnung Liter');
                    log('Zisterne Level: ' + level + ' %');
                    var Liter = level * 59;
                    log('Zisterne in Liter: ' + Liter + ' Liter');
                    setState('Zisterne.Literaktuell', Liter);
                }
                
                schedule('*/60 * * * *', liter_berechnen(getState('hm-rpc.0.KEQ0849124.1.FILLING_LEVEL').val));
                
                on('hm-rpc.0.KEQ0849124.1.FILLING_LEVEL', function(data) {
                    liter_berechnen(data.newState.val);
                });
                

                und erhalte nach Start diese Einträge im Log:

                javascript-0	2016-01-19 21:49:27	info	script.js.Füllstandumrechnen: registered 1 subscription and 0 schedules
                javascript-0	2016-01-19 21:49:27	error	script.js.Füllstandumrechnen: schedule callback missing
                javascript-0	2016-01-19 21:49:27	info	script.js.Füllstandumrechnen: Zisterne in Liter: 4189 Liter
                javascript-0	2016-01-19 21:49:27	info	script.js.Füllstandumrechnen: Zisterne Level: 71 %
                javascript-0	2016-01-19 21:49:27	info	script.js.Füllstandumrechnen: Zisterne Berechnung Liter
                javascript-0	2016-01-19 21:49:27	info	Start javascript script.js.Füllstandumrechnen
                

                Warum kommt dieser Error und wie bekomme ich den weg?

                Danke und Gruß

                Bitte keine Fragen per PN, die gehören ins Forum!

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                1 Antwort Letzte Antwort
                0
                • blauholstenB Offline
                  blauholstenB Offline
                  blauholsten
                  Developer
                  schrieb am zuletzt editiert von
                  #13

                  Probiert das…

                  createState('Zisterne.Literaktuell', '0');
                  
                  function liter_berechnen() {
                  
                  level = (getState('hm-rpc.0.KEQ0849124.1.FILLING_LEVEL').val)    
                      log('Zisterne Berechnung Liter');
                      log('Zisterne Level: ' + level + ' %');
                      var Liter = level * 59;
                      log('Zisterne in Liter: ' + Liter + ' Liter');
                      setState('Zisterne.Literaktuell', Liter);
                  }
                  
                  schedule('*/60 * * * *', liter_berechnen);
                  
                  on('hm-rpc.0.KEQ0849124.1.FILLING_LEVEL', function(data) {
                      liter_berechnen();
                  });
                  
                  

                  Entwickler vom: - Viessman Adapter
                  - Alarm Adapter

                  1 Antwort Letzte Antwort
                  0
                  • wendy2702W Online
                    wendy2702W Online
                    wendy2702
                    schrieb am zuletzt editiert von
                    #14

                    Mache ich morgen früh .

                    Gebe dann Bescheid.

                    Danke!

                    Sent from my iPhone using Tapatalk

                    Bitte keine Fragen per PN, die gehören ins Forum!

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    1 Antwort Letzte Antwort
                    0
                    • wendy2702W Online
                      wendy2702W Online
                      wendy2702
                      schrieb am zuletzt editiert von
                      #15

                      Das andere Script läuft jetzt auch ohne Error im log.

                      Musste also nicht mehr testen.

                      Danke

                      Bitte keine Fragen per PN, die gehören ins Forum!

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      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

                      698

                      Online

                      32.4k

                      Benutzer

                      81.5k

                      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