eMail wird 2mal verschickt, da der Sensor 2 Events schreibt!?

Begonnen von Knallfrosch, 22 März 2015, 22:17:18

Vorheriges Thema - Nächstes Thema

Knallfrosch

Hallo,

mein System wächst und gedeiht.....damit wachsen aber auch die Probleme.

Nach einem vergeblichen Versuch sendmail einzurichten habe ich es nun über ein paar Stolperfallen mit der Anleitung von Fiedel(?) geschafft.

Nun wird mir das definierte Event per eMail gemeldet.

Soweit so gut.....es ist sogar so gut, das ich die Mail-Mitteilung 2mal bekomme.  :o

So sieht meine Mailfunktion aus:

define eMail_Funktion Schlafzimmer_Fenster_links:open {exmail('Lummerland@@gmx.de', 'FHEM Warnung', 'ACHTUNG FENSTER')}

Im Event finde ich zum Sensor folgendes:

2015-03-22 22:09:01 CUL_HM Schlafzimmer_Fenster_links battery: ok
2015-03-22 22:09:01 CUL_HM Schlafzimmer_Fenster_links contact: open (to Schlafzimmer_Thermostat)
2015-03-22 22:09:01 CUL_HM Schlafzimmer_Fenster_links open
2015-03-22 22:09:01 CUL_HM Schlafzimmer_Fenster_links trigger_cnt: 176
2015-03-22 22:09:01 CUL_HM Schlafzimmer_Thermostat_WindowRec trigLast: Schlafzimmer_Fenster_links :open
2015-03-22 22:09:01 CUL_HM Schlafzimmer_Thermostat_WindowRec trig_Schlafzimmer_Fenster_links: open
2015-03-22 22:09:02 CUL_HM Schlafzimmer_Fenster_links battery: ok
2015-03-22 22:09:02 CUL_HM Schlafzimmer_Fenster_links contact: open (to hmusb)
2015-03-22 22:09:02 CUL_HM Schlafzimmer_Fenster_links open
2015-03-22 22:09:02 CUL_HM Schlafzimmer_Fenster_links trigDst_424242: noConfig
2015-03-22 22:09:02 CUL_HM Schlafzimmer_Fenster_links trigger_cnt: 176


Also scheint der Sensor hier der Grund zu sein das der Mailversand 2mal angestossen wird.
Ist das normal oder habe ich da einen Fehler im System?

Ich empfinde es jedoch als unnormal das ich je Event zwei eMails bekomme.

Kann mir jemand helfen das zu unterbinden? ....eine Mail reicht völlig :-)

Ich habe mit der Suche zwar zwei Beiträge gefunden, aber dort gab es keine Lösung.


Wäre super wenn da jemand helfen kann.


Grüße


Deudi

Das geht halt an den Thermostat und an Fhem. Das Attribut "event-on-change .*" für das Fenster ist dein Freund.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Knallfrosch

Hallo,

irgendwie verstehe ich nicht so ganz was ich mit dem Attribut anfangen soll.

OK, es schreibt also nur echte Veränderungen aber das macht das Event doch auch, oder nicht?
Ich blicke da absolut nicht durch.

Oder muss ich dazu dann ein Dummy anlegen!?

Wäre super wenn mir das jemand "mit eigenen" Worten erklären könnte. Vllt. klappt es dann.


Grüße

Deudi

#3
Wenn du das nach 79 Posts noch nicht weisst, dann soltest du noch etwas Doku lesen.
OK, nochmal langsam:
Du gehst in der Weboberfläche zur Definition des Fensters. Unten findest du die Attribute. Aus dem Pulldown Menü wählst du "event-on-change-reading" aus, trägst rechts in Eingabefeld ".*" ein (PunktStern). Dann klickst du links auf den "attr" Button und anschliessend ganz links oben auf "save config". Jetzt solltest du nur noch eine Mail bekommen. Wenn du noch nicht verstanden hast, warum das jetzt so ist, liess mehr Doku.  ;)
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Knallfrosch

Zitat von: Knallfrosch am 23 März 2015, 09:38:27
Hallo,

