Hallo Jan,
Zitat von "JanR" pid='296669' dateline='1503554399'
Hi. Ich kann mir vorstellen das du viel zu tun hast, Aber wann ist morgen ??
Ja, leider - oder auch gut so.
Jetzt aber ist das Morgen von Gestern.
Hier der Code:
link GPIO
$define USVPin 17
procedure sendmail(address, subject, text)
address := address[8:0]
subject := subject[9:0]
text := text[6:0]
write(&dateline, ": ", address, " ", subject, " ", text)
todo := "echo \"" || text || "\" | mail -s \"" || subject || "\" " || address
pipe := open(todo, "p")
delay(1000)
close(\pipe)
end
procedure main()
repeat
{ if (GPIO(USVPin) = 0) & /stromweg then
{ sendmail("mailto:a@b", "Subject:Strom weg", "Text:" || &dateline)
stromweg := 1
}
if \stromweg then
{ stromweg +:= 1
if GPIO(USVPin) = 1 then
{ stromweg := &null
sendmail("mailto:a@b", "Subject:Strom da", "Text:" || &dateline)
}
}
delay(5000)
write(\stromweg)
if \stromweg > 60 then break
}
system("shutdown -h now")
end
Alles anzeigen
Code-Deutung: (folgt)
Neu ist die Funktion sendmail(), die ich vorstellen möchte.
procedure sendmail(address, subject, text)
address := address[8:0]
subject := subject[9:0]
text := text[6:0]
write(&dateline, ": ", address, " ", subject, " ", text)
todo := "echo \"" || text || "\" | mail -s \"" || subject || "\" " || address
pipe := open(todo, "p")
delay(1000)
close(\pipe)
end
Alles anzeigen
Der Funktion [font="Courier New"]sendmail[/font] werden drei Argumente übergeben:
[font="Courier New"]address[/font] die eMail-Adresse, an die die Mail geschickt werden soll (dauerte in meinen heutigen Tests rund 8 Sekunden)
[font="Courier New"]subject[/font] der Titel der eMail
[font="Courier New"]text[/font] noch irgendein Text, der im eMail-Körper stehen soll.
Diese Daten werden von der aufrufenden Zeile
genommen.
Die Variable todo enthält eine Zeichenkette, die eine Pipe zum Senden einer eMail enthält, letztlich sowas in der Art:
Die Zeile
öffnet diese Pipe (Eingabe-/Ausgabe-Weiterleitung) und schickt letztlich die eMail weg.
...
Unter der Voraussetzung, dass ssmtp richtig konfiguriert ist.
Danach wird eine Sekunde verzögert und die Pipe geschlossen, falls sie geöffnet werden konnte.
Getestet und funktioniert.
Beste Grüße
Andreas