tahoma - (push) Benachrichtigung wenn Windsensor ausgelöst hat

Begonnen von flipse, 04 März 2019, 14:11:06

Vorheriges Thema - Nächstes Thema

flipse

Hallo zusammen,

ich bin leider im Besitz von Somfy Raffstor Anlagen, die über meine Tahoma box gesteuert werden.
Leider ist somfy noch nicht "so open", wie sie es immer angeben zu sein.

Wir haben bei unserem Standort recht häufig starken Wind und der Windsensor von Somfy schützt dabei unsere Raffstore gut.
In der somfy App wird auch das Windsymbol angezeigt.

Leider bekommt man keine Nachrichten von somfy wenn man nicht zu Hause ist, dass auf einmal alle Rollläden auf stehen.
Das möchte ich nun über FHEM bekommen.

Gibt es eine Möglichkeit, zu erfahren in FHEM, dass die Raffstore alle durch den Windsensor hochgefahren wurden? (Der Windsensor selbst kann nicht in die TaHOMA BOX eingelernt werden, da er eigenständig sein soll, lt. somfy)

Falls man nicht direkt ein Attribut abfragen kann, gibt es die Möglichkeit, eine Benachrichtigung zu senden, wenn eine Gruppe von Raffstore allesamt nach oben gefahren sind?

Vielen Dank.

r00t2

OT aber eine Bitte: Gib dem Thread mal einen ordentlichen Titel, der klar macht, was Du möchtest und den man auch in der Suche später wieder findet.

Momentan ist es eher so, wie wenn ich einen Thread "Bremse" in einem Kfz Forum aufmache und mir daraufhin professionelle Hilfe bei meinem Problem erwarte, wie man bei meinem Oldtimer die hintere linke Trommelbremse entlüftet...

Edit: Danke für's Anpassen :)
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

flipse

#2
Ich habe eben, weil gerade der Windsensor ausgelöst hat, zumindest mal festgestellt, dass scheinbar das Reading "PriorityLockTimerState" >0 ist, wenn der Windsensor ausgelöst hat.
Denn als er bei 0 angekommen war, waren die Raffstors auch wieder in der Tahoma-App freigegeben zum Bewegen.

Also dachte ich mir, ich bastel mir einen dummy "WindsensorAktiv" und ein notify


tahoma_157437:PriorityLockTimerState:.*|tahoma_157052:PriorityLockTimerState:.*|tahoma_157373:PriorityLockTimerState:.*|tahoma_157444:PriorityLockTimerState:.*|tahoma_157497:PriorityLockTimerState:.*|tahoma_157460:PriorityLockTimerState:.*|tahoma_157317:PriorityLockTimerState:.*|tahoma_156925:PriorityLockTimerState:.*|tahoma_157436:PriorityLockTimerState:.*

setreading dummyWindsensor myLastEvent $EVENT;

IF ($EVENT > 0)
(
       set dummyWindsensor on
)
ELSE
(
        set dummyWindsensor off
)


Jetzt könnte ich zumindest schon mal das Event herausfinden.
Geht das vielleicht einfacher?




CoolTux


tahoma_\d+:PriorityLockTimerState:.*

setreading dummyWindsensor myLastEvent $EVENT;

IF ($EVENT > 0)
(
       set dummyWindsensor on
)
ELSE
(
        set dummyWindsensor off
)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

flipse

#4
Hi zusammen,
vielen Dank. Dank eurer Hilfe bin ich schon ein ganzes Stück weitergekommen.
2 Probleme habe ich noch. Vielleicht habt ihr hierfür auch Lösungen

Das ist mein Code, der mir auch eine E-Mail schickt, wenn der Windsensor auslöst
tahoma_15\d+:PriorityLockTimerState:.*

setreading dummy_Windsensor myLastEvent $EVENT;
setreading dummy_Windsensor lockTimer $EVTPART1;
setreading dummy_Windsensor [$NAME:NameState] $EVENT;

{Log 5, "Das Device $NAME hat ausgeloest, der Event sah so aus: $EVENT"};


IF ($EVTPART1 > 0)
(
       set dummy_Windsensor on,
   {SendMailWindsensor("[FHEM]: Windsensor Benachrichtigung","Auslöser: $NAME \n Event: $EVENT","$NAME")}

)
ELSE
(
        set dummy_Windsensor off,
{SendMailWindsensor("[FHEM]: Windsensor Benachrichtigung","Auslöser: $NAME \n Event: $EVENT", "$NAME")}
)


Problem 1:
setreading dummy_Windsensor [$NAME:NameState] $EVENT;
Der Name, den ich mit dem Reading erhalte, enthält Leerzeichen. Das führt zu dem Problem, dass die Codezeile nicht wirklich valide Ergebnisse liefert.
Kann ich irgendwie den Readingsname, den ich vergeben will, escapen, opder Leerzeichen durch Unterstriche ersetzen?
Es müsste glaube ich irgendetwas nach dem Schema: =~/ /_/ sein, oder?

Problem 2:
Derzeit liefert mir meine Logik 16 E-Mails, da alle Raffstore nacheinander melden, dass der Windsensor ausgelöst hat ($EVTPART1 > 0).
Ich würde das gerne konsolidieren und eine E-Mail versenden, mit allen Raffstormeldungen.
Habt ihr eine Ansatzidee für mich?

Derzeit spiele ich mit dem Gedanken, mir erstmal alle Readings in den Dummy zu holen (setreading dummy_Windsensor [$NAME:NameState] $EVENT;)
Und dann ein notify auszulösen, das alle Readings zusammen abfängt (weiß aber noch nicht genau wie).

Vielen Dank schon mal für eure Hilfe.

flipse

tahoma_15\d+:PriorityLockTimerState:.*

setreading dummy_Windsensor myLastEvent $EVENT;
setreading dummy_Windsensor lockTimer $EVTPART1;


{
my $realname = ReadingsVal($NAME, 'NameState', 'undefined');
$realname =~ s/, //;
fhem("setreading dummy_Windsensor $realname $EVENT");

};



{Log 5, "Das Device $NAME hat ausgeloest, der Event sah so aus: $EVENT"};


IF ($EVTPART1 > 0)
(
       set dummy_Windsensor on,
   {SendMailWindsensor("[FHEM]: Windsensor Benachrichtigung","Auslöser: $NAME \n Event: $EVENT","$NAME")}

)
ELSE
(
        set dummy_Windsensor off,
{SendMailWindsensor("[FHEM]: Windsensor Benachrichtigung","Auslöser: $NAME \n Event: $EVENT", "$NAME")}
)


klappt leider nicht :(

baumeister

Hallo,

ich stehe vor dem gleichen Problem. Bist du hier weiter gekommen?

Grüße
Björn