Blockly Script - Batterie Warnung
-
-
die prozent gehören nicht zu dem string oder zu der number (je nach datentyp), das ist nur die unit (einheit).
wenn du mal die suche hier ausprobieren würdest, könnte es sein, dass das eine oder andere zu dem thema erscheint
-
achja und nein, so wird dein script nicht funktionieren
-
Danke. Das hilft mir jetzt auch nicht weiter.
-
schon die videos angeschaut? da ist so gut wie alles erklärt.
-
Ich möchte nicht den Wert lowbat=0 oder 1 verwenden, sondern den Wert in %.
-
Hi, du muss noch nen Trigger verwenden. Falls Objekt ID wurde geändert. Bei Objekt ID wählst du auch Battery aus, und packst dein "falls mache" in den Trigger
Und anstatt für die 5 ein Textfeld zu verwenden, würde ich von Mathematik das Zahlenfeld nehmen.
-
Ich würde das ganze eher über Aufzählung -> Funktionen lösen und die ganzen Batteriebetriebenen Geräte einer enum.function zuordnen.
Das dann mithilfe eines Javascripts abfragen.
Sonst musst du für jedes neue Batteriebetriebene Gerät ein Blockly anlegen.
Da wirst du ja Wahnsinnig
-
Okay, das wäre ein Ansatz.
Aber wie setze ich das um? Von Javascript habe ich 0,0 Ahnung.
-
Das ist mein Ansatz der Batterieüberwachung.
Was haltet Ihr davon?
Code
Alles anzeigen<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="AXK5WTEmX(s)qok_A%oh" x="-437" y="-737"> <mutation items="3"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="r/)!8P`{c(mJKoU)0~}+"> <field name="oid">zigbee.0.00158d0002b9395f.battery</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="K.G%YUJH41QZXuDY]rM1"> <field name="oid">zigbee.0.00158d0002bfe736.battery</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="8gTrY4}9QM^YEH/U5.sH"> <field name="oid">zigbee.0.00158d0002c5bfab.battery</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="Bw)3?rHDD#_lPw/31S,q"> <field name="COMMENT">Fensterkontakte</field> <next> <block type="controls_if" id="(d_XJS#|nZJa`|5cWKN."> <value name="IF0"> <block type="logic_operation" id="x#8,fvo.Ckb`mSOUITj|"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="YF-z5ACqXD!;]1Z46-b#"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="`6KJe5JY~43?JG!Nw/;#"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002c5bfab.battery</field> </block> </value> <value name="B"> <block type="text" id="vQP/+MLdg8+}J=1znPE9"> <field name="TEXT">99</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="vg_/ej#bTCa8w^gKdm5l"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="CE2.PmF6`y1U-QxX=ctw"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002bfe736.battery</field> </block> </value> <value name="B"> <block type="text" id="UHCB0{-?GrPegQjlaB(O"> <field name="TEXT">99</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="pushover" id="%L_2`fw20g?kliJm(@,;"> <field name="INSTANCE"></field> <field name="SOUND"></field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="@p91GtmEfi+U`R1[{s%H"> <field name="TEXT">Bitte Batterie wechseln</field> </shadow> </value> <value name="TITLE"> <block type="text" id="bjGi6bK!+RQ8;n7ye8yO"> <field name="TEXT">Fensterkontakt leer</field> </block> </value> </block> </statement> <next> <block type="comment" id="{p6LnI{#(QF1N!nsN.}2"> <field name="COMMENT">Bewegungsmelder</field> <next> <block type="controls_if" id="6IZmur7%3+{Wp/g.N}Y="> <value name="IF0"> <block type="logic_compare" id="Y/QumCTsnLo`z=coME?x"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="TSYS;TiF_4FXx(^*AMhs"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002b9395f.battery</field> </block> </value> <value name="B"> <block type="text" id="oEk7[2kOI#3I_5^t-{hk"> <field name="TEXT">99</field> </block> </value> </block> </value> <statement name="DO0"> <block type="pushover" id="Lt3U=/q@e9Mq]v|_`weR"> <field name="INSTANCE"></field> <field name="SOUND"></field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="{X#|[McT5@aOFu[JEnhK"> <field name="TEXT">Bitte Batterie wechseln</field> </shadow> </value> <value name="TITLE"> <block type="text" id="g@!BMZub!@[83BcW*68B"> <field name="TEXT">Bewegungsmelder leer</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
überarbeitete Version. Ist einfacher denke ich.
Code
Alles anzeigen<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="AXK5WTEmX(s)qok_A%oh" x="-437" y="-737"> <mutation items="3"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="r/)!8P`{c(mJKoU)0~}+"> <field name="oid">zigbee.0.00158d0002b9395f.battery</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="K.G%YUJH41QZXuDY]rM1"> <field name="oid">zigbee.0.00158d0002bfe736.battery</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="8gTrY4}9QM^YEH/U5.sH"> <field name="oid">zigbee.0.00158d0002c5bfab.battery</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="Bw)3?rHDD#_lPw/31S,q"> <field name="COMMENT">Fensterkontakte</field> <next> <block type="controls_if" id="(d_XJS#|nZJa`|5cWKN."> <value name="IF0"> <block type="logic_operation" id="x#8,fvo.Ckb`mSOUITj|"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="YF-z5ACqXD!;]1Z46-b#"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="`6KJe5JY~43?JG!Nw/;#"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002c5bfab.battery</field> </block> </value> <value name="B"> <block type="text" id="vQP/+MLdg8+}J=1znPE9"> <field name="TEXT">15</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="vg_/ej#bTCa8w^gKdm5l"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="CE2.PmF6`y1U-QxX=ctw"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002bfe736.battery</field> </block> </value> <value name="B"> <block type="text" id="UHCB0{-?GrPegQjlaB(O"> <field name="TEXT">15</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="pushover" id="%L_2`fw20g?kliJm(@,;"> <field name="INSTANCE"></field> <field name="SOUND"></field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="@p91GtmEfi+U`R1[{s%H"> <field name="TEXT">Bitte Batterie wechseln</field> </shadow> </value> <value name="TITLE"> <block type="text" id="bjGi6bK!+RQ8;n7ye8yO"> <field name="TEXT">Fensterkontakt leer</field> </block> </value> </block> </statement> <next> <block type="comment" id="{p6LnI{#(QF1N!nsN.}2"> <field name="COMMENT">Bewegungsmelder</field> <next> <block type="controls_if" id="6IZmur7%3+{Wp/g.N}Y="> <value name="IF0"> <block type="logic_compare" id="Y/QumCTsnLo`z=coME?x"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="TSYS;TiF_4FXx(^*AMhs"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002b9395f.battery</field> </block> </value> <value name="B"> <block type="text" id="oEk7[2kOI#3I_5^t-{hk"> <field name="TEXT">15</field> </block> </value> </block> </value> <statement name="DO0"> <block type="pushover" id="Lt3U=/q@e9Mq]v|_`weR"> <field name="INSTANCE"></field> <field name="SOUND"></field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="{X#|[McT5@aOFu[JEnhK"> <field name="TEXT">Bitte Batterie wechseln</field> </shadow> </value> <value name="TITLE"> <block type="text" id="g@!BMZub!@[83BcW*68B"> <field name="TEXT">Bewegungsmelder leer</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
Und da dann einfach jedes Gerät eintragen?
-
Und da dann einfach jedes Gerät eintragen?
ja dachte ich mir so. Gehts einfacher oder besser?
-
Geht einfacher.
Ich hab es mit einem Javascript gemacht, welches Automatisch meine ganzen Xiaomi sensoren überprüft und bei weniger als 10% Restbatterie eine Meldung rausschickt.
-
MagicSven: Würdest du das Script hier zur Verfügung stellen? Genau so etwas suche ich noch.
Und kann man auch andere Teile (außer Xiaomi) mit einbinden?
-
Habe meine DECT Heizkörperthermostate und die Xiaomi da mit drin
Code
Alles anzeigencreateState('Batteriescript.Anzahl_Geräte', 0, {type: 'number'}); createState('Batteriescript.Batterie_schwach', 0, {type: 'number'}); createState('Batteriescript.Gerät', " ", {type: 'string'}); const fritzdect = $('fritzdect.0*.battery'); const zigbee = $('zigbee.0*.battery'); const loggen = true; var arrLOWBAT; function lowbat(id) { var obj = getObject(id); arrLOWBAT.push(obj.common.name); if(loggen) log("Gerät: " + obj.common.name); } function countLowbat() { var moeglicheLOWBAT = 0; arrLOWBAT = []; fritzdect.each(function (id, i) { if(getState(id).val < 10) lowbat(id); ++moeglicheLOWBAT; }); zigbee.each(function (id, i) { if(getState(id).val < 10) lowbat(id); ++moeglicheLOWBAT; }); if(loggen) log("Text: " + arrLOWBAT.join(', ')); if(loggen) log("Anzahl Geräte: " + moeglicheLOWBAT + " // davon mit schwacher Batterie: " + arrLOWBAT.length); setState("Batteriescript.Gerät", arrLOWBAT.join(',<br>')); setState("Batteriescript.Batterie_schwach", arrLOWBAT.length); setState("Batteriescript.Anzahl_Geräte", moeglicheLOWBAT); } countLowbat(); schedule("*/60 * * * *", countLowbat);
-
Danke.
Die DECT-Thermostate findet er bei mir.
Die Xiamoi Teile die über den mihome-Adapter laufen leider nicht.
Wie kriege ich die da rein? Bin leider absolut keine Java-checker.
Und kann er irgendwie ausgeben bei welchem Gerät die Batterie schwach ist? Ich sehe jetzt, dass 1 von 8 schwach ist. Muss ich da selbst suchen oder kann er mir das ausgeben?
-
Ändere in meinem Javascript folgendes ab:
zigbee.0*.battery --> mihome.0.*.battery
Schau mal im Datenpunkt "Battery_schwach" - da sollte er dir Namentlich das Gerät mit
schwacher Batterie anzeigen
-
-
Ja dann heißt das Gerät / der Datenpunkt bei dir Battery - musst du umbenennen in jedem deiner DECT Geräte.
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!