NEWS
Blockly Script soll nur tatsächlich geschaltete Geräte per Telegram senden
-
Nun möchte ich per Telegramm oder alternativ per Say it die Rückmeldung bekommen Wohnzimmer Rollladen Esszimmer Rollladen Kinderzimmer Rollladen runter gefahren.
War zum Zeitpunkt des drücken der Kinderzimmer Rollladen allerdings schon unten soll die Ausgabe nur noch Wohnzimmer und Esszimmer Rollladen runter lauten.
Hast du eine Idee wie ich das hinbekomme? `
MehrereAber schaue Dir mal das Blockly an.
So wie ich Dich einschätze, wirst Du dann auch ein paar Ideen bekommen.
Grüße
-
@Sven2013 - Und? Bist Du weitergekommen?
Grüße
-
Hallo,
Sorry ich habe mich eine Weile nicht gemeldet da ich mich leider durch meine Arbeit verhindert war.
Nun bin ich aber wie der dabei und habe mich mit deiner Blocklyanpassung beschäftigt.
Ich habe mich zunächst mal darum gekümmert, ob mir tatsächlich eine Variable genügt. Hier bin ich leider noch nicht 100% sicher, aber ich glaube nicht.
Ich nutze zur Steuerung meiner Rollos mehrere Taster und Programme. So gibt es also leider nicht nur den Stand komplett auf oder komplett zu.
wenn ich nun dein Blockly nutze funtioniert dieses leider nicht immer. Beispiel: Ich habe (mit der Programmtaste) die Variable "Rollladen komplett zu" auf true gesetzt, dann fahren alle Rollläden zu. Perfekt!
Wenn ich nun einige Rollläden per Hand ein Stück auffahre, bleibt die Variable auf "true" stehen.
Nun möchte ich abends gerne wieder mit der Programmtaste "Rollladen komplett zu" alle Rollläden schließen. Dieses funktioniert aber nicht, da sich die Variable nicht ändert, sondern von true au true stehen bleibt. Somit löst das Blockly script leider nicht aus.
Aus diesem Grund hatte ich die 2 Variablen.
Der 2 Teil deines Blocklys mit dem Ansagetext ist der Einstieg für meinen ursprünglichen Wunsch.
Ich möchte das ich in dem Ansagetext nun "Sammel" welche Rolläden also tätsächlich ihren Stand durch die Programmauslösung verändert haben.
Beispiel:
Rollladen 1 - war auf 70%
Rollladen 2 - war auf 90%
Rollladen 3 - war auf 100%
Rollladen 4 - war auf 10%
Nun löse ich das Programm aus danach ist der Stand für alle 4 Rollladen 100%.
Meine Benachrichtigung soll dann lauten:
Rollladen 1, Rollladen 2, und Rolladen 4 sind nun geschlossen worden. Oprional vielleicht noch Rolladen 3 war bereits geschlossen.
Hast du dazu vielleicht noch einen weiteren Tipp?
Gruß Sven
-
Mein Script kannst du sicher für deine Gegebenheiten anpassen.
Bei mir ist meine Abwesenheit der Trigger.
Dann werden alle Fenster gecheckt auf deren Zustand. Wenn ein Fenster nicht geschlossen ist, bekomme ich ein Telegram mit der Angabe welche Tür/Fenster offen ist.
Bei den AUF - ZU Sensoren ist dann wahr und falsch, bei den Kipphebel Sensoren gibt es 0 (ZU), 1 (gekippt) und 2 (offen).
-
Wenn ich nun einige Rollläden per Hand ein Stück auffahre, bleibt die Variable auf "true" stehen.
Nun möchte ich abends gerne wieder mit der Programmtaste "Rollladen komplett zu" alle Rollläden schließen. Dieses funktioniert aber nicht, da sich die Variable nicht ändert, sondern von true au true stehen bleibt. Somit löst das Blockly script leider nicht aus.
Aus diesem Grund hatte ich die 2 Variablen. `
Ja, wenn man da manuell Zustände ändert ist das natürlich schlecht.Ich würde sagen zweite Variable und zweites Script (Blockly).
Meine Räume steuere ich alle separat.
Jeder Raum hat Blocklys für Rolladen, Heizung usw.
Da kann ich besser auf Situationen eingehen. Ist Besuch da, ist das Gästezimmer belegt, ist eine der Türen zur Terasse geöffnet usw…
Du brauchst also eine zweite Variable. Ich würde die aber allgemeiner benennen, damit man die auch für andere Dinge verwenden kann.
z.B. "Schlafmodus".
Wenn die auf "wahr" gesetzt wird, kannst Du mehrere Aktionen (Blocklys) starten. Rolladen und Fenster prüfen, Heizung usw.
Ich möchte das ich in dem Ansagetext nun "Sammel" welche Rolläden also tätsächlich ihren Stand durch die Programmauslösung verändert haben.
Beispiel:
Rollladen 1 - war auf 70%
Rollladen 2 - war auf 90%
Rollladen 3 - war auf 100%
Rollladen 4 - war auf 10%
Nun löse ich das Programm aus danach ist der Stand für alle 4 Rollladen 100%.
Meine Benachrichtigung soll dann lauten:
Rollladen 1, Rollladen 2, und Rolladen 4 sind nun geschlossen worden. Oprional vielleicht noch Rolladen 3 war bereits geschlossen.
Hast du dazu vielleicht noch einen weiteren Tipp? `
s.o.Fang mal mit einen zweiten Blockly an.
Wenn Du nicht weiterkommst melde Dich.
Grüße
-
Hallo Männer,
ich habe nun eine Kombination aus euren Blocklys genommen und bin meinem Ziel ganz nah.
Hier zunächst mal mein Code:
! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
! <block type="comment" id="AV(xik??:G5_MN[tiv" x="-437" y="-337"><field name="COMMENT">Manuelle Auslösung alle Rollos runter</field> ! <next><block type="on" id="{EKZRiaeJJ2dXbV|QC19"><field name="OID">javascript.0.Rollladen_komplett_zu</field> ! <field name="CONDITION">true</field> ! <statement name="STATEMENT"><block type="comment" id="[/co?!2njn#ajRV21u[J"><field name="COMMENT">Rollladen</field> ! <next><block type="control" id="x@;nm3.{*e=]?-jkcl^A"><mutation delay_input="true"></mutation> ! <field name="OID">hm-rpc.0.MEQ1312281.1.LEVEL</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">1000</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="math_number" id="/-e3X=8?(9gowyOP?3O,"><field name="NUM">0</field></block></value> ! <next><block type="controls_if" id="zio`+wA?ZIz)WB!yGf/q"><value name="IF0"><block type="logic_compare" id="~d=m?pWWu@Bi;3I~Uro4"><field name="OP">GT</field> ! <value name="A"><block type="get_value" id="uf0Y}Nd]e8D4S.[kOnrs"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.MEQ1312281.1.LEVEL</field></block></value> ! <value name="B"><block type="math_number" id="^M5]?PuzoOBwjaX:OThu"><field name="NUM">0</field></block></value></block></value> ! <statement name="DO0"><block type="text_append" id="?zW]vO^ZP?sjZdX@bBwc"><field name="VAR">Textteil</field> ! <value name="TEXT"><shadow type="text" id="Q(zPEJ}KDgoJWWrNelb6"><field name="TEXT">im Esszimmer,</field></shadow></value></block></statement> ! <next><block type="control" id="C@R.{!H?rkVxUv84rjN}"><mutation delay_input="true"></mutation> ! <field name="OID">hm-rpc.0.MEQ1315134.1.LEVEL</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">2000</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="math_number" id="_2!y1;mo18=TuO0ein!W"><field name="NUM">0</field></block></value> ! <next><block type="controls_if" id="PRkBmftHonqMJyFve`9l"><value name="IF0"><block type="logic_compare" id="oiG5j=E=W:5(jXB8V@XG"><field name="OP">GT</field> ! <value name="A"><block type="get_value" id="]F;C9po#{3jOm~v[D|(("><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.MEQ1315134.1.LEVEL</field></block></value> ! <value name="B"><block type="math_number" id="@O_W#_q*m6mc:AhKaT(+"><field name="NUM">0</field></block></value></block></value> ! <statement name="DO0"><block type="text_append" id="2Bl
!^f=%!K4M,tIjH"><field name="VAR">Textteil</field>
! <value name="TEXT"><shadow type="text" id="5uPkk=Ch4aV]n1J)b}t-"><field name="TEXT">im Wohnzimmer,</field></shadow></value></block></statement>
! <next><block type="control" id=".o^rimHhiwuSqXsYJGSi"><mutation delay_input="true"></mutation>
! <field name="OID">hm-rpc.0.MEQ1312656.1.LEVEL</field>
! <field name="WITH_DELAY">TRUE</field>
! <field name="DELAY_MS">3000</field>
! <field name="CLEAR_RUNNING">FALSE</field>
! <value name="VALUE"><block type="math_number" id="%C#3}e6gg,^+5=F~Q:XX"><field name="NUM">0</field></block></value>
! <next><block type="controls_if" id="IAkxK4?Vu%A%V%1_r/}_"><value name="IF0"><block type="logic_compare" id="e,]rF)H,3WgCp)Y%vy"><field name="OP">GT</field> ! <value name="A"><block type="get_value" id="7T~QI,q08DhU~YNt[?1L"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.MEQ1312656.1.LEVEL</field></block></value> ! <value name="B"><block type="math_number" id="f|9*8!BTc8IF1HUm8a5I"><field name="NUM">0</field></block></value></block></value> ! <statement name="DO0"><block type="text_append" id="hrKH!y1:5Y?9bM!qw2H5"><field name="VAR">Textteil</field> ! <value name="TEXT"><shadow type="text" id="OQL*WpZgBtm.M/KDVV=f"><field name="TEXT">bei Moritz,</field></shadow></value></block></statement> ! <next><block type="control" id="){h{0WDyFJfhy5mR:q(_"><mutation delay_input="true"></mutation> ! <field name="OID">hm-rpc.0.MEQ1312688.1.LEVEL</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">4000</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="math_number" id="Fz-V~!Px2_i%kAi7Xi-A"><field name="NUM">0</field></block></value> ! <next><block type="controls_if" id="]q.Xb*VQ,S{]|92,*X5%"><value name="IF0"><block type="logic_compare" id="DyNT^Y^pzYqaj?mF,|BX"><field name="OP">GT</field> ! <value name="A"><block type="get_value" id="?y
6/:qnrKYg=r:7G7~"><field name="ATTR">val</field>
! <field name="OID">hm-rpc.0.MEQ1312688.1.LEVEL</field></block></value>
! <value name="B"><block type="math_number" id="aNKC;Ew5P+%dBrC0p|A"><field name="NUM">0</field></block></value></block></value>
! <statement name="DO0"><block type="text_append" id="VL.N6QtNonweAv8_|J_p"><field name="VAR">Textteil</field>
! <value name="TEXT"><shadow type="text" id="{+K2{mux~R8H6r%]..#"><field name="TEXT">bei Nele</field></shadow></value></block></statement>
! <next><block type="procedures_callnoreturn" id="7{S:2wBBy(a)]bewkQ|)"><mutation name="Handy"><arg name="Meldungstext"></arg></mutation>
! <value name="ARG0"><block type="text_join" id="3kDQ~MaM:P95K5G@<I><mutation items="3"></mutation>
! <value name="ADD0"><block type="text" id="MmA/2//0weSwu@b
!8*"><field name="TEXT">Die Beschattung</field></block></value>
! <value name="ADD1"><block type="variables_get" id="De:=81lZdn^H6T!CoF4q"><field name="VAR">Textteil</field></block></value>
! <value name="ADD2"><block type="text" id="!TSe/:EodE5%ujY9L;"><field name="TEXT">ist nun komplett geschlossen!</field></block></value><s><em></s>!"></block></value> ! <next><block type="comment" id="D4WUmbKW,=o~J1b[653i"><field name="COMMENT">setzt Variable zurück</field> ! <next><block type="controls_if" id="G,IPh#w,}Gg}i7OcI~le"><value name="IF0"><block type="logic_compare" id="p3/CH+nV8iN#rX?5{9)o"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="^brTX).6ev7*m(]V7!/Z"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Rollladen_komplett_zu</field></block></value> ! <value name="B"><block type="logic_boolean" id="RAB}{@2W!(w
1sP)E:Ok"><field name="BOOL">TRUE</field></block></value></block></value>
! <statement name="DO0"><block type="control" id="P3uJ3%/WXZ*||
5H%(1"><mutation delay_input="true"></mutation>
! <field name="OID">javascript.0.Rollladen_komplett_zu</field>
! <field name="WITH_DELAY">TRUE</field>
! <field name="DELAY_MS">6000</field>
! <field name="CLEAR_RUNNING">FALSE</field>
! <value name="VALUE"><block type="logic_boolean" id="0LjH_nKNna(0:;E}rBBJ"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block>
! <block type="procedures_defnoreturn" id="FlU1RJhZoo4hjP
GWuO" x="488" y="-312"><mutation><arg name="Meldungstext"></arg></mutation>
! <field name="NAME">Handy</field>
! <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
! <statement name="STACK"><block type="comment" id="5!f4=oY#]kuo~@.US]Pg"><field name="COMMENT">Handyansage an/Aus</field>
! <next><block type="controls_if" id="|Ytea7|KnMvA`v.(X*-{"><value name="IF0"><block type="logic_compare" id="d%l5VrH-6_.}A,L?{hYN"><field name="OP">EQ</field>
! <value name="A"><block type="get_value" id="e=+=%vEtpxD.l-+E|@zg"><field name="ATTR">val</field>
! <field name="OID">javascript.0.Ansagen_ein_oder_ausschalten.Rolladen_komplett_Nachricht_Handy</field></block></value>
! <value name="B"><block type="logic_boolean" id="A=Z5_G)1TKR=c!^avAz="><field name="BOOL">TRUE</field></block></value></block></value>
! <statement name="DO0"><block type="pushover" id="eGw2QegfDQy2X*usYt}0"><field name="INSTANCE">.0</field>
! <field name="PRIORITY">0</field>
! <value name="MESSAGE"><shadow type="text" id="e[(,ipWtZQ-;{l756%#+"><field name="TEXT">Alle Rolläden sind gleichzeitig runtergefahren worden, durch Programmauslösung am Tablet</field></shadow>
! <block type="variables_get" id="4VVRl:g5-ETh!zQ12TbQ"><field name="VAR">Meldungstext</field></block></value></block></statement></block></next></block></statement></block></xml> _Nun bekomme ich über Pushover meine gewünschte Nachricht. Zu mindest fast.Sie lautet: Die Beschattung undefinedim Esszimmer, im Wohnzimmer, bei Nele ist nun komplett geschlossen!
Aber warum ist das undefined dazwischen? Das bekomme ich einfach nicht weg.
Ist meine Lösung so praktikabel, oder sollte ich nochmal ein wenig umbauen?
Denn der Teil mit "die Rollläden X oder Y waren schon geschlossen habe ich ja noch nicht umgestzt.
Gruß Sven_
-
Hi Sven2013
Wenn ich Dein Blockly importiere ist alles OK.
Einfach mal in ein neues Script importieren.
Grüße
-
Also das Script funktioniert auch einwandfrei.
Nur bei der Nachricht die ich per Pushover bekomme ist das Wort undifined dazwischen. Woher kommt das?
Hier der Text meiner Pushover Nachricht.
ioBroker: Die Beschattung undefinedim Esszimmer, im Wohnzimmer, bei Moritz, bei Nele wird nun geschlossen!Die Beschattung war bereits geschlossen
Gruß Sven
Gesendet von iPhone mit Tapatalk
-
ioBroker: Die Beschattung undefinedim Esszimmer, im Wohnzimmer, bei Moritz, bei Nele wird nun geschlossen!Die Beschattung war bereits geschlossen `
Aah, jetzt bin ich auf den richtigen Gleis.Bei Blockly muss man bei neuen, leeren Zeichenketten aufpassen.
Die sind nicht leer sondern liefern den Wert "undefine".
Man muss man erstmal "nichts" reinschreiben, damit sie leer sind.
Fast so wie bei der alten Mengenlehre.
"Wenn fünf Leute den Raum verlassen, muss einer wieder rein damit der Raum leer ist"
Wenn Du es so machst, funktioniert es.
Grüße
-
Hey rantanplan,
vielen Dank an dich. Deine Lösung hat das Ziel gebracht. Wie auch immer du darauf gekommen bist es ist der Hammer.
Gruß Sven