danke für deine Erklärung.
Wie ich ein bzw. dieses Attribut setze ist mir schon klar, aber danke für die sehr ausführliche Erklärung. Vielleicht hilft es ja jemand anderem an dieser Stelle.

Aber nein, mir ging es um das Attribut selbst, welches ich nicht verstehe.

Und danke auf den Verweis zur Doku......aber du kannst dir sicher sein das ich sehr viel lese, aber manchmal hackt es trotzdem, womöglich an Stellen die für andere "Kinderkram" sind.....aber sei es drum, hier im Forum herrscht manchmal ein gewöhnungsbedürftiger Ton.  ???

Aber vielleicht kommt mir ja noch ein Geistesblitz zu dem Attribut....bei manch anderen hat es auch plötzlich klick gemacht.  :)


Danke nochmal.

Grüße

marvin78

Wenn du viel gelesen hast und dir auch die commandref Attribute event-on.* genau angesehen hast, sollte deine Frage eigentlich beantwortet sein. Sonst hapert es vermutlich ein wenig am Verstehen. Was erstmal nicht schlimm ist.

Die Attribute helfen dir, Events zu filtern. Ein Fenster Kontakt sendet bei jedem Öffnen ein Event. Hier bei dir scheint es so zu sein, dass er zwei mal innerhalb einer Sekunde open sendet (an ein gepeertes Device und an die Zentrale - warum auch immer das so ist!?). Da sich der Wert dazwischen aber nicht ändert (state bleibt open), kann dir event-on-change-reading bei deinem Problem helfen. Setzt du das Attribut so:

attr DEVICE event-on-change-reading state

wird auch, wenn 2 mal kurz hintereinander open gesendet wird, nur EIN Event generiert und du bekommst durch dein notify nur eine E-Mail. Das funktioniert, weil event-on.* eben Events filtert.

FHEMAN

Hallo,

ich würde tippen, event-on-change-reading .* feuert trotzdem zwei Mal.
Du könntest das contact: open (to hmusb) auswerten, bspw:
define eMail_Funktion Schlafzimmer_Fenster_links:contact:.open.*hmusb.* {exmail('Lummerland@@gmx.de', 'FHEM Warnung', 'ACHTUNG FENSTER')}

NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Deudi

- Erklärung wieder gelöscht - Marvin war schneller  ;)

Noch ein Satz zu den Events, für den Fall, dass dir das noch nicht ganz klar ist.
Wenn du den Eventmonitor aufrufst, sieht du - is klar - alle Events. Ein Event wird normalerweise immer generiert, wenn irgendein Gerät ein Update schickt und ein Reading sich dadurch ändert. Mit steigender Anzahl Geräten rauscht da irre viel Zeug durch. Nun wird jede Zeile, die hier auftaucht, gegen jedes Notify getestet, ob es nicht ausgeführt werden muss. Das kann ne ganze Menge Last erzeugen. Setzt man nun genanntes Attribut, kann man die Anzahl der Events erheblich reduzieren, das System entlasten und doppelte Trigger vermeiden. Ich habe auch eine ganze Zeit gebraucht, bis ich gelernt habe die verschiedenen Attribute, Regexp und Notifys geschickt einzusetzen, um unnötige Aktionen zu vermeiden.

Am besten ist es, mit den Attributen (event-on... und z.B. auch event-min-interval) mit einem Gerät mal ne halbe Stunde rumzuspielen, dann fängt man langsam an insbesondere die Auswirkungen von Kombinationen der Attribute zu verstehen (hat auch Auswirkungen auf Plots!).

Grüße Deudi
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Knallfrosch

Zitat von: marvin78 am 23 März 2015, 09:47:45
Sonst hapert es vermutlich ein wenig am Verstehen. Was erstmal nicht schlimm ist.

Ne, ich stehe auch dazu :-)


Es wird zwar langsam etwas klarer, aber es ist noch viel zu trüb damit ich sagen kann: "ich habe es".

Denn wenn ich den Eventmonitor anschaue kommt bei Fenster AUF folgendes:

