Guest User

HueDisco.py

a guest
Dec 26th, 2016
568
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/python
  2. #coding: utf8
  3.  
  4. # python script muss mit 'colorloop/strobo/off' und der ID der gewünschten Birne aufgerufen werden
  5. # z.B. python ~/.huedisco/huedisco.py colorloop 4
  6. # erstellt von Thomas Reimann am 21.12.2016 in Karlsruhe
  7.  
  8. import sys
  9. import requests
  10. import json
  11.  
  12. # Parametrieren
  13. hue_ip = "192.168.2.100"
  14. hue_user = "NewDeveloper"
  15. hue_url = "http://" + hue_ip + "/api/" + hue_user
  16.  
  17. # auslesen des gewünschten Effekts aus dem Aufruf
  18. disco_para = str(sys.argv[1])
  19. bulb = str(sys.argv[2])
  20.  
  21. # Funktion um den aktuellen Status der gewünschten Birne abzufragen
  22. def hue_status( bulb ):
  23.         url = hue_url + "/lights/" + bulb
  24.         r = requests.get(url)
  25.         hue_state = r.json()
  26.         #print hue_state["state"]["on"]
  27.         return hue_state
  28.  
  29. # Aktueller Status der Birne wird abgefragt
  30. hue_response = hue_status(bulb)
  31.  
  32. # Funktion um die gewünschte Birne mit 'body_msg' anzusteuern
  33. def hue_change( body_msg ):
  34.         url = hue_url + "/lights/" + bulb + "/state/"
  35.         request = requests.put(url, body_msg)
  36.         return
  37.  
  38. # Abfrage welche Funktion gewünscht ist
  39. if disco_para=="colorloop":
  40.         if str(hue_response["state"]["on"])=="False":
  41.                 # fals die Birne aus ist, wird sie noch eingeschaltet und Colorloop dazu
  42.                 body = '{"on":true, "effect":"colorless"}'
  43.  
  44.         elif hue_response["state"]["effect"]=="colorloop":
  45.                 # fals die Birne bereits im Colorloop ist, wird dieser (und nur dieser) ausgeschaltet
  46.                 body = '{"effect":"none"}'
  47.         else:
  48.                 # ansonsten ist die Birne ja an und so wird einfach Colorloop eingeschaltet
  49.                 body = '{"effect":"colorloop"}'
  50.  
  51.         hue_change(body) # und ausführen
  52.  
  53. elif disco_para=="colorloop_off":
  54.         # Für die HomeKit Integration wird ein eindeutiger Off Trigger benötigt
  55.         body = '{"effect":"none"}'
  56.  
  57.         hue_change(body) # und ausführen
  58.  
  59. elif disco_para=="strobo":
  60.         if str(hue_response["state"]["on"])=="False":
  61.                 body = '{"on":true, "alert":"lselect"}'
  62.  
  63.         elif str(hue_response["state"]["alert"])!="none":
  64.                 body = '{"alert":"none"}'
  65.         else:
  66.                 body = '{"alert":"lselect"}'
  67.  
  68.         hue_change(body) # und ausführen
  69.  
  70. elif disco_para=="strobo_off":
  71.         # Für die HomeKit Integration wird ein eindeutiger Off Trigger benötigt
  72.         body = '{"alert":"none"}'
  73.  
  74.         hue_change(body) # uns ausführen
  75.  
  76. elif disco_para=="off":
  77.         body = '{"on":false, "effect":"none", "alert":"none"}'
  78.         hue_change(body)
  79.         print "Hue Birne " + bulb + " ist jetzt aus."
  80.  
  81. else:
  82.         print "Parameter 'colorloop', 'strobo' oder 'off' angeben."
RAW Paste Data