ioBroker: Batteriewarnungen per Push oder E-Mail erhalten

Lass dich ganz bequem über Batteriewarnungen deiner iobroker-Geräte per Push oder E-Mail informieren.

Sensoren einer Aufzählung zuweisen

Damit du bei Änderungen des Batteriestatus deiner Smart-Home-Geräte beispielsweise per Pushover (oder anderen Diensten) informiert wirst, musst du jedem “battery-“State der Geräte, die du überwachen willst, eine „Funktion“ zuweisen. Erstelle dazu unter „Aufzählungen“ eine neue Funktion:

Lass dich ganz bequem über Batteriewarnungen deiner iobroker-Geräte per Push oder E-Mail informieren.

Danach wechselst du in „Objekte“ und wählst der Reihe nach die Batterie-Geräte aus. Dem State, der den Batterie überwacht (“battery”, “percent”, …), weist du die neue Funktion „Batterie“ zu:

Lass dich ganz bequem über Batteriewarnungen deiner iobroker-Geräte per Push oder E-Mail informieren.

Blockly-Script erstellen

Dann erstellst du ein neues Blockly-Script. Als Trigger wählst du “IDs vom Selektor” aus der “System”-Kategorie. Für den Selektor fügst du folgenden Wert ein – Achtung: hinter “functions” trägst du die ID (ohne “enum.functions.”) der Funktion ein, nicht deren Namen. Die “Zustandsänderung” stellst du auf “ist kleiner als letztes”:

state[id=*](functions=batterie)
Lass dich ganz bequem über Batteriewarnungen deiner iobroker-Geräte per Push oder E-Mail informieren.

Dadurch löst jede “kleiner als”-Änderung sämtlicher States, die der Funktion zugewiesen sind, das Script aus. Weitere Möglichkeiten mit dem “IDs vom Selektor”-Trigger kannst du hier nachlesen.

Damit du aber nur informiert wirst, wenn der Wert der Batterie unter einen bestimmten Wert fällt, fügst du nun eine “Falls-Mache”-Abfrage ein:

Lass dich ganz bequem über Batteriewarnungen deiner iobroker-Geräte per Push oder E-Mail informieren.

Den Wert kannst du flexibel auf deine Bedürfnisse anpassen. Anschließend ziehst du noch einen “Sendto”-Block “pushover” in den „falls“-Block. Jetzt wirst du – sobald der Wert der Batterie unter den eingestellten Wert sinkt – per Pushover invormiert:

Lass dich ganz bequem über Batteriewarnungen deiner iobroker-Geräte per Push oder E-Mail informieren.

Du kannst natürlich auch einen E-Mail, Telegram oder Whatsapp oder-Block verwenden. Wie du diese Adapter einrichten kannst, erfährst du in diesem Artikel.

Dieser Aufzählung kannst du jederzeit weitere Datenpunkte/Geräte hinzufügen, ohne das Script anpassen zu müssen.

Fertiges Script

Blockly

<xml xmlns="https://developers.google.com/blockly/xml">
  <block type="on_ext" id="RT3@Kxqxg#w3f=(kzwCu" x="-312" y="-837">
    <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
    <field name="CONDITION">lt</field>
    <field name="ACK_CONDITION"></field>
    <value name="OID0">
      <shadow type="field_oid" id="0)0sp$I1ccfm%4Sde-mT">
        <field name="oid">default</field>
      </shadow>
      <block type="selector" id=",lvP%A]1J?Mf^@0s2D%[">
        <field name="TEXT">state[id=*](functions=batterie)</field>
      </block>
    </value>
    <statement name="STATEMENT">
      <block type="controls_if" id="{?]bg`YUOZWT2we!P4vN">
        <value name="IF0">
          <block type="logic_compare" id="Q/LZnTJ4,q6WHgnUK9c_">
            <field name="OP">LTE</field>
            <value name="A">
              <block type="on_source" id="8xEXpe~]awB]?3+!e5%%">
                <field name="ATTR">state.val</field>
              </block>
            </value>
            <value name="B">
              <block type="math_number" id="PX(:OSKOFyY},Ycn6Gj_">
                <field name="NUM">5</field>
              </block>
            </value>
          </block>
        </value>
        <statement name="DO0">
          <block type="pushover" id="J(q:r=SCPr4ncLR8.k1,">
            <field name="INSTANCE">.0</field>
            <field name="SOUND"></field>
            <field name="PRIORITY">0</field>
            <field name="LOG"></field>
            <value name="MESSAGE">
              <shadow type="text" id="`2({%#uwJX+W;O=uM#5S">
                <field name="TEXT">text</field>
              </shadow>
              <block type="text_join" id=",bF5}(ca%5?w,ge=|wOO">
                <mutation items="2"></mutation>
                <value name="ADD0">
                  <block type="on_source" id="mJY,v=(9W+;r;`cC}qLW">
                    <field name="ATTR">common.name</field>
                  </block>
                </value>
                <value name="ADD1">
                  <block type="text" id="/oh7@k~Gi,F]$$U_T]i)">
                    <field name="TEXT"> – Batterie prüfen.</field>
                  </block>
                </value>
              </block>
            </value>
          </block>
        </statement>
      </block>
    </statement>
  </block>
</xml>

JavaScript

on({id: Array.prototype.slice.apply($("state[id=*](functions=batterie)")), change: "lt"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  if ((obj.state ? obj.state.val : "") <= 5) {
    sendTo("pushover.0", "send", {
       message: (String((obj.common ? obj.common.name : "")) + ' – Batterie prüfen.'),
       sound: ""
    });
  }
});
War dieser Beitrag hilfreich?
Hat dir der Beitrag geholfen?
Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.

4 Kommentare

Kommentieren

Hi,

danke für den Denkanstoß!

Bitte beachte – wenn man die Funktion “Batterie” anlegt, muss auch im im Baustein “IDs vom Selektor” die Funktion genauso geschrieben werden. Also auf Großschreibung achten…

[state.id=*](functions=Batterie)

Hallo! Gerne! Bei dem Selektor trägst du die ID (ohne “enum.functions.”) ein, nicht den Namen. Grüße!

Alles klar – die Aufzählung kommt von der Homematic CCU – dort war/ist keine ID hinterlegt.
Deshalb konnte ich nur mit Batterie arbeiten – nicht mit batterie. 🙂

Schreibe einen Kommentar