NEWS
ZigBee neue Version 1.6.x
-
@arteck said in ZigBee neue Version 1.6.x:
auf GIT liegt täglich eine neue Version .. kannst also von da installieren wenn du auf dem neusten bleiben willst.
ABER kann sein das diese nicht lauffähig ist (eher unwarscheinlich aber ich mach dich drauf aufmerksam)Hi, da wir nun die Adapter-Frage gelöst haben, zurück zum eigentlichen Ausgangspunkt meiner Frage:
Soll ich warten, bis ein Zigbee-Update kommt, das die Converterliste akualisiert?
Soll ich den gesamten Converter per npm aktualisieren?
Oder (eine andere Idee) nur den einen Fingerprint in der moes.js nachtragen? Beim vergeich mit der Datei auf GIT habe ich gesehen, dass nur dieser zusätzlich hinzugegeben wurde und ich könnte mir denken, dass der Rest so generisch aufgebaut ist, dass es reicht. -
Hallo, hat sich in der letzten Zeit etwas an der Berechnung des Batteriestatus bei Aquara Geräten geändert?
Habe gestern diverse Adapter geupdatet, u.a. auch den Zigbee-Adapter von 1.6.16 auf 1.6.18. Danach habe alle Aquara Geräte 100% Batteriestand. Bin mir sicher, dass zwei Temperatursensoren und der Lichtsensor vorher weniger als 100% hatten. Bei den Tradfri Geräten habe ich den Effekt nicht.
Auf Git bei Koenkk/zigbee2mqtt hatte ich vor einiger Zeit folgende Berechnung gefunden:
Implemented the improved calculation:
2850 mV or lower = 0%
3200 mV or higher = 100%
2850-3200 mV = linear calculation
Die scheint aber nicht mehr aktuell zu sein, denn bei mir wird bei einer Spannung von 3025 mV 100% Batterie angegeben. -
@diwoma auch für dich ..das wird alles automatisch aktualisiert wenn du den adapter aktualisiesrt.. nimm den von GIT da ist es immer aktuell
@pk68 hier it die Berechung .. die wir auch so 1 zu 1 übernehmen
-
@arteck
Ich bin erst mit 1.6.18 dazugekommen aber bei 2.975V sollten es dann keine 99% sein:
-
@brainbug ich seh das Gerät nicht, kein Plan, um welches Modell sich da handelt und wie das range ist für die Spannungsauswertung
habe mir die Berchnung nie angeschaut.. da es hierzu eine Grundsatzdiskussion gab.. der eine wollte so der andere so...
wir haben es bei converter belassen.. also wenn da was nicht stimmt.. bitte da ein issue erstellenNachtrag : gestern ist eine korrektur für Xiaomi Geräte reingekommen.. bitte Adapter von GIT installieren
-
Nachtrag : gestern ist eine korrektur für Xiaomi Geräte reingekommen.. bitte Adapter von GIT installieren
Gemacht aber bisher keine wirkliche Änderung.
-
@brainbug hier auch nochmal WIR BERECHNEN NIX..
erstelle bitte ein issue auf der herdsman seite .. bitte dann in englisch.. https://github.com/Koenkk/zigbee-herdsman-converters/ -
@arteck sagte in ZigBee neue Version 1.6.x:
@brainbug hier auch nochmal WIR BERECHNEN NIX..
erstelle bitte ein issue auf der herdsman seite .. bitte dann in englisch.. https://github.com/Koenkk/zigbee-herdsman-converters/Sorry das hab ich FASLCH verstanden!!! Ich dachte der Issue soll zum Adapter. Und nochmals, ICH HABE ES FALSCH VERSTANDEN....
Da ich die Anzeige nicht brauche werde ich dort auch kein Issue erstellen. -
@diwoma sagte in ZigBee neue Version 1.6.x:
@arteck said in ZigBee neue Version 1.6.x:
auf GIT liegt täglich eine neue Version .. kannst also von da installieren wenn du auf dem neusten bleiben willst.
ABER kann sein das diese nicht lauffähig ist (eher unwarscheinlich aber ich mach dich drauf aufmerksam)Hi, da wir nun die Adapter-Frage gelöst haben, zurück zum eigentlichen Ausgangspunkt meiner Frage:
Soll ich warten, bis ein Zigbee-Update kommt, das die Converterliste akualisiert?das ist die einfachste Lösung. Updates am Zigbee Adapter kommen aktuell täglich (courtesy of @arteck) - du musst also nicht lange warten
Soll ich den gesamten Converter per npm aktualisieren?
Nein. Grund hab ich bereits weiter oben im Thead ausgeführt.
Oder (eine andere Idee) nur den einen Fingerprint in der moes.js nachtragen? Beim vergeich mit der Datei auf GIT habe ich gesehen, dass nur dieser zusätzlich hinzugegeben wurde und ich könnte mir denken, dass der Rest so generisch aufgebaut ist, dass es reicht.
Das ist die schnelle Lösung, die so lange funktioniert bis du den Adapter aktualisierst.
A.
-
@brainbug sagte in ZigBee neue Version 1.6.x:
Sorry das hab ich FASLCH verstanden!!! Ich dachte der Issue soll zum Adapter. Und nochmals, ICH HABE ES FALSCH VERSTANDEN....
Da ich die Anzeige nicht brauche werde ich dort auch kein Issue erstellen.Immer ruhig mit den jungen Pferden. Hier ist niemand über die Frage und/oder den Issue ungehalten.
Generell ist es korrekt einen Issue am Adapter zu erstellen wenn der Adapter sich nicht so verhält wie gedacht. In einigen Fällen werden wir das dann selber weiter verfolgen und entsprechende Issues anlegen. In diesem Fall (sehr breit im Forum und mit Issues im Adapter bereits diskutiert) tun wir das nicht.Daher die deutliche Aussage von @arteck was da wie passiert / passieren muss wenn das Verhalten für Dich wichtig ist.
A.
tldr: Alles gut. Keine Aufregung bitte.
-
Immer ruhig mit den jungen Pferden.
So jung ist es nicht mehrtldr: Alles gut. Keine Aufregung bitte.
Aber sicher keine Aufregung.
Wie gesagt ich bin erst seid 1.16.18 mit Zigbee dabei und in der Regel lagen meine Probleme beim Fehler 60 / layer 8. Somit danke für das Engagement um den Adapter auf dem neusten Stand zu halten. -
@arteck sagte in ZigBee neue Version 1.6.x:
@pk68 hier it die Berechung .. die wir auch so 1 zu 1 übernehmen
Danke für den Link. Kann es sein, dass bei manchen Geräte z.B. Ikea Trädfri Fernbedienungen der Batteriestand nicht berechnet wird, sondern vom Gerät selbst gesendet wird. Konnte in dem
zigbee-herdsman-converters Quellcode dazu nichts finden. -
@brainbug sagte in ZigBee neue Version 1.6.x:
@arteck
Ich bin erst mit 1.6.18 dazugekommen aber bei 2.975V sollten es dann keine 99% sein:
Der Screenshot ist wohl von einem Xiaomi/Aquara Türsensor. Bei dem ist es so, das bei Spannungen bis 3V 100% angezeigt wird. Bei einer Batteriespannung von 2,85 bis 3,0V wird dann gerechnet. Die Rechnung geht dann so:
norm = (voltage[mV] - 2850) / (3000 - 2850)
percentage = norm * (1 - log(norm))
Bei 2,975V sollten es 90% Batteriekapazität sein. -
@pk68 sagte in ZigBee neue Version 1.6.x:
Bei dem ist es so, das bei Spannungen bis 3V 100% angezeigt wird. Bei einer Batteriespannung von 2,85 bis 3,0V wird dann gerechnet.
und das weisst du weil ?? hast du die Hersteller vorgabe Werte von dem Gerät ?
Ikea Trädfri Fernbedienungen
welche genau meinst du.. es gibt mehrere davon
-
@pk68
Ich prüfe den Zeitstempel der jeweiligen Geräte alle 3 Stunden was für mich mehr Sinn macht als eine Battery Anzeige. Für mich ist die Anzeige der Battery nur Info und keine Auswertung. -
@arteck sagte in ZigBee neue Version 1.6.x:
und das weisst du weil ?? hast du die Hersteller vorgabe Werte von dem Gerät ?
Weil ich Deinem Link gefolgt bin, von Git den Quellcode heruntergeladen habe und mit meinem Halbwissen in dem Code rumgeschnarcht habe.
Der Türsensor hat die Typbezeichnung MCCGQ11LM. In der devices\xiaomi.js steht zu dem Gerätmeta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
Das heißt die Funktion "batteryVoltageToPercentage" wird mit der Option "3V_2850_3000_log" aufgerufen.
} else if (option === '3V_2850_3000_log') { percentage = toPercentage(voltage, 2850, 3000, true);
Und die Funktion "toPercentage" sieht so aus:
function toPercentage(value, min, max, log=false) { if (value > max) { value = max; } else if (value < min) { value = min; } const normalised = (value - min) / (max - min); let percentage; if (log == true) { percentage = normalised === 0 ? 0 : normalised * (1 - Math.log( normalised )); } else { percentage = normalised; } return Math.round(percentage * 100); }
-
@arteck sagte in ZigBee neue Version 1.6.x:
Ikea Trädfri Fernbedienungen
welche genau meinst du.. es gibt mehrere davon
Ich meine diese hier.
-
@pk68 kannst ja alles schöb durchrechnen lassen
direkt in der ersten zeile ist die funktion mit den werten die aufgerufen werden ...
also 2975 dein wert mit den daten die du gefunden hast also 3V_2850_3000_log
als ergebniss siehst du im LOG 99 %20:47:09.324 info javascript.1 (1576) script.js.common.Skript1: ---------------------> batterie test 99%
den script kannst du unter javascript einfügen und selber testen..
const per = batteryVoltageToPercentage(2975,'3V_2850_3000_log'); // hier wird die funktion aufgerufen console.log('---------------------> batterie test ' + per); function batteryVoltageToPercentage(voltage, option) { let percentage = null; if (option === '3V_2100') { if (voltage < 2100) { percentage = 0; } else if (voltage < 2440) { percentage = 6 - ((2440 - voltage) * 6) / 340; } else if (voltage < 2740) { percentage = 18 - ((2740 - voltage) * 12) / 300; } else if (voltage < 2900) { percentage = 42 - ((2900 - voltage) * 24) / 160; } else if (voltage < 3000) { percentage = 100 - ((3000 - voltage) * 58) / 100; } else if (voltage >= 3000) { percentage = 100; } percentage = Math.round(percentage); } else if (option === '3V_2500') { percentage = toPercentage(voltage, 2500, 3000); } else if (option === '3V_2500_3200') { percentage = toPercentage(voltage, 2500, 3200); } else if (option === '3V_1500_2800') { percentage = 235 - 370000 / (voltage + 1); if (percentage > 100) { percentage = 100; } else if (percentage < 0) { percentage = 0; } percentage = Math.round(percentage); } else if (option === '3V_2850_3200') { percentage = toPercentage(voltage, 2850, 3200); } else if (option === '3V_2850_3000_log') { percentage = toPercentage(voltage, 2850, 3000, true); } else if (option === '4LR6AA1_5v') { percentage = toPercentage(voltage, 3000, 4200); } return percentage; } function toPercentage(value, min, max, log=false) { if (value > max) { value = max; } else if (value < min) { value = min; } const normalised = (value - min) / (max - min); let percentage; if (log == true) { percentage = normalised === 0 ? 0 : normalised * (1 - Math.log( normalised )); } else { percentage = normalised; } return Math.round(percentage * 100); }
-
Ich habe es heute Mittag auf Arbeit mit Excel ausgerechnet. Habe angenommen Math.log ist der Logarithmus zur Basis 10. Pech gehabt.
Kannst Du noch die Frage zu der Tradfri Fernbedienung beantworten (sendet Batteriestatus ja/nein)?
-
@pk68 das ist die interessante zeile
percentage = normalised === 0 ? 0 : normalised * (1 - Math.log( normalised ));
laut Beschreibung ja.. aber wie oft kann ich dir nicht sagen