Hier aber scheint die Besonderheit zu sein, dass ein Offset sowohl positive wie auch negative Werte haben kann - und das bekomme ich einfach nicht gebacken.
Was will ich?
Ich brauche einen Konfigurationswert, der die Werte -1.0 ... +1.0 annehmen kann und für den ich die Auflösung 0,1 festlege.
Somit werden auf dem Speicherplatz die Werte -10 ... +10 abgespeichert, Typ int8_t.
In der AddOn-xml habe ich folgenden Eintrag ergänzt:
Code: Alles auswählen
<parameter id="Temperaturoffset">
<logical type="float" min="-1.0" max="1.0" default="0.0" unit="°C" />
<physical type="integer" signed="true" interface="config" list="0" index="36" size="1" />
<conversion type="float_integer_scale" factor="10" />
</parameter>
- Wenn ich in der WebUI für diesen Parameter die Werte -0.9 ... 0.9 eingebe, wird die geänderte Konfiguration gar nicht erst übertragen, es wird sofort OK gemeldet. Wahrscheinlich deshalb, weil bei dieser Angabe intern weiter 0 gewertet wird. Das ist keine Änderung, also überträgt er gar nicht erst.
- Wenn ich 1.0 als Wert eingebe, wird dieser korrekt übertragen und anschließend auch so in der WebUI angezeigt. Im Gerät wurde der Wert ebenfalls korrekt auf 10 gesetzt.
- Wenn ich -1.0 eingebe, findet wiederum eine Übertragung statt und im Gerät steht korrekt -10 drin, aber in der WebUI wird +1.0 angezeigt
- Wenn ich den Wert im Gerät auf -2 setze (Offset = -0.2), dann wird in der WebUI "1.0" angezeigt! Möglicherweise wird der Wert ja als positiver Wert interpretiert und 0xFE ist dann halt >1 und es erfolgt die limitierte Anzeige 1.0
Mir ist unklar:
- warum negative Werte wie positive Werte angezeigt werden
- warum Eingaben < 1, egal ob positiv oder negativ, immer als 0 gewertet werden
Es muß an der xml-Anweisung liegen, weil je bestimmte Wert wie 1 oder -1 korrekt übertragen werden.