Created
December 21, 2018 03:05
-
-
Save angww/4cc5ced354a0e8f2636766eec5ba3a66 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"io" | |
"io/ioutil" | |
"log" | |
"net/http" | |
"os" | |
"os/exec" | |
"strconv" | |
"time" | |
"github.com/davecgh/go-spew/spew" | |
tb "gopkg.in/tucnak/telebot.v2" | |
) | |
var ( | |
LogTrace *log.Logger | |
LogInfo *log.Logger | |
LogWarning *log.Logger | |
LogError *log.Logger | |
) | |
func LogInit(traceHandle io.Writer, infoHandle io.Writer, warningHandle io.Writer, errorHandle io.Writer) { | |
file, err := os.OpenFile("logTelegram.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) | |
if err != nil { | |
fmt.Println(err.Error()) | |
} | |
LogTrace = log.New(io.MultiWriter(file, traceHandle), "TRAC: ", log.Ldate|log.Ltime|log.Lshortfile) | |
LogInfo = log.New(io.MultiWriter(file, infoHandle), "INFO: ", log.Ldate|log.Ltime|log.Lshortfile) | |
LogWarning = log.New(io.MultiWriter(file, warningHandle), "WARN: ", log.Ldate|log.Ltime|log.Lshortfile) | |
LogError = log.New(io.MultiWriter(file, errorHandle), "ERRO: ", log.Ldate|log.Ltime|log.Lshortfile) | |
} | |
func isError(err error) bool { | |
if err != nil { | |
fmt.Println(err.Error()) | |
} | |
return (err != nil) | |
} | |
func ipExterno() (body string) { | |
resp, err := http.Get("http://myexternalip.com/raw") | |
if err != nil { | |
LogError.Println(err) | |
} | |
defer resp.Body.Close() | |
body2, err := ioutil.ReadAll(resp.Body) | |
body2 = body2[:len(body2)-1] // tira quebra de linha | |
return string(body2) | |
} | |
func fnSendMessageStartUpCubie(bb *tb.Bot) { | |
ipExterno := ipExterno() | |
LogInfo.Printf("IP VIA FUNC: %s <%T>\n", ipExterno, ipExterno) | |
user := telebot.User{ID: 83863444} //ID Angelo | |
message := "Cubieboard ON, IP: " + ipExterno + "\nVia GO" | |
bb.Send(telebot.Recipient(&user), message) | |
return | |
} | |
func convertStrToFormatedTemperature(str string) string { | |
// Remove last char if is new line "\n" | |
if last := len(str) - 1; last >= 0 && str[last] == '\n' { | |
str = str[:last] | |
} | |
s, _ := strconv.ParseFloat(str, 32) | |
// Divide by 1000 and format, return string. | |
return fmt.Sprintf("%2.2f °C", s/1000) | |
} | |
func getSensorSunxiTemperature() string { | |
cmd := exec.Command("cat", "/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input") | |
out, _ := cmd.CombinedOutput() | |
return string(out) | |
} | |
func main() { | |
LogInit(os.Stdout, os.Stdout, os.Stdout, os.Stderr) | |
fmt.Println("Valor1 : ", convertStrToFormatedTemperature(getSensorSunxiTemperature())) | |
envToken := os.Getenv("CubieBoardHomeBot_TOKEN") | |
LogInfo.Println("Started \\o/. Token: ", envToken) | |
b, err := tb.NewBot(tb.Settings{ | |
Token: envToken, | |
Poller: &tb.LongPoller{Timeout: 10 * time.Second}, | |
}) | |
if err != nil { | |
LogError.Println(err) | |
return | |
} | |
b.Handle(tb.OnText, func(m *tb.Message) { | |
b.Send(m.Chat, "*Try:* /hello or /start or /temperature") | |
LogInfo.Println("Sender: ", m.Sender.ID, " -- ", m.Text) | |
}) | |
b.Handle("/hello", func(m *tb.Message) { | |
options := new(tb.SendOptions) | |
options.ReplyTo = m | |
b.Send(m.Chat, "Hi "+m.Sender.FirstName+", I'm the Bot!", options) | |
LogInfo.Println("/hello recived from " + m.Sender.ID + " -- " + m.Sender.FirstName) | |
}) | |
b.Handle("/start", func(m *tb.Message) { | |
personalMessage := "OLááá " + m.Sender.FirstName | |
b.Send(m.Sender, personalMessage) | |
LogInfo.Println("\nSender: ", m.Sender.ID) | |
spew.Dump(m.Sender) | |
//spew.Dump(m) | |
u := telebot.User{ID: 83863444} //lisi 235720729 | |
message := "Usuário mandou hello: " + m.Sender.Username + | |
"\n" + m.Sender.FirstName + " " + m.Sender.LastName | |
b.Send(telebot.Recipient(&u), message) | |
LogInfo.Println("/start recived from " + m.Sender.ID + " -- " + m.Sender.FirstName) | |
}) | |
b.Handle("/temperature", func(m *tb.Message) { | |
options := new(tb.SendOptions) | |
options.ReplyTo = m | |
message := "Temperature now: " + convertStrToFormatedTemperature(getSensorSunxiTemperature()) | |
LogInfo.Println("Handle Temp ", message) | |
b.Send(m.Chat, message, options) | |
LogInfo.Println("/temperature recived from " + m.Sender.ID + " -- " + m.Sender.FirstName) | |
}) | |
b.Handle("/on", func(m *tb.Message) { | |
options := new(tb.SendOptions) | |
options.ReplyTo = m | |
// CMD | |
cmd := exec.Command("echo default-on >", "/sys/class/leds/green:ph20:led1/trigger") | |
cmd := exec.Command("echo default-on >", "/sys/class/leds/blue:ph21:led2/trigger") | |
b.Send(m.Chat, "LED setado para ON", options) | |
LogInfo.Println("/on recived from " + m.Sender.ID + " -- " + m.Sender.FirstName) | |
}) | |
b.Handle("/off", func(m *tb.Message) { | |
options := new(tb.SendOptions) | |
options.ReplyTo = m | |
// CMD | |
cmd := exec.Command("echo none >", "/sys/class/leds/green:ph20:led1/trigger") | |
cmd := exec.Command("echo none >", "/sys/class/leds/blue:ph21:led2/trigger") | |
b.Send(m.Chat, "LED setado para OFF", options) | |
LogInfo.Println("/off recived from " + m.Sender.ID + " -- " + m.Sender.FirstName) | |
}) | |
//echo cpu1 > /sys/class/leds/green:ph20:led1/trigger & | |
// echo cpu0 > /sys/class/leds/blue:ph21:led2/trigger & | |
fnSendMessageStartUpCubie(b) | |
b.Start() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment