Probleme mit Dezimalstelle

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Probleme mit Dezimalstelle

Beitrag von curius »

Hallo!

Nach einem Update von openHAB auf die aktuelle Version habe ich nun ein sehr, sehr seltsames Problem.
Ich habe Ikea Tradfri Lampen, welche ich mittels CC2531 Stick und ZigBee2MQTT betreibe.
Bis jetzt hat eigentlich alles immer einwandfrei funktioniert... auch das Ändern der Farbtemperatur.

Ich ändere die Farbtemperatur immer nur in drei vorgegeben Schritten 0=kalt / 50=mittel / 100=warm.
Plötzlich funktioniert meine Anzeige im HabPanel und in der Sitemap nicht mehr korrekt, weil ich anstatt der Werte "0 / 50 / 100" immer eine Dezimalstelle mitgeliefert bekomme. In meiner Selection steht jetzt anstatt "warm / mittel / kalt" dann immer "0.0 / 50.0 / 100.0".
Woher kommt auf einmal diese Dezimalstelle.

Mein log-File sieht wie folgt aus:

Code: Alles auswählen

2020-03-23 18:48:36.146 [ome.event.ItemCommandEvent] - Item 'color_temp_kij' received command 50
2020-03-23 18:48:36.164 [nt.ItemStatePredictedEvent] - color_temp_kij predicted to become 50
2020-03-23 18:48:36.185 [vent.ItemStateChangedEvent] - color_temp_kij changed from 0.0 to 50
2020-03-23 18:48:39.919 [ome.event.ItemCommandEvent] - Item 'color_temp_kij' received command 100
2020-03-23 18:48:39.941 [nt.ItemStatePredictedEvent] - color_temp_kij predicted to become 100
2020-03-23 18:48:39.964 [vent.ItemStateChangedEvent] - color_temp_kij changed from 50.0 to 100
Man sieht darin eindeutig, dass ich als Befehl die 50 schicke, dann ändert das System von 0.0 auf 50.
Ändere ich dann die Temperatur von 50 auf 100, dann ändert das System von 50.0 auf 100.

Ich hab echt keinen Plan mehr, woher auf einmal die Dezimalstelle kommt.

Meine Files dazu sehen wie folgt aus:

Things:

Code: Alles auswählen

Thing topic lpanel_kij "Lichtpanel Kinderzimmer Jonathan" {
    Channels:
        Type dimmer : color_temp_kij "Farbtemperatur" [ stateTopic="zigbee2mqtt/lpanel_kij", commandTopic="zigbee2mqtt/lpanel_kij/set", transformationPatternOut="JS:color_temp_set.js", transformationPattern="JS:color_temp_get.js" ]
    }
Items:

Code: Alles auswählen

Dimmer color_temp_kij "Farbtemperatur" {channel="mqtt:topic:curius:lpanel_kij:color_temp_kij"}

Die Umrechnung erfolgt mittels Transformation (.js):

color_temp_get:

Code: Alles auswählen

(function(x){

    var result;

    var json = JSON.parse(x);  
    result = (json.color_temp - 255) * 100 / 195;

    return result;

})(input)

color_temp_set:

Code: Alles auswählen

(function(x){

    var color_temp = (x * 195 / 100) + 255;

    var result = new Object();
    result.color_temp = color_temp;
    result.transition = 1;

    return JSON.stringify(result);

})(input)

Damit aber noch nicht alles :-)
Hab dann gestern Abend die Selection Widgets im Habpanel bzw. das Mapping in der Sitemap angepasst => eben auf "0.0 / 50.0 / 100.0"
... das hat dann genau bis heute Vormittag funktioniert, jetzt sehe ich nach der Umstellung wieder nur die Zahl OHNE Dezimalstelle.

Ich verstehe die Welt nicht mehr...
.) restart openhab2.service
.) cli-clean
.) Neuinstallation mit restore meines CLI Backups
...alles versucht - immer wieder der gleiche Fehler!

Einzig und alleine ein "altes" Image funktioniert noch...

Das Log-File sieht dort wie folgt aus:

Code: Alles auswählen

2020-03-24 08:07:31.011 [ome.event.ItemCommandEvent] - Item 'color_temp_kij' received command 50
2020-03-24 08:07:31.014 [nt.ItemStatePredictedEvent] - color_temp_kij predicted to become 50
2020-03-24 08:07:31.071 [vent.ItemStateChangedEvent] - color_temp_kij changed from 0 to 50
2020-03-24 08:07:33.230 [ome.event.ItemCommandEvent] - Item 'color_temp_kij' received command 100
2020-03-24 08:07:33.234 [nt.ItemStatePredictedEvent] - color_temp_kij predicted to become 100
2020-03-24 08:07:33.268 [vent.ItemStateChangedEvent] - color_temp_kij changed from 50 to 100
2020-03-24 08:07:35.555 [ome.event.ItemCommandEvent] - Item 'color_temp_kij' received command 0
2020-03-24 08:07:35.558 [nt.ItemStatePredictedEvent] - color_temp_kij predicted to become 0
2020-03-24 08:07:35.588 [vent.ItemStateChangedEvent] - color_temp_kij changed from 100 to 0
...alles ganz normal ohne Dezimalstellen - mit den gleichen Konfigurationsdateien...

