Eigenes Room-Attribut möglich für Ausgabe von Benachrichtigungen?

Begonnen von prodigy7, 24 Dezember 2022, 13:37:15

Vorheriges Thema - Nächstes Thema

prodigy7

Hallo zusammen!

Ich habe momentan bei mir verschiedene Benachrichtigungen, die momentan zentral über eine Alexa ausgegeben werden. Ich möchte das gerne jetzt etwas schlauer machen.

Beispiel:
Aktuell wenn es kälter als 16 Grad sind, erfolgt eine Ansage, welches Fenster gerade länger als 5 Minuten offen ist. Das kommt auf der einen Alexa. Ich möchte in Zukunft für jeden Sensor steuern können, auf welchen Alexas (haben einige) die Ansage kommt. Sprich, ist im Arbeitszimmer das Fenster offen, möchte ich über ein eigenes Raum-Attribut angeben können, dass die Ansage im Raum "Arbeitszimmer" und "Wohnzimmer" erfolgt. Wenn im Raum Wohnzimmer das Fenster offen ist, will ich bei dem Sensor nur den Raum "Wohnzimmer" als Ziel für die Benachrichtigung angeben.

Mein Gedanke war, ein eigenes Attribut zu definieren, wie es "Room" aktuell ist. Man kann also was vorhandenes via Checkbox anchecken oder im Freitextfeld einen neuen Namen angeben. Die Namen gleiche ich dann in meinem Skript mit den vorhandenen Raumnamen einfach ab, um zu schauen wo ich benachrichtige.
Alternativ wäre auch denkbar, dass ich in einem Attribut die Auswahl der Räume habe und in dem nur die Auswahl gespeichert wird.

Ich hoffe, ich konnte das was ich möchte, verdeutlichen und vielleicht habt ihr eine Idee, wie ich das gut umsetzen könnte.

DeeSPe

Definiere dir ein entsprechende userattr in deinen Fenster Sensoren.
z.B.:
attr <NAME> userattr alexaDevice
Du kannst dir das Widget und dessen Inhalt dann selbst konfigurieren.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MadMax-FHEM

#2
Stichwort: userattr
EDIT: zu "langsam" ;)

Da hast du pro Device (dort wo du das Attribut userattr mit deinen Werten setzt) ein eigenes Attribut...

Alternativ unter global das vorhandene userattr ERWEITERN...
EDIT: dann gibt es das Attribut eben "überall"...

Abfrage dann mittels AttrVal...

Oder die Fenstersensoren mit dem vorhandenen Attribut room in den richtigen Raum packen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

prodigy7

Okay, was ich gerne hätte, ist, wenn ich z.B. ein Attribut notificationRoom definieren, dass ich dort wie bei Room beim Klick ins Textfeld eine Auswahl erhalte. Variante 1, ich definiere eine "Parallelwelt" bei bei room, Variante 2 hier werden mir die Werte aus "room" angezeigt. Geht das?
Das mit den userattr hatte ich im Wiki gesehen, schien mir aber so, als ob das wirklich nur ein String ist und ich alles andere händisch machen muss.

DeeSPe

Zitat von: prodigy7 am 24 Dezember 2022, 16:34:36
Okay, was ich gerne hätte, ist, wenn ich z.B. ein Attribut notificationRoom definieren, dass ich dort wie bei Room beim Klick ins Textfeld eine Auswahl erhalte. Variante 1, ich definiere eine "Parallelwelt" bei bei room, Variante 2 hier werden mir die Werte aus "room" angezeigt. Geht das?
Das mit den userattr hatte ich im Wiki gesehen, schien mir aber so, als ob das wirklich nur ein String ist und ich alles andere händisch machen muss.

Zitat von: DeeSPe am 24 Dezember 2022, 13:45:26
Du kannst dir das Widget und dessen Inhalt dann selbst konfigurieren.

Das meinte ich mit Widget selbst konfigurieren.
Es sind doch immer die selben Alexa Geräte oder?
Dann einfach entsprechend die Namen deiner Alexa Geräte angeben, z.B.:
attr <NAME> userattr alexaDevice:AlexaWohnzimmer,AlexaSchlafzimmer,AlexaFlur

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

prodigy7

Okay, das ist tatsächlich auch eine Variante :-) Mein Gedanke war: Definieren, in welchen Räumen die Benachrichtigung läuft. Das Skript sucht sich dann im jeweiligen Raum die Alexa raus und gibt darüber die Benachrichtigung aus. Die Alexas direkt definieren ist natürlich auch eine Variante.

DeeSPe

Klar, es gibt immer mehrere Möglichkeiten.
Das war nur ein möglicher Vorschlag von mir.
Ich habe auf diese Weise meinen Bewohnern ihr Sonos Device zugewiesen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Hey prodigy7,

hast Du für Dich eine praktikable Lösung gefunden?
Und möchtest Du diese gern mit uns teilen?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

prodigy7

Zitat von: DeeSPe am 10 Januar 2023, 22:55:20
hast Du für Dich eine praktikable Lösung gefunden?
Und möchtest Du diese gern mit uns teilen?
Kann ich gerne tun! :-)

Also ich habe mich jetzt für die Variante entschieden:
Ich habe eine Methode, die nur dafür gedacht ist, Ansagen bei mir auszugeben. Der Methode wurde vorher einfach nur der auszugebende Text übergeben und der wurde dann pauschal auf einer Alexa ausgesprochen. Die habe ich jetzt soweit aufgebohrt, dass auch der Device-Name an die Methode übergeben wird.
Innerhalb der Methode ermittle ich dann zu dem Device den Room, dem es zugeordnet ist. Im nächsten Schritt suche ich dann im gleichen Room alle Echo-Devices und gebe auf diesen dann die Ansage aus.
Ist vielleicht nicht zu 100% die perfekteste Lösung, weil man dann jedes Echo-Device wo auch eine Ansage erfolgen soll, auch dem Room zuordnen müsste, auch wenn es dort nicht steht, aber war die pragmatisch einfachste.
Würde man das für jedes Device einzeln einstellen wollen, wo die Ansage ausgegeben werden soll, wäre das gleich deutlich komplexer.

KernSani

Bewährt sich das denn in der Praxis? Ich habe auch schon öfter darüber nachgedacht, dass Alexa-Mitteilungen nicht (immer) an einem (oder mehreren) vordefinierten Echo ausgegeben werden sollten, sondern dass man das dynamischer gestalten könnte. Aus meiner Sicht macht es aber wenig Sinn, wenn mir die Alexa im Büro sagt, dass das Bürofenster offen ist - das sehe ich ja, wenn ich im Büro bin.
Ich denke eher über eine irgendwie anwesenheitsgesteuerte Ausgabe nach - wenn ich in der Küche bin, sagt mir die Küchen-Alexa, dass das Fenster im Büro jetzt schon seit 10 Minuten offen ist, o.ä. Die Herausforderung ist dann natürlich herauszufinden in welchen Räumen (mit Alexa) jemand anwesend sein könnnte (aber da hätte ich eine rudimentäre Lösung). Ansatz wäre dann wahrscheinlich ähnlich - herausfinden, wo ist jemand anwesend, darauf basierend die Echos ermitteln und die Ausgabe triggern... (Ich denke gerade nur laut). Hat da jemand Ansätze?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MadMax-FHEM

Zitat von: prodigy7 am 13 Januar 2023, 07:41:49
Würde man das für jedes Device einzeln einstellen wollen, wo die Ansage ausgegeben werden soll, wäre das gleich deutlich komplexer.

Naja, etwas "komplexer" bei der (einmaligen) Einrichtung, die Programmierung wäre auch nicht (viel) aufwändiger.
Idee:

userattr Devicename myEchoRoom
attr Devicename myEchoRoom RaumDesEchosDerQuäkenSoll
(man könnte auch eine Liste o.ä. angeben :) )

Programmierung dann:

notify -> $NAME (=Device welches triggert) -> $EchoRaum = AttrVal($NAME, "myEchoRoom", "n.a.") -> devspec2array(alleEchos) -> suchen nach Echo mit attr room=$EchoRaum  -> da dann die Sprachausgabe

(hier ginge auch eine Liste mit Räumen)...

Alternativ eben statt ein userattr myEchoRaum ein userattr myAusgabeEcho und dann eben im Attribut den (oder die) Echo eintragen, die "quäken" sollen.
Dann ist der Ablauf noch einfacher:

notify -> $NAME (=Device welches triggert) -> $Echo = AttrVal($NAME, "myAusgabeEcho", "n.a.") -> set $Echo speak...
(mit einer Liste von Echos halt dann entsprechend anpassen)


Zitat von: KernSani am 13 Januar 2023, 09:28:46
(Ich denke gerade nur laut). Hat da jemand Ansätze?

Naja, für mich sehe ich an der Idee eher die Schwierigkeit herauszubekommen wo wer ist.
Bei mir alleine ist das einfach, da muss/müsste ich nur rauskriegen wo ist jemand, weil "jemand=ich" :)

Bei mehreren Personen wird es schon schwierig: wer hat gesprochen, also wer will eine Antwort und in welchem Raum...


Aber: wenn ich Alexa passend konfiguriere, dann kann ich doch jetzt schon im Wohnzimmer fragen, ob das Fenster im Büro offen ist.

Ich frage den Echo im Wohnzimmer und bekomme die Antwort des Zustands des Fensters (Heizkörpers, ...) im Büro (oder sonstwo) und es antwortet der Echo im Wohnzimmer...
(bzw. der, der die Frage gehört hat)

Das andere, dass ich eine passende Meldung bei dem Echo bekomme, dem ich am nächsten bin, ok.
Aber wenn klar ist "wo" ich bin, dann ist das auch einfach:

notify auf Fenster offen, prüfen wie lange und dann eben set Echodevice(im Raum wo ich bin) speak das fenster im Büro (kommt ja mit dem notify) ist schon zu lange auf

Bis auf das Erkennen "wo ich bin" mache ich das schon so, wenn es regnet und das Bürofenster ist auf (im Sommer kann das schon mal sein), dann bekomme ich eine Ansage im Wohnzimmer und Schlafzimmer.

Weil ich dann entweder da oder dort bin ;)
(hauptsächlich falls es im Sommer nachts anfängt zu regnen)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

KernSani

Zitat von: MadMax-FHEM am 13 Januar 2023, 11:17:24
Ich frage den Echo im Wohnzimmer und bekomme die Antwort des Zustands des Fensters (Heizkörpers, ...) im Büro (oder sonstwo) und es antwortet der Echo im Wohnzimmer...
(bzw. der, der die Frage gehört hat)
Wenn ich selbst frage ist das klar... ich dachte an den nächsten Punkt:
Zitat
Das andere, dass ich eine passende Meldung bei dem Echo bekomme, dem ich am nächsten bin, ok.
Aber wenn klar ist "wo" ich bin, dann ist das auch einfach:

notify auf Fenster offen, prüfen wie lange und dann eben set Echodevice(im Raum wo ich bin) speak das fenster im Büro (kommt ja mit dem notify) ist schon zu lange auf

Bis auf das Erkennen "wo ich bin" mache ich das schon so, wenn es regnet und das Bürofenster ist auf (im Sommer kann das schon mal sein), dann bekomme ich eine Ansage im Wohnzimmer und Schlafzimmer.

Weil ich dann entweder da oder dort bin ;)
(hauptsächlich falls es im Sommer nachts anfängt zu regnen)

Gruß, Joachim
Genau das... Ermitteln Bereich in dem Anwesenheit erkannt wurde (wie auch immer, in meinem Fall mittels "homezone", ggf. auch an welchem Accespoint das Iphone connected ist), daraus ableiten wo die nächste Alexa steht und die was erzählen lassen :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MadMax-FHEM

@KernSani: ganz einfach RTLS (realtime locating system)

Also teure Infrastruktur in Haus/Wohnung und RTLS-Transponder ankleben -> done ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

prodigy7

Zitat von: MadMax-FHEM am 13 Januar 2023, 15:49:38
@KernSani: ganz einfach RTLS (realtime locating system)

Also teure Infrastruktur in Haus/Wohnung und RTLS-Transponder ankleben -> done ;)
Mit RTLS habe ich mich auch schon beschäftigt im Kontext, die Öffnung der Haustür zu automatisieren. Unterm Strich bin ich zum Ergebnis gekommen, dass es aktuell noch nichts im Lowcost Bereich gibt, was da irgendwie gut funktioniert. Aber da schickt sich aktuell etwas an, das bald zu ermöglichen: UWB! Das hat das Potenzial!

Wie auch immer, zum ursprünglichen: Ja, meine Lösung ist sehr pragmatisch aber auch nicht sehr flexibel. Möchte ich, dass eine Ansage aus Raum A in Raum B und C läuft, würde das wohl nur noch mit einem Attribut klappen, wo ich z.B. die Raumnamen eintrage, wo die Benachrichtigung abgespielt werden soll. Schöner/einfacher wäre es, wenn ich ein eigenes Attribut anlegen könnte, dass ich identisch wie "room" verhält.

MadMax-FHEM

Zitat von: prodigy7 am 29 Januar 2023, 11:53:23
Schöner/einfacher wäre es, wenn ich ein eigenes Attribut anlegen könnte, dass ich identisch wie "room" verhält.

Du kannst doch mit userattr Attribute "anlegen" wie du willst.

Was meinst du "wie room verhält"?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

prodigy7

Zitat von: MadMax-FHEM am 29 Januar 2023, 11:58:10
Du kannst doch mit userattr Attribute "anlegen" wie du willst.

Was meinst du "wie room verhält"?
Na wenn ich ins Textfeld klicke, dass ich eine Liste der definierten Räume habe oder ein Textfeld, wo ich einen neuen Raum definieren kann. Wenn ich das richtig verstanden habe, ist room da wohl was "besonderes"?!

MadMax-FHEM

#16
Naja, Textfeld kommt ja...
Da kannst du eingeben was du willst...
Eine (feste) Liste vorgeben geht auch (dann dropDown)...
Das andere ist halt in FHEMWEB (nehme ich an) implementiert...

Aber wie oft änderst du das Attribut?
Attribute sind ja eher "statisch", also Konfiguration.

Werden mal eingerichtet und ab und an (eher selten) angepasst...
(also bei mir)

Oder änderst du deine Raum-Attribute "täglich"?

Ich nutze userattr z.B. für Vorgabe von Grenzwerten meines Luftentfeuchters oder meiner Lüftersteuerung (https://forum.fhem.de/index.php/topic,125096.msg1258400.html#msg1258400).
Abfrage dann ganz normal per AttrVal()...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

prodigy7

Ist tatsächlich schon ewig her, dass ich die original UI von FHEM verwendet habe, weiß gar nicht mehr wie es dort mit dem room-Attribut war. userattr verwende ich schon fleißig im anderen Zusammenhang. Ja, vielleicht/wahrscheinlich ist es nur mein innerer Monk, der sich an eine akademisch schöne Lösung klammert. Tatsächlich würde es mit einem useattr auch ziemlich einfach gehen.
Wenn ich die Tage dazu komme, veröffentliche ich vielleicht auch mal meine Skript-Sammlung.

Beta-User

Möglicherweise könnte "msg" iVm. einer umfangreicheren msgConfig weiterhelfen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files