2015-03-23 09:58:24 CUL_HM Schlafzimmer_Fenster_links contact: open (to Schlafzimmer_Thermostat)
2015-03-23 09:58:24 CUL_HM Schlafzimmer_Fenster_links open
2015-03-23 09:58:24 CUL_HM Schlafzimmer_Fenster_links trigger_cnt: 180
2015-03-23 09:58:24 CUL_HM Schlafzimmer_Thermostat_WindowRec trigLast: Schlafzimmer_Fenster_links :open
2015-03-23 09:58:24 CUL_HM Schlafzimmer_Thermostat_WindowRec trig_Schlafzimmer_Fenster_links: open
2015-03-23 09:58:24 CUL_HM Schlafzimmer_Fenster_links contact: open (to hmusb)


d.h. das Event Battery OK kommt nicht mehr mit.....OK, da hat sich ja auch nix geändert, also OK.
Aber das "open"-Event wird trotzdem zweimal ausgegeben.

ABER ABER, jetzt kommt nur noch eine eMail......... warum werden also zwei Events ausgegeben aber nur eine Mail verschickt?
Hab wohl mehr als ein Brett vorm Kopf.  :-\


marvin78

Wie hast du das Attribut denn nun gesetzt?

attr DEVICE event-on-change-reading state

oder

attr DEVICE event-on-change-reading .*

?

Wenn du den Batterie-Status auch mitbekommen möchtest, wäre die beste Variante für dich wohl

attr DEVICE event-on-change-reading state,battery

Knallfrosch

Zitat von: derron am 23 März 2015, 09:57:27
Hallo,

ich würde tippen, event-on-change-reading .* feuert trotzdem zwei Mal.
Du könntest das contact: open (to hmusb) auswerten, bspw:
define eMail_Funktion Schlafzimmer_Fenster_links:contact:.open.*hmusb.* {exmail('Lummerland@@gmx.de', 'FHEM Warnung', 'ACHTUNG FENSTER')}

JA, genau!
Im Eventmonitor stehen zwei Einträge nach wie vor.

Danke für den Schnipsel.
Ich hatte folgendes gestern versucht, allerdings ohne Erfolg.

define eMail_Funktion Schlafzimmer_Fenster_links contact: open  {exmail('Lummerland@@gmx.de', 'FHEM Warnung', 'ACHTUNG FENSTER')}
[/quote]
Das lag dann einfach am Fehler im <EVENT>


OHA, komme gerade ins schwitzen und kaum mit dem tippen nach.  VIELEN DANK FÜR EURE FLINKE HILFE!

ich habe attr ".*" gesetzt
mit attr "state" steht im Event-Monitor nur noch:

2015-03-23 10:08:26 CUL_HM Schlafzimmer_Fenster_links open
2015-03-23 10:08:26 CUL_HM Schlafzimmer_Thermostat_WindowRec trigLast: Schlafzimmer_Fenster_links :open
2015-03-23 10:08:26 CUL_HM Schlafzimmer_Thermostat_WindowRec trig_Schlafzimmer_Fenster_links: open


und auch eine Mail wird verschickt.


Die Reduktion der Events und Logeinträge habe ich bisher total vernachlässigt, auch wenn hier und da zu lesen ist das FHEM "langsamer" wird.
Ich werde mich da aber wohl reinhängen müssen......denn der Event-Monitor ist nach kürzester Zeit schon vollgeschrieben.







FHEMAN

Ich finde den Hinweis von Deudi interessat und optimiere auch gerade.
Darf ich auch mal eine Beispielfrage "zwischenstellen"?
Ein Gerät (hier Sysmon) liefert ein Reading power_battery_stat mit mehreren Werten:
power_battery_stat: 1 1 4.807 264 100
Ich möchte ein Notify, das darauf reagiert, wenn sich der 1. und/oder 5. (letzte) Wert ändern. Geht das überhaupt, oder muss ich das (vermutlich unperformant) per Code erledigen?
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

marvin78

Ich würde das mit userReading lösen und dafür das Reading zerlegen.