NEWS
[gelöst]Hilfe bei Erstellung von Blockly - Anwesenheit
-
Hallo Zusammen,
Ich habe da eine Idee die ich gern umsetzten möchte aber nicht weiss wieIch habe eine Aufzählung (Anwesend) erstellt.
Dann habe ich einen DP "boolean" erstelltNun meine Idee
Ich möchte gern den DP via Blockly schaltenEr soll auf true geschalten werden wenn nur ein Gerät in der Auflistung "Anwesenheit" "true" ist
Wenn alle Geräte "false" sind dann soll auch der DP auf "false" gesetzt werdenKann mir dabei jemand helfen?
Danke im Voraus
Gruß
Marcel -
Der einfachste Weg:
Eine Variable NumPresent, mit 0 vordefinierten.
Je DP in der Aufzählung anwesend ist.. falls Wert (dp) = true, dann NumPresent +1.
Dann einen Trigger auf alle DP in der Aufzählung, auslösen bei Änderung. Darin "falls Wert" NumPresent = NumPresent+1 sonst NumPresent = NumPresent-1. Danach: Falls Numpresent = 0 setze Wert (jemand ist da) auf falsch, sonst setze Wert (jemand ist da) auf wahr.
ich hoffe das macht Sinn.
A.
-
@wszene sagte: Er soll auf true geschalten werden wenn nur ein Gerät in der Auflistung "Anwesenheit" "true" ist
Bei dem Selektor auf die Schreibweise in der ID "enum.functions.Anwesend" achten:
-
@paul53 sagte in Hilfe bei Erstellung von Blockly - Anwesenheit:
@wszene sagte: Er soll auf true geschalten werden wenn nur ein Gerät in der Auflistung "Anwesenheit" "true" ist
Bei dem Selektor auf die Schreibweise in der ID "enum.functions.Anwesend" achten:
Vielen Dank
Leider bin ich noch sehr unerfahren um aus deinem Bild schlau zu werdenz.B. Was ist "ids"?
Kannst du mir evtl. den Code zur Verfügung stellen vielleicht ist es da für mich einfacher zu verstehenDanke dir
-
@wszene sagte: Kannst du mir evtl. den Code zur Verfügung stellen
-
@paul53
Danke für den CodeLeider passiert bei mir garnichts
Ich habe mir auch mal die Variable "ids" als debug ausgeben lassen aber Diese ist leider auch leerWo könnte denn der Fehler liegen
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="B~6E2M9LNR0A68YO_!?h">ids</variable> <variable type="timeout" id="start">start</variable> <variable id="8xwpI[Ec2NLCoKl2G^HN">anwesend</variable> <variable id="b~edSQ%u?[=zCg?@@NVd">id</variable> </variables> <block type="procedures_defcustomnoreturn" id="D:0E=~0D8*EFnn8f|sd." x="-1138" y="-463"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_erstellen</field> <field name="SCRIPT">Ly8gRFAgb2huZSBBbGV4YQpjcmVhdGVTdGF0ZSgnMF91c2VyZGF0YS4wLjAyMF9Tb25zdGlnZXMuQW53ZXNlbmhlaXQuTWFyY2VsJywgeyduYW1lJzonTWFyY2VsIEFud2Vlc2VuZCcsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3RhdGUnLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IGZhbHNlIH0pOwovLyBEUCBtaXQgQWxleGEKLy9jcmVhdGVTdGF0ZSgnMF91c2VyZGF0YS4wLjAwMDFfVGVzdC50ZXN0LWRwLWFsZXhhJywgeyduYW1lJzonVGVzdCBEUCBBbGV4YScsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIlRlc3QtR2Vyw6R0Iiwic21hcnRUeXBlIjogIkxJR0hUIn0gfSk7</field> <comment pinned="false" h="80" w="160">Datenpunkte erstellen</comment> </block> <block type="comment" id="/_6pGOv!o3)I1~^MR*yi" x="-1137" y="-437"> <field name="COMMENT">Funktion ausführen</field> <next> <block type="timeouts_settimeout" id="8FQd(trxfKDt`(FG0(?="> <field name="NAME">start</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="}{A#y;jy-Pl_)n6[of`b"> <mutation name="Datenpunkte_erstellen"></mutation> </block> </statement> </block> </next> </block> <block type="variables_set" id="@r0H7Pd#IuCWPzYVs]@B" x="-1138" y="-287"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> <value name="VALUE"> <block type="selector" id="9dmgHnb{Mu,KR]4`=we+"> <field name="TEXT">*(functions=anwesend)</field> </block> </value> <next> <block type="debug" id=".n!pnU7r[Q)}xF!+~Z._"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="qei2KI8)Z+HTi.iDty+C"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=":r@S7)0ebZCw6_Bv$_i]"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id=",Fl|y?EhO}LV?w0;lR;i"> <field name="TEXT">Debug Anfang </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="tv@RG,_o3z_]2|QoI;)3"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> </block> </value> <value name="ADD2"> <block type="text" id="ny@TZyd0Z/8ziFSu`0!,"> <field name="TEXT"> Debug Ende</field> </block> </value> </block> </value> <next> <block type="on_ext" id="|J))({--a@{f:i%:B6=!"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="[?h1n*ipJA5z3%Z(Fe7A"> <field name="oid">default</field> </shadow> <block type="variables_get" id="NM6FjaeM/e|vN6))Wjl8"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id="W9cD^h2NB/Oh6uCM~,ch"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> <value name="VALUE"> <block type="logic_boolean" id="EK#H|i-qNzR8{6L@qCs:"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="controls_forEach" id="fcL+iAOQ?2UQ{l%R@Ben"> <field name="VAR" id="b~edSQ%u?[=zCg?@@NVd">id</field> <value name="LIST"> <block type="variables_get" id="|LRMU1|FENYMFt?tKXql"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> </block> </value> <statement name="DO"> <block type="controls_if" id="q*MoV25XBw2yjtA/#U;e"> <value name="IF0"> <block type="get_value_var" id="C*qbN~*s|0Y[,|yE0w:;"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="{9}$5RK-gBSnkI[~/qun"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="tHy8m#37cp1AiM#mF$J5"> <field name="VAR" id="b~edSQ%u?[=zCg?@@NVd">id</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="fy7ZPy/LDb$jnsJ~-]/~"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> <value name="VALUE"> <block type="logic_boolean" id="Jy1;ir02zJi$n;+0,^mD"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="controls_flow_statements" id="`CM-oF[[Z,xAFsleL`H4"> <field name="FLOW">BREAK</field> </block> </next> </block> </statement> </block> </statement> <next> <block type="update" id="A9rcbHAGvYr()@Dq}FS|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.020_Sonstiges.Anwesenheit.Marcel</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="(?Ieb;C^RtOKl[Q~7TV/"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>
-
@wszene
Zeige mal die Aufzählung "enum.functions.anwesend".ids ist ein Array. Das kann man nicht zusammen mit weiterem Text als Log ausgeben, sondern nur so:
-
Hier die Ausgabe
javascript.0 2022-02-09 22:38:06.523 info script.js.20-Sonstiges.Marcel_-_Anwesend: registered 0 subscriptions and 0 schedules javascript.0 2022-02-09 22:38:06.523 info script.js.20-Sonstiges.Marcel_-_Anwesend: [] javascript.0 2022-02-09 22:38:06.500 info Start javascript script.js.20-Sonstiges.Marcel_-_Anwesend javascript.0 2022-02-09 22:38:06.494 info Stop script script.js.20-Sonstiges.Marcel_-_Anwesend
Es ist aber ein Gerät auf True
-
@wszene sagte: Es ist aber ein Gerät auf True
Das Log zeigt ein leeres Array, was bedeutet, dass kein zum Selektor passender Datenpunkt gefunden wurde. Falls die Datenpunkte erst kürzlich zur Aufzählung zugewiesen wurden, starte die Javascript-Instanz neu, um den Puffer zu aktualisieren.
-
@paul53
Danke das hat geholfenjavascript.0 2022-02-10 07:16:25.036 info script.js.20-Sonstiges.Marcel_-_Anwesend: registered 5 subscriptions and 0 schedules javascript.0 2022-02-10 07:16:25.036 info script.js.20-Sonstiges.Marcel_-_Anwesend: ['0_userdata.0.001_Alexa.01_Stube.Lampen.Stehlampe','0_userdata.0.001_Alexa.01_Stube.Lampen.Esstisch','0_userdata.0.001_Alexa.01_Stube.Lampen.Sofatisch','0_userdata.0.001_Alexa.01_Stube.Harmony.TV.Allgemein.Kino','0_userdata.0.001_Alexa.02_Schlafzimmer.Dosen.TV_Bett'] javascript.0 2022-02-10 07:16:25.025 info Start javascript script.js.20-Sonstiges.Marcel_-_Anwesend
Der DP wurde auf "true" gesetzt was ja richtig ist da die Stehlampe an ist
Mache ich jetzt aber die Stehlampe aus sollte ja der DP auf "false" gestellt werden
Da passiert aber leider nicht -
Kann mir hier keiner helfen?
hat denn noch niemand so etwas umgesetzt?
das kann ich mir eigentlich garnicht vorstellenDie Liste wird ja in die Variable geschrieben
Aber wie kann ich jetzt herausfinden ob ein Gerät in der Variable den Wert true hat? -
@wszene sagte: wie kann ich jetzt herausfinden ob ein Gerät in der Variable den Wert true hat?
-
@paul53
OK danke nun haben wir eine Liste mit Wertenjavascript.0 2022-02-12 13:41:51.032 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Stehlampe : true javascript.0 2022-02-12 13:41:51.032 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Sofatisch : false javascript.0 2022-02-12 13:41:51.032 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Esstisch : false javascript.0 2022-02-12 13:41:51.032 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Harmony.TV.Allgemein.Kino : false javascript.0 2022-02-12 13:41:51.030 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Stehlampe : true javascript.0 2022-02-12 13:41:51.030 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Sofatisch : false javascript.0 2022-02-12 13:41:51.030 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Esstisch : false javascript.0 2022-02-12 13:41:51.030 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Harmony.TV.Allgemein.Kino : false javascript.0 2022-02-12 13:41:51.027 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Stehlampe : true javascript.0 2022-02-12 13:41:51.027 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Sofatisch : false javascript.0 2022-02-12 13:41:51.027 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Esstisch : false javascript.0 2022-02-12 13:41:51.026 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Harmony.TV.Allgemein.Kino : false
Und wie kann ich jetzt sagen das wenn ein Wert "true" ist der DP auch als True gesetzt wird
Oder vieleicht ist es ja auch einfacher es so zu machen wenn alle Werte "false" sind den DP auf "false" zusetztenjavascript.0 2022-02-12 13:45:14.456 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.02_Schlafzimmer.Dosen.TV_Bett : false javascript.0 2022-02-12 13:45:14.456 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Stehlampe : false javascript.0 2022-02-12 13:45:14.456 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Sofatisch : false javascript.0 2022-02-12 13:45:14.456 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Lampen.Esstisch : false javascript.0 2022-02-12 13:45:14.456 info script.js.20-Sonstiges.Marcel_-_Anwesend: 0_userdata.0.001_Alexa.01_Stube.Harmony.TV.Allgemein.Kino : false
Danke
-
@wszene sagte: Und wie kann ich jetzt sagen das wenn ein Wert "true" ist der DP auch als True gesetzt wird
Das macht das Skript:
Zuerst wird die Variable anwesend auf false gesetzt. Wenn in der Schleife ein Datenpunkt mit Wert true gefunden wird, wird die Variable auf true gesetzt, andernfalls bleibt sie auf false. Zum Schluss wird die Variable in den Datenpunkt geschrieben. -
Traumhaft so soll es sein
1001 Dank an @paul53Wenn es jemand interessiert hier das Blockly
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="B~6E2M9LNR0A68YO_!?h">ids</variable> <variable type="timeout" id="start">start</variable> <variable id="8xwpI[Ec2NLCoKl2G^HN">anwesend</variable> <variable id="b~edSQ%u?[=zCg?@@NVd">id</variable> </variables> <block type="procedures_defcustomnoreturn" id="D:0E=~0D8*EFnn8f|sd." x="-1138" y="-463"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_erstellen</field> <field name="SCRIPT">Ly8gRFAgb2huZSBBbGV4YQpjcmVhdGVTdGF0ZSgnMF91c2VyZGF0YS4wLjAyMF9Tb25zdGlnZXMuQW53ZXNlbmhlaXQuTWFyY2VsJywgeyduYW1lJzonTWFyY2VsIEFud2Vlc2VuZCcsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3RhdGUnLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IGZhbHNlIH0pOwovLyBEUCBtaXQgQWxleGEKLy9jcmVhdGVTdGF0ZSgnMF91c2VyZGF0YS4wLjAwMDFfVGVzdC50ZXN0LWRwLWFsZXhhJywgeyduYW1lJzonVGVzdCBEUCBBbGV4YScsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIlRlc3QtR2Vyw6R0Iiwic21hcnRUeXBlIjogIkxJR0hUIn0gfSk7</field> <comment pinned="false" h="80" w="160">Datenpunkte erstellen</comment> </block> <block type="comment" id="/_6pGOv!o3)I1~^MR*yi" x="-1137" y="-437"> <field name="COMMENT">Funktion ausführen</field> <next> <block type="timeouts_settimeout" id="8FQd(trxfKDt`(FG0(?="> <field name="NAME">start</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="}{A#y;jy-Pl_)n6[of`b"> <mutation name="Datenpunkte_erstellen"></mutation> </block> </statement> </block> </next> </block> <block type="variables_set" id="@r0H7Pd#IuCWPzYVs]@B" x="-1138" y="-287"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> <value name="VALUE"> <block type="selector" id="9dmgHnb{Mu,KR]4`=we+"> <field name="TEXT">state[id=*](functions=anwesend)</field> </block> </value> <next> <block type="on_ext" id="|J))({--a@{f:i%:B6=!"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="[?h1n*ipJA5z3%Z(Fe7A"> <field name="oid">default</field> </shadow> <block type="variables_get" id="NM6FjaeM/e|vN6))Wjl8"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id="W9cD^h2NB/Oh6uCM~,ch"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> <value name="VALUE"> <block type="logic_boolean" id="EK#H|i-qNzR8{6L@qCs:"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="controls_forEach" id="fcL+iAOQ?2UQ{l%R@Ben"> <field name="VAR" id="b~edSQ%u?[=zCg?@@NVd">id</field> <value name="LIST"> <block type="variables_get" id="|LRMU1|FENYMFt?tKXql"> <field name="VAR" id="B~6E2M9LNR0A68YO_!?h">ids</field> </block> </value> <statement name="DO"> <block type="debug" id=".n!pnU7r[Q)}xF!+~Z._" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="qei2KI8)Z+HTi.iDty+C"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="`[kmxP4e#x}%#pKLw;ei"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="tv@RG,_o3z_]2|QoI;)3"> <field name="VAR" id="b~edSQ%u?[=zCg?@@NVd">id</field> </block> </value> <value name="ADD1"> <block type="text" id="c-F%qmhaJ@{J!SsfF7f$"> <field name="TEXT"> : </field> </block> </value> <value name="ADD2"> <block type="get_value_var" id="O=D6Yw4J/%U90ae?kn*b"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="5H(j1*]9Flo81ly#4itt"> <field name="VAR" id="b~edSQ%u?[=zCg?@@NVd">id</field> </block> </value> </block> </value> </block> </value> <next> <block type="controls_if" id="q*MoV25XBw2yjtA/#U;e"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="GA*ckh?Pp/%@%+5)8C?s"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="C*qbN~*s|0Y[,|yE0w:;"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="{9}$5RK-gBSnkI[~/qun"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="tHy8m#37cp1AiM#mF$J5"> <field name="VAR" id="b~edSQ%u?[=zCg?@@NVd">id</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="/!dprzsB*lsRbR6$v6m4"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="fy7ZPy/LDb$jnsJ~-]/~"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> <value name="VALUE"> <block type="logic_boolean" id="Jy1;ir02zJi$n;+0,^mD"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="controls_flow_statements" id="`CM-oF[[Z,xAFsleL`H4"> <field name="FLOW">BREAK</field> </block> </next> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="~mtzbd`zn~MO?Wj)`p~2"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> <value name="VALUE"> <block type="logic_boolean" id="5=!Majg[*^Z*GbHZRsBj"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="update" id="A9rcbHAGvYr()@Dq}FS|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.020_Sonstiges.Anwesenheit.Marcel</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="(?Ieb;C^RtOKl[Q~7TV/"> <field name="VAR" id="8xwpI[Ec2NLCoKl2G^HN">anwesend</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml>