Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import appdaemon.plugins.hass.hassapi as hass
- import datetime
- import time
- #
- # When doorbell button is pressed
- # Save image and video to local folder
- #
- # turn on the front entry lights and say msg
- #
- class TVDrop(hass.Hass):
- def initialize(self):
- self.remote_entity_id = "remote.broadlink"
- self.learned_cmd_device_name = "lift"
- self.mediaplayer_entity_id = "media_player.bedroom_samsung_tv"
- self.runin_handle = None
- self.listen_state(self.LiftTV, "input_boolean.lift", new = "off", old = "on")
- self.listen_state(self.DropTV, "input_boolean.lift", new = "on", old = "off")
- def LiftTV(self, entity, attribute, old, new, kwargs):
- remote_id = self.remote_entity_id
- device_name = self.learned_cmd_device_name
- TV_ID = self.mediaplayer_entity_id
- desired_state = "off"
- self.log("Step 0: <" + "LiftTV CALLED" + ">")
- self.log("Step 1: <Turn {} TV>".format(desired_state))
- self.TV_OFF_ON(remote_id,device_name,TV_ID,desired_state)
- self.log("Step 1: <" + "SEND *STOP* TV COMMAND" + ">")
- #self.remoteCommandSTOP(remote_id,device_name)
- self.remoteCommand("STOP", device_name, remote_id, repeatCommand = 2, delay = 0.2, hold_s = 1)
- self.log("Step 2: <" + "SEND *UP* TV COMMAND" + ">")
- #self.remoteCommandUP(remote_id,device_name)
- self.remoteCommand("UP", device_name, remote_id, repeatCommand = 2, delay = 0.7, hold_s = 1)
- def DropTV(self, entity, attribute, old, new, kwargs):
- remote_id = self.remote_entity_id
- device_name = self.learned_cmd_device_name
- TV_ID = self.mediaplayer_entity_id
- desired_state = "on"
- self.log("Step 0: <" + "DropTV CALLED" + ">")
- self.log("Step 1: <" + "SEND *STOP* TV COMMAND" + ">")
- self.remoteCommand("STOP", device_name, remote_id, repeatCommand = 2, delay = 0.2, hold_s = 1)
- self.log("Step 2: <" + "SEND *DOWN* TV COMMAND" + ">")
- self.remoteCommand("DOWN", device_name, remote_id, repeatCommand = 5, delay = 0.7, hold_s = 2)
- self.log("Step 1: <Turn {} TV>".format(desired_state))
- self.TV_OFF_ON(remote_id,device_name,TV_ID,desired_state)
- def TV_OFF_ON(self,remote_id,device_name,TV_ID,desired_state):
- self.log("------ TV ON/OFF TEMPORARELY DISABLED -----")
- return
- #get state of TV
- state = self.get_state(TV_ID)
- #set delay before retring IR signal
- run_in_s = 10
- #Create a log msg for debugging
- self.log("<><> The state of [{}] is [{}], we want it [{}]".format(TV_ID,state,desired_state))
- #check if tv is in the desired on/off state
- if state == desired_state:
- return
- else: #if not in the desired state, send the IR signal to power on/off
- self.remoteCommand("power_on1", "television", remote_id, repeatCommand = 1, delay = 0.5, hold_s = 2)
- #check if tv is in the desired on/off state [AGAIN]
- if self.run_in(self.get_state(TV_ID),2) == desired_state:
- return
- else:
- #Call function again if still not off
- self.log("TV did not return derired state ({}), trying again in {}".format(desired_state,run_in_s))
- self.run_in(self.TV_OFF_ON(remote_id,device_name,TV_ID,desired_state),run_in_s)
- def remoteCommand(self,cmd, device_name, remote_id, repeatCommand = 5, delay = 0.75, hold_s = 2.5):
- self.log("Sending {} IR signal to {} on [{}]".format(cmd,device_name,remote_id))
- device_name = "television"
- 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