Temperatur Sensor HomeKit

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Hille
Beiträge: 49
Registriert: 2. Jan 2018 13:59
Answers: 0

Temperatur Sensor HomeKit

Beitrag von Hille »

Ich nutze für einige Schalter und Lampen das HomeKit Addon. Das funktioniert soweit problemlos. Nun möchte ich einen Temperaturwert ebenfalls dort anzeigen. Aber diesen Wert bekomme ich im HomeKit unter den Geräten nicht angezeigt bzw er steht mir zur Auswahl nicht zu Verfügung.

So sieht das Item aus

Code: Alles auswählen

String temperatur_wohnung "Wohnung [%s °C]" <self_temperature> {homekit="TemperatureSensor [minValue=10, maxValue=35] ", channel="exec:command:temperatur_wohnung:output"}
Wo liegt mein Fehler?

openHAB 3.3.0 (Raspbian Bullseye)

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Temperatur Sensor HomeKit

Beitrag von udo1toni »

Du versuchst einen String als Zahl zu nutzen, das geht nicht. Du musst das Item zu einem Number Item machen. Da der Wert von exec kommt, welches ausschließlich String anbietet, musst Du vermutlich schummeln und im Link ein Profile nutzen (in diesem Fall sowas wie JS mit einem Script, welches den Input einfach wieder ausgibt (ich gehe davon aus, dass exec einen reinen Zahlenwert als Text liefert, also z.B. "25.3").
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Hille
Beiträge: 49
Registriert: 2. Jan 2018 13:59
Answers: 0

Re: Temperatur Sensor HomeKit

Beitrag von Hille »

Ja, der wäre z.B. 25.3. Wie müsste das Item nun aussehen, wenn ich den Wert als Number ausgeben möchte bzw mit dem "Schummeln" habe ich nicht so richtig verstanden? Eventuell kannst du mir das einem Beispiel kurz erläutern.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Temperatur Sensor HomeKit

Beitrag von udo1toni »

Z.B. so:

Code: Alles auswählen

Number temperatur_wohnung "Wohnung [%.1f °C]" <self_temperature> {homekit="TemperatureSensor [minValue=10, maxValue=35] ", channel="exec:command:temperatur_wohnung:output" [profile="transform:JS",function="dummy.js"]}
dummy.js kommt in den Ordner /etc/openhab/transform/, mit folgendem Inhalt:

Code: Alles auswählen

(function(i) {
    return i;
})(input)
Das sollte schon ausreichen, am Ausgang des Profiles wird der gelieferte Wert automatisch als Zahl interpretiert.

Man könnte im Script noch sicherstellen, dass ausschließlich echte Zahlen weitergeleitet werden, das wäre dann auch sicher gegen ein fehlerhaftes Exec Script.

Selbstverständlich muss die JS Transformation installiert sein.
Es kann sogar sein, dass auch REGEX funktioniert, dann sähe der Profile-Teil so aus:

Code: Alles auswählen

[profile="transform:REGEX",function="(.*)"]
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Hille
Beiträge: 49
Registriert: 2. Jan 2018 13:59
Answers: 0

Re: Temperatur Sensor HomeKit

Beitrag von Hille »

Vielen Dank für deine Hilfe. Ich habe das nun so getestet, wie du es beschrieben hast. Ich habe sogar zusätzlich den Wert im bash Script, welches die Temperatur ausliest, per

Code: Alles auswählen

echo 25
manuell auf eine Zahl festgelegt. Trotzdem bekomme ich im HomeKit die Temperatur nicht angeboten. Woran könnte das noch liegen?

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Temperatur Sensor HomeKit

Beitrag von udo1toni »

Wird der Wert denn in openHAB als Nummer korrekt dargestellt?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Hille
Beiträge: 49
Registriert: 2. Jan 2018 13:59
Answers: 0

Re: Temperatur Sensor HomeKit

Beitrag von Hille »

Ich konnte das Problem lösen. Ich habe das ITEM wie folgt geändert

Code: Alles auswählen

Number temperatur_wohnung "Wohnung [%s °C]" <self_temperature> {homekit="TemperatureSensor", channel="exec:command:temperatur_wohnung:output" [profile="transform:JS",function="dummy.js"]}
Im Endeffekt war anscheinend nur dieser Bereich nicht korrekt definiert

Code: Alles auswählen

homekit="TemperatureSensor"

Antworten