E-Mail senden bei bestimmter Temperatur?

Begonnen von DatRaspi, 17 Mai 2017, 11:32:47

Vorheriges Thema - Nächstes Thema

DatRaspi

Hallo

Ich versuche, dass ein Temperatursensor auf dem Raspberry bei unter 10°C mir eine Email sendet:
Das habe ich in der 99_myUtils.pm datei:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
   my ($hash) = @_;
}
1;

sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "xxx\@xxx.de";
my $provider = "xxx";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
Log 1, "sendEmail Anhang: $attach";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a $attach -s '$provider' -o tls=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


mit {DebianMail('xxx@xxx.de','Titel','text')}; kann ich auch eine E-Mail senden, aber ich weiß nicht wie man es einstellt das der Raspberry automatisch bei der genannten Temperatur eine E-Mail an mich sendet.

Ich habe an sowas gedacht, aber es funktioniert nicht:
define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* { if(ReadingsVal("GPIO4_DS18B20_00000636c0e6",
"temperature","") > 10) { DebianMail('xxx@xxx.de','test','hallo')};


Liebe Grüße

CoolTux

Bitte Deinen Code in Codetags stellen. Oben bei der Symbolleiste das # Zeichen


define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* {
                                    if( ReadingsVal("GPIO4_DS18B20_00000636c0e6","temperature","" ) > 10) {
                                                DebianMail('xxx@xxx.de','test','hallo');
                                    }
}
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

DatRaspi

Hallo
danke für die schnelle Antwort :)

Wie genau meinst du das mit "Oben bei der Symbolleiste das # Zeichen"?

CoolTux

Zitat von: DatRaspi am 17 Mai 2017, 11:42:25
Hallo
danke für die schnelle Antwort :)

Wie genau meinst du das mit "Oben bei der Symbolleiste das # Zeichen"?

Da siehst Du ein Symbol das so

#

aus schaut.
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

Thorsten Pferdekaemper

Hi,
es fehlt ein schließendes "}" und wahrscheinlich wäre es besser, ReadingsNum statt ReadingsVal zu nehmen.
Gruß,
   Thorsten
FUIP

CoolTux

Die schließende } hatte ich in meinem Beispiel schon repariert.
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

Thorsten Pferdekaemper

Zitat von: CoolTux am 17 Mai 2017, 12:36:30
Die schließende } hatte ich in meinem Beispiel schon repariert.
Ich habe das gesehen, aber ich vermute mal der OP nicht.
Gruß,
   Thorsten
FUIP

DatRaspi

Also ich habe es jetzt nochmal versucht mit der "}" und ReadingsNum, darauf folgte diese Fehlermeldung:

" Temperatursensor1 already defined, delete it first Unknown command if(, try help. Unknown command DebianMail('xxx@xxx.de','test','hallo'), try help. Unknown command }, try help. Unknown command }, try help. "

Falls das hilft, hier ist meine fhem.cfg:

attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd Error messages while initializing FHEM:\
configfile: Unknown command {define, try help.
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global
attr WEB editConfig 1

define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB

define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log
define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create

define Temperatursensor1 GPIO4 BUSMASTER
attr Temperatursensor1 room GPIO4
define GPIO4_DS18B20_00000636c0e6 GPIO4 28-00000636c0e6
attr GPIO4_DS18B20_00000636c0e6 model DS18B20
attr GPIO4_DS18B20_00000636c0e6 room GPIO4
define FileLog_GPIO4_DS18B20_00000636c0e6 FileLog ./log/GPIO4_DS18B20_00000636c0e6-%Y.log GPIO4_DS18B20_00000636c0e6
attr FileLog_GPIO4_DS18B20_00000636c0e6 logtype text
attr FileLog_GPIO4_DS18B20_00000636c0e6 room GPIO4
define SVG_FileLog_GPIO4_DS18B20_00000636c0e6_1 SVG FileLog_GPIO4_DS18B20_00000636c0e6:SVG_FileLog_GPIO4_DS18B20_00000636c0e6_1:CURRENT
attr SVG_FileLog_GPIO4_DS18B20_00000636c0e6_1 room GPIO4

define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* {
                                    if( ReadingsNum("GPIO4_DS18B20_00000636c0e6","temperature","" ) > 10) {
                                                DebianMail('xxx@xxx.de','test','hallo');
                                    }
}


CoolTux

Sorry aber mit fhem.cfg Editierung kenne ich mich nicht aus. Du kannst das Notify über FHEMWEB editieren/modifizieren.

Ein list vom notify bringt mir mehr
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

Otto123

ZitatTemperatursensor1 already defined
bedeutet das gerät ist schon definiert, Du kannst es nicht noch einmal definieren. Du kannst nicht zwei define Temperatursensor1 ... Befehle hintereinander absetzen. Genau das tust Du in deiner fhem.cfg Und dieser Fehler passiert nur weil Du direkt darin rumfummelst   :P

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

DatRaspi

Zitat von: CoolTux am 17 Mai 2017, 13:21:56
Sorry aber mit fhem.cfg Editierung kenne ich mich nicht aus. Du kannst das Notify über FHEMWEB editieren/modifizieren.

Ein list vom notify bringt mir mehr

Was für eine list von notify meinst du denn? und wo finde ich diese? :)

Otto123

in der Kommandozeile von FHEM (Browser) eingeben:list Temperatursensor1   ;) bzw allgemein list <DeviceName>

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

DatRaspi

Ist es denn das?
Hilft das irgendwie weiter?  :-[

nils_

Otto hat dir eigentlich schon alles gesagt.

in der von dir geposteten fhem.cfg gibt es:

define Temperatursensor1 GPIO4 BUSMASTER

und dann ein paar Zeilen  darunter nochmal

define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* {
ich hab die codetags bewusst weggelassen, damit ich die beiden sachen fett markieren konnte

das geht so nicht und führt zu dem fehler den du nun hast (weil du die fhem.cfg von hand editiert hast!)
den Fehler erstmal beseitigen!!! zB. durch umbenennen des zweiten devices


weiterhin hast du
if( ReadingsNum("GPIO4_DS18B20_00000636c0e6","temperature","" ) > 10) {
möchtest aber laut deinem eingangspost
Zitatich versuche, dass ein Temperatursensor auf dem Raspberry bei unter 10°C mir eine Email sendet:
würde bedeutet dein > muss durch < ersetzt werden.
viele Wege in FHEM es gibt!

DatRaspi

Achso danke dir, jetzt weiß ich was gemeint war  ;D werde es denn nun korrigieren