Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

shaggy0815
Beiträge: 20
Registriert: 24. Nov 2019 09:37

Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von shaggy0815 »

Hallo liebe Foren Mitglieder.

Ich wollte gerne, wenn auch mit eingeschränkten Möglichkeiten, meine Lampen von aussen steuern ohne mein System nach aussen irgendwie freigeben
zu müssen.

Nun habe ich das Telegramm Binding installiert und kann über einen privaten Chat meine Lampen schalten. Jetzt möchte ich natürlich auch wissen ob die
Lampen geschaltet wurden. Meine Idee wäre eine Anfrage per Telegramm zu schicken nach dem Motto: Welche Lampen sind ein?

Meine Frage wäre: Ist es Möglich irgendwie in OpenHAB in einer Schleife abzufragen welche Lampen eingeschaltet sind. So das ich deren Status per Telegramm Action in einem Telegramm senden kann. Quasi Lampe Küche = ein, Lampe Wohnzimmer = ein, etc.

Ich erwarte keine fertige Lösung, aber falls mich jemand in die richtige Richtung schicken könnte, dann würde ich versuchen mich gezielt schlau zu machen und dies umzusetzen, falls es möglich ist.

Für Anregungen wäre ich sehr dankbar.

Viele Grüße und eine erfolgreiche Woche

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

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von udo1toni »

Ja sicher, das geht z.B. über Gruppen. Da ich telegram nicht nutze, weiß ich aber nicht, wie die Fragen in konkrete Handlungen (Rule triggern) umgesetzt werden. In einer passenden Rule musst Du jedenfalls nur die Gruppe der Lampen durchlaufen, z.B. gefiltert nach eingeschalteten Lampen. Dann schickt die Rule ein Telegram der Art: "Es sind x Lampen an, das sind... und ...", x ist die Anzahl (lässt sich über .size abfragen) und die Namen generiert man über eine Schleife, die die gefilterte Liste ausliest.

Gesendet von meinem SM-G973F mit Tapatalk


openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shaggy0815
Beiträge: 20
Registriert: 24. Nov 2019 09:37

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von shaggy0815 »

Hallo Udo,

vielen Dank für Dein Feedback.

Ich dachte mir schon, dass ich irgendwie die Gruppe nutzen muss. Alle meine Lampen sind auch in der gleichen Gruppe. Also die Gruppe wäre da.

Nur wie durchsuche ich die Gruppe im Code mit einem Filter? Gibt es irgendwo eine Art Befehlsreferenz die ich durcharbeiten könnte?

In einer SPS würde ich sowas mit einer Art Schleife durchlaufen und mir die gefundenen Lampen in einer Art Liste zwischenspeichern, welche ich später ausgeben kann. Nur ist mir nicht klar wie ich dies so ähnlich mit OpenHAB umsetzen kann.

Kann ich mir eine Art Array erzeugen welches ich als Speicher nutzen kann?

shaggy0815
Beiträge: 20
Registriert: 24. Nov 2019 09:37

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von shaggy0815 »

Hallo Zusammen,

ich habe ein wenig Google bemüht und habe daraufhin folgende Regel erstellt:

Code: Alles auswählen

rule "Telegramm Status Lampen anfordern"
when
    Item LastMessageText received update "Status Lampen"
then
    val StringBuilder sb = new StringBuilder
    gLampen.members.filter[ i | i.state == ON].forEach[i | sb.append(", " + i.name) ]
    sendTelegram("openHAB", sb.toString)
end
Dies tut genau das was ich will. Ich bekomme alle meine Lampen die den Status ON haben in einer Telegramm Nachricht gemeldet. Eine Frage hätte
ich zum Verständnis. Offensichtlich ist i die Schleifenvariable, welche wohl direkt vom System anhand der Gruppenmitglieder bestimmt wird, richtig?

Eine echte Befehlsreferenz zu openHAB, welche man durcharbeiten könnte, scheint es nicht zu geben, oder?

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

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von udo1toni »

shaggy0815 hat geschrieben: 15. Jun 2020 23:17 Offensichtlich ist i die Schleifenvariable, welche wohl direkt vom System anhand der Gruppenmitglieder bestimmt wird, richtig?
Genau. In VB hieße es sinngemäß: For Each i in filter ... Next.
.members liefert eine Liste von Items.
.filter filtert eine Liste und hat als Ergebnis wieder eine Liste (von Items).
.forEach durchläuft eine Liste.
i| ist in diesem Fall der Stellvertreter für jedes einzelne Element der Liste. i ist in diesem Moment also ein vollwertiges Item, entsprechend kann man mit i.name den Namen des Items erfahren (der dann aber nicht i lautet, denn i ist ja in diesem Moment ein ein anderes Item... ähh... ;) )
Eine echte Befehlsreferenz zu openHAB, welche man durcharbeiten könnte, scheint es nicht zu geben, oder?
Ja. Du kannst aber VSCode und das openHAB plugin installieren und einrichten (in den Einstellungen den host auf Dein openHAB2-System einrichten), dann bekommst Du Autocompletion usw. und darüber auch eine kontextbezogene Befehlsreferenz. Aber leider keine Dokumentation...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shaggy0815
Beiträge: 20
Registriert: 24. Nov 2019 09:37

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von shaggy0815 »

Hallo Udo,

danke für deine Erklärungen.

VSCode nutze ich schon so wie Du es beschrieben hast. Hab jedoch nie so wirklich auf die kontextbezogene Befehlsreferenz geachtet.
Ich werde versuchen diese in Zukunft mehr zu nutzen und mal ein bisschen damit rumspielen.

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von peter-pan »

Das ist zwar nicht viel, aber vielleicht hilft dir das schon ein Stück weiter. Schau mal hier unter Rules DSL.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von djuscha »

shaggy0815 hat geschrieben: 15. Jun 2020 12:50
Nun habe ich das Telegramm Binding installiert und kann über einen privaten Chat meine Lampen schalten.
Wie machst du das mit Telegramm könntest du deine Rules posten? Geht das mit normalem Telegramm binding?

shaggy0815
Beiträge: 20
Registriert: 24. Nov 2019 09:37

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von shaggy0815 »

Hallo Djuscha,

jup, Du brauchst das Telegramm Binding und auch das Telegramm Action. Dies sind separate Plugins.

Du musst Dir dann im Telegramm per Bodfather einen privaten Chat-Kanal aufbauen. Wie dies geht ist sogar mal sehr gut dokumentiert in der Hilfe
zum Binding.

Das Binding stellt Dir dann den Chanel LastMessageText zur Verfügung welchen Du einbindest. Im entsprechenden Item siehst Du dann immer deinen
letzten Text denn Du in deinem privaten Chat geschrieben hast. Diesen kannst Du einfach in einer Regel auswerten und dann damit Lampen schalten.

Hier ein Beispiel:

Code: Alles auswählen

rule "Telegramm alle Lampen aus"
when
    Item LastMessageText received update "Lampen aus"
then
    gLampen.sendCommand(OFF)
end
Hier sende ich an meinen privaten Chat den Text "Lampen aus". Wenn ich diesen String in LastMessageText bekomme schalte ich damit die Lampen aus.
Auf die gleiche weise kannst Du natürlich auch Lampen einschalten, etc.

In einer weiteren Regel frage ich dann nach dem Status der Lampen und bekomme den Staus aller Lampen über den Chat von openHAB zurückgemeldet. Die Regel dafür hab ich schon gepostet.

Über das Binding kannst Du meines Wissens nur Empfangen. Daher brauchst Du auch noch Telegramm Action, wenn openHAB dir auch was senden soll. Beides verwendet natürlich den gleichen Chat.

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

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Beitrag von udo1toni »

ACHTUNG! Es gibt ein Telegram v1 Binding und ein Telegram v2 Binding. Wenn Du das Telegram v1 Binding nutzt, brauchst Du die Telegram v1 Action- Wenn Du das Telegram v2 Binding nutzt, ist die Action schon mit dabei, sie wird allerdings anders aufgerufen als die v1 Action. Siehe Dokumentation:
https://www.openhab.org/addons/bindings ... le-actions
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten