updating configuration

This commit is contained in:
Your Name
2020-01-10 14:29:02 +03:00
parent 9ed8186f28
commit 0ed06741b9
30 changed files with 224 additions and 200 deletions
@@ -38,10 +38,6 @@ class AliceScenes(hass.Hass):
self.night_mode()
if (entity_name == "away_mode"):
self.away_mode()
# if (entity_name == "turn_on_coffeemachine"):
# self.turn_on_coffeemachine()
# if (entity_name == "make_coffee"):
# self.make_coffee()
def terminate(self):
if self.listen_event_handle_list != None:
@@ -54,15 +50,12 @@ class AliceScenes(hass.Hass):
def night_mode(self):
self.turn_off('switch.plug_158d0001104a0c') #tv
self.turn_off('group.all_lights')
self.turn_on('light.wled', brightness=5)
self.call_service("cover/close_cover", entity_id = 'cover.curtain_158d0002b0c46a')
def away_mode(self):
self.call_service("alarm_control_panel/alarm_arm_away", entity_id = self.args['ha_panel'])
def turn_on_coffeemachine(self):
self.log('Turn on coffeemachine')
self.call_service("mqtt/publish", topic = 'home/coffee/coffee/power/set', payload = 'on')
def make_coffee(self):
self.log('Make coffee')
self.call_service("mqtt/publish", topic = 'home/coffee/coffee/power/set', payload = 'on')
+48 -56
View File
@@ -1,73 +1,65 @@
import appdaemon.plugins.hass.hassapi as hass
import requests
import json
class TelegramTest(hass.Hass):
def initialize(self):
"""Listen to Telegram Bot events of interest."""
self.listen_event(self.receive_telegram_text, 'telegram_text')
self.listen_event(self.receive_telegram_callback, 'telegram_callback')
def receive_telegram_text(self, event_id, payload_event, *args):
"""Text repeater."""
assert event_id == 'telegram_text'
user_id = payload_event['user_id']
msg = 'You said: ``` %s ```' % payload_event['text']
keyboard = [[("Edit message", "/edit_msg"),
("Don't", "/do_nothing")],
[("Remove this button", "/remove button")]]
self.call_service('telegram_bot/send_message',
title='*Dumb automation*',
target=user_id,
message=msg,
disable_notification=True,
inline_keyboard=keyboard)
msg = payload_event['text']
self.log('got msg: {}'.format(msg))
if msg.startswith('https://www.youtube.com/watch') or msg.startswith('https://youtube.com/watch'):
self.sendToScreen(payload_event['text'])
def sendToScreen(self, video_url):
auth_data = {
'login': self.args.get('alice_login', ''),
'passwd': self.args.get('alice_pwd', '')
}
# self.log('auth_data: {}'.format(auth_data))
def receive_telegram_callback(self, event_id, payload_event, *args):
"""Event listener for Telegram callback queries."""
assert event_id == 'telegram_callback'
data_callback = payload_event['data']
callback_id = payload_event['id']
chat_id = payload_event['chat_id']
self.log(payload_event)
# keyboard = ["Edit message:/edit_msg, Don't:/do_nothing",
# "Remove this button:/remove button"]
keyboard = [[("Edit message", "/edit_msg"),
("Don't", "/do_nothing")],
[("Remove this button", "/remove button")]]
s = requests.Session()
s.get("https://passport.yandex.ru/")
s.post("https://passport.yandex.ru/passport?mode=auth&retpath=https://yandex.ru", data=auth_data)
Session_id = s.cookies["Session_id"]
self.log('session: {}'.format(Session_id))
# Getting x-csrf-token
token = s.get('https://frontend.vh.yandex.ru/csrf_token').text
self.log('token: {}'.format(token))
if data_callback == '/edit_msg': # Message editor:
# Answer callback query
self.call_service('telegram_bot/answer_callback_query',
message='Editing the message!',
callback_query_id=callback_id,
show_alert=True)
# Detting devices info TODO: device selection here
devices_online_stats = s.get("https://quasar.yandex.ru/devices_online_stats").text
devices = json.loads(devices_online_stats)["items"]
self.log('devices: {}'.format(devices))
if not devices[0].get('screen_present', False):
self.log('Device has no screen present.')
return
# Edit the message origin of the callback query
msg_id = payload_event['message']['message_id']
user = payload_event['from_first']
title = '*Message edit*'
msg = 'Callback received from %s. Message id: %s. Data: ``` %s ```'
self.call_service('telegram_bot/edit_message',
chat_id=chat_id,
message_id=msg_id,
title=title,
message=msg % (user, msg_id, data_callback),
inline_keyboard=keyboard)
# Preparing request
headers = {
"x-csrf-token": token,
}
elif data_callback == '/remove button': # Keyboard editor:
# Answer callback query
self.call_service('telegram_bot/answer_callback_query',
message='Callback received for editing the '
'inline keyboard!',
callback_query_id=callback_id)
data = {
"msg": {
"provider_item_id": video_url
},
"device": devices[0]["id"]
}
# Edit the keyboard
new_keyboard = keyboard[:1]
self.call_service('telegram_bot/edit_replymarkup',
chat_id=chat_id,
message_id='last',
inline_keyboard=new_keyboard)
if "https://www.youtube" in video_url:
data["msg"]["player_id"] = "youtube"
self.log('sending data: {}'.format(data))
elif data_callback == '/do_nothing': # Only Answer to callback query
self.call_service('telegram_bot/answer_callback_query',
message='OK, you said no!',
callback_query_id=callback_id)
# Sending command with video to device
res = s.post("https://yandex.ru/video/station", data=json.dumps(data), headers=headers)
return res.text
@@ -1,3 +1,5 @@
telegram_test:
module: telegram_test
class: TelegramTest
alice_login: !secret alice_login
alice_pwd: !secret alice_pwd
@@ -25,11 +25,15 @@ class Curtain(hass.Hass):
def on_timer_tick(self, kwargs):
self.log('on_timer')
if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']):
return
if 'entity' in self.args:
self.call_service("cover/open_cover", entity_id = self.args['entity'])
def off_timer_tick(self, kwargs):
self.log('off_timer')
if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']):
return
if 'entity' in self.args:
self.call_service("cover/close_cover", entity_id = self.args['entity'])
@@ -1,43 +1,17 @@
led_timer:
module: entity_timer
class: EntityTimer
on_time: "09:00:00"
off_time: "22:00:00"
entity: switch.ledstrip
global_dependencies:
- globals
# led_window_timer:
# led_timer:
# module: entity_timer
# class: EntityTimer
# on_time: "09:00:00"
# off_time: "23:00:00"
# entity: switch.wifi_socket
# off_time: "22:00:00"
# entity: switch.ledstrip
# global_dependencies:
# - globals
xmas_tree_timer:
module: entity_timer
class: EntityTimer
on_time: "09:00:00"
off_time: "23:00:00"
entity: switch.broadlink_switch
global_dependencies:
- globals
fitolamp_timer:
module: entity_timer
class: EntityTimer
on_time: "00:00:00"
off_time: "03:00:00"
entity: switch.plug_158d0002924779
global_dependencies:
- globals
# tv_timer:
# fitolamp_timer:
# module: entity_timer
# class: EntityTimer
# on_time: "09:00:00"
# off_time: "22:30:00"
# entity: switch.plug_158d0001104a0c
# on_time: "00:00:00"
# off_time: "03:00:00"
# entity: switch.plug_158d0002924779
# global_dependencies:
# - globals
+113
View File
@@ -0,0 +1,113 @@
import appdaemon.plugins.hass.hassapi as hass
import datetime
import random
#
# Entity timer
# Turn on and off this entities
#
# Args:
#
# None
#
# Release Notes
#
# Version 1.0:
# Initial Version
class XmasTreeTimer(hass.Hass):
effects = []
def initialize(self):
self.effects = ['[FX=00] Solid',
'[FX=01] Blink',
'[FX=02] Breathe',
'[FX=03] Wipe',
'[FX=04] Wipe Random',
'[FX=05] Random Colors',
'[FX=06] Sweep',
'[FX=07] Dynamic',
'[FX=08] Colorloop',
'[FX=09] Rainbow',
'[FX=10] Scan',
'[FX=11] Dual Scan',
'[FX=12] Fade',
'[FX=13] Chase',
'[FX=14] Chase Rainbow',
'[FX=15] Running',
'[FX=16] Saw',
'[FX=17] Twinkle',
'[FX=18] Dissolve',
'[FX=19] Dissolve Rnd',
'[FX=20] Sparkle',
'[FX=21] Dark Sparkle',
'[FX=22] Sparkle+',
'[FX=23] Strobe',
'[FX=24] Strobe Rainbow',
'[FX=25] Mega Strobe',
'[FX=26] Blink Rainbow',
'[FX=27] Android',
'[FX=28] Chase',
'[FX=29] Chase Random',
'[FX=30] Chase Rainbow',
'[FX=31] Chase Flash',
'[FX=32] Chase Flash Rnd',
'[FX=33] Rainbow Runner',
'[FX=34] Colorful',
'[FX=35] Traffic Light',
'[FX=36] Sweep Random',
'[FX=37] Running 2',
'[FX=38] Red & Blue',
'[FX=39] Stream',
'[FX=40] Scanner',
'[FX=41] Lighthouse',
'[FX=42] Fireworks',
'[FX=43] Rain',
'[FX=44] Merry Christmas',
'[FX=45] Fire Flicker',
'[FX=46] Gradient',
'[FX=47] Loading',
'[FX=48] In Out',
'[FX=49] In In',
'[FX=50] Out Out',
'[FX=51] Out In',
'[FX=52] Circus',
'[FX=53] Halloween',
'[FX=54] Tri Chase',
'[FX=55] Tri Wipe',
'[FX=56] Tri Fade',
'[FX=57] Lightning',
'[FX=58] ICU',
'[FX=59] Multi Comet',
'[FX=60] Dual Scanner',
'[FX=61] Stream 2',
'[FX=62] Oscillate',
'[FX=63] Pride 2015',
'[FX=64] Juggle',
'[FX=65] Palette',
'[FX=66] Fire 2012',
'[FX=67] Colorwaves',
'[FX=68] BPM',
'[FX=69] Fill Noise',
'[FX=70] Noise 1',
'[FX=71] Noise 2',
'[FX=72] Noise 3',
'[FX=73] Noise 4',
'[FX=74] Colortwinkle',
'[FX=75] Lake',
'[FX=76] Meteor',
'[FX=77] Smooth Meteor',
'[FX=78] Railway',
'[FX=79] Ripple',
'[FX=80] Twinklefox',
'[FX=81] Twinklecat',
'[FX=82] Halloween Eyes']
# self.effects = ['FX=00','FX=01','FX=02']
# self.on_timer = self.run_every(self.on_timer_tick, on_time)
# self.off_timer = self.run_daily(self.off_timer_tick, off_time)
self.run_every(self.run_every_c, datetime.datetime.now(), 15)
def run_every_c(self, kwargs):
effect = random.choice(self.effects)
# rand = random.randint(0, 82)
# effect = "FX={}".format(rand)
self.log('random: {}'.format(effect))
self.call_service("mqtt/publish", topic = 'wled/d85df2/api', payload = effect)
@@ -0,0 +1,6 @@
xmas-tree:
module: xmas-tree
class: XmasTreeTimer
global_dependencies:
- globals