NEWS
Ausfal IP erst melden wenn mehr als 2 Minuten nicht erreichbar!
-
zur Fehlerbeschreibung, es soll nicht gemeldet werden wenn zb. Sonoff nicht pingbar ist, innerhalb eines gewissen Zeitraumes von zb. unter 120 Sekunden. Erst wenn länger nicht erreichbar soll eine Meldung kommen.
Also kurz gesagt, wenn was nicht online ist und aber gleich wieder online geht, dann soll keine Meldung kommen. Leider kommt sie dennoch!
-
@MyzerAT
Versuch das mal:Natürlich musst du die ObjektID noch setzen und die Kommentare durch deine Aktionen ersetzen.!
-
Du darfst keinen Mehrfach-Trigger verwenden.
-
Paul53 hat recht.
Jeden "Ping" in einem separaten Trigger bearbeiten. -
@paul53 sagte in Ausfal IP erst melden wenn mehr als 2 Minuten nicht erreichbar!:
Du darfst keinen Mehrfach-Trigger verwenden.
Warum nicht ?
-
-
Vorschlag:
-
@Asgothian Grundsätzlich ist das eine gute Idee mit dem "Flag" ob ein Timer läuft oder nicht.
Zwei Dinge würde ich persönlich aber nicht machen.- Namensgebung: "timeout" als lokale Variable UND als Timername macht die ganze Sache unübersichtlich.
Besser wäre "timeout_on", "timeout1_on", usw. als bool (true/false) - timeout = null
"null" ist nicht gleich "0".
Mit "null" setzt Du eine Variable in einen undefinierten Zustand zurück. Diese muss dann jedesmal, bei Benutzung, neu initialisiert werden. Wird das vergessen gibt es "error".
- Namensgebung: "timeout" als lokale Variable UND als Timername macht die ganze Sache unübersichtlich.
-
@paul53
Das leuchtet mir nicht ein. Wenn der Wert sich ändert werden ja alle Trigger die du hintereinander im Script hast auf einmal ausgelöst, sprich alle Timeouts laufen los. Dabei sollte es egal sein wie viele du hintereinander schaltest.Nur das ich da nicht in die Wüste laufe - der Wert SonoffRF der am Anfang abgefragt wird ist true wenn es eine Verbindung gibt, und false wenn es keine gibt ?
A.
-
wie bekomme ich bei den zwei x was rein ? und die ausgabe soll auf Alexa und Telegram erfolgen!
-
@Asgothian sagte:
der Wert SonoffRF der am Anfang abgefragt wird ist true wenn es eine Verbindung gibt, und false wenn es keine gibt ?
Richtig: true stoppt die Verzögerung und erzeugt "wieder Online"; false startet die Verzögerung und erzeugt "Offline" navh Verzögerung, falls nicht inzwischen gestoppt.
-
@rantanplan sagte in Ausfal IP erst melden wenn mehr als 2 Minuten nicht erreichbar!:
Namensgebung: "timeout" als lokale Variable UND als Timername macht die ganze Sache unübersichtlich.
Da bin ich anderer Meinung. Die Variable timeout und die Variable die den timeout selber steuert ist ein und die selbe. Es sind eben nicht 2 Variablen
timeout = null
"null" ist nicht gleich "0".
Mit "null" setzt Du eine Variable in einen undefinierten Zustand zurück. Diese muss dann jedesmal, bei Benutzung, neu initialisiert werden. Wird das vergessen gibt es "error".Das ist Absicht.. Ich prüfe diese Variable ja explizit auf NULL ab. Einzig das clear timeout könnte zu einem Problem werden. Das könnte man aber auch in ein "else" packen, so das es nur gemacht wird wenn timeout nicht null ist, und damit der Timeout noch läuft.
Nachtrag: da ich nicht weiss was fuer ein Typ die Variable timeout hat wenn sie durch das setTimeout gesetzt wird, kann ich halt nicht einfach auf bool oder int prüfen. Ein Vergleich mit NULL ist aber immer erlaubt und führt so wie ich den nutze nicht zu Fehlern.
-
@MyzerAT sagte:
wie bekomme ich bei den zwei x was rein ?
Einfach rein klicken.
Alexa und Telegram in die Funktion Meldung(name, onoff) einbauen !
-
schaffs leider nicht, kenn den Baustein Meldung noch nicht, eventuell kann mir jemand den zusamenstoppeln, bitte, thx
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="procedures_defnoreturn" id="QcHn*};`aes=*M[62[T_" x="-287" y="-737"> <mutation> <arg name="name"></arg> <arg name="onoff"></arg> </mutation> <field name="NAME">Meldung</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="on" id="wN;UvwDV@#P(A[|y2/s." x="-287" y="-637"> <field name="OID">ping.1.RDJL_Home.192_168_0_64</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="@ec_w*anU[C5_:,q!@u6"> <mutation else="1"></mutation> <value name="IF0"> <block type="on_source" id="}}|XsyQ@;d%*`Qa*P8MP"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="A{9nUa,_OgF[Kk%e1?=]"> <field name="NAME">timeout</field> <next> <block type="procedures_callnoreturn" id="V#,#{?LCEl=]otxJ:bR?" inline="false"> <mutation name="Meldung"> <arg name="name"></arg> <arg name="onoff"></arg> </mutation> <value name="ARG0"> <block type="on_source" id="}?{-v*u;R@:1CN2rC1Xj"> <field name="ATTR">common.name</field> </block> </value> <value name="ARG1"> <block type="text" id="?m;9gH%m`,/WoimPO):w"> <field name="TEXT">wieder online</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="timeouts_settimeout" id=".7u4Jf,98)qr,a7{wnQ!"> <field name="NAME">timeout</field> <field name="DELAY">120</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="%cW2F!J99yEG-GB,y2p-"> <mutation name="Meldung"> <arg name="name"></arg> <arg name="onoff"></arg> </mutation> <value name="ARG0"> <block type="on_source" id="C^c@O*hX=FfH5JVUwY+w"> <field name="ATTR">common.name</field> </block> </value> <value name="ARG1"> <block type="text" id="G;p)5ufI}S0vLSaQ/%@R"> <field name="TEXT">offline</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> </block> <block type="control" id="Do1*(d;FPVdH~`jRHrS{" x="112" y="-612"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U61084851BG7.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="F*lKSls!iLkoww%{/oGK"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="QhdzP|.,qK;9WW=ntGe:"> <field name="TEXT">Achtung, Achtung</field> </block> </value> <value name="ADD1"> <block type="text_join" id="yxj=D(V8-%`{-#R[f}n@"> <mutation items="2"></mutation> <value name="ADD0"> <block type="on_source" id="(u)KQ`c0}#hjgB#:1=Q8"> <field name="ATTR">common.name</field> </block> </value> <value name="ADD1"> <block type="text" id="(na[4nbf:VY3wdj#k(s|"> <field name="TEXT"> ist Offline und nicht mehr Erreichbar!</field> </block> </value> </block> </value> </block> </value> <next> <block type="telegram" id="dZ`NtV^dV-qDs6eotVJJ"> <field name="INSTANCE">.0</field> <field name="LOG">log</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="c`J_.dZ/@?4%P(]3=`)]"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="o.6x{#j+oDiK_78Ko-.*"> <mutation items="2"></mutation> <value name="ADD0"> <block type="on_source" id="g8?Bc*R%JK;Md-=qGk`5"> <field name="ATTR">common.name</field> </block> </value> <value name="ADD1"> <block type="text" id="MV0rG#7UV!D!|hhEo|Y="> <field name="TEXT"> ist Offline und nicht mehr Erreichbar!</field> </block> </value> </block> </value> </block> </next> </block> <block type="control" id="V(Y@289(@J(E+1/0EzSp" x="-188" y="-188"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U61084851BG7.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="A8.SkLP#n-RrWsB+btl#"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="cA8jZ;,.Omp[1+/suq%]"> <field name="TEXT">Achtung, Achtung</field> </block> </value> <value name="ADD1"> <block type="text_join" id="3HqC)]gq0iXtK%*[p3hQ"> <mutation items="2"></mutation> <value name="ADD0"> <block type="on_source" id="PG:W-rk=a5]ZuvHl}VE,"> <field name="ATTR">common.name</field> </block> </value> <value name="ADD1"> <block type="text" id="Y[(cQLz?0|*6U*0f=tp]"> <field name="TEXT"> ist wieder Online!</field> </block> </value> </block> </value> </block> </value> <next> <block type="telegram" id="L,8yMe,dS8:R8|pT6_}N"> <field name="INSTANCE">.0</field> <field name="LOG">log</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="c`J_.dZ/@?4%P(]3=`)]"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="%-:a5R8;,|80W4V3lgRw"> <mutation items="2"></mutation> <value name="ADD0"> <block type="on_source" id="7gvj54ZeLKjOW1JqBvlM"> <field name="ATTR">common.name</field> </block> </value> <value name="ADD1"> <block type="text" id="f17}4~e+wfLf5x{*1zF5"> <field name="TEXT"> ist wieder Online!</field> </block> </value> </block> </value> </block> </next> </block> </xml>
-
meinst du so?
-
nee da kommen fehler im log
-
@MyzerAT
Nein, so:
-
@Asgothian Die Varible "timeout" hat nichts mit dem Timer "timeout" zutun.
Probiere das mal und beobachte das Log.
-
ich muss kurz weg zum arzt, mach dann weiter, thx an alle einstwelien!
-
@rantanplan sagte:
Die Varible "timeout" hat nichts mit dem Timer "timeout" zutun.
Doch: Wenn die Variable timeout auf null gesetzt wird, kann der Timer nicht mehr mit clearTimeout(timeout) gestoppt werden, denn die Variable timeout "addressiert" den Timer.