80 lines
1.4 KiB
Go
80 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"net/smtp"
|
|
"time"
|
|
)
|
|
|
|
const host = "rodberrypi"
|
|
|
|
func main() {
|
|
for {
|
|
log.Println("Checking Fridge")
|
|
if !endPointAlive() {
|
|
log.Println("He Dead")
|
|
sendMail()
|
|
} else {
|
|
log.Println("He Alive")
|
|
}
|
|
time.Sleep(3600 * time.Second)
|
|
}
|
|
}
|
|
|
|
func endPointAlive() bool {
|
|
res, err := http.Get("http://" + host + ":2122/heartbeat")
|
|
if err != nil {
|
|
log.Println(err)
|
|
return false
|
|
}
|
|
|
|
if res.StatusCode != 200 {
|
|
log.Println("Status Code ", res.StatusCode)
|
|
return false
|
|
} else {
|
|
return true
|
|
}
|
|
}
|
|
|
|
func sendMail() {
|
|
// Sender data.
|
|
from := "rodbiren@gmail.com"
|
|
password := "Lovers8991"
|
|
|
|
// Receiver email address.
|
|
to := []string{"rcviren@gmail.com"}
|
|
|
|
// smtp server configuration.
|
|
smtpServer := smtpServer{host: "smtp.gmail.com", port: "587"}
|
|
|
|
// Message.
|
|
mime := "MIME-version: 1.0;\nContent-Type: text/plain; charset=\"UTF-8\";\n\n"
|
|
subject := "Subject: " + "Garage Power is Out" + "!\n"
|
|
message := []byte(subject + mime + "\n" + "Make Rob Fix It!")
|
|
|
|
// Authentication.
|
|
auth := smtp.PlainAuth("", from, password, smtpServer.host)
|
|
|
|
// Sending email.
|
|
err := smtp.SendMail(smtpServer.Address(), auth, from, to, message)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
fmt.Println("Email Sent!")
|
|
}
|
|
|
|
// smtpServer data to smtp server.
|
|
type smtpServer struct {
|
|
host string
|
|
port string
|
|
}
|
|
|
|
// Address URI to smtp server.
|
|
func (s *smtpServer) Address() string {
|
|
return s.host + ":" + s.port
|
|
}
|