mirror of
https://github.com/hybridgroup/gobot.git
synced 2025-04-27 13:48:56 +08:00

Make all examples to not be built by default by adding the build tag 'example'. Some files were automatically reformatted by goimports upon saving.
96 lines
2.3 KiB
Go
96 lines
2.3 KiB
Go
// +build example
|
|
//
|
|
// Do not build by default.
|
|
|
|
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"time"
|
|
|
|
"gobot.io/x/gobot"
|
|
"gobot.io/x/gobot/drivers/gpio"
|
|
"gobot.io/x/gobot/platforms/firmata"
|
|
)
|
|
|
|
type TravisResponse struct {
|
|
ID int `json:"id"`
|
|
Slug string `json:"slug"`
|
|
Description string `json:"description"`
|
|
PublicKey string `json:"public_key"`
|
|
LastBuildID int `json:"last_build_id"`
|
|
LastBuildNumber string `json:"last_build_number"`
|
|
LastBuildStatus int `json:"last_build_status"`
|
|
LastBuildResult int `json:"last_build_result"`
|
|
LastBuildDuration int `json:"last_build_duration"`
|
|
LastBuildLanguage string `json:"last_build_language"`
|
|
LastBuildStartedAt string `json:"last_build_started_at"`
|
|
LastBuildFinishedAt string `json:"last_build_finished_at"`
|
|
}
|
|
|
|
func turnOn(robot *gobot.Robot, device string) {
|
|
robot.Device(device).(*gpio.LedDriver).On()
|
|
}
|
|
|
|
func resetLeds(robot *gobot.Robot) {
|
|
robot.Device("red").(*gpio.LedDriver).Off()
|
|
robot.Device("green").(*gpio.LedDriver).Off()
|
|
robot.Device("blue").(*gpio.LedDriver).Off()
|
|
}
|
|
|
|
func checkTravis(robot *gobot.Robot) {
|
|
resetLeds(robot)
|
|
user := "hybridgroup"
|
|
name := "gobot"
|
|
//name := "broken-arrow"
|
|
fmt.Printf("Checking repo %s/%s\n", user, name)
|
|
turnOn(robot, "blue")
|
|
resp, err := http.Get(fmt.Sprintf("https://api.travis-ci.org/repos/%s/%s.json", user, name))
|
|
defer resp.Body.Close()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
var travis TravisResponse
|
|
json.Unmarshal(body, &travis)
|
|
resetLeds(robot)
|
|
if travis.LastBuildStatus == 0 {
|
|
turnOn(robot, "green")
|
|
} else {
|
|
turnOn(robot, "red")
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
master := gobot.NewMaster()
|
|
firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0")
|
|
red := gpio.NewLedDriver(firmataAdaptor, "7")
|
|
red.SetName("red")
|
|
green := gpio.NewLedDriver(firmataAdaptor, "6")
|
|
green.SetName("green")
|
|
blue := gpio.NewLedDriver(firmataAdaptor, "5")
|
|
blue.SetName("blue")
|
|
|
|
work := func() {
|
|
checkTravis(master.Robot("travis"))
|
|
gobot.Every(10*time.Second, func() {
|
|
checkTravis(master.Robot("travis"))
|
|
})
|
|
}
|
|
|
|
robot := gobot.NewRobot("travis",
|
|
[]gobot.Connection{firmataAdaptor},
|
|
[]gobot.Device{red, green, blue},
|
|
work,
|
|
)
|
|
|
|
master.AddRobot(robot)
|
|
master.Start()
|
|
}
|