Batteriewarnungen per Pushover erhalten

Einstellung für Zigbee-Geräte

Damit du bei Änderungen beim Batteriestatus deiner Zigbee-Geräte (angelernt über deconz/Phoscon) per Pushover informiert wirst, msust du zuerst ein neues Blockly-Script und einen Trigger ertstellen.

Als Trigger wählst du „IDs vom Selektor aus der System-Kategorie. Da du bei Zigbee-Geräten, die über deconz/Phoscon angelernt wurden, auf den State „battery“ triggern musst, kopierst du folgenden Code in den Trigger:

state[id=battery]


Sofern du deine Geräte über das Aqara-Gateway angelernt hast, musst du statt „battery“ auf „percent“ triggern.

Da durch löst jede Statusänderung sämtlicher „battery“-States 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 sinkt, fügst du nun eine „Falls-Mache“-Abfrage ein:

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

Einstellung für Homematic IP-Geräte

Bei Geräten von Homematic IP (ReGaHSS-Adapter) kannst du nicht auf den „battery“-State triggern. Hier ist es etwas komfortabler, da die Geräte den Status „LOW_BAT“ mitbringen. Dieser schaltet auf <true>, sobald die Batterie zu Neige geht.

Auf diesen Status kannst du mit folgenden Code reagieren:

state[id=LOW_BAT]

Fertiges Script

Blockly

<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="on_ext" id="a;NmFkgOsD,zJ@*8MA^8" x="-187" y="38">
    <mutation items="1"></mutation>
    <field name="CONDITION">ne</field>
    <field name="ACK_CONDITION"></field>
    <value name="OID0">
      <shadow type="field_oid" id="J66LP3C|PKRY||S[Mz/y">
        <field name="oid">default</field>
      </shadow>
      <block type="selector" id="2%2TIJU5[!)GkM%u0J_^">
        <field name="TEXT">state[id=LOW_BAT]</field>
      </block>
    </value>
    <statement name="STATEMENT">
      <block type="pushover" id="!8tj?sM69%W.{sMuO|=6">
        <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="0;Fr4I^$W|KdL*xIsOSS">
            <field name="TEXT">text</field>
          </shadow>
          <block type="text_join" id="4xsNwH3K!Lub4}1#xc7Z">
            <mutation items="2"></mutation>
            <value name="ADD0">
              <block type="on_source" id="dJKZqyT_dad)D/O!fl3n">
                <field name="ATTR">channelName</field>
              </block>
            </value>
            <value name="ADD1">
              <block type="text" id="(#!:@xKACmNo+q_SVy!|">
                <field name="TEXT"> — Batterie prüfen</field>
              </block>
            </value>
          </block>
        </value>
      </block>
    </statement>
    <next>
      <block type="on_ext" id="8PfPS_x]?O*Q6gPo8A]a">
        <mutation items="1"></mutation>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="J66LP3C|PKRY||S[Mz/y">
            <field name="oid">default</field>
          </shadow>
          <block type="selector" id="x!6!nM:a}FT?P[2_Qy?`">
            <field name="TEXT">state[id=battery]</field>
          </block>
        </value>
        <statement name="STATEMENT">
          <block type="controls_if" id="~x:riB-kH`-Z[-LFmnDh">
            <value name="IF0">
              <block type="logic_compare" id="KG;wdj*)md646.t:%XcK">
                <field name="OP">LT</field>
                <value name="A">
                  <block type="on_source" id="DPN7HG=i]0tV8mb)(#{%">
                    <field name="ATTR">state.val</field>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="*JFj*46exC@P*V#T5}TW">
                    <field name="NUM">5</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="pushover" id="yPI$zV)}yY*F%!axMF5g">
                <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="0;Fr4I^$W|KdL*xIsOSS">
                    <field name="TEXT">text</field>
                  </shadow>
                  <block type="text_join" id=",@,OM)Bd%|a~aAno*,RX">
                    <mutation items="2"></mutation>
                    <value name="ADD0">
                      <block type="on_source" id="OPce-^?$XqgP#48-teM1">
                        <field name="ATTR">channelName</field>
                      </block>
                    </value>
                    <value name="ADD1">
                      <block type="text" id="08cN9y~rzk!Fp#pw%!YE">
                        <field name="TEXT"> — Batterie prüfen</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </next>
  </block>
</xml>

JavaScript

on({id: Array.prototype.slice.apply($("state[id=LOW_BAT]")), change: "ne"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  sendTo("pushover.0", "send", {
     message: (String(obj.channelName) + ' — Batterie prüfen'),
     sound: ""
  });
});
on({id: Array.prototype.slice.apply($("state[id=battery]")), change: "ne"}, 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.channelName) + ' — Batterie prüfen'),
       sound: ""
    });
  }
});