Timestamp per eMail mitschicken

Begonnen von Guest, 20 Juni 2012, 22:26:09

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo,
ich habe folgendes at definiert:
define check_greenhouse at +*00:30:00 { if($value{th_greenhouse} le "T:
20.0") {system("/sbin/mailer -s 'Greenhouse COLD: $value{th_greenhouse}'
")} }
Das klappt soweit auch ganz gut. Nun möchte ich, da die S300TH nicht immer
so gut sendet, den Timestamp mitsendet. Allerdings kriege ich es nicht so
ganz hin.
Ich habe { ReadingsTimestamp(th_greenhouse, temperature, 0)} hinter dem
Teil mit $value gehängt, allerdings kriege ich in der eMail dann auch das
ganze in den {} klammern so gesendet.
Was mache ich falsch?
Und wenn wir schon dabei sind, gibt es einen Weg, damit ich nur eine eMail
kriege wenn der Wert unterschritten wird, und nicht jede 30Min eine?
Und eine letzte Frage, momentan wird alles im Betreff der eMail gesendet,
kann ich auch einen Teil, insbesondere den Timestamp auch im eigentlichen
Textteil der eMail schicken?
Danke

Samuel

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Das klappt soweit auch ganz gut. Nun möchte ich, da die S300TH nicht immer
> so gut sendet, den Timestamp mitsendet. Allerdings kriege ich es nicht so
> ganz hin.

(code jeweils ungetestet)

define mailSent dummy
define check_greenhouse at +*00:30:00 {\
  if(Value("th_greenhouse") le "T: 20.0" && \
     Value("mailSent") ne "true") {\
    my $v = Value("th_greenhouse");;\
    my $t = ReadingsTimestamp("th_greenhouse","temperature",0);;\
    system("/sbin/mailer -s 'Greenhouse COLD: $v at $t'");;\
    fhem("set mailSent true");;\\
  }\
}

Zuruecksetzen mit
set mailSent false

- bitte statt $value{} lieber Value("Wert") verwenden,
  $value koennte in der Zukunft verschwinden.
- ReadingsTimestamp (oder beliebige andere Funktionen) werden _in_ einem Perl
  String nicht aufgerufen, $variablen werden dagegen ersetzt (solange der
  String mit "" definiert ist, und nicht mit '')
- Man koennte sich ReadingTimestamp sparen, falls die Loesung ueber ein notify
  und nicht ueber at laufen wurde. Die Nachricht wuerde auch eher
  eintreffen.

define check_greenhouse notify th_greenhouse:T:.* {\
  if(%EVTPART1 < 20.0 && Value("mailSent") ne "true") {\
    system("/sbin/mailer -s 'Greenhouse COLD: %EVTPART1'");;\
    fhem("set mailSent true");;\\
  }\
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Danke schonmal!
Leider kriege ich beim at folgendes als Rückmeldung im Log:
syntax error at (eval 215) line 1, at EOF

Notify konnte ich noch nicht testen, da der S300TH momentan sehr sporadisch
sendet.

Kannst du mir den Code von Notify erklären, ich verstehe ihn nicht 100% und
die Seite mit den definitions hilft mir auch nicht wirklich. Dann schaff
ich sowas nächstes mal vielleicht sogar selber! ;)

Danke

Am Donnerstag, 21. Juni 2012 08:45:36 UTC+2 schrieb Rudolf Koenig:
>
> > Das klappt soweit auch ganz gut. Nun m�chte ich, da die S300TH nicht
> immer
> > so gut sendet, den Timestamp mitsendet. Allerdings kriege ich es nicht
> so
> > ganz hin.
>
> (code jeweils ungetestet)
>
> define mailSent dummy
> define check_greenhouse at +*00:30:00 {\
>   if(Value("th_greenhouse") le "T: 20.0" && \
>      Value("mailSent") ne "true") {\
>     my $v = Value("th_greenhouse");;\
>     my $t = ReadingsTimestamp("th_greenhouse","temperature",0);;\
>     system("/sbin/mailer -s 'Greenhouse COLD: $v at $t'");;\
>     fhem("set mailSent true");;\\
>   }\
> }
>
> Zuruecksetzen mit
> set mailSent false
>
> - bitte statt $value{} lieber Value("Wert") verwenden,
>   $value koennte in der Zukunft verschwinden.
> - ReadingsTimestamp (oder beliebige andere Funktionen) werden _in_ einem
> Perl
>   String nicht aufgerufen, $variablen werden dagegen ersetzt (solange der
>   String mit "" definiert ist, und nicht mit '')
> - Man koennte sich ReadingTimestamp sparen, falls die Loesung ueber ein
> notify
>   und nicht ueber at laufen wurde. Die Nachricht wuerde auch eher
>   eintreffen.
>
> define check_greenhouse notify th_greenhouse:T:.* {\
>   if(%EVTPART1 < 20.0 && Value("mailSent") ne "true") {\
>     system("/sbin/mailer -s 'Greenhouse COLD: %EVTPART1'");;\
>     fhem("set mailSent true");;\\
>   }\
> }
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Nachtrag: Das notify hat doch reagiert:
check_greenhouse_n return value: syntax error at (eval 254) line 1, at EOF

Leider verstehe ich die beiden Fehlermeldungen nicht...

Am Donnerstag, 21. Juni 2012 15:08:02 UTC+2 schrieb Samuel:
>
> Danke schonmal!
> Leider kriege ich beim at folgendes als Rückmeldung im Log:
> syntax error at (eval 215) line 1, at EOF
>
> Notify konnte ich noch nicht testen, da der S300TH momentan sehr
> sporadisch sendet.
>
> Kannst du mir den Code von Notify erklären, ich verstehe ihn nicht 100%
> und die Seite mit den definitions hilft mir auch nicht wirklich. Dann
> schaff ich sowas nächstes mal vielleicht sogar selber! ;)
>
> Danke
>
> Am Donnerstag, 21. Juni 2012 08:45:36 UTC+2 schrieb Rudolf Koenig:
>>
>> > Das klappt soweit auch ganz gut. Nun m�chte ich, da die S300TH nicht
>> immer
>> > so gut sendet, den Timestamp mitsendet. Allerdings kriege ich es nicht
>> so
>> > ganz hin.
>>
>> (code jeweils ungetestet)
>>
>> define mailSent dummy
>> define check_greenhouse at +*00:30:00 {\
>>   if(Value("th_greenhouse") le "T: 20.0" && \
>>      Value("mailSent") ne "true") {\
>>     my $v = Value("th_greenhouse");;\
>>     my $t = ReadingsTimestamp("th_greenhouse","temperature",0);;\
>>     system("/sbin/mailer -s 'Greenhouse COLD: $v at $t'");;\
>>     fhem("set mailSent true");;\\
>>   }\
>> }
>>
>> Zuruecksetzen mit
>> set mailSent false
>>
>> - bitte statt $value{} lieber Value("Wert") verwenden,
>>   $value koennte in der Zukunft verschwinden.
>> - ReadingsTimestamp (oder beliebige andere Funktionen) werden _in_ einem
>> Perl
>>   String nicht aufgerufen, $variablen werden dagegen ersetzt (solange der
>>   String mit "" definiert ist, und nicht mit '')
>> - Man koennte sich ReadingTimestamp sparen, falls die Loesung ueber ein
>> notify
>>   und nicht ueber at laufen wurde. Die Nachricht wuerde auch eher
>>   eintreffen.
>>
>> define check_greenhouse notify th_greenhouse:T:.* {\
>>   if(%EVTPART1 < 20.0 && Value("mailSent") ne "true") {\
>>     system("/sbin/mailer -s 'Greenhouse COLD: %EVTPART1'");;\
>>     fhem("set mailSent true");;\\
>>   }\
>> }
>>
>>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Donnerstag, 21. Juni 2012 15:08:02 UTC+2 schrieb Samuel:
>
> Kannst du mir den Code von Notify erklären, ich verstehe ihn nicht 100%
>>
>>
>>
Hi,
hast Du schon gelesen
- http://fhem.de/Heimautomatisierung-mit-fhem-V2.pdf - darin gibt's auch
nen Abschnitt zu notify
- http://fhem.de/commandref.html#perl - da steht zB die Beschreibung zu
ReadingsTimestamp()
- und dann noch perl Operatoren googeln, um die Bedutung von && , ne, le zu
verstehen
Damit müsstest Du das verstehen können.

Wenn Du's dennoch nicht hinbekommst
- bitte spezifisch fragen, welchen Teil des codes Du nicht verstehst
- ggf. Deinen code als echte Kopie aus Deiner fhem.cfg hier posten,
wahrscheinlich fehlt irgendwo ne Klammer oder so, das kann man aber so
nicht sehen, also ist Helfen schwierig

Viel Erfolg!

Gruß, Uli

 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Ok, tut mir leid.
Ich habe sowohl die PDF schon gelesen, ist zwar schon ne weile her, habe
sie aber grad nochmal durchgeschaut, die Erklärung zum Notify ist dort
schon besser als in den definitions, finde ich.
Den Teil über Perl habe ich bereits gelesen, aber da steht nicht so viel zu
ReadingsTimestamp (von da habe ich auch meinen Teil des Codes übernommen)
Perl Operatoren habe ich mir auch schon angeschaut, verwende sie auch in
einigen Bereichen, dass verstehe ich also auch.

Im notify verstehe ich aber vokalem dieses %EVTPART1 nicht.

Hier mein at:

define check_greenhouse at +*00:30:00 {\
  if(Value("th_greenhouse") le "T: 20.0" && \
     Value("mailSent") ne "true") {\
    my $v = Value("th_greenhouse");;\
    my $t = ReadingsTimestamp("th_greenhouse","temperature",0);;\
    system("/sbin/mailer -s 'Greenhouse COLD: $v at $t'");;\
    fhem("set mailSent true");;\\
  }\
}

Ich habe es zeitweise auf 40° gestellt, damit es auf jeden fall auslöst.

Und noch mein notify:

define check_greenhouse_n notify th_greenhouse:T:.* {\
  if(%EVTPART1 < 40.0 && Value("mailSent") ne "true") {\
    system("/sbin/mailer -s 'Greenhouse COLD: %EVTPART1'");;\
    fhem("set mailSent true");;\\
  }\
}


Ich kann auch mal die komplette fhem.cfg als Datei anhängen wenn das hilft?

Danke für eure Hilfe!

Viele Grüße
Samuel


Am Donnerstag, 21. Juni 2012 19:17:25 UTC+2 schrieb UliM:
>
>
>
> Am Donnerstag, 21. Juni 2012 15:08:02 UTC+2 schrieb Samuel:
>>
>> Kannst du mir den Code von Notify erklären, ich verstehe ihn nicht 100%
>>>
>>>
>>>
> Hi,
> hast Du schon gelesen
> - http://fhem.de/Heimautomatisierung-mit-fhem-V2.pdf - darin gibt's auch
> nen Abschnitt zu notify
> - http://fhem.de/commandref.html#perl - da steht zB die Beschreibung zu
> ReadingsTimestamp()
> - und dann noch perl Operatoren googeln, um die Bedutung von && , ne, le
> zu verstehen
> Damit müsstest Du das verstehen können.
>
> Wenn Du's dennoch nicht hinbekommst
> - bitte spezifisch fragen, welchen Teil des codes Du nicht verstehst
> - ggf. Deinen code als echte Kopie aus Deiner fhem.cfg hier posten,
> wahrscheinlich fehlt irgendwo ne Klammer oder so, das kann man aber so
> nicht sehen, also ist Helfen schwierig
>
> Viel Erfolg!
>
> Gruß, Uli
>
>  
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Donnerstag, 21. Juni 2012 19:54:17 UTC+2 schrieb Samuel:
>
> Ok, tut mir leid.

No prob :)
 

> Im notify verstehe ich aber vokalem dieses %EVTPART1 nicht.
>
> %EVTPART zerteilt den auslösenden event, der in Deinem Fall laut
notify-Definition th_greenhouse:T:.* lautet, an den Leerstellen und
speichert die Teile in %EVTPART1, %EVTPART2 usw.
Wenn Du damit testen willst, kannst Du ja mal eine Zeiole einfügen wie
Log 1, "Event-Part1 ist $ECTPART1";;



Hier mein at:
>
> define check_greenhouse at +*00:30:00 {\
>   if(Value("th_greenhouse") le "T: 20.0" && \
>      Value("mailSent") ne "true") {\
>     my $v = Value("th_greenhouse");;\
>     my $t = ReadingsTimestamp("th_greenhouse","temperature",0);;\
>     system("/sbin/mailer -s 'Greenhouse COLD: $v at $t'");;\
>     fhem("set mailSent true");;\\
>   }\
> }
>
> Ich habe es zeitweise auf 40° gestellt, damit es auf jeden fall auslöst.
>
> Und es erzeugt die o.g. Fehler im Log?
Die Fehlermeldung oben sagt
- syntax error - meist falsch gesetzte/verschachtelte Paare von runden und
geschweiften Klammern oder einfachen und doppelten Anführungszeichen, auch
einfache statt doppelter Semikola werden da gern genommen
- at EOF - am Ende der Datei - da fehlt meist eine schließende Klammer
irgendwo im code oder es ist fehlerhaft geschachtelt (siehe erster Punkt).
Am Ende der 'Datei' -also Deines codes- sucht perl immer noch nach der
schließenden Klammer o.ä. und bringt dann diese Meldung

