Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

Temperaturüberwachung mit eMailfunktion aber Problem mit C

Projekt aus Elektor 2007
Antworten
  • Druckansicht
Erweiterte Suche
6 Beiträge • Seite 1 von 1
hagbart

Temperaturüberwachung mit eMailfunktion aber Problem mit C

  • Zitieren

Beitrag von hagbart » 07.12.2006, 17:34:29

Hallo Leutz,

ich habe folgende konfiguration.
1.40IB
SD 128MB
Kty81-110 an AN5 und AN6

Nun möchte ich folgendes realisieren.

Und zwar wenn einer der Sensoren einen Temperaturwert größer 35°C erreicht, soll eine eMail versendet werden.

Wie kann ich dieses Problem lösen?

Und sind meine Gedanken richtig? Ich kann dieses Problem nicht über die Index.asp abarbeiten, denn dafür müsste ja die index.asp immer in einem Browser laufen und ständig aktualisiert werden.

Vielen Dank für eure Hilfe schon einmal im Voraus. Mirko
Zuletzt geändert von hagbart am 08.01.2007, 08:57:31, insgesamt 2-mal geändert.
Nach oben

Elektrikser
Beiträge: 34
Registriert: 29.11.2005, 15:20:31

  • Zitieren

Beitrag von Elektrikser » 12.12.2006, 23:48:02

Hallo,
deine Gedanken sind richtig. du brauchst mehr dazu.
Du musst schon im Programm des Webservers sagen, dass er bei einer bestimmten Temp. die gespeicherte Email an eine bestimmte Adresse schicken soll. In der Index.asp löst du ja nur die EMail manuell aus.

Gruß Gerd (Elektrikser)
Nach oben

hagbart

  • Zitieren

Beitrag von hagbart » 13.12.2006, 22:20:22

Danke ersteinmal für die Antwort.

Habe mich etwas durch Programm gekämpft und eine Schleife in der main.c gefunden, wovon ich nähere Informationen bräuchte.

Code: Alles auswählen

if(Mail_Trigger_Enable)
			{
		    	if (mail_state == 0)  // momentan kein versand getriggert
		        { 
		 	      if (vars.type_int[MAILFLAGS_ADDR] != 0) 
			      {
				    cli();
			   	    printf("MailTrigger\n");
				    sendmail(packet, 0);
				    sei();
				    mail_state = 1;
			      }
		       } else     // versand wurde getriggert
		       {
			    if (vars.type_int[MAILFLAGS_ADDR] == 0) mail_state = 0;
		       }
			}   
Mich würde interesieren wie und wo werden die BITs für die Mails gesetz. Ich weis das wenn bit 0 gesetzt wird dann wird mail00.txt verschickt und wenn bit 1 gesetzt ist, wird mail01.txt verschickt.

Aber wo lege ich die Bits fest in der obrigen MAILFLAGS_ADDR Variable oder der unteren??

Danke schonmal im Vorraus Mirko[/code]
Nach oben

Elektrikser
Beiträge: 34
Registriert: 29.11.2005, 15:20:31

  • Zitieren

Beitrag von Elektrikser » 17.12.2006, 00:36:03

Hallo,

deine Frage verstehe ich nicht ganz. Die Variable ist doch oben und unten die gleiche... :?:
Die If-Abfrage macht folgendes:

Wenn gerade keine Email versendet wird und MAILFLAGS_ADDR nicht null ist, werden die Interruppts gesperrt. Dann erfolgt die Ausgabe und der Emailversand. Danach werden die Interrupts wieder eingeschaltet. Der Status wird auf eins gesetzt.

Ansonsten wird bei MAILFLAGS_ADDR==0 der Status auf null gesetzt.

Ich habe die Funktion bei mir nicht drin, da der Webserver bei mir an einem internen Netzwerk hängt. Ich schaue mir aber das Programm nochmal genauer an. Mir fehlen da noch ein paar Infos...

Gruß Gerd (Elektrikser)
Nach oben

hagbart

  • Zitieren

Beitrag von hagbart » 17.12.2006, 13:29:08

Danke für die Hilfe,

das was ich eigentlich nur Wissen möchte,
wo muss man die Schleife einfügen, um eine Mail zuversenden, wenn AN5 ODER AN6 einen zulässigen Temeperaturwert überschreitet.

Ich bin auf die Zeile nach einem Tip von Ingo im http://www.microsps.com Forum gestossen. Komme aber leider nicht weiter.

Hier mal die Antwort von Ingo

Code: Alles auswählen

Hallo Mirko,

im Programm gibt es eine Variable (vars.type_int[MAILFLAGS_ADDR]). Wenn du z.B. Bit0 setzt, dann wird EMail Nr. 0 verschickt, Bit1 verschickt EMail Nr. 1 usw.

Also musst du eigentlich "nur", im der main() deine Temperatur vergleichen und bei Überschreiten das entsprechende Bit setzen. Dann sollte die EMail raus gehen.
Du solltest natürlich verhindern, dass du nicht 1000 Mails direkt nacheinander verschickst, solange der Temperatur überschritten ist ;)

Gruß,
Ingo.
Danke für die Hilfe Mirko
Nach oben

hagbart

Quellcode für Mailanweisung

  • Zitieren

Beitrag von hagbart » 10.01.2007, 18:04:26

Hallo zusammen,

für die es interessiert hier meine Lösung für mein angeregtes Problem mit dem Temperaturgetriggerten Mailversand.

Könnte man zwar besser machen aber der Server läuft seit gut 1,5Tagen stabil und alles ist im grünen Bereich.

Was noch zutun wäre wo ich schon verzweifelt bin ist:

Eine Variable für die Maximale Temperatur einbauen die via SD geändert werden kann.
Zwei weitere Variablen für die Delayzeit die ebenfalls via SD konfiguriert werden.
Habe ich das Problem das beim einscchalten des Server die ganze Mailroutine einmal durchlaufen wird und eine Mail sendet. Kann man das ihrendwie abstellen?

Code: Alles auswählen


if (CheckDelay_sec(MAIL_Timer2))
			{	
				struct time current_time;								
				gettime(ActualTime, &current_time);						
				printf("Serverzeit: %d:%d:%d Klima(KTY1):%.2d GradCelsius -- Raum(KTY2):%.2d GradCelsius\n\r", current_time.hour, current_time.minute, current_time.second, KTY1, KTY2);
				MAIL_Timer2 = SetDelay_sec(60);							// Delayzeit für Temp. Ausgabe und Überprüfung
					
					if ((CheckDelay_min2(MAIL_Timer)) && (Mail_Trigger_Enable) && ((KTY1 >= 25) || (KTY2 >= 25)))		//25 ist die Maximale Raumtemperatur 
					{ 
						printf("---BIN HIER #1---\n\r");
						mail_state = 0;	
					}
						if (mail_state == 0)							// versand wird mit 0 getriggert
						{ printf("----BIN HIER #2----\n\r");
						if (vars.type_int[MAILFLAGS_ADDR] != 1) 
						{
							printf("MailTrigger ---AKTIV---\n\r");
							MAIL_Timer = SetDelay_min2(60); // Mailintervall (häufigkeit der Mails bei erreichen der MAX Temperatur
							cli();
							sendmail(packet, 0);
							sei();
							mail_state = 1;
							
						}
						} 					
			}
Mfg Mirko
Wenn ihr mehr Wissen wollt sag es mir, ich werde dann einen richtig ausfühlichen Post erstellen
[/code]
Nach oben

Antworten
  • Druckansicht

6 Beiträge • Seite 1 von 1

Zurück zu „AVR WebServer (alte Version)“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum