homeassistant主动推送信息
homeassistant推送信息
notify for mi band问题背景:
前端刚启动时,会向云端发送获取硬件信息的请求,然后云端再调⽤homeassistant的rest api请求这些信息,再把信息发回前端。
但是这样有个问题,前端收到信息后,这些信息不会再发⽣变化,⽐如温度计的信息,可能前端获取到的温度是25度,但是过了1个⼩时,温度变成了27度,那么前端如果不重新启动就不能获取这个信息。
所以希望homeassistant内部或者其控制的硬件发⽣变化后,能够主动向云端发送这个变化信息。
解决⽅法:
幸运的是,homeassistant本⾝就提供了这个接⼝,它有⼀个notify组件能实现这个功能。
notify组件位置在(这是在我电脑上的位置)
E:\Anaconda3\Lib\site-packages\homeassistant\components\notify
在notify⽂件夹下增加⼀个⽂件sampleNotify.py
import requests
import logging
import voluptuous as vol
ify import (ATTR_TARGET, ATTR_TITLE, PLATFORM_SCHEMA, BaseNotificationService) import fig_validation as cv
_LOGGER = Logger(__name__)
CONF_FROM_SOURCE = "from_source"
PLATFORM_SCHEMA = d({
vol.Required(CONF_FROM_SOURCE): cv.string,
})
def get_service(hass, config, discovery_info=None):
return SmartHomeNotificationService(config[CONF_FROM_SOURCE])
class SmartHomeNotificationService(BaseNotificationService):
def__init__(self, from_source):
self.from_source = from_source
def send_message(self, message="", **kwargs):
receivers = (ATTR_TARGET)
title = (ATTR_TITLE)
try:
for receiver in receivers:
_LOGGER.info("已发送")
data = {
"source": self.from_source,
"receiver": receiver,
"content": message,
"title": title
}
_LOGGER.info(data)
requests.post(
// 注意这⾥需要修改成你服务器的api
"1.2.3.4:8989/a/b/notify",
data=data
)
except ConnectionError:
_("连接失败")
使⽤⽅式:
1.在configuration.yaml⽂件中加⼊sampleNotify
notify:
- name: sample
platform: sampleNotify
from_source: '发送⽅⾝份标识'
注:sampleNotify是我们刚才在notify⽂件加下加⼊的sampleNotify.py的名字
2.在automations.yaml中加⼊
- alias: notify publish
trigger:
platform: homeassistant
event: start
action:
service: _notify
data:
title: '题⽬'
message: 'homeassistant start'
target: '接收⽅⾝份标识'
这样在homeassistant启动后,云端就会收到homeassistant start这个信息
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论