noolite-cli.go 1.7 KB

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