noolite-cli.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "github.com/dedkovd/noolite"
  6. "net/http"
  7. )
  8. func main() {
  9. channel := flag.Int("channel", -1, "Noolite adapter channel")
  10. command := flag.String("command", "", "Command")
  11. value := flag.Int("val", 0, "Set value")
  12. red := flag.Int("r", 0, "Red channel")
  13. green := flag.Int("g", 0, "Green channel")
  14. blue := flag.Int("b", 0, "Blue channel")
  15. http_port := flag.Int("p", -1, "Http port")
  16. flag.Parse()
  17. if *channel == -1 {
  18. panic("Channel was not set")
  19. }
  20. if *command == "" {
  21. panic("Command was not set")
  22. }
  23. n, err := noolite.DefaultNooliteAdapter()
  24. if err != nil {
  25. panic(err)
  26. }
  27. defer n.Close()
  28. if *command == "set" {
  29. if *value != 0 {
  30. err = n.SetBrightnesValue(*channel, *value)
  31. } else if *red != 0 || *green != 0 || *blue != 0 {
  32. err = n.SetBrightnesValues(*channel, *red, *green, *blue)
  33. } else {
  34. panic("Need some value")
  35. }
  36. } else {
  37. commands := map[string]func(int) error{
  38. "on": n.On,
  39. "off": n.Off,
  40. "switch": n.Switch,
  41. "decraseBrightnes": n.DecraseBrightnes,
  42. "incraseBrightnes": n.IncraseBrightnes,
  43. "invertBrightnes": n.InvertBrightnes,
  44. }
  45. cmd, ok := commands[*command]
  46. if !ok {
  47. panic("Command not found")
  48. }
  49. err = cmd(*channel)
  50. }
  51. if err != nil {
  52. panic(err)
  53. }
  54. if *http_port != -1 {
  55. http.HandleFunc("/switch", func(w http.ResponseWriter, r *http.Request) {
  56. fmt.Fprintf(w, "%q", r.URL.RawQuery)
  57. n.Switch(7)
  58. })
  59. http.ListenAndServe(":8080", nil)
  60. }
  61. }