NEWS
[Frage] Werte von Adapter, Dividiert durch 100
-
MOD-Edit by eric2905; 15.05.2017 / 19:25; Betreff geändert
Hallo zusammen,
seit einigen Updates werden mir die Werte einiger Adapter in ioBroker dividiert durch 100 angezeigt.
Die Werte der CCU2 entsprechen den reellen werten.
Das System wurde auch schon neu aufgesetzt, jedoch ohne Besserung.
Beispiel Akkustand der Winmatic:
__Wert ioBroker = 0.98%
Wert CCU2 = 98%__
Beispiel Dimmer:
__Wert ioBroker = 1%
Wert CCU2 = 100%__
-
Es scheint so als ob ioBroker erst die richtigen Werte einliest wenn der Aktor durch ein Programm angesprochen worden ist.
Beispiel:
Akkustand beim einlesen beim neustart von / in ioBroker = 0.91% (CCU2=91.5%)
Dann wird das Fenster geöffnet und ioBroker bekommt den echten Wert ausgelesen = 91.5%
Einige zeit später, steht in ioBroker wieder 0.91%
Es ist ein hin und -her mit den Werten
Keiner eine Idee?
-
Hallo zusammen,
ich kämpfe aktuell bei meinen Dimmer, die ich gerne in VIS steuern würde, mit dem gleichen Problem.
Der Homematic-Zustand wird von 0.00-1.00 ausgelesen. Wenn ich den Wert in iobroker setzen möchte muss ich ihn von 0-100 eingeben. Das macht die Steuerung über VIS unmöglich.
-
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: