Benachrichtigung - aber nur wenn

Begonnen von 87insane, 02 Mai 2018, 11:32:38

Vorheriges Thema - Nächstes Thema

87insane

Hallo zusammen,

aktuell habe ich mir ein paar Benachrichtigungen gebaut und stehe mal wieder vor einen Problem.

Ich habe eine IT Funk-Schelle. Immer wenn diese gedrückt wird bekomme ich eine Nachricht via Push auf mein Handy.
define NachrichtKlingelK notify klingel_vorne {fhem("set p.nachrichten message Es hat vorne geklingelt! | ".strftime("%H:%M", localtime)." Uhr - Info")}

Nun möchte ich aber das diese Schelle auch dann schellt, wenn der Trockner fertig ist. Mein Problem ist hier zu unterscheiden ob wirklich jemand den Klingel Schalter gedrückt hat oder aber FHEM den Befehl zum klingeln gesendet hat.
Sonst würde ich immer eine Push bekommen "Es hat vorne geklingelt". Egal ob der Trockner fertig ist oder aber tatsächlich jemand schellt.

Ich hoffe ich habe es gut genug erklärt :-\

Danke schon mal für Euren Input!

Otto123

Hi,

prinzipiell zwei Wege:
Entweder Du hast getrennte Trigger, also der Knopf der klingel_vorne triggert ist separat erfassbar. Dann kannst Du den Trigger vom notify so anpassen, das er beim drücken vom Knopf auslöst.

Oder Du fragst in deinem Perl einfach ab ob der Trockner fertig ist und sendest Dir den keine Nachricht. Das ist nur Text, kein Code!
{if (Value(Trockner) ne fertig) {fhem("Nachricht")}
Oder so -> https://forum.fhem.de/index.php/topic,87387.msg798874.html#msg798874
Allerdings wird's schwierig wenn dann einer Klingelt wenn der Trockner fertig ist.

Man kann das beliebig komplex machen  ::)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Hi und danke schon mal....

Der Knopf / Taster an sich ist ja in FHEM hinterlegt. Kann man so etwas abfragen wie:
Wenn CUL_443MHz_RAWMSG = i000015 empfangen wird dann sende die Nachricht das es geschellt hat.
Wenn aber FHEM diesen Befehl sendet, dann keine Nachricht.

Die Klingel Taster sind in meinem FHEM seperate Geräte. Ich gehe davon aus, dass du genau das auch meintest in deinem ersten Ansatz, oder?
Der zweite Ansatz ist aus dem genanten Grund (Trockner und Schelle zu gleich) eher suboptimal.

Otto123

Zerfällt die Hardware "IT Funk-Schelle" in zwei Teile? Einen Sender (Knopf) und einen der Krach macht (klingel_vorne)?

Dann kannst Du doch im notify einfach den trigger ersetzen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Also im System (FHEM) habe ich nur den Taster (Sender).
Die Schelle (Krach-Macher) an sich habe ich nicht mit in FHEM. Diese empfängt ganz dumm einfach ihren Befehl und macht Krach.

Ich bin kein Profi bisher und finde mich noch ein. Deswegen verstehe ich ggf. auch deine Antwort nicht ganz.

Grundsätzlich (auch nicht nur für dieses Thema) wäre es interessant zu wissen ob ich Dinge "filtern" kann im Sinne von:
Wurde der Befehl durch FHEM ausgelöst? Oder kam der Befehl durch einen externen Trigger?
IF (not) schalter wurde gedrueckt/eine Frequenz xy wurde empfangen then tu dies und das
IF (not) Trigger durch FHEM then tu dies und das

Otto123

Du kannst Dinge einfach unterscheiden, wenn sie unterschiedlich sind  ;D schlauer Satz.

Schau Dir im Eventmonitor an ob der Event unterschiedlich aussieht, wenn Du ihn vom Taster empfängst oder wenn Du ihn von FHEM sendest. Ich habe kein IT Zeugs, ich kann das deshalb nicht beurteilen.
Wenn der Event unterschiedlich ist kannst Du das regEx - bei Dir ... notify klingel_vorne so gestalten, das gefiltert wird. Das ist die bevorzugte Methode.

Wenn nicht, kannst Du nur im Ausführungsteil - bei Dir {fhem("bla bla")} eine (weitere) Abfrage einbauen.
Das notify wird getrigggert wenn Taster gedrückt, dann Zusatzfrage "Ist der Trockner" fertig wenn ja tue etwas wenn nein tue etwas anderes oder nichts.

Alles verstanden? Wenn nicht weiter fragen :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: 87insane am 02 Mai 2018, 12:04:18
Grundsätzlich (auch nicht nur für dieses Thema) wäre es interessant zu wissen ob ich Dinge "filtern" kann im Sinne von:
Wurde der Befehl durch FHEM ausgelöst? Oder kam der Befehl durch einen externen Trigger?
IF (not) schalter wurde gedrueckt/eine Frequenz xy wurde empfangen then tu dies und das
IF (not) Trigger durch FHEM then tu dies und das
Neben dem guten Hinweis von Otto betr. den Event-Monitor, der den ersten Teil deiner Fragen behandelt, für den unteren Teil auch noch als Einstiegslektüre zu empfehlen: https://wiki.fhem.de/wiki/If-condition
Soweit ich mich entsinne, steht auch was entsprechendes im Einsteiger-pdf. Lohnt sich, das immer mal wieder kurz zu überliegen, es steht unglaublich viel drin ;) .

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Werd es sobald ich zuhause bin mal durch testen wenn ich das heute noch schaffe.
Denke das Checken des EventMonitors ist das sinnvollste. Kann aus der ferne den Schalter leider nicht drücken.

Denke ich habs verstanden. Würde mich hier mit einem Ergebnis oder weiteren Fragen noch mal melden....

Danke Dir!

87insane

Guten Abend zusammen,

leider bin ich nicht weiter. Meine Idee war so in die Richtung:
define TEST notify InternalVal("klingel_vorne","CUL_443MHz_MSGCNT","")...

Da ich aber (google / Forum) keine Internals als Event nehmen kann ist das auch rauß :-\
Mir ist aufgefallen, dass ich beim drücken des Schalters im MSGCNT einen höher rutsche. Dies geschieht nicht wenn durch FHEM die Klingel auf ON gesetzt wird ud läutet.
Kann man dies trotzdem irgendwie nutzen?

Alle anderen Ideen laufen zwar aber bringen immer einen Nachteil mit. Entweder der Trockner läuft und keine Push kommt an oder aber ich bekomme bei fertigem Trockner die
Info es hätte vorne geschellt usw.

define NachrichtKlingelK notify klingel_vorne:CUL_443MHz_MSGCNT:.* {fhem("set p.nachrichten message Es hat vorne geklingelt!....
So in diese Richtung hatte ich tendiert, da es übersichtlich wäre. Kann ich aus dem Internal auch ein Event generieren bzw. diesem einen Internal es erlauben?

Andere Ideen, wie immer auch willkommen!

Danke!

Beta-User

Warum fragst du nicht einfach das ReadingsAge vom Trockner ab, wenn dein Klingel-Event kommt? Ist das z.B. älter als 10 Sek., wenn das Klingelsignal ausgelöst wird: Keine Message...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

#10
Die ist genial!

# Klingel
define NachrichtKlingel notify klingel_vorne {\
    if (ReadingsAge("s_trockner", "running", 0) > 5) {\
         fhem("set p.nachrichten message Es hat vorne geklingelt! | ".strftime("%H:%M", localtime)." Uhr - Info");;\
         fhem("set p.nachrichten message Es hat vorne geklingelt! | ".strftime("%H:%M", localtime)." Uhr - Info | zweite Person");;\
    }\
}

define NachrichtTrockner notify s_trockner:running:.*off.* set klingel_vorne on


KLAPPT!
DANKE!

Dabei ist mir noch eine Idee gekommen - Die kann man nicht haben, wenn die HW unbekannt ist (lückenhafte Beschreibung meinerseits).
Die IT Klingel reagiert immer nur bei ON. Bei off, passiert einfach nix. Kann ich nicht den Trockner ein off,on setzen lassen und dann sagen, immer wenn off,on direkt nacheinander kommt, dann DING DONG?
Die Taster der Klingel reagieren immer nur mit einem ON auf dem Device.

Welche mir unbekannte Befehle gibt es da?

So was wie:
define NachrichtKlingel notify klingel_vorne:state:.*off.* && klingel_vorne:state:.*on.*....
wird vermutlich nicht gehen (ohne einen delay in irgendeiner Form.)

Was ich hier mal wieder versuche - Ich muss die ganzen Befehle und Möglichkeiten kennen lernen. Den ganzen Tag googlen ohne diese Ideen wie von dir gerade machen müde :-\

Danke!

KölnSolar

wenn Du Taster u. Klingel "entkoppelst"(Hintergedanke von Otto in Post #3) hast Du es eindeutig:
Klingeltaster -> notify auf Klingeltaster löst Klingeln u. Push-message aus
Messsteckdose -> notify löst nur Klingeln aus
Nachteil: Signal des Tasters kann verloren gehen u. je nach System ist die Klingel unangenehm zeitverzögert.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt