Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
494
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.59 KB | None | 0 0
  1. import appdaemon.plugins.hass.hassapi as hass
  2. import datetime
  3. import time
  4.  
  5. #
  6. # When doorbell button is pressed
  7. # Save image and video to local folder
  8. #
  9. # turn on the front entry lights and say msg
  10. #
  11.  
  12. class TVDrop(hass.Hass):
  13.  
  14.   def initialize(self):
  15.     self.remote_entity_id = "remote.broadlink"
  16.     self.learned_cmd_device_name = "lift"
  17.     self.mediaplayer_entity_id = "media_player.bedroom_samsung_tv"
  18.     self.runin_handle = None
  19.    
  20.    
  21.     self.listen_state(self.LiftTV, "input_boolean.lift", new = "off", old = "on")
  22.     self.listen_state(self.DropTV, "input_boolean.lift", new = "on", old = "off")
  23.  
  24.   def LiftTV(self, entity, attribute, old, new, kwargs):
  25.     remote_id = self.remote_entity_id
  26.     device_name = self.learned_cmd_device_name
  27.     TV_ID = self.mediaplayer_entity_id
  28.     desired_state = "off"
  29.    
  30.     self.log("Step 0: <" + "LiftTV CALLED" + ">")
  31.     self.log("Step 1: <Turn {} TV>".format(desired_state))
  32.     self.TV_OFF_ON(remote_id,device_name,TV_ID,desired_state)
  33.     self.log("Step 1: <" + "SEND *STOP* TV COMMAND" + ">")
  34.     #self.remoteCommandSTOP(remote_id,device_name)
  35.     self.remoteCommand("STOP", device_name, remote_id, repeatCommand = 2, delay = 0.2, hold_s = 1)
  36.     self.log("Step 2: <" + "SEND *UP* TV COMMAND" + ">")
  37.     #self.remoteCommandUP(remote_id,device_name)
  38.     self.remoteCommand("UP", device_name, remote_id, repeatCommand = 2, delay = 0.7, hold_s = 1)
  39.    
  40.   def DropTV(self, entity, attribute, old, new, kwargs):
  41.      
  42.     remote_id = self.remote_entity_id
  43.     device_name = self.learned_cmd_device_name
  44.     TV_ID = self.mediaplayer_entity_id
  45.     desired_state = "on"
  46.    
  47.     self.log("Step 0: <" + "DropTV CALLED" + ">")
  48.     self.log("Step 1: <" + "SEND *STOP* TV COMMAND" + ">")
  49.     self.remoteCommand("STOP", device_name, remote_id, repeatCommand = 2, delay = 0.2, hold_s = 1)
  50.     self.log("Step 2: <" + "SEND *DOWN* TV COMMAND" + ">")
  51.     self.remoteCommand("DOWN", device_name, remote_id, repeatCommand = 5, delay = 0.7, hold_s = 2)
  52.     self.log("Step 1: <Turn {} TV>".format(desired_state))
  53.     self.TV_OFF_ON(remote_id,device_name,TV_ID,desired_state)
  54.  
  55.  
  56.   def TV_OFF_ON(self,remote_id,device_name,TV_ID,desired_state):
  57.     self.log("------ TV ON/OFF TEMPORARELY DISABLED -----")
  58.     return
  59.     #get state of TV
  60.     state = self.get_state(TV_ID)
  61.     #set delay before retring IR signal
  62.     run_in_s = 10
  63.     #Create a log msg for debugging
  64.     self.log("<><> The state of [{}] is [{}], we want it [{}]".format(TV_ID,state,desired_state))
  65.     #check if tv is in the desired on/off state
  66.     if state == desired_state:
  67.         return
  68.     else: #if not in the desired state, send the IR signal to power on/off
  69.         self.remoteCommand("power_on1", "television", remote_id, repeatCommand = 1, delay = 0.5, hold_s = 2)
  70.         #check if tv is in the desired on/off state [AGAIN]
  71.         if self.run_in(self.get_state(TV_ID),2) == desired_state:
  72.             return
  73.         else:
  74.             #Call function again if still not off
  75.             self.log("TV did not return derired state ({}), trying again in {}".format(desired_state,run_in_s))
  76.             self.run_in(self.TV_OFF_ON(remote_id,device_name,TV_ID,desired_state),run_in_s)
  77.  
  78.   def remoteCommand(self,cmd, device_name, remote_id, repeatCommand = 5, delay = 0.75, hold_s = 2.5):
  79.     self.log("Sending {} IR signal to {} on [{}]".format(cmd,device_name,remote_id))
  80.     device_name = "television"
  81.     self.call_service("remote/send_command", entity_id = remote_id, device = device_name, command = cmd, num_repeats = repeatCommand, delay_secs = delay, hold_secs = hold_s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement