NEWS
Lichtautomatik Garage Blockly
-
@nrw-hydro, natürlich ist sowas problemlos mit iobroker möglich, der langweilt sich eher bei solen problemstellungen XD
Ich persönlich arbeite nicht gern mit blockly weil mir das zu umständlich und undurchsichtig ist deswegen gebe ich dir eine Beschreibung wie ich das Programmieren würde. Komplizierte locks usw. erspaare ich dir lieber und gestalte das ganze so einfach wie möglich damit du die Logik in Blockly nachbauen kannst.
Nachdem ich nun eine Weile versucht habe es so zu erklären wie es in Blockly zusammengestellt werden sollte hab ichs dir nun kurz zusammengeklickt.
Du bekommst damit aber nur eine Grundfunktion ohne Prüfungen etc. Diese sollten aber auf längere sicht definitiv hinzugefügt werden.
Was ich damit meine wirst du mit der Zeit sicher feststellen und ich hoffe das dir die Vorlage etwas beim Verständniss hilft.Den folgenden Code einfach unter Blöcke importieren einfügen
Viel Spass damit<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="H?.AkXx5?F=T3Tzb)ndc">ObjektID Garagentor</variable> <variable id="|!T%#,wK,7/lS8Lh:y,0">ObjektID Taster</variable> <variable id="~[dwP{rgw^:HJu#zQP1k">ObjektID Beleuchtung</variable> </variables> <block type="comment" id="1=r%FEDglRSQW:#.+%]t" x="138" y="-62"> <field name="COMMENT">Hier die Passenden IDs setzen</field> <next> <block type="variables_set" id="A7s:5fm@bczD,wo$@Xrm"> <field name="VAR" id="H?.AkXx5?F=T3Tzb)ndc">ObjektID Garagentor</field> <value name="VALUE"> <block type="field_oid" id="u}ikk!nj/oJrFy*opGV`"> <field name="oid">default</field> </block> </value> <next> <block type="variables_set" id="=WsMUR5d1+w.ye;ugMvC"> <field name="VAR" id="|!T%#,wK,7/lS8Lh:y,0">ObjektID Taster</field> <value name="VALUE"> <block type="field_oid" id=";`$xqS_Dq.E@oL//)RO="> <field name="oid">default</field> </block> </value> <next> <block type="variables_set" id="E6Pex-tV7)aGxw?kGix^"> <field name="VAR" id="~[dwP{rgw^:HJu#zQP1k">ObjektID Beleuchtung</field> <value name="VALUE"> <block type="field_oid" id="fX11Y},7[(.BW3_qW$II"> <field name="oid">default</field> </block> </value> <next> <block type="comment" id="T@a8|:10~=0pC$HJqc]b"> <field name="COMMENT">Diese Gruppe Schaltet das Licht beim öffnen des </field> <next> <block type="comment" id="uMwP:)OX+y{!+T(u!j5w"> <field name="COMMENT">Garagentors ein und nach 10 Minuten wieder aus</field> <next> <block type="on_ext" id="Yl=e==]/22`W1o2q--:8"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="3tN;p5cV,,Qx}(ie7Au2"> <field name="oid">default</field> </shadow> <block type="variables_get" id="U1GoRH7xJ!OiwM!}|)+0"> <field name="VAR" id="H?.AkXx5?F=T3Tzb)ndc">ObjektID Garagentor</field> </block> </value> <statement name="STATEMENT"> <block type="control_ex" id="r9~dPARdX%D3!30S1Ov|"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="UjuomN$_-ZVsrcbK$c4m"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="|J1bz{}TYxy$0hI]qH2q"> <field name="VAR" id="~[dwP{rgw^:HJu#zQP1k">ObjektID Beleuchtung</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="kLlr|qL,HjXum=]p9[HF"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="DGi+ku(27Vg|zURPpuf%"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="Nto@|`?_}ex(RH]:evTD"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="]PAYY~9htD/33XE2U]8Q"> <field name="VAR" id="~[dwP{rgw^:HJu#zQP1k">ObjektID Beleuchtung</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="rX$9[W=hPX@!3.1*V1Q6"> <field name="BOOL">FALSE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="BweZ=pxAfuBVq:QW:lQB"> <field name="NUM">0</field> </shadow> <block type="math_arithmetic" id="!+Y^W3UelwwIxP!VKhLR"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="Vz`Hq#Rn.Gf$Ua+){RVB"> <field name="NUM">10</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="Er+QVWDrB3Awq+KnA83j"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="|LR`-uXEb:Yp?)g3phi{"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="!{h/Jh4;_#E9XM88PdDA"> <field name="NUM">60</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="^E6]aeRHPSs|dPh#.tQY"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="#Fkh?ukW*nYzR!*GNbcH"> <field name="COMMENT">Diese Gruppe schaltet das lich mit hilfe des Tasters</field> <next> <block type="on_ext" id="K!jz~8/ggv!)B[](?fz5"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="F@4R5`gbOnd)LR!%m|yu"> <field name="oid">default</field> </shadow> <block type="variables_get" id="MgAHzRo^vDMOsUa;!D*H"> <field name="VAR" id="|!T%#,wK,7/lS8Lh:y,0">ObjektID Taster</field> </block> </value> <statement name="STATEMENT"> <block type="control_ex" id="_rN@::/|V1PG2%H.,xRR"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="Fbp3]agGVauyw3u:r3wj"> <field name="VAR" id="~[dwP{rgw^:HJu#zQP1k">ObjektID Beleuchtung</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="l#qN6$t(vB#*c]qp+P|l"> <field name="BOOL">TRUE</field> </shadow> <block type="logic_negate" id="Y.-?MSCgX^U=]Zv2T25M"> <value name="BOOL"> <block type="get_value_var" id="5b?fXx,#fTDuBNu`Mj^D"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="jEZzEfsSbZm?RMYUI3O|"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="|D?mKs%=VJ}BMJ)yQV?Q"> <field name="VAR" id="~[dwP{rgw^:HJu#zQP1k">ObjektID Beleuchtung</field> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="kUM4)%C-n+{1@x.%r,}d"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@markussr1984
Hallo Markus, vielen lieben Dank schon mal. Das werde ich morgen direkt mal ausprobieren.
Werde dann berichten.
Schönen Abend und Grüße
BerndGuten Morgen,
ich habe mal Deinen Code importiert. vermutlich habe ich mich unverständlich ausgedrückt. Bei mir gibt es nicht 3 Objekt ID`s.
d.h. ich habe 1 Object ID für die Beleuchtung und eine Objekt ID für das Garagentor. Die Sache mit der Zeitautomatik gefällt mir schon ganz gut, nun ist es bei uns oftmals so, dass wir das Auto in die Garage stellen und dann abends erst die Garage schließen. So schaltet sich das Licht permanent an und aus.
Mein Wunsch wäre, das Tor öffnet sich und das Licht bleibt an. Mit dem normalen Taster taste ich das Licht wieder aus. Schließe ich die Garage wieder bleibt das Licht aus, bis zum nächsten Öffnen. Wäre es evtl. eine Möglichkeit ein weiteres Shelly Relais dazu zu nutzen um es nur an den Taster und nicht an die Beleuchtung anzuschließen ? So hätte ich meine dritte Objekt ID. Nachteil wäre natürlich, fällt mein iObroker aus, kann ich auch kein Licht einschalten, oder bei Fehlfunktion nicht ausschalten.Grüße Bernd
-
@hydro88
Wie hast du denn das alles verdrahtet und welche firmware hast du auf dem shelly drauf ? Also die Originale oder Tasmota ? und welche Shelly(s) hast du da im Einsatz ?
Ich persönlich würde da Tasmota bevorzugen da es ohne Cloud läuft, der Nachteil ist dann natürlich das die Shelly App am Handy nicht mehr geht.
Vorteil währe das man damit mit ein paar Kniffen komplett ohne Smart Home Zentrale auskommen würde und die Funktion somit so lange gesichert ist wie die Komponenten untereinander kommunizieren können. -
@markussr1984
Guten Morgen,
ich habe mal eine kleine Skizze gemacht, wie ich das Licht, den Taster und den Lichttaster (Lichtschranke) verdrahtet habe. Der "Taster" ist ein handelsüblicher Taster, der den Shelly 1 direkt tasten kann. Dieser sollte nur dazu dienen unabhängig von der Automatik das Licht dauerhaft ein oder auszuschalten. Der Lichttaster (Lichtschranke) gibt mir die Meldung ob das Tor offen ist oder nicht. Da ich in meiner Visu sehen möchte ob das Tor auf oder zu ist, habe ich mich für einen Sensor entschieden, den ich im iObroker auslesen kann.
Wenn ich jetzt anstelle des Tasters einen Schalter nehmen würde und direkt an die Lampe anschließen würde, müsste ich mich entscheiden. Will ich permanent einschalten (überbrücken) oder permanent ausschalten (unterbrechen).
Ich benutze einen "alten" Shelly1 und ein Shelly Platine Shelly Uni. Auf den Shellys ist Cloud deaktiviert, die App nutze ich gar nicht.
Die Bedienung mache ich ausschließlich über die Visualisierung des iOBrokers.
Von einem cloudbasierten System halte ich übrigens gar nichts.
Deshalb möchte ich auch all meine Lichtschalter und Rolladenaktoren auch bei Internetausfall zumindest manuell bedienen können.
Die Shelly`s kommunizieren untereinander über MQTT über den Shelly Adapter von Matthias Kleine.Grüße Bernd
-
@hydro88 sagte in Lichtautomatik Garage Blockly:
@markussr1984
Guten Morgen,
ich habe mal eine kleine Skizze gemacht, wie ich das Licht, den Taster und den Lichttaster (Lichtschranke) verdrahtet habe. Der "Taster" ist ein handelsüblicher Taster, der den Shelly 1 direkt tasten kann. Dieser sollte nur dazu dienen unabhängig von der Automatik das Licht dauerhaft ein oder auszuschalten. Der Lichttaster (Lichtschranke) gibt mir die Meldung ob das Tor offen ist oder nicht. Da ich in meiner Visu sehen möchte ob das Tor auf oder zu ist, habe ich mich für einen Sensor entschieden, den ich im iObroker auslesen kann.
Wenn ich jetzt anstelle des Tasters einen Schalter nehmen würde und direkt an die Lampe anschließen würde, müsste ich mich entscheiden. Will ich permanent einschalten (überbrücken) oder permanent ausschalten (unterbrechen).
Ich benutze einen "alten" Shelly1 und ein Shelly Platine Shelly Uni. Auf den Shellys ist Cloud deaktiviert, die App nutze ich gar nicht.
Die Bedienung mache ich ausschließlich über die Visualisierung des iOBrokers.
Von einem cloudbasierten System halte ich übrigens gar nichts.
Deshalb möchte ich auch all meine Lichtschalter und Rolladenaktoren auch bei Internetausfall zumindest manuell bedienen können.
Die Shelly`s kommunizieren untereinander über MQTT über den Shelly Adapter von Matthias Kleine.Grüße Bernd
Sieht soweit ja ganz gut aus, da brauchst du eigentlich nur die Gruppe für den Taster aus dem Blockly nehmen die wird in dieser Konstellation nicht benötigt.
Was mir allerdings aufgefallen ist, ist das du die Ausschaltverzögerung auf 4000ms gesetzt hast, das sind hald nur 4 Sekunden was dann wiederum dazu führt das das Licht ständig an und aus geht während der Garagentorsensor getriggert wird. Dies passiert vermutlich solang sich das Tor bewegt ?! aber kommt darauf an wie du das realisiert hast. Ich kann zwar aus deinem Plan entnehmen das du das mit einem Stromstoßschalter machst aber wie der angesteuert wird ist für mich nicht klar ersichtlich und ich kenne ehrlich gesagt das Symbol das du für die Betätigung verwendet hast nicht.Ob die Shellyeigene Firmware auch ohne Cloud funktioniert kann ich nicht sagen weil ich nur einen einzigen Shelly 1 besitze und der noch vor der ersten inbetriebnahme mit Tasmota geflasht wurde.
-
@nrw-hydro sagte: Blocky Script erstellt, wenn der Uni wahr wird, soll er das Shelly 1 Relais auch einschalten.
Zeigen!
Der Taster am Shelly 1 schaltet um (ohne ioBroker)?@nrw-hydro sagte in Lichtautomatik Garage Blockly:
Licht automatisch eingeschaltet wird, sobald das Garagentor geöffnet ist.
Nur beim Öffnen einschalten? Dann triggere auf "ist größer als letztes".
Wenn das Licht auch beim Schließen ausgeschaltet werden soll, dann triggere auf "wurde geändert".
-
@markussr1984
Hallo Markus,
die 4000 ms habe ich eingetragen um das ganze auszuprobieren... wollte nicht 10 Minuten warten.
Der Shelly ist quasi der "Stromstoßschalter". Das Symbol in der Zeichnung soll den Lichttaster darstellen, der sagt ob das Tor auf oder zu ist.
Ja die Shelly`s klappen ohne Cloud. Habe mehrere im Einsatz.
Wie gesagt die App nutze ich gar nicht. Deaktiviert man die Cloud, ist die App eigentlich nicht mehr zu nutzen. Brauche ich aber auch nicht. Nutze nur die Visu des iObroker. Sollte ich aus der "Ferne" mal drauf zugreifen wollen, mache ich das via VPN Verbindung und öffne dann die Visu.Die Lösung von Paul53 funktioniert!
Jetzt möchte ich Paul nur bitten zu erklären warumIch möchte mich ganz herzlich bei Dir bedanken! Ohne Euch hätte ich das nie hinbekommen.
Vielleicht bis bald mal!
Viele Grüße Bernd -
@paul53
Hallo Paul,
halleluja es funktioniert.
Aber jetzt hätte ich gerne gewusst warum.Also das Triggern "ist größer als letztes" kann ich irgendwie noch nachvollziehen.
Ich habe zunächst bei Ausschalten eingegeben steure switch mit "falsch".
das bringt nicht die Lösung.
Aber dieses steuere switch mit "Wert", klappt. Nun wüsste ich gerne warum.
Vielen Dank an Markus und Dich, dass Ihr mir helft.
Echt super Jungs!
Viele Grüße Bernd -
@hydro88
Wenn der untere Trigger auf "wurde geändert" verwendet wird, ist der obere Trigger überflüssig und sollte gelöscht werden!@hydro88 sagte in Lichtautomatik Garage Blockly:
Aber dieses steuere switch mit "Wert", klappt. Nun wüsste ich gerne warum.
Wert
enthält den Wert vom "Schalter" zum Trigger-Zeitpunkt und wird einfach auf "Switch" übertragen.@nrw-hydro sagte in Lichtautomatik Garage Blockly:
Wenn ich in diesem Zustand mit dem Taster den Shelly Plus schalte, geht das Licht aus, aber nach einer undefinierten Zeit wieder an. Und Umgekehrt bei geschlossenem Tor.
Du hattest vermutlich auf "wurde aktualisiert" (oder "wahr" bzw. "falsch") getriggert. Offenbar wird der Datenpunkt "Schalter" nicht nur bei Wertänderung aktualisiert, sondern auch zyklisch.
-
@paul53
Hallo Paul,
genau so wie Du es beschrieben hast, hatte ich es vorher gemacht.
Habe auf "wahr" und "falsch" des Lichtsensors (bzw. Eingang des Shelly Uni getriggert). Dann konnte ich zwar das Licht ausschalten aber der Shelly Uni hat zyklisch nachgetriggert. Genau!
Ich habe nun den oberen Block (Deines Scripts) entfernt und nur diesen gespeichert.
So klappt es perfekt.
Ich muss noch viel lernen. Aber es macht Spaß, wenn es dann funktioniert.(so funktioniert es)
Nochmals vielen Dank!
Viele Grüße Bernd