Thing Status in Widget

GUI Relevanten, PaperUI, BasicUI, HabPanel ...

Moderatoren: seppy, udo1toni

Antworten
loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Thing Status in Widget

Beitrag von loewes »

Hallo,

ich möchte gerne den Online/Offline Status von meinen Zigbee Geräten direkt auf der Übersichtsseite anzeigen lassen. Also eigentlich genau das, was unter Einstellungen --> Things zu sehen ist, aber für ein paar ausgewählte Geräte. Dafür wollte ich mir ein kleines Widget selbst erstellen, aber irgendwie kann ich nicht auf den Thing-Status zugreifen (in den Properties können nur Items ausgewählt werden?). Ich möchte ja eigentlich nur zu den Things das online/offline Symbol daneben haben (eben so wie in der Thing-Übersicht). Gibt es da eine einfache Abfrage, die ich im Widget verwenden kann? Vielleicht gibt es da auch ein fertiges Widget dafür, das ich nicht gefunden hab?
Vielen Dank!
von oh73 » 20. Feb 2023 15:11
das geht mit einem kleinen Umweg,

ich hab dazu eine Rule wo der Status von dem Thing abgefragt und in ein Item geschrieben wird.

Code: Alles auswählen

rule"Things testen"
when 
	Thing "avmfritz:FRITZ_DECT_200:192_168_178_3:087610076498" changed or			//
	Thing "avmfritz:FRITZ_DECT_200:192_168_178_3:087610144480" changed or			//
	Thing "deconz:onofflight:00212EFFFF072015:84182600000ee37a03" changed or		// Osram 1
		// deconz:onofflight:00212EFFFF072015:84182600000ee37a03
	Thing "deconz:onofflight:00212EFFFF072015:7cb03eaa0a01f19a03" changed or		// Osram 2
	Thing "deconz:onofflight:00212EFFFF072015:7cb03eaa0a032a9c03" changed or		// Osram 3
	Thing "deconz:onofflight:00212EFFFF072015:7cb03eaa0a02a4e803" changed or		// Osram 4
	Thing "deconz:onofflight:00212EFFFF072015:5c0272fffecbc8b501" changed or		// Ikea
	Thing "deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc01" changed or		// eMylo 1
	Thing "deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc02" changed or		// eMylo 2
	Thing "deconz:onofflight:00212EFFFF072015:5c0272fffe287d630b" changed or		// Lidl 1
	Thing "deconz:onofflight:00212EFFFF072015:5c0272fffe88efa80b" changed or		// Lidl 2
	Thing "deconz:onofflight:00212EFFFF072015:84ba20fffe65527d01" changed or		// Blitzwolf 1
	Thing "deconz:onofflight:00212EFFFF072015:84ba20fffe6abc7f01" changed or		// Blitzwolf 2
	Thing "deconz:presencesensor:00212EFFFF072015:847127fffe27f0eb010500" changed or
	Thing "deconz:presencesensor:00212EFFFF072015:847127fffe238dc9010500" changed or
	Item teste_thing changed
then
	var Status = getThingStatusInfo("avmfritz:FRITZ_DECT_200:192_168_178_3:087610076498").getStatus()
	Thing_Steckdose1.postUpdate(Status.toString())

	Status = getThingStatusInfo("avmfritz:FRITZ_DECT_200:192_168_178_3:087610144480").getStatus()
	Thing_Steckdose2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:84182600000ee37a03").getStatus()
								//   deconz:onofflight:00212EFFFF072015:84182600000ee37a03
	Thing_osram1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:7cb03eaa0a01f19a03").getStatus()
	Thing_osram2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:7cb03eaa0a032a9c03").getStatus()
	Thing_osram3.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:7cb03eaa0a02a4e803").getStatus()
	Thing_osram4.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:5c0272fffecbc8b501").getStatus()
	Thing_ikea.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc01").getStatus()
	Thing_emylo1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc02").getStatus()
	Thing_emylo2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:5c0272fffe287d630b").getStatus()
	Thing_lidl1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:5c0272fffe88efa80b").getStatus()
	Thing_lidl2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:84ba20fffe65527d01").getStatus()
	Thing_blitzwolf1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:84ba20fffe6abc7f01").getStatus()
	Thing_blitzwolf2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:presencesensor:00212EFFFF072015:847127fffe27f0eb010500").getStatus()
	Thing_Sensor1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:presencesensor:00212EFFFF072015:847127fffe238dc9010500").getStatus()
	Thing_Sensor2.postUpdate(Status.toString())

end
ging vielleicht noch was einfacher zu machen, aber funktioniert!

die UID des Things findet man auf der Thing Übersichtsseite.
Gehe zur vollständigen Antwort

oh73
Beiträge: 313
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Thing Status in Widget

Beitrag von oh73 »

das geht mit einem kleinen Umweg,

ich hab dazu eine Rule wo der Status von dem Thing abgefragt und in ein Item geschrieben wird.

Code: Alles auswählen

