Weil der Shark richtig gute Tutorials vorstellt und ich in einer anderen ioBroker Community schlechte Erfahrungen gemacht habe, möchte ich hier bei euch mein erstes Script vorstellen. Hintergrund von dem einfachen Script ist folgender:
Ich habe gerne die Kontrolle über mein System und möchte wissen, wann es ein Update gibt und auch für welchen Adapter. Einigen sind die Updates egal, manche denken sich "Never touch a running System" und andere machen ein Crontab, haben aber keine Kontrolle über die Updates. Also bastelte ich mein erstes kleines Blockly Script.
Im ioBroker Admin Adapter steht ursprünglich, das 1 mal am Tag nach Updates gesucht wird. Ich habe eingestellt, das 2 mal am Tag für den ioBroker nach Updates gesucht werden soll. Wenn der Admin Adapter ein Update gefunden hat, wird in der Zeit von 8:00 Uhr morgens und 20:00 Uhr abends alle 4 Stunden eine Mitteilung über Telegram verschickt und zeigt an, welche Adapter ein Update haben.
Erstmal erstellen wir unter Objekte ein neuen Eintrag und nennen diesen Update und kopieren dann das Blockly Script. Natürlich muss der richtige Objekt Pfad noch im Script angegeben werden. Im Zeitplan vom Blockly Script kann jeder selbst den Zeitintervall für sich selbst einstellen, wann man die Nachrichten erhalten möchte.
Zusätzlich sagt Alexa über ein angegebenes Echo Gerät bescheid, das es ein Update gibt. Sollen mehrer Echo Geräte ansagen, wenn es ein Update gibt, einfach den "speak" Block kopieren und darunter einfügen. Dort muss dann nur noch jedes weitere Echo Gerät mit "speak" angegeben werden. Sollen keine Echo Geräte ein Update ansagen, einfach den "speak" Block löschen/deaktivieren.
Der Timeout von 1 Sekunde wurde mit Absicht eingebaut, damit nicht mal doch eine Nachricht kommt, wenn der Eintrag wieder auf false gesetzt wird.
- <xml xmlns="http://www.w3.org/1999/xhtml">
- <block type="schedule" id="(TAF|-94gCwsd/XOop}b" x="188" y="138">
- <field name="SCHEDULE">{"time":{"start":"08:00","end":"20:01","mode":"hours","interval":4},"period":{"days":1}}</field>
- <comment pinned="false" h="80" w="160">Hier kann ein eigener Zeitplan für die Benachrichtigungen eingestellt werden.</comment>
- <statement name="STATEMENT">
- <block type="controls_if" id="Ci6tDx:0[KpG/7,)]}DB">
- <value name="IF0">
- <block type="logic_compare" id="Z%*CP5wa2Agx2Er9Zn)A">
- <field name="OP">EQ</field>
- <value name="A">
- <block type="get_value" id="f0{^#C}A?hXm~F7p=vG2">
- <field name="ATTR">val</field>
- <field name="OID">admin.0.info.updatesNumber</field>
- </block>
- </value>
- <value name="B">
- <block type="math_number" id="*`e+:@./aiCBZ7H1sUDI">
- <field name="NUM">0</field>
- </block>
- </value>
- </block>
- </value>
- <statement name="DO0">
- <block type="control" id="vnOkA/EJ]fpe{^*#?_-9">
- <mutation delay_input="false"></mutation>
- <field name="OID">javascript.0.Update</field>
- <field name="WITH_DELAY">FALSE</field>
- <value name="VALUE">
- <block type="logic_boolean" id="V|U2wOtkKA%CFeeEgX(/">
- <field name="BOOL">FALSE</field>
- </block>
- </value>
- </block>
- </statement>
- <next>
- <block type="controls_if" id="0%Wwlq~gY|MK5@wmJ{4*">
- <value name="IF0">
- <block type="logic_compare" id="?u/Zj`Xgw)EIVR#-qa@x">
- <field name="OP">GT</field>
- <value name="A">
- <block type="get_value" id="N(PBxkjj^v._u*7q{3FO">
- <field name="ATTR">val</field>
- <field name="OID">admin.0.info.updatesNumber</field>
- </block>
- </value>
- <value name="B">
- <block type="math_number" id="VzKj*Ah)6J=dYqKMdtNr">
- <field name="NUM">0</field>
- </block>
- </value>
- </block>
- </value>
- <statement name="DO0">
- <block type="update" id="VF}H=6Sv#!.8jnl3*DzA">
- <mutation delay_input="false"></mutation>
- <field name="OID">javascript.0.Update</field>
- <field name="WITH_DELAY">FALSE</field>
- <value name="VALUE">
- <block type="logic_boolean" id="t5goZ)Gfn6M}sv@qs/~C">
- <field name="BOOL">TRUE</field>
- </block>
- </value>
- </block>
- </statement>
- <next>
- <block type="timeouts_settimeout" id="SO(M,7Rh?MOWD~myK{@#">
- <field name="NAME">timeout</field>
- <field name="DELAY">1</field>
- <field name="UNIT">sec</field>
- <statement name="STATEMENT">
- <block type="controls_if" id="L*yEu)!a4b6;{p?Z6+Ze">
- <value name="IF0">
- <block type="logic_compare" id="8C.`]/92%rlIcYI_,*ik">
- <field name="OP">EQ</field>
- <value name="A">
- <block type="get_value" id="mr=x7Mccv5ZZvfb8=3,P">
- <field name="ATTR">val</field>
- <field name="OID">javascript.0.Update</field>
- </block>
- </value>
- <value name="B">
- <block type="logic_boolean" id="P-4xj=JQ?v+qR+HG8/}l">
- <field name="BOOL">TRUE</field>
- </block>
- </value>
- </block>
- </value>
- <statement name="DO0">
- <block type="telegram" id="CTq~NUFkV@zU6#lOP5wY">
- <field name="INSTANCE">.0</field>
- <field name="LOG"></field>
- <field name="SILENT">FALSE</field>
- <field name="PARSEMODE">default</field>
- <value name="MESSAGE">
- <shadow type="text" id="xN9cr|TxF7n|W;gncqzZ">
- <field name="TEXT">text</field>
- </shadow>
- <block type="text_join" id="^c/s#?IHip{Ea{uTZ2Fr">
- <mutation items="2"></mutation>
- <value name="ADD0">
- <block type="text" id="n;mOULai39*LnEoXlf@G">
- <field name="TEXT">Dein ioBroker braucht etwas Aufmerksamkeit. Es gibt Updates für </field>
- </block>
- </value>
- <value name="ADD1">
- <block type="get_value" id=",3q2ucbJuX|KZhvg?Ua(">
- <field name="ATTR">val</field>
- <field name="OID">admin.0.info.updatesList</field>
- </block>
- </value>
- </block>
- </value>
- <next>
- <block type="control" id="*JB@4MrG%ND(|H~ysiwU">
- <mutation delay_input="false"></mutation>
- <field name="OID">alexa2.0.Echo-Devices.G2A0V704846702JT.Commands.speak</field>
- <field name="WITH_DELAY">FALSE</field>
- <comment pinned="false" h="80" w="160">Hier das Echo Gerät mit speak auswählen, welches die Updates ansagen soll. Für mehrere Echo Geräte einfach den Block kopieren und drunter anhängen.</comment>
- <value name="VALUE">
- <block type="text" id="%R4]=JDkJ7zT+0mU=6F)">
- <field name="TEXT">Es sind Updates für dein ioBroker verfügbar</field>
- </block>
- </value>
- </block>
- </next>
- </block>
- </statement>
- </block>
- </statement>
- </block>
- </next>
- </block>
- </next>
- </block>
- </statement>
- </block>
- </xml>