FHEM > Anfängerfragen

[halb gelöst] DebianMail: Aktuelle Zeit im Betreff mitsenden

(1/3) > >>

Tom111:
Hallo,

Ich hab schon 3 Jahre nichts mehr mit FHEM gemacht und den Raspberry einfach nur laufen lassen, alles funktioniert wie eh und jeh und immer noch mit der selben SD-Karte, bin begeistert.
Jetzt bin ich wieder mal dabei etwas aufzurüsten und da ich kein Linux oder Perl-Profi bin stoß ich hin und wieder mal auf irgendwelche (für mich) unlösbaren Probleme.

Was ich gemacht habe: Ich lasse mir beim Wechsel der IP-Adresse, diese per Mail auf mein Handy senden und auf mein XORO-Display anzeigen, klappt jetzt auch soweit sogut.
Ich würde mir gerne auch die aktuelle Zeit per Mail mitsenden lassen bzw. auf dem XORO anzeigen lassen. Ich habe jetzt jede Menge ausprobiert, aber nichts führt zum Erfolg. Kann mir da irgend jemand helfen? Danke!

Hier Mein Code:


--- Code: ---defmod myIP1 HTTPMOD https://www.wieistmeineip.de/ 30
attr myIP1 userattr reading01Name reading01Regex
attr myIP1 reading01Name IP
attr myIP1 reading01Regex (?s)Ihre IP-Adresse?.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
attr myIP1 stateFormat IP
attr myIP1 event-on-change-reading .*
attr myIP1 event-on-update-reading IP:
attr myIP1 icon it_i-net
attr myIP1 fp_Grundriss 38,562,0,,

define myIP1_Log FileLog ./log/myIP1-%Y.log myIP1
attr myIP1_Log archivedir ./log-archive/
attr myIP1_Log logtype text

# externe IP-Adresse per Mail versenden

define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1"));;}}

--- Ende Code ---

MadMax-FHEM:
Vielleicht hilft das:

https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit
(generelles bzgl. Uhrzeiten)

https://forum.fhem.de/index.php?topic=52164.0
(Datum/Uhrzeit eines Readings -> könnte ja reichen bzw. das sein was du suchst?)


--- Zitat ---Ich habe jetzt jede Menge ausprobiert, aber nichts führt zum Erfolg.

--- Ende Zitat ---
Konnte jetzt nichts entdecken wo du schon mal was mit Uhrzeit versucht hast oder ich hab's übersehen...

Anmerkung: ich würde statt Value ReadingsVal bzw. ReadingsNum nehmen, weil: Value STATE (also das INTERNAL!! abfrägt und nicht das Reading state! / und STATE kann z.B. durch stateFormat beeinflusst/verändert werden)

Noch ne Anmerkung: gratuliere, dass es schon so lange läuft! Aber: Backup-/Restore-Strategie vorhanden? Und auch getestet, dass sie tut/tun würde für den Fall dass? Und: welches System/OS? Weil evtl. kommen irgendwann Probleme bzgl. ssl/https etc. wenn das System zu alt ist...

EDIT: und da bist du dir auch sicher mit dem Doppelpunkt? attr myIP1 event-on-update-reading IP: ? Heißt das Reading tatsächlich IP: oder nur IP? Mit einem list vom Device statt DEF/Auszug aus fhem.cfg hätte man das sehen können ;)

EDIT: vermutlich doch nur IP? attr myIP1 stateFormat IP -> darum funktioniert auch Value wie du willst ;) Wenn du das mal änderst (weitere Werte/andere Darstellung willst) nicht mehr ;)

Gruß, Joachim

Tom111:

--- Zitat von: MadMax-FHEM am 17 Oktober 2021, 12:50:17 ---Vielleicht hilft das:

https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit
(generelles bzgl. Uhrzeiten)

https://forum.fhem.de/index.php?topic=52164.0
(Datum/Uhrzeit eines Readings -> könnte ja reichen bzw. das sein was du suchst?)
Konnte jetzt nichts entdecken wo du schon mal was mit Uhrzeit versucht hast oder ich hab's übersehen...

Anmerkung: ich würde statt Value ReadingsVal bzw. ReadingsNum nehmen, weil: Value STATE (also das INTERNAL!! abfrägt und nicht das Reading state! / und STATE kann z.B. durch stateFormat beeinflusst/verändert werden)

Noch ne Anmerkung: gratuliere, dass es schon so lange läuft! Aber: Backup-/Restore-Strategie vorhanden? Und auch getestet, dass sie tut/tun würde für den Fall dass? Und: welches System/OS? Weil evtl. kommen irgendwann Probleme bzgl. ssl/https etc. wenn das System zu alt ist...

EDIT: und da bist du dir auch sicher mit dem Doppelpunkt? attr myIP1 event-on-update-reading IP: ? Heißt das Reading tatsächlich IP: oder nur IP? Mit einem list vom Device statt DEF/Auszug aus fhem.cfg hätte man das sehen können ;)

EDIT: vermutlich doch nur IP? attr myIP1 stateFormat IP -> darum funktioniert auch Value wie du willst ;) Wenn du das mal änderst (weitere Werte/andere Darstellung willst) nicht mehr ;)

Gruß, Joachim

--- Ende Zitat ---

