Moin Gemeinde.
Ich habe folgendes kleine Blockly script verfasst und bekomme jetzt bei Erreichen der Temperatur massig Telegram Benachrichtigungen.
Eine würde mir reichen. Welche Variable muss ich ändern?
Moin Gemeinde.
Ich habe folgendes kleine Blockly script verfasst und bekomme jetzt bei Erreichen der Temperatur massig Telegram Benachrichtigungen.
Eine würde mir reichen. Welche Variable muss ich ändern?
Wenn du nur eine Benachrichtigung bei erreichen willst, musst du zusätzlich eine Variable setzen, wenn die Benachrichtigung erfolgt ist und die dann erst wieder auf 0 setzen, wenn die Temperatur unter 24 abfällt.
also:
Variable "Nachricht raus" = 0
wenn >=24 und "Nachricht raus" = 0
dann sende Telegram und setze "Nachricht raus" = 1
sonst wenn < 24 setze "Nachricht raus" = 0
Soweit prinzipiell die Logik
Problem: wenn die Temperatur länger zwischen 23,9 und 24 pendelt, kommen wieder viele Benachrichtigungen.
Dazu müsstest du weiter filtern oder <24 verringern
Mehr geht mobil momentan nicht zu erklären...
Würdest Do so freundlich sein und das Script für mich schreiben? Ich bekomme das nicht hin. Und den Code hier posten? Dann könnte ich den importieren. Vielen Dank
Bei "Object ID defaut" und "Wert vom Object ID ID auswählen" musst du deinen Temperatur-Datenpunkt auswählen. (den habe ich nicht als Quelle verfügbar)
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="procedures_defcustomnoreturn" id="s}Pwi720KKlpTUa:!xH5" x="-512" y="-112">
<mutation statements="false">
<arg name="ID"></arg>
<arg name="Name"></arg>
</mutation>
<field name="NAME">newBoolDP</field>
<field name="SCRIPT">Y3JlYXRlU3RhdGUoSUQsIGZhbHNlLCB7dHlwZTogJ2Jvb2xlYW4nLCBuYW1lOiBOYW1lfSk7</field>
<comment pinned="false" h="80" w="160">Datenpunkt Typ Logikwert erzeugen</comment>
</block>
<block type="procedures_callcustomnoreturn" id="%!D@ltx[2ZI,e3@5@cKC" x="-512" y="-87">
<mutation name="newBoolDP">
<arg name="ID"></arg>
<arg name="Name"></arg>
</mutation>
<value name="ARG0">
<block type="text" id="fB0P`|a1{bm7{jB[N.[k">
<field name="TEXT">Telegram.Warnung.PassatWohnzimmer</field>
</block>
</value>
<value name="ARG1">
<block type="text" id="+cB0A]tKEBNhc8@wui94">
<field name="TEXT">Telegram Warnung PassatWohnzimmer</field>
</block>
</value>
<next>
<block type="on_ext" id="hCyQ`Zf5?a]xJ]Q{Nhq`">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="#^eqZ5fGcjjNMoD3P]L#">
<field name="oid">default</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="uoGhCI!jUAxsx~?uK;Fu">
<mutation else="1"></mutation>
<value name="IF0">
<block type="logic_operation" id="rp9tOG5OQ_t,wQTmGv:_">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="eOj0;g+y:QWBLs94id(i">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="tM7*majU?zpXQHBmy;;x">
<field name="ATTR">val</field>
<field name="OID">ID auswählen</field>
</block>
</value>
<value name="B">
<block type="math_number" id="5BK@{F:_Kn8@0)}qdw=h">
<field name="NUM">24</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="*]*LkXVViI2r+AaicA6|">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="ZzGd%3j*u(_jGOVE^K]D">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Telegram.Warnung.PassatWohnzimmer</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="U~U7=**8aQ[tPIa#=52H">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="telegram" id="!S!xfj,7!B?)hVp-64%:">
<field name="INSTANCE"></field>
<field name="LOG"></field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">default</field>
<value name="MESSAGE">
<shadow type="text" id="R];dOkU.y[2cGe0rWb8q">
<field name="TEXT">Passat Wohnzimmer 24Grad</field>
</shadow>
</value>
<next>
<block type="update" id="c+o]A}ha:P=sMRFLG+3r">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Telegram.Warnung.PassatWohnzimmer</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="dI{6+)0sR4B6i)5X]5i?">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block type="update" id="O(v54X:gB/0:j%ljuG5+">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Telegram.Warnung.PassatWohnzimmer</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="c%@nrj#{OH[F-~1ymRX6">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</xml>
Alles anzeigen
Klasse !!!! Vielen Dank
So, getestet. Leider immer noch viele Telegram Meldungen des Zustandes
Wo hakt es?
Wenn der Wert immer um die 24 pendelt, also kurz unter 24 fällt und dann wieder die 24 erreicht, kommt natürlich eine neue Meldung.
Du könntest das Rücksetzen anpassen, dass es zB. erst bei 23,5 erfolgt.
Ich habe mit dem Föhn auf 35 Grad den Sensor aufgeheizt, also weit weg von 24 Grad. Trotzdem erscheint die Meldung vielfach
Mach es dir doch einfacher und setze alle Variablen ins Skript. Folgendes hab ich mal getestet und es läuft bei mir genau so.
Geht der Wert über 24, bekommst du EINMALIG eine Meldung. Erst wenn der Wert einmal unter 22 gesunken ist und dann wieder über 24 bekommst du wieder eine Meldung.
Bei allen 3 Object ID's musst du natürlich deinen Temperatursensor eintragen. Den hab ich ja nicht als Objekt
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="variables_set" id="iMjeia{?Fo=Tb}nuisi7" x="-437" y="163">
<field name="VAR">Variable</field>
<value name="VALUE">
<block type="math_number" id="JhE1^ty}wI0WZGB#9wiI">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="on_ext" id="yL*qdOuEnNVLU?hx/haz">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="lReD~Q(tHI/vxV0HC3x;">
<field name="oid">default</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="Cyt4giH%Pnkms3]jJ0FR">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_operation" id="~gRtKyW-4oGWT5U5(%Ym">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="HW8gE/Q6Nkc_P.gqb)vY">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="BiDm6{q;L=J^Z5YpRu9G">
<field name="ATTR">val</field>
<field name="OID">ID auswählen</field>
</block>
</value>
<value name="B">
<block type="text" id="6sQ+Cz[)`vIX^-#FYTB)">
<field name="TEXT">24</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="zO~aSf=IH=H;@4,)O2Fc">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="VzT=Y~,KQul?0x1@N(86">
<field name="VAR">Variable</field>
</block>
</value>
<value name="B">
<block type="math_number" id="E6wpxV7E{4)GOt=!QGXG">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="telegram" id="GDsHOlE_EJ%N`~FV`TU9">
<field name="INSTANCE">.0</field>
<field name="LOG"></field>
<value name="MESSAGE">
<shadow type="text" id="!~PrXe9}B?q9[n)?or?r">
<field name="TEXT">Passat Temperatur > 24 Grad</field>
</shadow>
</value>
<next>
<block type="variables_set" id="ua^xld;1@/~Dtd|#?+=6">
<field name="VAR">Variable</field>
<value name="VALUE">
<block type="math_number" id="!w|`JirJWi%(vLJ)T{tW">
<field name="NUM">1</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="mUd`QU.GZI-#BR{J{^+.">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="fPt%_F6Bg,eiZF%aN0{|">
<field name="ATTR">val</field>
<field name="OID">ID auswählen</field>
</block>
</value>
<value name="B">
<block type="text" id="9M|c2dLfXPxX,^Mpm:g=">
<field name="TEXT">22</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="variables_set" id="[mkr|wOK|p/t^4GtR_O6">
<field name="VAR">Variable</field>
<value name="VALUE">
<block type="math_number" id="8M|}GWRHJZ()][pm2ATx">
<field name="NUM">0</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</xml>
Alles anzeigen
Hast du geprüft, ob der neue Datenpunkt geändert wird (true/false)?
Welchen Typ hat der Datenpunkt mit der Temperaturangabe? Numerisch? Text?
Gibt es eine Log-Ausgabe?
Wenn du das flag nur als Variable im Script setzt, wird das dann auch über einen Neustart von iobroker hinweg erhalten, oder ist die Variable dann wieder 0?
erst noch einmal meinen Dank für Eure Hilfe, tolles Forum
cruunnerr auch bei Deinem script gibt es mehrere Telegram Meldungen.
Das Merkwürdige dabei ist, dass Telegram die Nachrichten irgendwann einstellt, obwohl die Temperatur noch weit über 24Grad ist.
@Der Datenpunkt ändert sich. Ich benutze einen Föhn zum testen. die Temperatur geht dann schnell über 24Grad bis ca 35Grad.
Hab ich nicht probiert. Aber bei Neustart des JavaScript Adapters ist die Variable wahrscheinlich wieder 0
Für dieses Skript wäre es denke ich verkraftbar, aber trotzdem irgendwie blöd. Stimmt schon.
Wenn du hier auch mehrere Meldungen kriegst, dann würd ich die Fehlersuche am Skript erstmal abschließen/vertagen
Stell mal den JavaScript Adapter und den Telegram Adapter auf debug.
Vorher den Temperatursensor mal auf 20° abkühlen.
Und dann aufwärmen und im Log schauen was da alles so passiert.
Alles anzeigenerst noch einmal meinen Dank für Eure Hilfe, tolles Forum
cruunnerr auch bei Deinem script gibt es mehrere Telegram Meldungen.
Das Merkwürdige dabei ist, dass Telegram die Nachrichten irgendwann einstellt, obwohl die Temperatur noch weit über 24Grad ist.
@Der Datenpunkt ändert sich. Ich benutze einen Föhn zum testen. die Temperatur geht dann schnell über 24Grad bis ca 35Grad.
kannst du mal nachschauen, ob du im LOG vielleicht ein warn oder error hast (bezüglich dieses Skripts)?
im Blockly in dem Check-Block hast du die Objekt-Id "default" eh auf deine temperature gestellt oder?
Default ist auf den trigger temperature gestellt. Keine Fehlermeldungen im Log
script ist test1
also wenn du das alles so in dem blockly (picture) hast, muß es funktionieren.
Danke Euch, auch wenn es keine Lösung gibt.
Ich kann mit dem Telegram spam leben
Wäre natürlich schön gewesen, eine funktionierendes script zu haben, zumal das nur 1 Raum von dreien ist.
Ich werde jetzt noch versuchen, aus dem gleich/größer 24Grad ein gleich zu machen.
Wenn du ein gleich machst kommt es nur wenn es genau 24 hat... Schwachsinnig
Wenn du ein gleich machst kommt es nur wenn es genau 24 hat... Schwachsinnig
Aber dann bekomme ich bei steigender Temperatur vielleicht nur 1 Telegram Meldung. und das reicht mir, um zu erfahren, dass die Temperatur zu hoch ist und ich eine GOSUND Steckdose der Elektroheizung abschalte, wenn ich nicht vor Ort bin.
Leider lassen sich die Gosund Wlan Steckdosen ja nicht in iobroker einbinden und nur über die Mi Home App steuern.
Nein du bekommst mit sehr hoher Wahrscheinlichkeit keine weil der Wert genau 24 sein müsste
Also irgendwas machst du falsch oder hast in der Vergangenheit was falsch gemacht
Und die Überlegung nur bei exakt 24° zu schalten ist wie homecineplexx schon sagte unklug.
Erstens müsstest du den gemessenen Wert runden, da sonst wahrscheinlich gar keine Auslösung kommt.
Zweitens: wenn der Wert dann einige Minuten eben auf 24° bleibt, ist die Bedingung ja genauso erfüllt und du hättest den gleichen Effekt.
Keine Problemlösung suchen, sondern Ursachenforschung betreiben ist hier der einzige Rat
Edit:
Und die gosund Dinger lassen sich Flashen und dann sehr wohl direkt einbinden, da sie auch einen ESP8266 inne tragen
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!