Warning: Unknown attribute for "physical": signed (neue Infos! / Beitrag bearbeitet)

Hallo,
ich möchte das AskSin Gerät “HB-UNI-Sensor1-THPD-BME280” einbinden (ein Raumthermostat mit Anzeige von Temperatur und Luftfeuchtigkeit).

Github: HomeAutomation/AsksinPP_developments/sketches/HB-UNI-Sensor1-THPD-BME280 at master · FUEL4EP/HomeAutomation · GitHub
Addon XML: HomeAutomation/hb-uni-sensor-THPD-BME280.xml at master · FUEL4EP/HomeAutomation · GitHub

Nun bekam ich beim Konvertieren der xml eine Warnung:

pi@smarthome:~ $ sudo homegear -o hb-uni-sensor-THPD-BME280.xml rf-hb-uni-sensor-THPD-BME280.xml
04/05/21 16:25:04.923 Warning: Unknown attribute for "physical": signed
04/05/21 16:25:04.924 Warning: Unknown attribute for "physical": signed
04/05/21 16:25:04.924 Warning: Unknown attribute for "physical": signed
04/05/21 16:25:04.925 Warning: Unknown attribute for "physical": signed
04/05/21 16:25:04.925 Warning: Unknown attribute for "physical": signed
04/05/21 16:25:04.925 Warning: Unknown attribute for "physical": signed

Es scheint also ein Problem zu geben mit dem “signed integer” Typ. Ausschnitt aus dem Code:

<parameter id="TemperatureOffset">
<logical type="integer" min="-50" max="50" default="0" unit="0.1 K" />
<physical type="integer" signed="true" interface="config" list="1" index="1" size="1" />
<conversion type="sint4_sintx" physical_bytes="1" />
</parameter>

Dieser Wert wird verwendet bei den Offset Parametern, mit denen man die Temperatur / Luftfeuchtigkeit des Sensors kalibrieren kann.

Tatsächlich funktioniert das Kalibrieren nicht.

print config zeigt Anfangs folgendes:

MASTER
{
        Channel: 1
        {
                [TemperatureOffset]: 0
                [HumidityOffset]: 0
                [PressureOffset]: 0
        }
        Channel: 0
        {
                [TRANSMIT_TIME_INTERVAL]: 00 f0
                [TRANSMIT_DEV_TRY_MAX]: 06
                [LOW_BAT_LIMIT]: 1a
                [ALTITUDE_ABOVE_SEA_LEVEL]: 00 6e
                [DEVICE_LED_MODE]: 00
        }
}

VALUES
{
        Channel: 1
        {
                [VAPOR_CONCENTRATION]: 06 7f
                [TEMPERATURE]: 01 4d
                [MY_HUMIDITY]: 01 cc
                [AIR_PRESSURE]: 27 b8
                [OPERATING_VOLTAGE]: 0c 0e
                [DEWPOINT]: 00 c8
        }
        Channel: 0
        {
                [UPDATE_PENDING]: 00
                [UNREACH]: 00
                [STICKY_UNREACH]: 00
                [DEVICE_IN_BOOTLOADER]: 00
                [LAST_PACKET_RECEIVED]: 60 6b 15 17
                [CONFIG_PENDING]: 00
                [LOWBAT]: 00
                [RSSI_DEVICE]: 50
                [RSSI_PEER]: 00
        }
}

Wenn ich auf “Konfigurationsparameter ändern” klicke kann ich bei Channel 1 die Offset Werte ändern:

So, vorher zeigte er mir 20,6°C an. Ich wollte auf 20,9°C kalibrieren.
Also habe ich in das Feld “+3” eingegeben (0,3 * 10 = 3).

Nun zeigt er mir auf einmaleine Temperatur an von 8,6 °C. Das ist völliger Quatsch.
Ich vermute irgendwas stimmt nicht, weil Homegear den signed integer Typ nicht versteht? (siehe Warnung?)

Hinterher zeigt config print das hier:

Channel: 1
{
        [TemperatureOffset]: 87
        [HumidityOffset]: 7f
        [PressureOffset]: 7f
}

Die “87” ist lt. diesem online converter eine -121 (Decimal from signed 2’s complement)

So, wenn ich die vorherigen 20,6 °C - diese 12,1 rechne, komme ich auf 8,5 °C (Temperatur hat sich mittlerweile um 0,1°C geändert).

Also denke ich, dass hier irgendwo ein Fehler liegt. Er speichert den Datentyp falsch ab oder interpretiert ihn falsch.

Noch eine zweite Sache:

Bei der Einheit von einem Datentyp in der xml steht folgendes:
<logical type="float" min="0.0" max="100.0" unit="g/m³">

Leider wird die hochgestellte ³ in iobroker falsch dargestellt. Kann man da was machen?

Vielen Dank für deine (sathya) / eure Hilfe. Falls noch weitere Frage bestehen beantworte ich alles um das Problem zu lösen.

Hallo! Hat niemand eine Idee? :frowning:
@sathya ? (Habe gesehen du bist nach längerer Abstinenz mal wieder hier im Forum gewesen? :slight_smile: )