Hauptmenü

bekomme keine Email

Begonnen von Sonic, 16 April 2013, 17:47:27

Vorheriges Thema - Nächstes Thema

Sonic

Hallo, nachdem ich schon eine ganze Zeit lang mit diesem Code experimentiere ist mir noch immer nicht klar, warum ich keine Email erhalten, wenn die Temperatur von 24 Grad überschritten habe. Kann mir jemand helfen ?
danke




define Tempalarm_high24WZ notify thermostat:measured-temp.* { \
if ( (ReadingsVal("thermostat","measured-temp",20) > 24) && ((time - ReadingsVal("thermostat","comment",time)) > 8200) ) { \
FB_mail('test.test@@online.de' (@@online.de'),'Temperaturalarm_high24','text 123');;fhem("attr thermostat comment ".time)}}

Puschel74

Hallo,

Mail an sich funktioniert aber?
Also du kannst dir von FHEM eine Mail schicken?

Du könntest dein notify mal mit 2 oder 3 Log-Meldungen spicken um zu schauen welche Werte eingelesen werden und ob das
notify überhaupt abgefragt wird.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Sonic

Hallo Puschel74

ja, ich habe es getestet. Mailversand generell funktioniert schon.

""Du könntest dein notify mal mit 2 oder 3 Log-Meldungen spicken um zu schauen welche Werte eingelesen werden und ob das
notify überhaupt abgefragt wird.

Kannst du mir das bitte näher erklären ?
Wie kann ich das notifiy spicken, bzw. testen ?

Ich vermute das notify funktioniert nicht....

danke
gruss
KLAUS

Puschel74

Hallo,

so in der Art. Nicht schön aber reicht mir für meine Zwecke.

define Tempalarm_high24WZ notify thermostat:measured-temp.* {
  Log (3,"Notify Tempalarm");
  if ( (ReadingsVal("thermostat","measured-temp",20) > 24) && ((time - ReadingsVal("thermostat","comment",time)) > 8200) ) {
    Log (3,"Da grübel ich auch noch und würde das in Variablen schreiben und abfragen_Rudi und Co. wüssten das aus dem efef Sorry");
    FB_mail('test.test@@online.de','Temperaturalarm_high24','text 123');;fhem("attr thermostat comment ".time)
  }
}


Die zweite Logzeile kannst du beruhigt ändern.
evtl. noch irgendwo ein

Log (3,"Zeit: ".time);
wenn das so klappen würde.

Alles ungetestet und nur aus dem Kopf.
Es gibt mit Sicherheit schönere Lösungen (und auch richtige(re)).
Wie geschrieben. Ich würde mich da wieder mit Variablen abquälen aber man sieht hier überall so schöne kurze Anweisungen und
zack alles läuft.

Aber im Grunde würdest du so zumindest schonmal sehen ob das notify und die if-Bedingungen erfüllt sind.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Sonic

o.k,

ich habe es in die config eingebaut. Ich poste bald das resultat aus dem Logfile.

vielen Dank

Sonic

habe es so eingebaut.
Beim speichern die Meldung
Unknow Command IF


define Tempalarm_high21WZ notify thermostat:measured-temp.* { \
  Log (3,"Notify Tempalarm");
  if ( (ReadingsVal("thermostat","measured-temp",20) > 21) && ((time - ReadingsVal("thermostat","comment",time)) > 8200) ) { \
        FB_mail('test.test@@online.de' (@@online.de'),'Temperaturalarm_high21','text 123');;fhem("attr thermostat comment ".time)}}

Puschel74

Hallo,

ähhhhhh stop

Ich hab grad gesehen das ich die Zeilenenden nicht markiert habe.

Ich bearbeite immer die DEF des notify.
Da brauch ich mich damit nicht rumschlagen - sorry.

Wenn du das 1:1 so per copy&paste rauskopiert oder abgeschrieben hast hagelts sicher Fehlermeldungen.

define Tempalarm_high24WZ notify thermostat:measured-temp.* {\
  Log (3,"Notify Tempalarm");;\
  if ( (ReadingsVal("thermostat","measured-temp",20) > 24) && ((time - ReadingsVal("thermostat","comment",time)) > 8200) ) {\
    Log (3,"Da grübel ich auch noch und würde das in Variablen schreiben und abfragen_Rudi und Co. wüssten das aus dem efef Sorry");;\
    FB_mail('test.test@@online.de','Temperaturalarm_high24','text 123');;fhem("attr thermostat comment ".time);;\
  }\
}


So sollte es besser passen - hoffe ich.

Grüße

Edith: Und nochmal überarbeitet. die ; müssen jau auch ;;\ werden - denke ich mal.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Sonic

Hallo Puschel74,

vielen Dank für deine Hilfe.

Jetzt habe ich diese Meldung:

Unknown command if, try help Unknown command FB_mail('test.test@@online.de' (@@online.de'),'Temperaturalarm_high24','text, try help Unknown command }\ }, try help

Puschel74

Und nochmal STOP.
Beim Log muss das ;\ wieder weg.
Also nur ein ;

Jetzt aber.

Oder doch nicht?
Also die DEF bearbeiten ist für mich wesentlich einfacher *schwitz*

Edith:

Bearbeite doch einfach das DEF des notify und füge diese Zeile ein

Log (3,"Hier dein Text" );

So funktioniert es bei mir auf alle Fälle. Wenn dann noch Fehlermeldungen kommen hat dein Notify ein anderes Problemchen ;-)
Ich hab mir den Code nicht genau angeschaut sondern nur in Notepad++ in, für mich, lesbarere Form aufgeteilt und den
Log-Eintrag eingebaut.
(Und mittlerweile höchstwahrscheinlich trotzdem 1000e Fehler mit meinen Verschlimmbesserungen eingebaut.)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Sonic

Oh, ich verstehe es nicht.
Hier der Eintrag aus dem Logfile


2013.04.16 20:48:28 3: Tempalarm_high24WZ return value: Unknown command {\
, try help
2013.04.16 21:01:53 3: Tempalarm_high24WZ return value: Unknown command {\
, try help
2013.04.16 21:17:13 3: Tempalarm_high24WZ return value: Unknown command {\
, try help


hier die aktuelle Version:


define Tempalarm_high24WZ notify thermostat:measured-temp.* {\
  Log (3,"Notify Tempalarm");
  if ( (ReadingsVal("thermostat","measured-temp",20) > 24) && ((time - ReadingsVal("thermostat","comment",time)) > 8200) ) {\
    Log (3,"Da grübel ich auch noch und würde das in Variablen schreiben und abfragen_Rudi und Co. wüssten das aus dem efef Sorry");
    FB_mail('test.test@@online.de' (@@online.de'),'Temperaturalarm_high24','text 123');;fhem("attr thermostat comment ".time);
  }\
}

nach dem Log steht nur ein ;
HMM ??


Rohan

Hallo Sonic,

bitte mal testen:


define Tempalarm_high24WZ notify thermostat:measured-temp.* {\
Log (3,"Notify Tempalarm");;\
if ( (ReadingsVal("thermostat","measured-temp",20) > 24) && (time - ReadingsVal("thermostat","comment", 0)) > 8200) {\
  Log (3,"Da grübel ich auch noch");;\
  FB_mail('test.test@@online.de','Temperaturalarm_high24','text 123');;\
  fhem("attr thermostat comment ".time);;}\
}


Da waren Klammerungsfehler drin und das mit dem "attr thermostat comment" habe ich mal (ohne Gewähr, wie alles andere auch) verändert.

Möglich, dass dein ursprünglicher Code auch funktioniert hätte, aber da waren Leerzeichen/Blanks vor den "weichen" Zeilenumbrüchen ("\"). An dem Problem habe ich kürzlich auch etwas zu knacken gehabt.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Sonic

Hallo, ich habe getestet.
Ich bekomme mit dieser Version (unten angehängt)jetzt die Emails. Alles gut.
Aber der Zeitstempel funktioniert nicht.
Das heisst, ich bekomme nach jeder Messeung des FHT (ca. 15-20min) eine Email.

bitte nochmal um Hilfe.
danke
gruss
KlAUS

define Tempalarm_high24WZ notify thermostat:measured-temp.* {\
Log (3,"Notify Tempalarm");;\
if ( (ReadingsVal("thermostat","measured-temp",20) > 24) && (time - ReadingsVal("thermostat","comment", 0)) > 8200) {\
  Log (3,"Da grübel ich auch noch");;\
  FB_mail('test.test@@online.de' (@@online.de'),'Temperaturalarm_high24','text 123');;\
  fhem("attr thermostat comment ".time);;}\
}

Rohan

Hi,

ich vermute, dass liegt am "time"-Bereich deiner if-Bedingung, welche immer zutrifft, da time ja immer größer sein wird als die dort stehenden 8200 (Sekunden), denn (Zitat:) "Die Funktion time ermittelt die Zeit in Sekunden seit dem 1.1.1970, 0.00 Uhr, bis jetzt."

Also wirst du den Zweig evtl. nochmals checken müssen oder du füllst einen Dummy mit 1 sobald die 1. Mail raus ist (vorher steht der Dummy auf 0).

Edith meint: evtl. liegt das auch an: "fhem("attr thermostat comment ".time)", denn da machst du mM eine String-Concatenation (die Sekunden werden also als Zeichenkette und nicht als Zahl zugewiesen) und vergleichst dann beim nächsten Mal die *String*-Rückgabe in ReadingsVal mit einer Zahl, was immer zu Problemen führt.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Sonic

Hallo Thomas,

vielen Dank für deine Info.
Wenn ich das so richtig sehe, ist der Zeitstempel für diese Anwendung nicht geeignet.
Oder, ich muss den Wert der Sekunden so hoch setzen, wie viele Sekunden seit dem 1.1.1070 bis heute plus 4 Stunden, (ich möchte nur alle 4 Stunden eine Email bekommen).

Richtig ?

Den richtigen Wert zu errechnen ist gar nicht einfach......

danke
gruss
KLAUS

Rohan

Hi,

4 Stunden sind
60 Sekunden * 60 Minuten * 4 = 14400 Sekunden

$NewMailtime = 0;
if (time > $NewMailtime) {
  schickeMail;
   $NewMailtime = time + 14400;
}
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor