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.

5 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. 🙂

Danke tolle Anleitung,
ich bin Anfänger und die Geschichte mit den Aufzählungen/Funktionen hat mir sehr geholfen.
Da ich die Funktion des Pushover Adapter nicht kenne hab ich einfach hierfür den Telegramm Adapter eingesetzt.
Hat super funktioniert (jedoch musste ich als Variable nicht Name sondern Kanalname nehmen(Name hatte zum Ergebnis geführt dass er percent ausgab nicht den Namen des Sensors).
Dein Script benutzt den „Falls Objekt Block“ dieser gibt nur dann einen Wert weiter wenn eine Änderung des abgefragten wertes entstanden ist.
Was müsste ich in deinem Script umbauen damit der einzigste unterschied hierzu wäre dass er immer wen der Batterie Stand < 5% ist dies gemeldet wird.
Noch was, benötigt man das Java Script zusätzlich?, oder ist es das gleiche wie das Blockly?, wie gesagt bin Anfänger:)

Schreibe einen Kommentar