NEWS
[Frage] Werte von Adapter, Dividiert durch 100
-
So sehen die Jalousie Werte bei mir aus, wenn IoBroker neu gestartet wurde (jeden Samstag um 04:00 Uhr zum Backup aufs NAS). Ich drücke dann nach dem Aufstehen die Taste um alle Jalousien hoch zu fahren und die Werte stimmen dann wieder (Licht war ja eh aus :lol: ). Wie man jetzt zum Bsp. den Akkustand initialisieren könnte, weiß ich auch nicht.
Auf jeden Fall habe ich deshalb den regelmäßigen Neustart von IoBroker abgestellt.
Grüße
Brati
-
Ich habe genau auch das Problem - und verwende daher noch immer ccuio/dashui. Allerdings hätte ioBroker mittlerweile schon etliche Vorteile;-)
Vielleicht hilft ja das ein bisschen weiter:
mir kommt so vor, als ob der homematic-rega adapter den Fehler verursachen würde. Nach dem Start/Restart der Instanz von diesem Adapter, werden anscheinend die Werte direkt aus der ccu (oder woher auch immer, so genau kenn ich mich leider nicht aus) übernommen. In der ccu sind aber diese Werte soviel ich weiß, nicht von 0-100 sondern von 0.0-1.0 gespeichert.
ioBroker bzw. der rega adapter multipliziert diese beim init anscheinend nicht sondern erst wenn diese Werte von der ccu aktualisiert werden (in meinem Fall offenes Rollo nochmals öffnen) dann wird der Wert offenbar in ioBroker auch korrekt gesetzt.
Scheint mE also nur bei der Initialisierung rega adpaters ein kleiner Bug zu sein??
lg,
johoe
-
Guten Morgen,
ich hab mich jetzt mal ein wenig durch den Code der Adapter gewühlt.
Die Ursache liegt im hm-rega-Adapter. Die Funktion getDatapoints ruft beim Start auch die Werte der rpc-Adapter ab und setzt diese mit adapter.setForeignState. Während die set-Funktionen im hm-rpc-Adapter den Wert mal 100 nehmen, wenn UNIT == "100%", fehlt diese Korrektur in dieser Funktion.
Soweit ich gesehen habe ist das Holen der rpc-Datenpunkte etwas trickreich über ein Skript gelöst. Die Objekteigenschaften in ioBroker sind darin nicht enthalten. Die ioBroker-Objekteigenschaften müssten wohl jeweils einzeln ausgelesen werden, um diese Änderung einzubauen. Mir ist nicht klar, ob die Umrechnung von dezimal nach Prozent und umgekehrt nur für die hm-rpc gelten soll oder auch für die rega-Werte.
Möchtest du diese Änderungen lieber selber machen?
1407_bildschirmfoto_2019-02-04_um_22.14.09.png -
Sehr gute Arbeit - dann kann man sich darauf freuen, dass dieser Bug in nächster Zeit behoben werden kann. Endlich kann ich dann ioBroker produktiv einsetzen.
lg,
joho
-
Guten Morgen,
ich hab mich jetzt mal ein wenig durch den Code der Adapter gewühlt.
Die Ursache liegt im hm-rega-Adapter. Die Funktion getDatapoints ruft beim Start auch die Werte der rpc-Adapter ab und setzt diese mit adapter.setForeignState. Während die set-Funktionen im hm-rpc-Adapter den Wert mal 100 nehmen, wenn UNIT == "100%", fehlt diese Korrektur in dieser Funktion.
Soweit ich gesehen habe ist das Holen der rpc-Datenpunkte etwas trickreich über ein Skript gelöst. Die Objekteigenschaften in ioBroker sind darin nicht enthalten. Die ioBroker-Objekteigenschaften müssten wohl jeweils einzeln ausgelesen werden, um diese Änderung einzubauen. Mir ist nicht klar, ob die Umrechnung von dezimal nach Prozent und umgekehrt nur für die hm-rpc gelten soll oder auch für die rega-Werte.
Möchtest du diese Änderungen lieber selber machen? `
Super Untersuchung. Es wird ein bisschen dauern, bis ich zu dem Punkt komme, aber gerade vor 10 Minuten wollte ich um Hilfe per TeamViewer bitten um Fehler irgendwie zu finden. Und jetzt dein Post.!Ich fixe es asap.
-
Habe jetzt eine Lösung gefunden, aber ich habe keine Dimmers.
Kann jemand testen?
cd /opt/iobroker npm install https://github.com/ioBroker/ioBroker.hm-rega/tarball/master iobroker restart hm-rega
-
Hallo Bluefox,
ich hab es gerade eingespielt.
Leider wird bei meinen Rolladenaktoren immer noch 1 statt 100 gesetzt.
Ich habe mal eine zusätzliche Logeingabe eingebaut:
// convert dimmer and blinds adapter.log.info ('unit for id:' + id + ' = ' + units[id]); if (units[id] === '100%') data[dp] = parseFloat(data[dp]) * 100;
Danach wird units nicht richtig gesetzt:
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.1.LEVEL = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.UPDATE_PENDING = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.DEVICE_IN_BOOTLOADER = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.RSSI_PEER = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.RSSI_DEVICE = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.DUTYCYCLE = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.CONFIG_PENDING = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.STICKY_UNREACH = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.UNREACH = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735184.1.INHIBIT = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735184.1.STOP = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735184.1.LEVEL = undefined
-
Hallo Bluefox,
ich hab es gerade eingespielt.
Leider wird bei meinen Rolladenaktoren immer noch 1 statt 100 gesetzt.
Ich habe mal eine zusätzliche Logeingabe eingebaut:
// convert dimmer and blinds adapter.log.info ('unit for id:' + id + ' = ' + units[id]); if (units[id] === '100%') data[dp] = parseFloat(data[dp]) * 100;
Danach wird units nicht richtig gesetzt:
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.1.LEVEL = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.UPDATE_PENDING = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.DEVICE_IN_BOOTLOADER = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.RSSI_PEER = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.RSSI_DEVICE = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.DUTYCYCLE = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.CONFIG_PENDING = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.STICKY_UNREACH = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735669.0.UNREACH = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735184.1.INHIBIT = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735184.1.STOP = undefined
hm-rega.0 2016-02-29 18:57:37 info hm-rega.0 unit for id:hm-rpc.0.MEQ0735184.1.LEVEL = undefined `
Danke. Aber jetzt muss gehen -
Mein Held!
mit der letzten Version klappt es!! Zumindest bei mir mit meinen Rollos.
Super Arbeit, vielen Dank.
joho
-
Habe jetzt veröffentlicht. Kann jeder benutzen
-
Vielen Dank!
Gesendet von meinem GT-N8000 mit Tapatalk
-
Ich habe diesen Fehler leider immer noch und zwar in folgernder Konstellation:
Mein CUxD-Dimmer hat auf der CCU immer Werte zwischen 0-1. Sie werden zwar in der grafischen Oberfläche als 0-100 angezeigt, aber die CCU rechnet intern mit 0-1. Diese werden auch in iobroker so übernommen. Wenn ich diesen Wert über iobroker (z.B. über VIS) ändern möchte muss ich einen Wert zwischen 0-100 eingeben.
-
Ich habe diesen Fehler leider immer noch und zwar in folgernder Konstellation:
Mein CUxD-Dimmer hat auf der CCU immer Werte zwischen 0-1. Sie werden zwar in der grafischen Oberfläche als 0-100 angezeigt, aber die CCU rechnet intern mit 0-1. Diese werden auch in iobroker so übernommen. Wenn ich diesen Wert über iobroker (z.B. über VIS) ändern möchte muss ich einen Wert zwischen 0-100 eingeben. `
Was für ein UNIT hat dein Dimmer? -
Ich habe diesen Fehler leider immer noch und zwar in folgernder Konstellation:
Mein CUxD-Dimmer hat auf der CCU immer Werte zwischen 0-1. Sie werden zwar in der grafischen Oberfläche als 0-100 angezeigt, aber die CCU rechnet intern mit 0-1. Diese werden auch in iobroker so übernommen. Wenn ich diesen Wert über iobroker (z.B. über VIS) ändern möchte muss ich einen Wert zwischen 0-100 eingeben.
Was für ein UNIT hat dein Dimmer?
Oder gibt es da max min Werte? -
UNIT sagt mir leider in dem Zusammenhang nichts. Es handelt es um einen virtuellen CUxD-Dimmer. Min/Max-Werte kann man nirgends eingeben.
Sent from my iPhone using Tapatalk
-
UNIT sagt mir leider in dem Zusammenhang nichts. Es handelt es um einen virtuellen CUxD-Dimmer. Min/Max-Werte kann man nirgends eingeben.
Sent from my iPhone using Tapatalk `
Wie sieht das Objekt vom Dimmer State aus?iobroker get objekt hm-rpc.blabla
-
So sieht das Gerät in der CCU bzw. im HQ Web UI aus:
Und so im iobroker:
-
So sieht das Gerät in der CCU bzw. im HQ Web UI aus:
filename="CCU.JPG" index="1">~~Und so im iobroker:
filename="iobroker.JPG" index="0">~~ `
Die info kann ich aus Screenshot nicht rauslesen.Kannst das Kommando ausführen oder auf dem objekt doppelklicken und dann Screenshot machen?
-
Hier die Details zum LEVEL:
-
Hier die Details zum LEVEL:
filename="Details.JPG" index="0">~~ `
Und native?