NEWS
Luftfeuchtigkeit zu hoch Skript
-
So das Skript läuft nur glaube ich der Intervall für die 10 mal Wiederholungen sind zu schnell für Alexa,
die Sprachausgabe dauert ca 3 sek. In der Form kommt die Sachausgabe nur 1 mal an.
Hier noch mal das umsetzte Skript…
3893_1.jpg -
Wieso zu schnell? So wie ich das Skript verstehe, erfolgt alle 2 Minuten eine Sprachausgabe. Dabei ist die Verzögerung von drei Sekunden unnötig. Nach 10 Ausgaben (20 Minuten) oder falls das Fenster geöffnet wurde, erfolgt keine weitere Ausgabe.
-
Ok dann habe ich es jetzt verstanden danke.
-
Hi,
ich habe vor ein ähnliche Skript zu schreiben.
Und zwar möchte ich ein pushover senden wenn der PI für 10s eine gewisse Temperatur überschritten hat.
Zu testzwecken habe ich mal 30°C gewählt.
Leider bekomme ich keine Pushover, obwohl der Pi über 30°C hat.
Habe ich einen Denkfehler oder Programmierfehler?
Mein Skript sieht so aus:
-
Füg mal in den Bedingungen jeweils Debug-Ausgaben ein, damit du nachvollziehen kannst, in welcher Reihenfolge das Skript wie abläuft.
-
Mein Skript sieht so aus: `
Die Variable PiZuHeiß und alles was damit zusammen hängt ist unnötig. Einfach die Pushover-Meldung in die 'falls Zähler >= 10'-Abfrage setzen, statt unten eine weitere Abfrage durchzuführen sollte reichen. -
Kurze Rückmeldung:
ich hatte gesehen dass der Wert soc.temp vom rpi2 Adapter keine "num" ist, sondern "value".
Habe dann einfach ne Konvertierung eingefügt… Läuft!
Eure Änderungen habe ich auch noch umgesetzt.
(Die debug Ausgaben habe ich wieder entfernt)
Danke euch.
-
Hi,
ich habe das auch mal nachgebaut aber es funktioniert nicht.
Kann jemand meinen Fehler entdecken.
-
Hi,
noch eine Verständnisfrage.
bezieht sich der "WERT" auf den Trigger des Objektes.
-
bezieht sich der "WERT" auf den Trigger des Objektes.
Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes; es sind keine Variablen (gleiche Farbe).
-
ok,
das konnte ich mir denken.
Kannst du mir sagen warum mein script nicht läuft.
Was habe ich denn da falsch gemacht?
Eigentlich müsste es funzen
-
Kannst du mir sagen warum mein script nicht läuft.
Nein, ich kann keinen Fehler entdecken. Hoffentlich hast Du es nicht unter der Gruppe global erstellt ? Falls doch, dann ändere es; falls nicht, dann poste bitte den Javascript-Code ohne die letzte Zeile in Code tags.
EDIT: Den Trigger auf die Luftfeuchte ändere besser auf "wurde geändert", damit nicht unnötig oft getriggert wird.
-
Hi,
hier der Code es ist in der Gruppe Common.
var cnt, Intervall; on({id: "hm-rpc.0.NEQ1804131.1.HUMIDITY"/*Raumthermostat Badezimmer.HUMIDITY*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.OEQ0427990.1.STATE").val == false && (obj.state ? obj.state.val : "") >= 55 && (obj.oldState ? obj.oldState.val : "") < 55) { setStateDelayed("alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak"/*speak*/, 'Fenster öffnen und Badezimmer Tür schließen', 3000, false); console.log('test'); cnt = 0; Intervall = setInterval(function () { setStateDelayed("alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak"/*speak*/, 'Fenster öffnen und Badezimmer Tür schließen', 3000, false); cnt = (typeof cnt == 'number' ? cnt : 0) + 1; if (cnt >= 10) { (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); } }, 120000); } }); on({id: "hm-rpc.0.OEQ0427990.1.STATE"/*Fenster Badezimmer TFK.STATE*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); });
-
Auch im Javascript-Code sind keine Fehler zu erkennen. Gibt das Skript keinen Log "test" aus, wenn sich die Luftfeuchte von < 55 % auf >= 55 % ändert und das Fenster geschlossen ist ? Wie testet Du die Funktion ?
-
Hi,
ich teste es indem ich das Raumthermostat anhauche und so die Luftfeuchtigkeit erhöhe.
Fenster natürlich zu.
-
ich teste es indem ich das Raumthermostat anhauche und so die Luftfeuchtigkeit erhöhe. `
Dann sollte es funktionieren, wenn der Grenzwert von 55 %rH das erste Mal überschritten wird. Bau mal ein zusätzliches Debug von Wert vor das falls ein, um zu sehen, welche Werte getriggert werden. -
So debug eingebaut, Luftfeuchtigkeit "hochgetrieben".
KEINE Meldung im LOG :roll:
-
Um zu sehen, ob überhaupt getriggert wird, setze einen Debug-Block als allererstes in den Trigger (<u>vor</u> falls) und binde an den Debug-Block den Wert des Trigger-Datenpunktes an (nicht einen Text "wert").
EDIT: Stelle die Debug-Blöcke auf "info" !
-
var cnt, Intervall; on({id: "hm-rpc.0.NEQ1804131.1.HUMIDITY"/*Raumthermostat Badezimmer.HUMIDITY*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.debug(''); if (getState("hm-rpc.0.OEQ0427990.1.STATE").val == false && (obj.state ? obj.state.val : "") >= 51 && (obj.oldState ? obj.oldState.val : "") <= 51) { console.debug(''); setStateDelayed("alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak"/*speak*/, 'Luftfeuchtigkeit im Bad zu hoch Fenster öffnen ', 3000, false); cnt = 0; Intervall = setInterval(function () { setStateDelayed("alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak"/*speak*/, 'Luftfeuchtigkeit im Bad zu hoch Fenster öffnen ', 3000, false); cnt = (typeof cnt == 'number' ? cnt : 0) + 1; if (cnt >= 5) { (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); } }, 120000); } }); on({id: "hm-rpc.0.OEQ0427990.1.STATE"/*Fenster Badezimmer TFK.STATE*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); });
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="tx2BIvKz9i)Mwrq/gkpC" x="138" y="87"><field name="OID">hm-rpc.0.NEQ1804131.1.HUMIDITY</field> <field name="CONDITION">ne</field> <statement name="STATEMENT"><block type="debug" id="1|{ab+|d6u+#X[;(a@t`"><field name="Severity">debug</field> <value name="TEXT"><shadow type="text" id="a6dI2)2Q;Gy`A[R0UM.o"></shadow></value> <next><block type="controls_if" id="ea;ru#Sj4!t75(Ws{ZQb"><value name="IF0"><block type="logic_operation" id="Cf1IxquXYdsnlyo6mCv-" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="g,~qc7rzm@K#tv/S-A(h"><field name="OP">EQ</field> <value name="A"><block type="get_value" id=")4F(.w/ZirY/;vRV;#+U"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.OEQ0427990.1.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="AzW-MV%EKkE3(9P,:n*I"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_operation" id="h(2wcj=J4e6lQzSKf#dx" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="p#*o_9ao9M^u4r_;7r;."><field name="OP">GTE</field> <value name="A"><block type="on_source" id="[WaAWp@KjGU,zEjOFrry"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="math_number" id="{?)yQooMPzJ+x]BR5{Z["><field name="NUM">51</field></block></value></block></value> <value name="B"><block type="logic_compare" id="{u]C[jk(,a:01jcb~:4Y"><field name="OP">LTE</field> <value name="A"><block type="on_source" id=":+:|=f.@,~@;_Hh6(|R["><field name="ATTR">oldState.val</field></block></value> <value name="B"><block type="math_number" id="C?+iC}K`PBoz^y1Go^k1"><field name="NUM">51</field></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="debug" id="NJK/?KNU{)C-,XxFcpB("><field name="Severity">debug</field> <value name="TEXT"><shadow type="text" id="-h#=AT;0nfnzNoExPQYq"></shadow></value> <next><block type="control" id=":SQ6@BV=,I!oX!z07MO/"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">3</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="6)rM~]c9snQTZ|.k#V9p"><field name="TEXT">Luftfeuchtigkeit im Bad zu hoch Fenster öffnen</field></block></value> <next><block type="variables_set" id="~_#]M==F0e[,WH_Ff)?c"><field name="VAR">cnt</field> <value name="VALUE"><block type="math_number" id="yV]kOzu1_Jlm4p-=wS@D"><field name="NUM">0</field></block></value> <next><block type="timeouts_setinterval" id="p.E@7|[Sz6n:f-Ev`bik"><field name="NAME">Intervall</field> <field name="INTERVAL">2</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="control" id="l6d;^df6}Ewv6l0GSc9B"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">3</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="NRlEfC/R:(5tby3Lu1Uu"><field name="TEXT">Luftfeuchtigkeit im Bad zu hoch Fenster öffnen</field></block></value> <next><block type="math_change" id="CH,`a@ru/-lYtkRATL4i"><field name="VAR">cnt</field> <value name="DELTA"><shadow type="math_number" id="*[e}_pK;(u;^+Lch@G~)"><field name="NUM">1</field></shadow></value> <next><block type="controls_if" id="Q[5j;V)L7yh|NF4J%755"><value name="IF0"><block type="logic_compare" id=".)qf#Cwt#i+*!.@VO.+B"><field name="OP">GTE</field> <value name="A"><block type="variables_get" id="x{%i}R=^i=dGuujU#H`,"><field name="VAR">cnt</field></block></value> <value name="B"><block type="math_number" id="kI/+D^m;H|g*tgf6oBCG"><field name="NUM">5</field></block></value></block></value> <statement name="DO0"><block type="timeouts_clearinterval" id="T6Tr*FFDKOL|s(%[Fqo8"><field name="NAME">Intervall</field></block></statement></block></next></block></next></block></statement></block></next></block></next></block></next></block></statement></block></next></block></statement> <next><block type="on" id=";`,/Xn43pSG8lvR=|[?D"><field name="OID">hm-rpc.0.OEQ0427990.1.STATE</field> <field name="CONDITION">true</field> <statement name="STATEMENT"><block type="timeouts_clearinterval" id="ssYV%YfZ_:-[%Spu9v:q"><field name="NAME">Intervall</field></block></statement></block></next></block></xml>
Ich bin wahrscheinlich zu blöd :x
Muss denn vielleicht der "vorherige Wert" kleiner gleich sein.
-
Muss denn vielleicht der "vorherige Wert" kleiner gleich sein. `
Nein:Wert > Grenzwert UND vorheriger Wert <= Grenzwert
oder
Wert >= Grenzwert UND vorheriger Wert < Grenzwert