NEWS
[Hilfe] Mit einem Blockly Status von Tür und Fenster abfragen.
-
Hallo ich mal wieder.
Möchte mir ein Blockly bauen mit dem ich abfragen kann ob Fenster und Türen offen sind und wenn ja welche.
Habe schon mal eins probiert …
das macht eigentlich schon fast was es turn soll.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block id="yNZ!4[A!h0!IqSuk^Tm9" type="on_ext" x="-262" y="-787"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow id="|Q[MlJZ,oX7/O@v*2Hq%" type="field_oid"><field name="oid">javascript.0.Prüfe Fenster Tür an-aus</field></shadow></value> <statement name="STATEMENT"><block id="0OwRV-DJ1i!l4SB(VwGK" type="controls_if"><value name="IF0"><block id=";z_vZ8/y#Mgsu4=CKD`~" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="hKI/Afg!)pl_zbPLg(3U" type="get_value"><field name="ATTR">val</field> <field name="OID">javascript.0.Prüfe Fenster Tür an-aus</field></block></value> <value name="B"><block id="lx[7wsP]PWrdgfG=a)fz" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block id="/I5dQt#,oE#+e(4XYO,e" type="controls_if"><mutation else="1" elseif="4"></mutation> <value name="IF0"><block id="PlkQK4:2LAtBJKXf6^!C" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="k)~10[=9ah/~;(5?_*Wk" type="get_value"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d0002026099.state</field></block></value> <value name="B"><block id="_d^5|Pn=Q/~xSq;YthC4" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block id="r%5+4DE#o=k%Ce~l[A;w" type="debug"><field name="Severity">log</field> <value name="TEXT"><shadow id="-dGbI^|0,:LspR7N6YxP" type="text"><field name="TEXT">Tür Medienraum ist offen</field></shadow></value> <next><block id="t?j-:pS.:yKU@}L7+HC0" type="sayit"><field name="INSTANCE">.1</field> <value name="MESSAGE"><shadow id="S-%Zw5iQ^^B[]BKy)hFd" type="text"><field name="TEXT">Tür Medienraum ist offen</field></shadow></value></block></next></block></statement> <value name="IF1"><block id="JG;n{Lz1bANVb--/q?i}" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="M-v7sVZ1Wx]fvo#.l3eE" type="get_value"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d00020260ad.state</field></block></value> <value name="B"><block id="l}xtbMlstwdiOnNN;u@p" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO1"><block id="][yU{:n6rUO=6F/vb[%;" type="debug"><field name="Severity">log</field> <value name="TEXT"><shadow id="zQ9kKdF:1RELQh._.AQC" type="text"><field name="TEXT">Tür Technikraum ist offen</field></shadow></value> <next><block id="21X*Mz7e}:b(,^qg~h1`" type="sayit"><field name="INSTANCE">.1</field> <value name="MESSAGE"><shadow id="}}J#{2!6E@xh_|U[.r?+" type="text"><field name="TEXT">Tür Technikraum ist offen</field></shadow></value></block></next></block></statement> <value name="IF2"><block id="UaF#X.zsQx48}erQbUF8" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="e0Qu=`G)4S!NeX);G|OE" type="get_value"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d0001f37dee.state</field></block></value> <value name="B"><block id=",}c]0j@t@(@)Io;0geZ^" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO2"><block id="]S*1!45b;Dg-1/Ea%:{b" type="debug"><field name="Severity">log</field> <value name="TEXT"><shadow id="}%K]Z^lv!:04-Kvwi@*:" type="text"><field name="TEXT">Haustür ist offen</field></shadow></value> <next><block id=";6^N6?`7H)RwIl(|yYKw" type="sayit"><field name="INSTANCE">.1</field> <value name="MESSAGE"><shadow id="~K{Y50dC{Q_6Au;;c4-m" type="text"><field name="TEXT">Haustür ist offen</field></shadow></value></block></next></block></statement> <value name="IF3"><block id="B_S?iZ;_t_m?I{76P.oq" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="Rx^RA]@duMF7BoMw0qZv" type="get_value"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d0001f37c77.state</field></block></value> <value name="B"><block id="pIpaXTQC{wQ5|{7S/i#;" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO3"><block id=")A3WwM+A`g`r|}S]o1t:" type="debug"><field name="Severity">log</field> <value name="TEXT"><shadow id="4q8HEcE=.PcJqJ%[AEGa" type="text"><field name="TEXT">Tür Garage ist offen</field></shadow></value> <next><block id=")i;i022qzT=vFTvW_eJ4" type="sayit"><field name="INSTANCE">.1</field> <value name="MESSAGE"><shadow id=";qwx7WR?kgp8^N.T._Ph" type="text"><field name="TEXT">Tür Garage ist offen</field></shadow></value></block></next></block></statement> <value name="IF4"><block id="20irU8=d#@_ZGT[3J*FT" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="e2wZp:u7zCzGWX-]zFTe" type="get_value"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.magnet_158d0001f37e1b.state</field></block></value> <value name="B"><block id="#HNTzY_qzQ~rdAN;c3+^" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO4"><block id=",/wyL6(O4FWW%E++l@jz" type="debug"><field name="Severity">log</field> <value name="TEXT"><shadow id="n4,(o0UpfHKEYB{BrkyS" type="text"><field name="TEXT">Garagentor ist offen</field></shadow></value> <next><block id=",G~,K%3:%(PtxI%ZJ%}J" type="sayit"><field name="INSTANCE">.1</field> <value name="MESSAGE"><shadow id="PA,xfdbomkgss.LG;b22" type="text"><field name="TEXT">Garagentor ist offen</field></shadow></value></block></next></block></statement> <statement name="ELSE"><block id="Nt(y}b6j=;xK%JVc3Wqe" type="control"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Prüfe Fenster Tür an-aus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block id="t0fW:@*gtvJ,ML]I]5p[" type="logic_boolean"><field name="BOOL">FALSE</field></block></value> <next><block id="w3CvwT(dk/#Ne]|{18!P" type="debug"><field name="Severity">log</field> <value name="TEXT"><shadow id="QFJtx!Q!!={qY.L,@[?R" type="text"><field name="TEXT">Alle Türen und Fenster sind geschlossen</field></shadow></value> <next><block id="ba9pug*Pi_CV7?7(T4i5" type="sayit"><field name="INSTANCE">.1</field> <value name="MESSAGE"><shadow id="Z7cjz?RE{hSGc2fCl?w{" type="text"><field name="TEXT">Alle Türen und Fenster sind geschlossen</field></shadow></value></block></next></block></next></block></statement></block></statement></block></statement></block></xml>
Bei Abfrage wird geschaut ob ein Fenster oder Tür offen ist…. wenn nein kommt die Ansage "alle Fenster und Türen geschlossen" Wenn eins offen ist kommt die Ansage welches ist offen.... Aber nun werden die restlichen nicht mehr überprüft. Wenn zwei oder mehrere offen sind bekomme ich das nicht mit! Kann man das ändern? Danke [4668_unbenannt_14.png](/assets/uploads/files/4668_unbenannt_14.png)
-
Vielleicht einfacher das „Lichter Zählen“ script in ein „Fenster und Tür“ Zählen script umzubauen!?
-
Danke für die Antwort…
aber ich komme gerade etwas mit Blockly so durch....
habe keine Ahnung vom Programmieren oder Skripte schreiben.
Darum wäre mir da ein Blockly schon lieber.
-
Aber nun werden die restlichen nicht mehr überprüft.
Wenn zwei oder mehrere offen sind bekomme ich das nicht mit! `
Das liegt am Aufbau deines Blocklys. Wenn ein falls oder sonst falls erfolgreich war, werden die anderen nicht mehr abgefragt. Wie wendy2702 schon geschrieben hat, such mal nach diesem Script vielleicht hilft dir das schon weiter!
Enrico
-
Wenn ein falls oder sonst falls erfolgreich war, werden die anderen nicht mehr abgefragt. `
ja habe ich verstanden…finde aber keine Lösung wie ich das anders machen kann....
gibt es das so etwas wie "und dann" ?
-
Deine Ansagen kannst du so abändern, dass du für jedes Fenster und jede Tür einen neuen falls-Block nimmst und die entsprechende Ansage ausführst, das wird aber dann dazu führen, dass die Ansagen fast zeitgleich ankommen werden. Das wird auf die Schnelle nicht so einfach. Ganz grob würde ich sagen, dass du da mit ein paar Variablen arbeiten musst, die du für jedes Fenster setzt und dann einen Text zusammenstellst, der entsprechend den aktivierten Variablen, die offenen Fenster ansagt.
Hast du dir dieses Zählen-Script schon mal angesehen? Ich habe auch überhaupt keine Ahnung von "normalem" Javascript, der Thread dazu ist aber schon so, dass man da ne Menge rauslesen kann, auch als Noob.
Und geholfen wird dir da auch, das bekommst du hin!
Enrico