NEWS
Vergleich Innen- zu Außen-/temperatur
-
Hallo zusammen,
vielleicht könnt ihr mir helfen.
Ich möchte gerne per Telegramm informiert werden wenn die Aussentemperatur soweit gefallen ist (Innentemperatur) das ich die Fenster öffnen kann.
Super wäre wenn das Scrtipt von 18:00-01:00 Uhr laufen würde darüberhinaus nicht, und nur einmal nicht jede Minute/Sekunde eine Benachrichtigung.Die suche habe ich schon bemüht und ein Java Script gefunden den ich leider nicht ganz verstehe.
https://forum.iobroker.net/topic/7091/vergleich-innen-zu-außentemperaturLeider habe ich bisher noch nichts mit Java Script gemacht.
Das ist der Blocky den ich bisher gebaut habe aber leider habe ich noch keine Benachrichtigung bekommen
/** * Beschreibe diese Funktion … */ function oder() { schedule("* * * * * *", function () { if (getState("zigbee.1.00158d0002f8201b.temperature").val >= getState("xs1.0.Sensors.Aussen_Temperatur").val) { sendTo("telegram", "send", { text: (['Die Temperatur in deiner Wohnung ist:',getState("zigbee.1.00158d0002f8201b.temperature").val,'Öffne die Fenster'].join('')) }); } }); }
Was ich mich frage, muss ich die Werte erst umwandeln in eine Zahl?
So bekomme ich sie im Iobroker;
Vielleicht kann mir auch eine helfen das zu verstehen
Das ist das Script aus dem Link abgeändert so das ich benachrichtigt werde. (funktioniert auch allerdings bekomme ich so wie es aussieht bei jeder Änderung eine Push Benachrichtigung.)Was passiert bei Zeile 13 und von 18-26?
var idTa = 'xs1.0.Sensors.Aussen_Temperatur'; var idTi = 'zigbee.1.00158d0002f8201b.temperature'; var ta = getState(idTa).val; var ti = getState(idTi).val; var gesendet = false; // Merker, dass schon gesendet wurde function vergleich() { if(ta <= ti && !gesendet) { sendTo('telegram.0', 'Außen kühler als Innen'); gesendet = true; } else if(ta > ti - 0.5) gesendet = false; // 0,5 K Hysterese } vergleich(); // Script start on(idTa, function(dp) { ta = dp.state.val; vergleich(); }); on(idTi, function(dp) { ti = dp.state.val; vergleich(); });
-
@Ag3nt_Sn4k3 sagte:
aber leider habe ich noch keine Benachrichtigung bekommen
Die Funktion, in der der Zeitplan erzeugt wird, wird nie aufgerufen. Lass die Funktion weg.
@Ag3nt_Sn4k3 sagte in Vergleich Innen- zu Außen-/temperatur:
Was passiert bei Zeile 13
Das Senden wird wieder freigegeben. Allerdings wäre für eine Hysterese richtig:
else if(ta > ti + 0.5) gesendet = false; // 0,5 K Hysterese
@Ag3nt_Sn4k3 sagte in Vergleich Innen- zu Außen-/temperatur:
von 18-26?
Es wird auf eine Wertänderung des betreffenden Sensors getriggert, der neue Wert in die zugehörige Variable geschrieben und anschließend die Funktion für den Vergleich der Variablen aufgerufen.
-
Danke für deine Schnelle Antwort.
Zu Punkt eins:
So wollte ich realiesieren das mir die Nachricht zugeschickt wird in der zeit von, bis.Zu Punkt zwei:
Ist die Hysterese = Werte in °C also die 0.5 = 0,5°C? oder in welchem Verhältnis steht das?Zu Punkt drei:
danke auch dafür das hatte ich nicht verstanden. -
@Ag3nt_Sn4k3 sagte:
von 18:00-01:00 Uhr laufen würde darüberhinaus nicht, und nur einmal
Vorschlag:
var idTa = 'xs1.0.Sensors.Aussen_Temperatur'; var idTi = 'zigbee.1.00158d0002f8201b.temperature'; var ta = getState(idTa).val; var ti = getState(idTi).val; var gesendet = false; // Merker, dass schon gesendet wurde function vergleich() { if(compareTime('18:00', '1:00', 'between')) { if(ta < ti && !gesendet) { sendTo('telegram.0', 'Außen kühler als Innen'); gesendet = true; } } else gesendet = false; } vergleich(); // Script start on(idTa, function(dp) { ta = dp.state.val; vergleich(); }); on(idTi, function(dp) { ti = dp.state.val; vergleich(); });
-
Vielen Dank schon mal, ich werde das gleich einmal einspielen und testen.