NEWS
Waschmaschine / Trockner blockly
-
Hallo zusammen,
ich habe für Waschmaschine und Trockner jeweils SP111 Steckdosen im Einsatz.
Nun wollte ich eine Medlung wenn die Geräte fertig sind und habe folgenden blockly erstellt (mit Hilfe von Youtube)
Die Waschmaschine ist schon älter und hat in Standby einen Verbrauch von ca. 2W.
Jetzt mein Problem: Diese 2W werden auch beim Betrieb des öfteren erreicht (einweichen der Wäsche etc.).
Um nun Fehlmeldungen zu verhindert habe ich eine Zeitverzögerung eingebaut, so das eigentlcih die Meldung erst
kommen soll, wenn die 2W länger als 420sec. anstehen.
Leider funktioniert das nicht, so das ich während eines Waschvorganges mehere Fertig Meldungen bekomme.
Kann mir bitte jemand einen Tipp geben, was ich ändern muss?
Vielen Dank und schönen Gruß,
Jörg -
Moin,
setze den stop timeout auch on die Bedingung >=30, dann stoppst du die Zeit beim Wiederanlauf
-
@Nordischerjung Danke für den Tipp, Du meinst so:
-
@DerHesse Ich empfehl eine Forum-Suche nach Waschmaschine - es gibt gefühlt 10 Lösungen für Dein problem in verschiedenen Threads, z.Bsp. Diesen.
Im Übrigen ist das ein 'standard' Problem. - das entprellen von Sensoren. Die Lösung ist immer:
Wenn ein Sensorwert eine Schwelle passiert nach x ms nachschauen ob der Wert immer noch jenseits der Schwelle ist, dann agieren.
A.
-
En bisschen gemischt zwischen English und Deutsch, aber mein Skript schaut erstmal nach 10 min (timeout variable) um diese Probleme umzugehen. Kannst ja mal für dich adaptieren:
var WaMa_Dauerzaehler=0, Dauerzaehler,Standby_timer=0,WH=0,string_info; var Telegram_reminder; const st = { OFF: 'OFF', ACTIVE: 'ACTIVE', FINISHED: 'FINISHED', STD_BY: 'STD_BY' } const StdBy = 4 ; // 4 if less than 4 W for longer than 'timeout' minutes, then door was opened const Moving = 10 ; // If less than 10 W for longer than 'timeout' minutes, then it finished const Active = 1500; // Every start will supass this power consumption const timeout = 10; //Check for this long before changing to finished or stdby const reminder_s = 900; //Send to Telegram reminder every x sec let WaMa = st.OFF function check_run(power) { if (power > Active) { sendTo('telegram.0', {text: 'Waschmaschine started!'}); WaMa = st.ACTIVE; WH = parseFloat(getState("fritzdect.0.DECT200_116570146230.energy").val); WaMa_Dauerzaehler = 0; Dauerzaehler = setInterval(function () { //Increase every 1min WaMa_Dauerzaehler = (typeof WaMa_Dauerzaehler == 'number' ? WaMa_Dauerzaehler : 0) + 1; },60*1000); }} on({id: 'fritzdect.0.DECT200_116570146230.power', change: "ne"}, function (obj) { //on({id: 'zigbee.0.7cb03eaa0a047bda.brightness', change: "ne"}, function (obj) { console.log('Status Waschmaschine was'+WaMa+' current power '+ obj.state.val+'W'); switch(WaMa){ case st.ACTIVE: console.log('Main timer '+WaMa_Dauerzaehler+' StandBy '+Standby_timer); if ( obj.state.val > Moving ) { //While power required, reset baseline time Standby_timer = WaMa_Dauerzaehler; } if ((WaMa_Dauerzaehler-Standby_timer) >= timeout) { //Already 10 min with low consumption WaMa = st.FINISHED; WH = (parseFloat(getState("fritzdect.0.DECT200_116570146230.energy").val)- WH)/1000; string_info = 'Waschmaschine ' + WaMa + '. Dauer ' + WaMa_Dauerzaehler +' min' + ' KWh '+WH console.log(string_info); sendTo('telegram.0', {text: string_info}); //SEND info directy //Send this every 15 minutes until cleared Telegram_reminder = setInterval(function () { sendTo('telegram.0', {text: 'Reminder: Waschmaschine is fertig!'}); console.log('Reminder WaMa Ready'); },reminder_s*1000); } break; case st.OFF: //TURNED OFF BY USER check_run(obj.state.val); break; case st.FINISHED: //FINISHED BUT still moving around (door closed) if(obj.state.val > StdBy) { Standby_timer = WaMa_Dauerzaehler; } if (WaMa_Dauerzaehler - Standby_timer >= timeout ) { //10 minutes having only STDBY consumption, assume door opened WaMa = st.STD_BY; if (Telegram_reminder) {clearInterval(Telegram_reminder); Telegram_reminder = null;} sendTo('telegram.0', {text: 'Waschmaschine bitte komplett auschalten um Standby strom zu sparen'}); if (Dauerzaehler) {clearInterval(Dauerzaehler); Dauerzaehler = null;} } if(obj.state.val < 1) { WaMa = st.FINISHED; if (Dauerzaehler) {clearInterval(Dauerzaehler); Dauerzaehler = null;} } check_run(obj.state.val); break; case st.STD_BY: //FINISHED BUT still turned on (door open) console.log('Please turn WaMa off'); if (obj.state.val < 1) { //Less than 1W is off WaMa = st.OFF; console.log('WaMa turned Off'); } check_run(obj.state.val); break; }})
-
Vielen Dank an alle, der erste Tipp hat schon zum Erfolg geführt