Seite 1 von 2
Anzeige offener Fenster auf einer Sitemap
Verfasst: 10. Jan 2025 11:48
von rebell21
ich möchte die Liste der offenen Fenster auf einer Sitemap ausgeben.
Ich habe eine Gruppe der Fensterkontakte erstellt.
Code: Alles auswählen
label: Alle Fensterkontakte
type: Group
category: contact
groupNames: []
tags: []
groupType: None
function: None
In dieser Gruppe sind alle items der Fensterkontakte vom Typ Contact enthalten
Code: Alles auswählen
label: Tür-/Fenster-Zustand
type: Contact
category: Contact
groupNames:
- Wohnzimmertur
- alle_Fenster_Kontakte
tags:
- Point
......... alle weiteren Items der Fensterkontakte ......
Außerdem konnte ich eine Sitemap definieren und in Openhab einlesen und im Basic UI anzeigen
Ich möchte nun auf dieser Sitemap die Liste der offenen Fenster anzeigen.
Wie würde man das machen ?
Wie macht man überhaupt die Anzeige eines Textstrings in openhab auf einem Widget ?
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 11. Jan 2025 01:05
von udo1toni
Ich habe im Ursprungsposting geantwortet
Was Deinen Wunsch nach einer Liste in Textform betrifft, so wird das nicht einfach so gehen, dazu bräuchtest Du eine Rule, welche den Text berechnet.
Dieser Text muss dann in ein String Item gespeichert werden und dieses String Item kannst Du einfach mit dem Text Widget anzeigen lassen. Dummerweise kannst Du aber nicht beeinflussen, wie der Text ausgegeben wird, weshalb dieser Ansatz mit Sitemaps zum Scheitern verurteilt ist.
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 13. Jan 2025 13:12
von rebell21
wie gibt man denn einen Text in Openhab aus ?
Ich habe mir den Text in einer Rule zusammengebastelt. Aber ich kann den Text nicht ausgeben.
Wie kann ich das String Item auf einem Text Widget ausgeben ? Woher kommt das TextWidget ?
Und sendNotification funktioniert bei mir nicht. sendNoticfication kann nicht aufgelöst werden sagt mir frontail
Muss ich ein spezielles Binding installieren, damit sendNotification funktiniert ?
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 13. Jan 2025 18:29
von udo1toni
Du musst ein String Item verwenden, dann kannst Du den Status an ein Text Widget koppeln, so dass der Status als Text ausgegeben wird.
Hilft aber nicht, weil das Text Widget mit hoher Wahrscheinlichkeit den Text abschneidet, falls er zu lang wird.
sendNotification ist eine Action, dazu musst Du aber ein passendes Thing haben, z.B. einen Mailaccount, den Cloudzugriff oder sowas, das ist aber ein anderes Thema.
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 14. Jan 2025 14:04
von rebell21
ich habe das jetzt einmal versucht
es gibt eine Gruppe mit dem Namen "alle_Fenster_Kontakte".
und ich habe eine Rule definiert
Code: Alles auswählen
rule "fensterzustand melden"
when
Item GATEWAYEXTRAS_Anwesenheit changed to OFF // Haus wird gerade verlassen
then
if(GATEWAYEXTRAS_Anwesenheit.state == OFF && alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].size > 0) { // niemand zuhause und mindestens ein Fenster offen
var mailActions = getActions("mail","mail:smtp:270ff9aa89")
var String strList = "Es ist noch mindestens ein Fenster offen: " // Variable initialisieren
alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].forEach[ k | strList = strList + k.name + ", "] // Liste mit Elementen füllen
logInfo(strList) // Meldung senden.
mailActions.sendMail("peter.walber@t-online.de",strList)
}
end
entsprechende Mail Items sind auch als Thing definiert
Die Rule wird korrekt eingelesen und erscheint innerhalb der Rules Rule "fensterzustand melden". Der Dateiname ist "anzeige_offene_Fenster.rules". Sie wird auch getriggert durch Setzen der Variablen / des Items "
GATEWAYEXTRAS_Anwesenheit". Das funktioniert und sehe ich im log
Code: Alles auswählen
2025-01-14 14:18:45.865 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'GATEWAYEXTRAS_Anwesenheit' received command OFF
2025-01-14 14:18:45.868 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'GATEWAYEXTRAS_Anwesenheit' predicted to become OFF
2025-01-14 14:18:45.869 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'GATEWAYEXTRAS_Anwesenheit' changed from ON to OFF
Wenn die Rule ausgeführt wird, wird im log aber folgender Fehler angezeigt (es ist genau ein Fenster von acht Fenstern offen).
Code: Alles auswählen
[b]2025-01-14 13:52:50.120 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'anzeige_offene_Fenster-1' failed: An error occurred during the script execution: index=1, size=1 in anzeige_offene_Fenster
[/b]
Ich habe mir die Code Schnipsel für die rule hier aus dem Forum zusammengesucht. Vor allem die Schleifen verstehe ich nicht. Die Zugriffe auf members.filter und i.state und k.name sind mir unklar
Code: Alles auswählen
alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].size > 0
und
alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].forEach[ k | strList = strList + k.name + ", "]
Was kann der Fehler sein ?
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 14. Jan 2025 18:54
von udo1toni
logInfo() benötigt zwei Strings als Parameter.
der erste Parameter ist der Loggername, unter dem die Logzeile generiert wird.
Ändere die Zeile so ab:
dann sollte es funktionieren.
"mail" ist dann der letzte Teil des Loggernamens. Alle log-Befehle innerhalb der DSL landen unter einer "gemeinsamen" Rubrik, das ist "org.openhab.core.model.script", entsprechend ist der vollständige Loggername in diesem Fall "org.openhab.core.model.script.mail".
Unter diesem Namen kannst Du den Logger dann auch zur Laufzeit steuern (z.B. verhindern, dass logInfo() einen Eintrag generiert).
Ach so...
Code: Alles auswählen
... when
Item GATEWAYEXTRAS_Anwesenheit changed to OFF // Haus wird gerade verlassen
then
if(GATEWAYEXTRAS_Anwesenheit.state == OFF && ...
hier ist
immer erfüllt, das kann also entfallen.
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 14. Jan 2025 23:11
von rebell21
Danke funktioniert jetzt im Log und als Mail an meinen Mail Account
Was ich nicht hinkriege, sind Notifications an die Openhab App auf dem Handy.
Ich habe einen account in myopenhab.org und kann die über myopenhab.org auch meine GUI (Overview, Standorte, Geräte, Eigenschaften und die Sitemap) aufrufen.
Mir gelingt es jedoch nicht, mit sendBroadcastNotification(strList) eine Benachrichtigung an die Openhab APP auf dem Handy zu senden. Wo sieht man die Benachrichtigungen in der Android App ?
Die openhab Cloud ist so konfiguriert, dass Benachrichtigungen gehen müssten
Was kann der Fehler sein ?
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 15. Jan 2025 07:17
von udo1toni
Die App sollte die Nachricht als Push Nachricht anzeigen.
Kann sein, dass Du das der App erst noch erlauben musst:
openHAB App Menü (Burger-Menü links oben in schwarz/weiß)->Einstellungen->Benachrichtigungen
Evtl. musst Du es auch zusätzlich auf OS-Ebene aktivieren?
Ich nutze selbst kein myOpenHAB...
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 15. Jan 2025 11:38
von rebell21
ich habe keinen Menüpunkt "Einstellungen" im Burger Menü. Das ist ja das Problem.
Welche Handapp nutzt Du, um openhab auf dem Handy anzuzeigen ?
Re: Anzeige offener Fenster auf einer Sitemap
Verfasst: 15. Jan 2025 19:30
von udo1toni
rebell21 hat geschrieben: ↑15. Jan 2025 11:38
Welche Handapp nutzt Du, um openhab auf dem Handy anzuzeigen ?
Na die openHAB App
https://play.google.com/store/apps/deta ... roid&hl=de oder
https://apps.apple.com/de/app/openhab/id492054521 (ich meine, es gab auch mal eine Windows Version, aber wer nutzt noch ein Windows Smartphone?)