NEWS
Script fürTabelle der Batterie Zustände
-
Moin
Klasse Script. Vielen Dank für die Arbeit.
Es läuft bei mir mit 11 FritzDect301, diversen Zigbee und 2 Homematic Heizungs-Thermostaten.
Leider zeigt mir der eine Homematic Thermostat in rot 3,3V an. Der andere ist grün bei 3,2V.
Was muss ich tun?
Danke und Gruß
Björn -
das script hat folgendes problem:
es kann 3 verschiedene batterien geben. bis 1.5V, bis 3.3V und bis 4.5(5) V
ich habe aber die info nicht, welches gerät, welche batteriegröße hat
das bedeutet: jede batterie-möglichkeit hat einen bereich, welche immer die untere größe als grenze hat
das scripts prüft die größe und kommt daher in einen bereich
beispiel batterie hat am anfang 4.5V ist also grün für den bereich von 4.5V
unter 3.3V denkt das script, es ist im bereich der 3.3V batterie und wird daruch wieder grün, weil es nicht weiß, dass es eine 4.5V batterie hatich bin davon ausgegagen, dass man beim erscheinen des roten bereichs und der alarmierung die batterie wechselt - dann paßt es wieder - das ist ja auch der sinn des scriptes
ein umschreiben des scriptes werde ich wohl nicht machen. ich müßte dann eine art eigene datenbank erstellen und beim ersten erkennen des gerätes dem gerät einen bereich zuweisen (wenn batterie voll ist)- aber wie erwähnt - ist die batterie einmal rot, sollte man sie eh wechseln
-
@liv-in-sky Moin
Danke, das waren die entscheidenen Tips. Ich hatte im Scipt nach "3.3" gesucht. Du hast aber ">3.2" im Scipt stehen.
Ich habe jetzt Zeile 770 geändert auf "if (val1helper>3.3){" und schon klappt es.
Danke und Gruß
Björn -
ja für dich kannst du das machen, da du nur 4,5 volt hast - wenn du weitere devices mit 3.3 installierst, hast du wieder ein ähnliches problem
hauptsache es läuft
-
@liv-in-sky Ganz klar ist mir das noch nicht: Die Thermostaten haben 2 AA Batterien mit je 1.5V.
Der Datenpunkt sagt bei einem 3.2V und beim anderen 3.3V. Wie kommst du auf 4.5V? -
@bjoern77 weil er über 3.2 sein müsste, um rot anzuzeigen - dann ist er im schwachbereich der 4.5v rechnung (3*1.5)
ist schon alles sehr lange her - hoffe ich erinnere mich richtig
-
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.