rule"Things testen"
when 
	Thing "avmfritz:FRITZ_DECT_200:192_168_178_3:087610076498" changed or			//
	Thing "avmfritz:FRITZ_DECT_200:192_168_178_3:087610144480" changed or			//
	Thing "deconz:onofflight:00212EFFFF072015:84182600000ee37a03" changed or		// Osram 1
		// deconz:onofflight:00212EFFFF072015:84182600000ee37a03
	Thing "deconz:onofflight:00212EFFFF072015:7cb03eaa0a01f19a03" changed or		// Osram 2
	Thing "deconz:onofflight:00212EFFFF072015:7cb03eaa0a032a9c03" changed or		// Osram 3
	Thing "deconz:onofflight:00212EFFFF072015:7cb03eaa0a02a4e803" changed or		// Osram 4
	Thing "deconz:onofflight:00212EFFFF072015:5c0272fffecbc8b501" changed or		// Ikea
	Thing "deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc01" changed or		// eMylo 1
	Thing "deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc02" changed or		// eMylo 2
	Thing "deconz:onofflight:00212EFFFF072015:5c0272fffe287d630b" changed or		// Lidl 1
	Thing "deconz:onofflight:00212EFFFF072015:5c0272fffe88efa80b" changed or		// Lidl 2
	Thing "deconz:onofflight:00212EFFFF072015:84ba20fffe65527d01" changed or		// Blitzwolf 1
	Thing "deconz:onofflight:00212EFFFF072015:84ba20fffe6abc7f01" changed or		// Blitzwolf 2
	Thing "deconz:presencesensor:00212EFFFF072015:847127fffe27f0eb010500" changed or
	Thing "deconz:presencesensor:00212EFFFF072015:847127fffe238dc9010500" changed or
	Item teste_thing changed
then
	var Status = getThingStatusInfo("avmfritz:FRITZ_DECT_200:192_168_178_3:087610076498").getStatus()
	Thing_Steckdose1.postUpdate(Status.toString())

	Status = getThingStatusInfo("avmfritz:FRITZ_DECT_200:192_168_178_3:087610144480").getStatus()
	Thing_Steckdose2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:84182600000ee37a03").getStatus()
								//   deconz:onofflight:00212EFFFF072015:84182600000ee37a03
	Thing_osram1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:7cb03eaa0a01f19a03").getStatus()
	Thing_osram2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:7cb03eaa0a032a9c03").getStatus()
	Thing_osram3.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:7cb03eaa0a02a4e803").getStatus()
	Thing_osram4.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:5c0272fffecbc8b501").getStatus()
	Thing_ikea.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc01").getStatus()
	Thing_emylo1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:00124b001cd5f9dc02").getStatus()
	Thing_emylo2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:5c0272fffe287d630b").getStatus()
	Thing_lidl1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:5c0272fffe88efa80b").getStatus()
	Thing_lidl2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:84ba20fffe65527d01").getStatus()
	Thing_blitzwolf1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:onofflight:00212EFFFF072015:84ba20fffe6abc7f01").getStatus()
	Thing_blitzwolf2.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:presencesensor:00212EFFFF072015:847127fffe27f0eb010500").getStatus()
	Thing_Sensor1.postUpdate(Status.toString())

	Status = getThingStatusInfo("deconz:presencesensor:00212EFFFF072015:847127fffe238dc9010500").getStatus()
	Thing_Sensor2.postUpdate(Status.toString())

end
ging vielleicht noch was einfacher zu machen, aber funktioniert!

die UID des Things findet man auf der Thing Übersichtsseite.
OH 5.1.1 auf HP 26o G1 Dm Mini Pc mit MX_Linux

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: Thing Status in Widget

Beitrag von loewes »

Danke!
Ich dachte, es könnte auch ohne den "Umweg" über eigene Things gehen... Aber so werd ich es dann wohl machen.
Vielen Dank!

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

Re: Thing Status in Widget

Beitrag von udo1toni »

Du meinst Items :) Es werden ja keine zusätzlichen Things benötigt, lediglich Items, welche den Status der Things widerspiegeln.

Die UI (also die normale Benutzeroberfläche) greift für jegliche Anzeige auf den openHAB (B)us zu.
Der Bus in openHAB verwendet Items, um die Status zu speichern.
Weiterhin kann man Events über den Bus bekommen, auch solche, die Things betreffen.
Diese Events haben aber keinen Status, somit kann openHAB auch den aktuellen Zustand nicht ermitteln.
Die UI hat andererseits nicht die Aufgabe, beliebige Datenpunkte dauerhaft zu überwachen und deren Status zu speichern, sie greift also auf den Bus zu und schaut dort nach, deshalb braucht es zwingend ein Item, welches den Zustand speichert.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: Thing Status in Widget

Beitrag von loewes »

Ah, okay, Danke für die Erklärung! Dann versteh ich das auch...
Und ja, ich meinte natürlich Items ;)

hermann59
Beiträge: 26
Registriert: 25. Feb 2021 08:38
Answers: 0

Re: Thing Status in Widget

Beitrag von hermann59 »

Ich hätte in meiner UI auch gerne eine Anzeige, wenn Things einen Status haben, der auf einen Fehler hinweist.

Mein Ansatz ist folgender:
Eine rule wird durch die Änderung des Status eines beliebigen Things getriggert. Sie schreibt den displayed name und den Status des things in eine globale Map und ermittelt dann für die relevanten Status eine Liste von Things, die diesen Status haben und schreibt diese Liste als mehrzeiligen String in das zugehörige Status-Item. Wahrscheinlich würde es reichen, die beiden Status-Items vom vorherigen und aktuellen Thing Status zu aktualisieren.

Was mir aber absolut unklar ist, wie ich ein Item in der UI anzeige, dessen Wert eine Liste von Strings ist.

Antworten