Das Einzige was mir oben auffällt ist der doppelte backslash am Ende der
drittletzten Zeile.
kürz Deinen code doch mal nach und nach zusammen, bis was funzt. Und dann
Schritt für Schritt wieder erweitern.

 

> Und noch mein notify:
>
> define check_greenhouse_n notify th_greenhouse:T:.* {\
>   if(%EVTPART1 < 40.0 && Value("mailSent") ne "true") {\
>     system("/sbin/mailer -s 'Greenhouse COLD: %EVTPART1'");;\
>     fhem("set mailSent true");;\\
>   }\
> }
>
>  
Anmerkungen wie oben. So sehe ich aber auch keinen Fehler...
Ich hatte gelegentlich den Effekt, dass ein notify "gesponnen" hat. Selbst
wenn ich alles aus den geschweiften Klammern gelöscht hab, gab's noch nen
Fehler. Es hat dann geholfen das notify zu löschen und neu zu definieren.
Klingt komisch, is aber so :)
 

> Ich kann auch mal die komplette fhem.cfg als Datei anhängen wenn das hilft?
>
> Nee, nur selten nötig.

Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Es kann doch so einfach sein!
es waren die doppelten backslashes...
Danke, jetzt funktioniert es!

Am Donnerstag, 21. Juni 2012 20:16:44 UTC+2 schrieb UliM:
>
>
>
> Am Donnerstag, 21. Juni 2012 19:54:17 UTC+2 schrieb Samuel:
>>
>> Ok, tut mir leid.
>
> No prob :)
>  
>
>> Im notify verstehe ich aber vokalem dieses %EVTPART1 nicht.
>>
>> %EVTPART zerteilt den auslösenden event, der in Deinem Fall laut
> notify-Definition th_greenhouse:T:.* lautet, an den Leerstellen und
> speichert die Teile in %EVTPART1, %EVTPART2 usw.
> Wenn Du damit testen willst, kannst Du ja mal eine Zeiole einfügen wie
> Log 1, "Event-Part1 ist $ECTPART1";;
>
>
>
> Hier mein at:
>>
>> define check_greenhouse at +*00:30:00 {\
>>   if(Value("th_greenhouse") le "T: 20.0" && \
>>      Value("mailSent") ne "true") {\
>>     my $v = Value("th_greenhouse");;\
>>     my $t = ReadingsTimestamp("th_greenhouse","temperature",0);;\
>>     system("/sbin/mailer -s 'Greenhouse COLD: $v at $t'");;\
>>     fhem("set mailSent true");;\\
>>   }\
>> }
>>
>> Ich habe es zeitweise auf 40° gestellt, damit es auf jeden fall auslöst.
>>
>> Und es erzeugt die o.g. Fehler im Log?
> Die Fehlermeldung oben sagt
> - syntax error - meist falsch gesetzte/verschachtelte Paare von runden und
> geschweiften Klammern oder einfachen und doppelten Anführungszeichen, auch
> einfache statt doppelter Semikola werden da gern genommen
> - at EOF - am Ende der Datei - da fehlt meist eine schließende Klammer
> irgendwo im code oder es ist fehlerhaft geschachtelt (siehe erster Punkt).
> Am Ende der 'Datei' -also Deines codes- sucht perl immer noch nach der
> schließenden Klammer o.ä. und bringt dann diese Meldung
>
> Das Einzige was mir oben auffällt ist der doppelte backslash am Ende der
> drittletzten Zeile.
> kürz Deinen code doch mal nach und nach zusammen, bis was funzt. Und dann
> Schritt für Schritt wieder erweitern.
>
>  
>
>> Und noch mein notify:
>>
>> define check_greenhouse_n notify th_greenhouse:T:.* {\
>>   if(%EVTPART1 < 40.0 && Value("mailSent") ne "true") {\
>>     system("/sbin/mailer -s 'Greenhouse COLD: %EVTPART1'");;\
>>     fhem("set mailSent true");;\\
>>   }\
>> }
>>
>>  
> Anmerkungen wie oben. So sehe ich aber auch keinen Fehler...
> Ich hatte gelegentlich den Effekt, dass ein notify "gesponnen" hat. Selbst
> wenn ich alles aus den geschweiften Klammern gelöscht hab, gab's noch nen
> Fehler. Es hat dann geholfen das notify zu löschen und neu zu definieren.
> Klingt komisch, is aber so :)
>  
>
>> Ich kann auch mal die komplette fhem.cfg als Datei anhängen wenn das
>> hilft?
>>
>> Nee, nur selten nötig.
>
> Gruß, Uli
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com