NEWS
[VORLAGE] Blockly Meldung wenn Waschmaschine fertig
-
Hallo
Das Thema wurde in einem anderen Thread behandelt. Das Ergebnis hier mal als Vorlage.
Es wird ein Datenpunkt "WaschmaschineAN" benötigt. (wird vom Script generiert)
Vier Dinge müssen für die eigene Waschmaschine angepasst werden.
1. GrenzWertInWatt
Wird der dort eingetragene Wert überschritten, startet der Waschvorgang und die Meldung "Waschmaschine LÄUFT" wird abgesetzt. Wird der Wert unterschritten, (Waschmaschine geht in den StandBy Modus) wird die Meldung "Waschmaschine FERTIG" abgesetzt.2. Einschaltverzögerung
Dieser Wert ist nur wichtig, wenn man die Steckdose EINSCHALTET.
Wenn die Waschmaschine also von 0 Watt eingeschaltet wird!
Einige Maschinen durchlaufen dann eine Initialisierung, wobei die Watt-Zahl mehrere Sprünge machen kann.
Nach der Initialisierung gehen die Maschinen in den StandBy Modus.
Dieses Watt Chaos wird mit der "Einschaltverzögerung" übergangen.
In dem Beispiel sind es 20 Sek..
Dauert die Initialisierung länger, muss dieser Wert angepasst werden.
Bleibt die Waschmaschine aber immer auf StandBy, wird also NICHT ausgeschaltet, ist hier KEINE Änderung notwendig!3. timeout
Waschmaschinen durchlaufen meist mehrere Programme.
Zwischen den Programmwechsel kann es schon mal sein, dass der "GrenzWertInWatt" unterschritten wird, obwohl der Waschgang noch nicht fertig ist. Dafür wird ein Timeout von 40 Sek. gestartet.
Erst wenn nach den 40 Sek. der "GrenzWertInWatt" immer noch unterschritten ist, wird "WaschmaschineAN" auf "unwahr" gesetzt und die Fertigmeldung verschickt.
Dauert das bei Eurer Maschine länger, muss der "timeout" angepasst werden.4. In die Funktion "Melden" den gewünschten "SendTo" Baustein einsetzen.
Export:
Grüße
-
Hi,
wenn ich den Code importiere und auf speichern gehe, speichert es nicht, es kommt auch keine Fehlemeldung, hat einer eine idee weswegen?
-
Hi,
wenn ich den Code importiere und auf speichern gehe, speichert es nicht, es kommt auch keine Fehlemeldung, hat einer eine idee weswegen? `
Hi, genau an dem Punkt hakt es bei mir auch.
-
Hi versuche den mal, habe ihn einfach noch mal geschrieben und so konnte ich ihn speichern.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="create" id=":XvakORUFJ^I1/^;0qD" x="-412" y="-488"><field name="NAME">WaschmaschineAN</field>
<next><block type="comment" id="@`s,ARMz+DZns;z2m"><field name="COMMENT">Initialisierung bei Scriptstart</field>
<next><block type="comment" id="~37^X^qbZ.D0tpoBdZG#"><field name="COMMENT">Initialisierung bei Scriptstart</field>
<next><block type="variables_set" id="T+;|Db@bx|T]wkX[e.xT"><field name="VAR">VerzoegerungAktiv</field>
<value name="VALUE"><block type="logic_boolean" id="FimMeG{k6LBu0{7UjBJ4"><field name="BOOL">FALSE</field></block></value>
<next><block type="comment" id="6q4+KcF6/q*eh;RCmGKL"><field name="COMMENT">Entscheidungswert festlegen</field>
<next><block type="variables_set" id="pE;t15K()B2=@=,RY5D_"><field name="VAR">GrenzWertInWatt</field>
<value name="VALUE"><block type="math_number" id="OB=)nO2pXH:1HNwm(JpG"><field name="NUM">4</field></block></value>
<next><block type="comment" id="|2tm%?,yK/o3_AA)J{ah"><field name="COMMENT">Steckdose überwachen</field>
<next><block type="on_ext" id="n)UklDS{=z!-#^HfL@Ly"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="@Uda~stBc8L/=2DFzrvo"><field name="oid">hm-rpc.0.0001D7099ECCF1.6.POWER</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="=n/Jfc]x(Ib[NRPJZ%7X"><value name="IF0"><block type="logic_compare" id="?m1STicTe5=N-/f:Ji2s"><field name="OP">EQ</field> <value name="A"><block type="on_source" id="QjKQBx`PdHENcy)eGM,5"><field name="ATTR">oldState.val</field></block></value> <value name="B"><block type="math_number" id=":(p2PWPzD2(~R-q9upeS"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="comment" id=";%e=m5A.5_U8[v[Odt7."><field name="COMMENT">Dieser Teil wird NUR ausgeführt wenn</field> <next><block type="comment" id="Bv,r2iN_4zSfF_^X35gM"><field name="COMMENT">Funkstecker oder Waschm. komplett aus war.</field> <next><block type="variables_set" id="xuK#29.xYf)m6FX5LA78"><field name="VAR">VerzoegerungAktiv</field> <value name="VALUE"><block type="logic_boolean" id=")}Jh9zUdflaLNnL+;^h="><field name="BOOL">TRUE</field></block></value> <next><block type="debug" id="Wv*jiP9Bn3#//0KE[4e["><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="!hyL_SIc#q!nV1G.NU,/"><field name="TEXT">***Starte Verzögerung</field></shadow></value> <next><block type="timeouts_settimeout" id="v[ws-ZxN:-nNl,kERlT8"><field name="NAME">Einschaltverzögerung</field> <field name="DELAY">20</field> <field name="UNIT">sec</field> <statement name="STATEMENT"><block type="comment" id="UyUTD{W;Ef;u2!)%y5h|"><field name="COMMENT">Eventuell hohe Einschaltspannung abfangen.</field> <next><block type="comment" id="^wiM;VZ*5RLS-+SMsG7?"><field name="COMMENT">Diese kann größer als der Grenzwert sein</field> <next><block type="variables_set" id="@d2;tEWydly|fW:ng;eg"><field name="VAR">VerzoegerungAktiv</field> <value name="VALUE"><block type="logic_boolean" id="S5R1RMtIKx(=N;}|dM%Z"><field name="BOOL">FALSE</field></block></value> <next><block type="debug" id="1^,/eLLAT{#66hqVIel8"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="[koH26;mOP0UeXV~CJRb"><field name="TEXT">***Beende Verzögerung</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></statement> <next><block type="comment" id="EZK4(UY%`}HZl{2F)m6p"><field name="COMMENT">Ab hier wird gewaschen</field> <next><block type="controls_if" id="S(-Xvr1uja6/vNdH|?j:"><mutation elseif="2"></mutation> <value name="IF0"><block type="logic_operation" id="s(;r=_ekdU*dF=_Tsrbb" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="d_lZY_VlNaa40/Pob=Um"><field name="OP">GT</field> <value name="A"><block type="on_source" id="`c4GU.`+o2_G+Vdxq;n/"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="variables_get" id="FD[JnQcwajuYLgGmTX`."><field name="VAR">GrenzWertInWatt</field></block></value></block></value> <value name="B"><block type="logic_operation" id="*Y`H0qa!`fsBeI/2Cv+c" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="zC,(}TPXAvX2yd^k`W._"><field name="OP">EQ</field> <value name="A"><block type="get_value" id=";a;[[bw/v2oQnG9DHZIn"><field name="ATTR">val</field> <field name="OID">javascript.0.WaschmaschineAN</field></block></value> <value name="B"><block type="logic_boolean" id=";a5=vVD`86hstjR{4y~+"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="K.3M9Le`+STB!.M_eD7O"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="[!KuvI83Wzp*sDDNM{S!"><field name="VAR">VerzoegerungAktiv</field></block></value> <value name="B"><block type="logic_boolean" id="9_[X?aI?X1w]lj.RY`K^"><field name="BOOL">FALSE</field></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="S6URE:3#}}.v#e!X.A4D"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.WaschmaschineAN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="QqpwRU?xP?P=bvS9HS[1"><field name="BOOL">TRUE</field></block></value> <next><block type="procedures_callnoreturn" id="=!*WIp};Ta`)XeMMk,iR"><mutation name="Melden"><arg name="Meldetext"></arg></mutation> <value name="ARG0"><block type="text" id="{QcAY3oi:,FGG.929?TS"><field name="TEXT">Waschmaschine LÄUFT</field></block></value></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="Yuagp|w@)mC+asceXLLu"><field name="OP">GT</field> <value name="A"><block type="on_source" id="P(tu4AS{);E?w-p?]{1q"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="variables_get" id="ou6,Zi?vbs[;{]@93U`!"><field name="VAR">GrenzWertInWatt</field></block></value></block></value> <statement name="DO1"><block type="comment" id="H90l#sdGb5I}Wqsbz=9s"><field name="COMMENT">Timer stoppen</field> <next><block type="procedures_callnoreturn" id="zo=cPu~=j#pus6bWVaJl"><mutation name="checkFertig"><arg name="parameter"></arg></mutation> <value name="ARG0"><block type="logic_boolean" id="1SYbGS^3xkqD/Uj?{bvJ"><field name="BOOL">FALSE</field></block></value></block></next></block></statement> <value name="IF2"><block type="logic_operation" id="_@|YxZPYI(z3![Q=ZbX4" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="Ge6FX#6b5WYoc;wF%%iH"><field name="OP">LT</field> <value name="A"><block type="on_source" id="0Vw33+AwVD~={g{aHa~d"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="variables_get" id="NufLwbvZR1.fEmqJNOTZ"><field name="VAR">GrenzWertInWatt</field></block></value></block></value> <value name="B"><block type="logic_compare" id="X[1t=zl25bQ]aHT[:`,8"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="4WFkiPOYU?#zQhOL)0u("><field name="ATTR">val</field> <field name="OID">javascript.0.WaschmaschineAN</field></block></value> <value name="B"><block type="logic_boolean" id="?jrLY7K)k;1?sa!Ef{VO"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO2"><block type="comment" id="}Q59!:8+Dc~b~LwZhq-("><field name="COMMENT">Timer starten</field> <next><block type="procedures_callnoreturn" id=";MD%1IF[[H29g_f=vvYH"><mutation name="checkFertig"><arg name="parameter"></arg></mutation> <value name="ARG0"><block type="logic_boolean" id="/yX*,4aU!HHUO#/2U-NR"><field name="BOOL">TRUE</field></block></value></block></next></block></statement></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block>
<block type="procedures_defnoreturn" id="bvO0,^eTPD9ml~(3]B_F" x="113" y="-487"><mutation><arg name="parameter"></arg></mutation>
<field name="NAME">checkFertig</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK"><block type="comment" id="V2@7jqv5RTl+}q}xfEsZ"><field name="COMMENT">Timer stoppen</field>
<next><block type="timeouts_cleartimeout" id="y7iPL;/^^,);q|%Pk6;"><field name="NAME">timeout</field>
<next><block type="controls_if" id="DX-|5tM5.|5Qw0p76"><value name="IF0"><block type="logic_compare" id="[-Hs2uzeFf6L7XO4:d6g"><field name="OP">EQ</field>
<value name="A"><block type="variables_get" id="uT*6f!Y:?Sivq1F-y;7_"><field name="VAR">parameter</field></block></value>
<value name="B"><block type="logic_boolean" id="w?1)4.uK{/ey3NJ)NjH:"><field name="BOOL">TRUE</field></block></value></block></value>
<statement name="DO0"><block type="comment" id="fUTRz:h*y1K[t@GmyY:"><field name="COMMENT">Timer starten</field> <next><block type="timeouts_settimeout" id="k%sy5:QdTn+3f@{OZshs"><field name="NAME">timeout</field> <field name="DELAY">40</field> <field name="UNIT">sec</field> <statement name="STATEMENT"><block type="control" id="UOquZ.)w|Dv~5_@iC*HO"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.WaschmaschineAN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="ttQizIf!/AB*HLfb9Kw1"><field name="BOOL">FALSE</field></block></value> <next><block type="procedures_callnoreturn" id="HHrpaU=vtt6v1JInTG~l"><mutation name="Melden"><arg name="Meldetext"></arg></mutation> <value name="ARG0"><block type="text" id="leE4:W;JI@,LD;n0Gs6r"><field name="TEXT">Waschmaschine FERTIG</field></block></value></block></next></block></statement></block></next></block></statement></block></next></block></next></block></statement></block> <block type="procedures_defnoreturn" id="HemkepUy:@ye=?+H@tj%" x="388" y="-212"><mutation><arg name="Meldetext"></arg></mutation> <field name="NAME">Melden</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="debug" id="SYQu;@N0JgE!W~[JZcZ_"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="4+J8c.^+FrkDV^]dAda-"><field name="TEXT">test</field></shadow> <block type="variables_get" id="KuX^Hf4/i6gnp|rmq9WR"><field name="VAR">Meldetext</field></block></value> <next><block type="comment" id="CgkHkrp5c26e
w3uU(i`"><field name="COMMENT">Hier wird die Meldung verschickt</field>
<next><block type="pushover" id="@SLn9YfXagkvdVfzO^UZ"><field name="PRIORITY">0</field><value name="MESSAGE"><shadow type="text" id="C3|p)%]@3xnTcIrAq@_="><field name="TEXT">Waschmaschine Fertig</field></shadow></value> <value name="TITLE"><block type="text" id="@=^~@[e}2_Uzit!jA!6F"><field name="TEXT">Waschmachine Fertig</field></block></value></block></next></block></next></block></statement></block></xml>
-
Geht bei mir auch leider nicht mit den neuen Code
Habe gerade aber auch vorgestern den JS Adapter aktualisiert. Sieht auch alles ein bischen anders im Browser aus (minimal).
Kann es daran liegen? Nutze jetzt Version 3.5.1
Jedoch, die originale von rantaplan geht bei mir.
-
Geht bei mir auch leider nicht mit den neuen Code
Habe gerade aber auch vorgestern den JS Adapter aktualisiert. Sieht auch alles ein bischen anders im Browser aus (minimal).
Kann es daran liegen? Nutze jetzt Version 3.5.1
Jedoch, die originale von rantaplan geht bei mir. `
Die 3.5.1 ist bei mir auch aktuell.
Hatte aber auch kurz die 3.6.0. Die ist leider noch völlig buggy.
Kann noch jemand versuchen das Blockly mit dem js-Adapter 3.5.1 zu laden und zu speichern?
Grüße
-
Kann noch jemand versuchen das Blockly mit dem js-Adapter 3.5.1 zu laden und zu speichern? `
laden:
speichern:
NEIN!
Gruß
Rainer
-
speichern:
NEIN! `
Danke für's testen!Da fehlt der Telegram-Block in der Funktion "Melden".
Hast Du den raus genommen?
-
Hmm,
Skript lässt sich speichern und läuft zwar, jedoch nicht richtig.
<u>Es kommt die Meldung:</u>
` > 15:13:56.636 [info] javascript.0 script.js.Waschmaschine: ***Starte Verzögerung15:14:16.636 [info] javascript.0 script.js.Waschmaschine: ***Beende Verzögerung `
Aber mehr nicht. Der Verbrauch liegt über 50W eine ganze Weile.
Mir ist noch was aufgefallen, nachdem ich mir Blockly als SourceCode angesehen habe. Da ist nämlich ein Fehler bei den Variablen:
Bug oder Feature? So oder so sollte es abgefangen werden - aber man sollte auch keine Variablen mit Umlauten verwenden.
Jedoch: Die Meldung kommt ja, somit haben wir höchstens eine undeklarierte Variable, daran kann es nicht liegen.
__@Homoran:
Bitte sei doch noch mal so nett und erkläre mir genau, wie Du das mit dem HM-Adapter selber gelöst hast. Also ganz ohne Skripte? Was setzt Du da wie und warum geht das mit der Verzögerung usw. gerne als PM oder als link zu einem anderen Thread. Irgendwie habe ich den Überblick verloren, was noch aktuell ist. Danke im Voraus.__
-
Da fehlt der Telegram-Block in der Funktion "Melden".
Hast Du den raus genommen? `
nein, das war aber das Blockly von @ludinoGruß
Rainer
-
Bug oder Feature? So oder so sollte es abgefangen werden - aber man sollte auch keine Variablen mit Umlauten verwenden.
Jedoch: Die Meldung kommt ja, somit haben wir höchstens eine undeklarierte Variable, daran kann es nicht liegen. `
Normalerweise benutzte ich keine Umlaute. Sollte aber kein Fehler sein.Schau mal in die "Melden" Funktion. Ist da der Telegram Block?
Wenn der nicht da ist hast Du auch keine Meldung bekommen.
Hast du die Maschine / den Stecker eingeschaltet?
War "Power" vorher 0? Sonst hätte die Verzögerung gar nicht starten dürfen.
Grüße
-
Bitte sei doch noch mal so nett und erkläre mir genau, wie Du das mit dem HM-Adapter selber gelöst hast. Also ganz ohne Skripte? Was setzt Du da wie und warum geht das mit der Verzögerung usw. gerne als PM oder als link zu einem anderen Thread. Irgendwie habe ich den Überblick verloren, was noch aktuell ist. Danke im Voraus. `
Es handelt sich dabei um die Funktion "Entscheidungswert" in der Konfiguration der Schaltsteckdose.Meinst du das?
Woran hapert es bei deinen Kenntnissen?
Gruß
Rainer
-
Ich habe es nicht lassen können.
Ich hatte vermutet, dass das Problem daran liegen könnte, dass ich den telegram Adapter nicht geladen hatte.
Habe ihn instanziiert und nochmal den Export von @ludino genomme -> keine Änderung.
Habe den Code durchsucht und nichts von "telegram" gefunden.
Anschließend habe ich deinen (@rantanplan) Export genommen und importiert.
Hier kam im Code auch "Telegram" vor und wurde auch als Block angezeigt (Damit es besser auf den Screenshot passt habe ich die beiden unteren Blöcke nach rechts oben geschoben:
Das lässt sich auch Speichern.
Gruß
Rainer
-
Danke Rainer
Ich glaube wir haben den Übeltäter.
Werde den ersten Beitrag nochmal anpassen und das Blockly ohne "Sendto" Baustein exportieren.
Dann kann jeder den Baustein einsetzen den er installiert hat.
Werde ich mir für die Zukunft merken.
Die "sendto" Bausteine machen ja immer mal wieder Probleme.
Viele Grüße
-
Hi,
ich habe es gerade nochmals versucht den export von Rantanplan zu speichern. Immer noch das gleiche problem.
Gruß
Luigi
-
ich habe es gerade nochmals versucht den export von Rantanplan zu speichern. Immer noch das gleiche problem. `
Alter Mann ist kein D-Zug
Wenn ich den ersten Beitrag angepasst habe, werde ich dort auch einen Hinweis geben.
Grüße
-
Meinst du das?
Woran hapert es bei deinen Kenntnissen? `
Anscheined ja.Es hapert am Grundverständnis.
Du meinst bestimmt hier, richtig?So, ist ja schön, das ein Entscheidungswert(0) gesendet wird.
Nur was wird da wie und wohin gesendet? Und was kann ich dann damit wie machen?
-
Normalerweise benutzte ich keine Umlaute. `
Doch, hier:
Daraus macht Blockly intern eine Variable.Ich vermute nun, dass Blockly hier einen Fehler macht, wenn man den generierten Sourcecode sich daraus anschaut.
Schau mal in die "Melden" Funktion. Ist da der Telegram Block?
Wenn der nicht da ist hast Du auch keine Meldung bekommen. `
Na ich habe doch geschrieben, dass die Meldungen kamen. Sogar mit einem Qote
@Fitti:Es kommt die Meldung:````
15:13:56.636 [info] javascript.0 script.js.Waschmaschine: ***Starte Verzögerung
15:14:16.636 [info] javascript.0 script.js.Waschmaschine: ***Beende VerzögerungAber mehr nicht. `
Hast du die Maschine / den Stecker eingeschaltet?
War "Power" vorher 0? Sonst hätte die Verzögerung gar nicht starten dürfen. `
Ja. Das habe ich. Vorher war 0. Ich schreibe die Werte auch weg und habe es nachträglich nochmal kontrolliert. Waren aber glatte 0. -
Gut, da sind wir schon mal ein ganzes Stück weiter Ich fange mal von hinten an, da mich das auch einige schlaflose Nächte, Reklamationen an elv mit "alles ok-Retoure" und tagelange Diskussionen im elv-Forum geksotet hat:
@Fitti:Nur was wird da wie und wohin gesendet? `
Standardmäßig leider (fast gar nichts) erst wenn du diese Einstellung gemacht hast wird diese INTERN im Gerät (und ggf. in KlickyBunti Programmen) genutzt.Damit du sie woanders benutzen kannst benötigst du ein Dummy-Programm auf der CCU:
WENN Entscheidungswert = 200
DANN <leer>Erst jetzt bekommt ioBroker auch den Wert mit.
Zurück zur Konfiguration.
Umschalten des "Schaltbefehl bei Unterschreiten auf Unterschreiten und Überschreiten.
Das knifflige ist auch hier die Werte zu bekommen die wirklich eindeutig für "fertig" und "läuft" stehen.
-
Der Wert für "läuft" (=obere Grenzwert) sollte so hoch gewählt werden, dass er zwar früh anspringt, aber beim Knitterschutz usw. nicht nochmal überschritten wird. Ich denke 200W sind da ok.
-
Der untere Grenzwert sollte auf jeden Fall unterschritten werden, wenn die Maschine das erste Mal fertig ist (im Knitterschutz kann es dann ruhig wieder ansteigen), dieser Wert darf aber während des Laufs (z.B. anhalten bevor abgepumpt wird)) NICHT unterschritten werden.
Der Rest ist wieder einfach (Man muss es nur einmal verstanden haben).
Standardmäßig nimmt der Entscheidungswert nur zwei Zustände an. 200 wenn "scharfgeschaltet" nach überschreiten des oberen Grenzwertes und 0 zum abfeuern, wenn anschließend erstmalig der untere Grenzwert unterschritten wird.
Bei Fragen -> fragen!
Gruß
Rainer</leer>
-
-
ich habe es gerade nochmals versucht den export von Rantanplan zu speichern. Immer noch das gleiche problem. `
Alter Mann ist kein D-Zug
Wenn ich den ersten Beitrag angepasst habe, werde ich dort auch einen Hinweis geben.
Grüße `
Hi
war ja garnicht so gemeint, ich wollte doch nur mal schauen ob es jetzt bei mir funktioniert, da es ja anscheind bei ein paar usern läuft…!