Ja, Danke für den Versuch, aber ich komme nicht weiter, ich weiß nicht wie ich was, wo anhängen muss damit mir die Zeit bei DebianMail mitgesendet wird. Ich komm keinen Schritt weiter.
Vielleicht könnte ja einer so freundlich sein wo ich was hinschreiben muss in folgendem Code:

--- Code: ---define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1"));;}}
--- Ende Code ---

Diesen Code habe ich auch nur aus mehreren Schnipseln zusammengebaut und eine ganze Zeit dran gesessen bis es funktioniert hat. Nur mit der aktuellen Zeit, die hier noch mitgesendet werden muss komm ich ganz einfach nicht weiter!

Gruß
Tom

MadMax-FHEM:
Mal angenommen das funktioniert:


--- Zitat ---define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1"));;}}

--- Ende Zitat ---

Dann einfach z.B. Uhrzeit/Datum des IP-Readings mitsenden:


--- Code: ---define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1").' DatumUhrzeit: '.ReadingsTimestamp("myIP1","IP","00:00:00"));;}}

--- Ende Code ---

Wobei wie geschrieben wäre etwas mehr Info schon auch nett.
Z.B. an welche Stelle beim Senden denn der Betreff gehört.
EDIT: laut Wiki wohl eher da wo du jetzt IP stehen hast? Dann halt den Code dort hin...
Ein list des Devices auf welches dein notify wirkt/wirken soll, damit man eben sehen kann welches Reading man abfragen könnte sollte...
...daher habe ich einfach mal das Reading "IP" genommen, in der Annahme, dass das Reading so heißt und auch der Zeitstempel da passt...

Ansonsten halt an diese Stelle einfach eine der Uhrzeit-/Datumfunktionen aus dem Wiki-Link nehmen, falls die Readingzeit nicht passt/gefällt...

Anmerkungen (teilweise nochmal):

ReadingsVal / ReadingsNum statt Value

Die Abfrage von/mittels Oldreading ist unnötig, wenn event-on-change-reading genutzt würde...

Bessere/"schärfere" Regex beim notify, weil aktuell triggert das notify auf ALLES was von myIP1 kommt...

Gruß, Joachim

Tom111:

--- Zitat von: MadMax-FHEM am 17 Oktober 2021, 19:00:38 ---Mal angenommen das funktioniert:

Dann einfach z.B. Uhrzeit/Datum des IP-Readings mitsenden:


--- Code: ---define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1").' DatumUhrzeit:'.'ReadingsTimestamp("myIP1","IP","00:00:00"));;}}

--- Ende Code ---

Wobei wie geschrieben wäre etwas mehr Info schon auch nett.
Z.B. an welche Stelle beim Senden denn der Betreff gehört.
EDIT: laut Wiki wohl eher da wo du jetzt IP stehen hast? Dann halt den Code dort hin...
Ein list des Devices auf welches dein notify wirkt/wirken soll, damit man eben sehen kann welches Reading man abfragen könnte sollte...
...daher habe ich einfach mal das Reading "IP" genommen, in der Annahme, dass das Reading so heißt und auch der Zeitstempel da passt...

Ansonsten halt an diese Stelle einfach eine der Uhrzeit-/Datumfunktionen aus dem Wiki-Link nehmen, falls die Readingzeit nicht passt/gefällt...

Anmerkungen (teilweise nochmal):

ReadingsVal / ReadingsNum statt Value

Die Abfrage von/mittels Oldreading ist unnötig, wenn event-on-change-reading genutzt würde...

Bessere/"schärfere" Regex beim notify, weil aktuell triggert das notify auf ALLES was von myIP1 kommt...

Gruß, Joachim

--- Ende Zitat ---

Hallo Joachim,

danke für deine Hilfe,
zuerst einmal, JA, das funktioniert einwandfrei:

--- Zitat ---define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1"));;}}
--- Ende Zitat ---

und bevor ich sonst irgendwas ändere, würde ich gerne die Zeit mitsenden lassen bevor ich beginn Schönheitsreparaturen vorzunehmen.
Immerhinn muss ich für jede Änderung die Konfiguration neu einlesen bzw. FHEM neu laden und dann auch noch immer die IP Adresse ändern, das ist mir im Moment einfach zu viel, ich hoffe du verstehst das!?
Ich habe mal deine Version getestet und sie funktioniert so leider nicht.

--- Zitat ---define MAIL_myIP notify myIP1 {if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1").' DatumUhrzeit:'.'ReadingsTimestamp("myIP1","IP","00:00:00"));;}}

--- Ende Zitat ---

Folgende Fehlermeldung läuft dann im LOG auf:

--- Zitat ---2021.10.17 19:24:09 1: ERROR evaluating my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{if (ReadingsVal("myIP1","reading01Regex","IP:") ne OldValue("myIP1")) {DebianMail('xxxxx@gmail.com','IP-Adresse '.Value("myIP1"),'IP-Adresse hat sich geändert! Aktuelle IP: '.Value("myIP1").' DatumUhrzeit:'.'ReadingsTimestamp("myIP1","IP:","00:00:00"));}}: Can't find string terminator "'" anywhere before EOF at (eval 398) line 1.

2021.10.17 19:24:09 3: MAIL_myIP return value: Can't find string terminator "'" anywhere before EOF at (eval 398) line 1.
--- Ende Zitat ---

Danke nochmals für deine Bemühungen, ich seh schon, das wird etwas länger dauern bis ich das hinbekomme!

Gruß
Tom

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln