updating configuration

This commit is contained in:
Your Name
2019-06-21 20:03:30 +03:00
parent 3d01d1537b
commit 55bbcc91c9
8 changed files with 90 additions and 17 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ class Climate(hass.Hass):
ir_topic = "home/remote/rm2/code/set" ir_topic = "home/remote/rm2/code/set"
split_state = "None" split_state = "None"
timer = None timer = None
fan_speed = "4"
def initialize(self): def initialize(self):
self.listen_event_handle_list = [] self.listen_event_handle_list = []
@@ -57,7 +58,7 @@ class Climate(hass.Hass):
code = "" code = ""
self.log('mode: {}'.format(args['mode'])) self.log('mode: {}'.format(args['mode']))
remote = Remote() remote = Remote()
code = remote.set_mode(args['mode'], "2", args['temp'], args['state']) code = remote.set_mode(args['mode'], self.fan_speed, args['temp'], args['state'])
code = code.decode("utf-8") code = code.decode("utf-8")
self.call_service("mqtt/publish", topic = self.ir_topic, payload = code) self.call_service("mqtt/publish", topic = self.ir_topic, payload = code)
@@ -1,4 +1,5 @@
import appdaemon.plugins.hass.hassapi as hass import appdaemon.plugins.hass.hassapi as hass
import os
# #
# App to send notification when doorbell is ringing # App to send notification when doorbell is ringing
@@ -36,14 +37,15 @@ class Doorbell(hass.Hass):
self.log("doorbell call") self.log("doorbell call")
self.call_service("xiaomi_aqara/play_ringtone", gw_mac=self.gw_mac, ringtone_id=self.ringtone, ringtone_vol=100) self.call_service("xiaomi_aqara/play_ringtone", gw_mac=self.gw_mac, ringtone_id=self.ringtone, ringtone_vol=100)
self.notify("Звонок в дверь!!!", name = self.args['notify']) self.notify("Звонок в дверь!!!", name = self.args['notify'])
# for x in range(3): result = self.send_video()
# self.send_image()
self.send_video()
def send_video(self): def send_video(self):
file = '/config/www/doorbell_video.mp4' file = '/config/www/doorbell_video.mp4'
if os.path.exists(file):
os.remove(file)
self.call_service("stream/record", stream_source=self.args['rtsp'], filename=file, duration=10) self.call_service("stream/record", stream_source=self.args['rtsp'], filename=file, duration=10)
self.timer = self.run_in(self.run_in_send_video, 12, file=file) self.timer = self.run_in(self.run_in_send_video, 20, file=file)
def run_in_send_video(self, args): def run_in_send_video(self, args):
extra_data = {'video': {'file': args['file'], 'caption': 'Видео звонившего.'}} extra_data = {'video': {'file': args['file'], 'caption': 'Видео звонившего.'}}
@@ -53,4 +55,4 @@ class Doorbell(hass.Hass):
def send_image(self): def send_image(self):
self.call_service("camera/snapshot", entity_id=self.args['camera'], filename="/config/www/camera_image.jpg") self.call_service("camera/snapshot", entity_id=self.args['camera'], filename="/config/www/camera_image.jpg")
extra_data = {'photo': {'file':'/config/www/camera_image.jpg', 'capture': 'Фото звонившего.'}} extra_data = {'photo': {'file':'/config/www/camera_image.jpg', 'capture': 'Фото звонившего.'}}
self.notify("Видео звонившего", name = self.args['notify'], data=extra_data) self.notify("Фото звонившего", name = self.args['notify'], data=extra_data)
@@ -0,0 +1,51 @@
import appdaemon.plugins.hass.hassapi as hass
import globals
#
# Управление сценариями из алисы
#
# Args:
#
# None
#
# Release Notes
#
# Version 1.0:
# Initial Version
class AliceScenes(hass.Hass):
listen_event_handle_list = []
def initialize(self):
if not globals.check_args(self, ['alice_prefix']):
return
devices = self.get_state()
for device in devices:
if not device.startswith(self.args['alice_prefix']):
continue
self.log("Listening for changes: {}".format(device))
self.listen_event_handle_list.append(self.listen_state(self.alice_scene_trigger, device))
def alice_scene_trigger(self, entity, attribute, old, new, kwargs):
if new != 'on':
return
self.turn_off(entity)
entity_name = entity.replace(self.args['alice_prefix'], "")
self.log('Alice triggered scene: {}'.format(entity_name))
if (entity_name == "turn_off_light"):
self.turn_off_light()
if (entity_name == "night_mode"):
self.night_mode()
def terminate(self):
if self.listen_event_handle_list != None:
for listen_event_handle in self.listen_event_handle_list:
self.cancel_listen_event(listen_event_handle)
def turn_off_light(self):
self.turn_off('group.mainroom_light')
def night_mode(self):
self.turn_off('switch.plug_158d0001104a0c') #tv
self.turn_off('group.all_lights')
self.call_service("cover/close_cover", entity_id = 'cover.curtain_158d0002b0c46a')
@@ -0,0 +1,6 @@
alice_scenes:
module: alice_scenes
class: AliceScenes
alice_prefix: input_boolean.alice_
global_dependencies:
- globals
@@ -26,7 +26,7 @@ class ToiletPresence(hass.Hass):
if 'sensor' not in self.args: if 'sensor' not in self.args:
self.error("Please provide sensor in config!") self.error("Please provide sensor in config!")
return return
self.set_value("off") self.set_value("off", 0)
self.listen_state(self.distance_changed, self.args['sensor']) self.listen_state(self.distance_changed, self.args['sensor'])
def distance_changed(self, entity, attribute, old, new, kwargs): def distance_changed(self, entity, attribute, old, new, kwargs):
@@ -37,22 +37,23 @@ class ToiletPresence(hass.Hass):
self.timers.append(self.run_in(self.run_in_presense_off, self.presence_timeout)) self.timers.append(self.run_in(self.run_in_presense_off, self.presence_timeout))
self.log('re-setting timer for {}s.'.format(self.presence_timeout)) self.log('re-setting timer for {}s.'.format(self.presence_timeout))
if (self.state != "on"): if (self.state != "on"):
self.set_value("on") self.set_value("on", distance)
def run_in_presense_off(self, args): def run_in_presense_off(self, args):
self.set_value("off") self.set_value("off", 0)
def timers_off(self): def timers_off(self):
for timer in self.timers: for timer in self.timers:
self.cancel_timer(timer) self.cancel_timer(timer)
def set_value(self, state): def set_value(self, state, distance):
self.log('Toilet presense: {}'.format(state)) self.log('Toilet presense: {}'.format(state))
self.state = state self.state = state
entity_id = "sensor.toilet_presence" entity_id = "sensor.toilet_presence"
attributes = {} attributes = {}
attributes['distance'] = distance
attributes['description'] = 'Created and updated from appdaemon ({})'.format(__name__) attributes['description'] = 'Created and updated from appdaemon ({})'.format(__name__)
self.set_state(entity_id, state = state, attributes = attributes) self.set_state(entity_id, state = state, attributes = attributes)
+9 -5
View File
@@ -6,6 +6,10 @@ filter:
- light - light
- vacuum - vacuum
- cover - cover
include_entities:
- input_boolean.alice_night_mode
- input_boolean.alice_turn_off_light
exclude_entities: exclude_entities:
- switch.plug_158d00020f3a29 - switch.plug_158d00020f3a29
- switch.plug_158d00026ea017 - switch.plug_158d00026ea017
@@ -14,10 +18,10 @@ filter:
- switch.domofon_mode - switch.domofon_mode
- switch.domofon_open - switch.domofon_open
- light.gateway_light_f0b429aa1463 - light.gateway_light_f0b429aa1463
# include_entities:
# - media_player.tv # entity_config:
# entity_config: # input_boolean.alice_night_mode:
# room: SCENES
# switch.kitchen: # switch.kitchen:
# name: CUSTOM_NAME_FOR_YANDEX_SMART_HOME # name: CUSTOM_NAME_FOR_YANDEX_SMART_HOME
# light.living_room:
# room: LIVING_ROOM
@@ -0,0 +1,8 @@
alice_night_mode:
name: Спокойной ночи
initial: off
alice_turn_off_light:
name: Выключи свет
initial: off
Submodule hass/settings/custom_components/yandex_smart_home updated: 19b012b1bb...d9ef78dfc5