Kann mir vielleicht irgendjemand von euch weiterhelfen bzw. weiß jemand von euch woher die Dezimalstelle auf einmal herkommt?
Kann man irgendwo einstellen, wie openHAB diese Befehle interpretiert bzw. wieviel Dezimalstellen angezeigt werden?

Besten Dank schon mal...

Grüße
Christian

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: Probleme mit Dezimalstelle

Beitrag von curius »

Hallo!

Ich denke, dass sich das Problem jetzt erledigt hat.
Es ist scheinbar richtig dass seit dem Update von openHAB die Befehle standardmäßig mit einer Dezimalstelle übertragen werden.
Auch bei Dimmer-Items werden Befehle zwischen 0.0 und 100.0 übertragen.

Ich habe jetzt noch mal alles neu installiert und die HABPanel Widgets und Sitemap-Mappings dementsprechend angepasst.
Dann noch mal den Cache geleert UND die Persistence Daten für die Farbtemperatur gelöscht.

Derzeit läuft alles wieder fehlerfrei...
Meine Vermutung ist, dass eventuell nach einem Neustart des Systems "alte" Werte aus den Persistence Daten aus rrd4j angezeigt wurden.

Die Logs sehen jetzt auch wieder plausibel aus:

Code: Alles auswählen

2020-03-24 18:05:25.494 [ome.event.ItemCommandEvent] - Item 'color_temp_ku' received command 0.0
2020-03-24 18:05:25.521 [nt.ItemStatePredictedEvent] - color_temp_ku predicted to become 0.0
2020-03-24 18:05:25.540 [vent.ItemStateChangedEvent] - color_temp_ku changed from 50.0 to 0.0
2020-03-24 18:05:29.394 [ome.event.ItemCommandEvent] - Item 'color_temp_ku' received command 50.0
2020-03-24 18:05:29.403 [nt.ItemStatePredictedEvent] - color_temp_ku predicted to become 50.0
2020-03-24 18:05:29.415 [vent.ItemStateChangedEvent] - color_temp_ku changed from 0.0 to 50.0
2020-03-24 18:05:32.273 [ome.event.ItemCommandEvent] - Item 'color_temp_ku' received command 100.0
2020-03-24 18:05:32.284 [nt.ItemStatePredictedEvent] - color_temp_ku predicted to become 100.0
2020-03-24 18:05:32.307 [vent.ItemStateChangedEvent] - color_temp_ku changed from 50.0 to 100.0
2020-03-24 18:05:35.016 [ome.event.ItemCommandEvent] - Item 'color_temp_ku' received command 50.0
2020-03-24 18:05:35.025 [nt.ItemStatePredictedEvent] - color_temp_ku predicted to become 50.0
2020-03-24 18:05:35.056 [vent.ItemStateChangedEvent] - color_temp_ku changed from 100.0 to 50.0
Vielen Dank!

Beste Grüße
Christian

bastler
Beiträge: 121
Registriert: 7. Jan 2020 19:36
Answers: 2

Re: Probleme mit Dezimalstelle

Beitrag von bastler »

hi christian,
ich hab so ein problem auch wenn ich das system neu starte. ich arbeite mit influxdb und da ist es auch so, dass z.b. meine rollladen wenn sie vor neustart geschlossen waren den wert 100 haben. nach dem neustart hab ich durch persistence aber dann 100.0 im item stehen.

mir macht das auch probleme zb weil er dann in der map die zahl nicht zuordnen kann. ich hab mir damit geholfen eine rule zu schreiben, die erst startet wenn das system sicher hochgefahren ist:

Code: Alles auswählen

var systemStarted = new Boolean(false)
 
 rule "Systemstart-initialisierung"
    when
        System started
    then
        if (systemStarted) return;
        systemStarted = true

        createTimer(now.plusMinutes(15), [|

            if (iRollo_WC.state == NULL) iRollo_WC.postUpdate(0)
            else iRollo_WC.postUpdate((iRollo_WC.state as Number).intValue)
            
    end
diese regel wird nur einmalig, 15 minuten nach systemstart ausgeführt. wenn das item (zb weil es neu angelegt wurde) noch keinen wert hat schreibe ich die "0" rein - also in dem fall wird der rollladen als "offen" angenommen.
ansonsten lese ich den wert aus dem item aus und wandle ihn in ein integer, daruch wird das ".0" abgeschnitten. - ich hoffe ist so richtig aber es funktioniert bei mir zumindest :)

grüße stefan

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: Probleme mit Dezimalstelle

Beitrag von curius »

Hallo bastler!

Besten Dank für die Info und den Tipp mit der Rule beim Systemstart...
Bis jetzt funktioniert bei mir noch alles einwandfrei.
Vermutlich lag es wirklich am Persistence-Service.

Vielen Dank!

Grüße
Christian

Antworten