Skip to content

Instantly share code, notes, and snippets.

@dimik
Last active September 5, 2018 01:37
Show Gist options
  • Save dimik/8c8429b77139d996f1f1ed3684c8395d to your computer and use it in GitHub Desktop.
Save dimik/8c8429b77139d996f1f1ed3684c8395d to your computer and use it in GitHub Desktop.
Test Gobot
package main
import (
"fmt"
"os/exec"
"time"
"gobot.io/x/gobot"
"gobot.io/x/gobot/api"
"gobot.io/x/gobot/drivers/gpio"
"gobot.io/x/gobot/platforms/raspi"
)
func NewPirBot() *gobot.Robot {
r := raspi.NewAdaptor()
sensor := gpio.NewPIRMotionDriver(r, "11")
led := gpio.NewLedDriver(r, "13")
var robot *gobot.Robot
work := func() {
robot.AddEvent("test")
// hc-sr501 needs 1 minute for setup
gobot.After(1*time.Minute, func() {
sensor.On(gpio.MotionDetected, func(data interface{}) {
robot.Publish("test", data)
led.On()
})
sensor.On(gpio.MotionStopped, func(data interface{}) {
led.Off()
})
})
}
robot = gobot.NewRobot("testBot",
[]gobot.Connection{r},
[]gobot.Device{sensor, led},
work,
)
return robot
}
func main() {
master := gobot.NewMaster()
api.NewAPI(master).Start()
master.AddRobot(NewPirBot())
master.Start()
testBot := master.Robot("testBot")
testBot.On("test", func(data interface{}) {
fmt.Println("Motion detected")
exec.Command("sh", "-c", "vcgencmd display_power 1").Run()
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment