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.