AndroGoTeleCam
Что бы не выбрасывать старый android телефон можно использовать его для наблюдения за дачным периметром или за подачей электроэнергии. Можно даже сделать удаленное управление электро приборами через iot розетки. И для этого совсем необязательно разрабатывать полноценное приложение под android.
Попытаемся реализовать съёмку по удаленной команде. Управлять устройством мы будем через Telegram, отсылая нужные команды botу запущенному под androidом. Список команд:
- /photo - получить фотографию.
- /info - получить информацию о телефоне.
Воспользуемся приложениями из маркета: Termux
,Termux:API
. Это полноценный shell с пакетным менеджером.
Из termuxа выполняем:
apt update
apt upgrade
apt install termux-api golang
termux-setup-storage
mkdir ~/storage/shared/golang
echo "export GOPATH=~/storage/shared/golang" > ~/.bash_profile
Сделаем снимок из консоли:
termux-camera-photo test.jpg
Создаем бота через @BotFather. Полученый token и ваш username подставим в код бота:
package main
import (
"gopkg.in/telegram-bot-api.v4"
"log"
"os/exec"
)
var (
token = "key"
username = "user"
)
func main() {
bot, err := tgbotapi.NewBotAPI(token)
if err != nil {
log.Panic(err)
}
bot.Debug = true
log.Printf("Authorized on account %s", bot.Self.UserName)
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates, err := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
if update.Message.From.UserName == username {
if update.Message.Text == "/info" {
out, err := exec.Command("termux-battery-status").Output()
txt := ""
if err != nil {
txt = err.Error()
} else {
txt = string(out)
}
msg := tgbotapi.NewMessage(update.Message.Chat.ID, txt)
//msg.ReplyToMessageID = update.Message.MessageID
bot.Send(msg)
}
if update.Message.Text == "/photo" {
_, err := exec.Command("termux-camera-photo", "send.jpg").Output()
if err != nil {
bot.Send(tgbotapi.NewMessage(update.Message.Chat.ID, err.Error()))
} else {
photo := tgbotapi.NewPhotoUpload(update.Message.Chat.ID, "send.jpg")
bot.Send(photo)
}
}
}
}
}