NEWS
Script fürTabelle der Batterie Zustände
-
Ich habe mir extra für vershiedene Batterien Alias angelegt...die zeigen mir jeweils - abhängig von der Batterie - an ob voll/leer...
-
@liv-in-sky Ahh, ok. Dann rutsche ich mit dem einen Thermostat auf Grund von einem kleinen Messfehler oder etwas zu hoher Anfangsbatteriespannung in den 4.5V Bereich. Nun habe auch ich es verstanden. Danke und Gruß
Björn -
@kueppert Moin
Hast du da ein Beispiel? Ich kann mir das schwer vorstellen.
Danke und Gruß
Björn -
@bjoern77 Klar, hab ich (anbei). Ich nutze dann noch das Blockly von DSLraser https://forum.iobroker.net/post/273896 (vorher hatte ich auch das hier in Nutzung). Sieht dann in iQontrol zzB so aus:
zB für ZigBee das ALias-Skript (hab dort auch noch Links zu Beiträgen verlinkt):
///https://forum.iobroker.net/topic/27295/vorlage-alias-per-skript-erzeugen ///VAR-Konvertierung: https://forum.iobroker.net/topic/33747/alias-best-practices-wie-kann-man-es-besser-machen/39 // Original-Datenpunkt const idOrigin = 'zigbee.0.00158d00034XYZXY.battery'/*EG WHZ Fenster L Battery percent*/; // Alias-Datenpunkt const idAlias = 'Batterie.Wohnzimmer_Fenster_links'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'Wohnzimmer Fenster links'; // desc = 'per Script erstellt'; typeAlias = 'boolean'; // 'boolean' oder 'number' oder 'switch' oder 'state' read = "val < 15"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? 'Ein' : 'Aus'"; role = 'indicator.lowbat'; // 'switch.light' oder 'value.temperature' oder 'window.value' oder 'indicator.lowbat' // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '°C'; // nur für Zahlen, z.B. '%' oder '°C' oder ' ' wenn keine Unit! states = {true: 'leer', false: 'voll'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) custom = []; // verhindert doppelte Ausführung von history, telegram, mqtt-client, ... function createAlias(idSrc, idDst) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; if(obj.common.icon) delete obj.common.icon; obj.native = {}; setObject(idDst, obj); } } createAlias(idOrigin, 'alias.0.' + idAlias);
-
@kueppert Klasse. Danke!
Gruß
Björn -
@liv-in-sky Kann es sein , daß im Script in Zeile 932 und 1057 für json3 anstatt symbolOK symbolKO eingetragen wurde ?
if (val1help) {val2="<font color=\"red\">"+symbolKO;json3=symbolKO} else{val2=symbolOK;json3=symbolKO}
-
da hst du wohl recht - anscheinend hat niemand mit diesem device ein material design in benutzung.
danke habe es im script im ersten post ausgebessert - du kannst das ja in deinem script machen - kein download bei dir nötig
-
@liv-in-sky Habe ich schon bei mir geändert, hab mich nur gewundert daß alle meine alten RPC Devices rot markiert waren. Ich tret aber immer in sowas rein
-
@gargano solange du immer eine lösung findest, ist das ja nicht wild
-
@liv-in-sky erstmal viele Dank für deine Arbeit.
Ich habe mir das Skript per Chrome kopiert.
Dabei ist direkt aufgefallen, dass alle Umlaute falsch dargestellt werden,
So sieht dann entsprechend auch im ersten Versuch mit der Tabelle aus:
-
@kuddel Chrome zerhakkt bei copy-paste den Inhalt
-
@kueppert danke für die schnelle Antwort.
Wie muss ich die TXT Datei dann öffnen / downloaden ?
-
@kuddel runterladen die Datei (Rechtsklick => download) und dann mit Notepad++ öffnen (Windows)
-
@kueppert super, hat geklappt.
-
notepad++ ist ein sehr guter tipp - leider ist- für ein direktes copy - nicht genug platz im post
es sind auch nicht die umlaute sondern die emojis, die defekt sind.
-
@kuddel ok - schon gelöst
-
Moin, erstmal Danke für deine Arbeit, hat mir ne menge Zeit gespart.
Ich hätte allerdings noch ein Hersteller/Gerät was noch nicht unterstützt ist und zwar Shelly. Die Batteriegeräte melden nämlich auch ihren Batteriestand.
Hoffe du kannst da was machen
-
@marco-laser teste mal das und bitte ein feedback - ist noch nicht im ersten post - erst nach postiven feedback
du musst shelly auf true setzen
-
@liv-in-sky Klappt, besten Dank für die super schnelle Antwort
-
Hallo zusammen
Ich habe mal das Skript kopiert und die entsprechenden Datenpunkte angelegt.
Leider erhalte ich Fehlermeldungen:javascript.1 2021-02-14 08:21:39.079 error (27755) at processTicksAndRejections (internal/process/task_queues.js:97:5) javascript.1 2021-02-14 08:21:39.079 error (27755) at runMicrotasks (<anonymous>) javascript.1 2021-02-14 08:21:39.079 error (27755) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49 javascript.1 2021-02-14 08:21:39.079 error (27755) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.1 2021-02-14 08:21:39.079 error (27755) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17 javascript.1 2021-02-14 08:21:39.079 error (27755) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17 javascript.1 2021-02-14 08:21:39.079 error (27755) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17 javascript.1 2021-02-14 08:21:39.079 error (27755) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37) javascript.1 2021-02-14 08:21:39.079 error (27755) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28) javascript.1 2021-02-14 08:21:39.079 error (27755) at Object.createScript (vm.js:261:10) javascript.1 2021-02-14 08:21:39.078 error (27755) at new Script (vm.js:88:7) javascript.1 2021-02-14 08:21:39.078 error (27755) SyntaxError: Missing initializer in const declaration javascript.1 2021-02-14 08:21:39.078 error (27755) ^^^^^^^^^^^^^^ javascript.1 2021-02-14 08:21:39.078 error (27755) const UeberSchriftHöhe="35"; //Überschrift bekommt mehr Raum - darunter und darüber - Zellenhöhe javascript.1 2021-02-14 08:21:39.078 error (27755) script.js.common.Batterien_Zustand compile failed: at script.js.common.Batterien_Zustand:80
Hat mir bitte jemand einen Tipp was ich falsch mache.