homeassistant推送信息


问题背景:

前端刚启动时,会向云端发送获取硬件信息的请求,然后云端再调用homeassistant的rest api请求这些信息,再把信息发回前端。
但是这样有个问题,前端收到信息后,这些信息不会再发生变化,比如温度计的信息,可能前端获取到的温度是25度,但是过了1个小时,温度变成了27度,那么前端如果不重新启动就不能获取这个信息。
所以希望homeassistant内部或者其控制的硬件发生变化后,能够主动向云端发送这个变化信息。

解决方法:

幸运的是,homeassistant本身就提供了这个接口,它有一个notify组件能实现这个功能。
notify组件位置在(这是在我电脑上的位置)
E:\Anaconda3\Lib\site-packages\homeassistant\components\notify

在notify文件夹下增加一个文件sampleNotify.py

import requests
import loggingimport voluptuous as volfrom homeassistant.components.notify import (ATTR_TARGET, ATTR_TITLE, PLATFORM_SCHEMA, BaseNotificationService)
import homeassistant.helpers.config_validation as cv_LOGGER = logging.getLogger(__name__)
CONF_FROM_SOURCE = "from_source"PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({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_sourcedef send_message(self, message="", **kwargs):receivers = kwargs.get(ATTR_TARGET)title = kwargs.get(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"http://1.2.3.4:8989/a/b/notify",data=data)except ConnectionError:_LOGGER.error("连接失败")

使用方式:
1.在configuration.yaml文件中加入sampleNotify

notify:- name: sampleplatform: sampleNotifyfrom_source: '发送方身份标识'

注:sampleNotify是我们刚才在notify文件加下加入的sampleNotify.py的名字

2.在automations.yaml中加入

- alias: notify publishtrigger:platform: homeassistantevent: startaction:service: notify.my_notifydata:title: '题目'message: 'homeassistant start'target: '接收方身份标识'

这样在homeassistant启动后,云端就会收到homeassistant start这个信息

参考:
https://www.jianshu.com/p/1157057b97a6

homeassistant主动推送信息相关推荐

  1. 除了 Websocket ,服务端还有什么办法能向浏览器主动推送信息?

    除了 Websocket ,服务端还有什么办法能向浏览器主动推送信息? 前言 端倪 Server-Sent Events 是什么? Server-Sent Events 与 Websocket 对比 ...

  2. 【小5聊】C# SignalR之主动推送信息的简单解决方案

    注:Core下的SignalR实现原理一样,只是写法不一样,在后续文章中再写一遍来做对比,敬请期待下下! 主动推送消息的场景使用:页面登录后台管理系统,最新订单信息的通知等 1.描述 Form窗体下使 ...

  3. 服务端是如何主动推送信息到客户端的?

    from:http://zhangtielei.com/posts/blog-android-push.html 说Android端外推送比较烦,实际有两层意思:首先是说实现上比较麻烦,至今业界也没有 ...

  4. php订阅号发送消息,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息...

    2013年10月06日最新整理. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制 微信公共平台消息主动推送接口一直是腾讯的私用接口,相信很多朋友都非常想要用到这个功能. 通过学习 ...

  5. 服务器 主动 推送 客户端浏览器 消息***

    前言 通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客 ...

  6. SpringBoot 集成 WebSocket,实现后台向前端推送信息

    作者 | 大树先生 来源 | https://blog.csdn.net/MacWx/article/details/111319558 前言 在一次项目开发中,使用到了Netty网络应用框架,以及M ...

  7. SpringBoot集成WebSocket,实现后台向前端推送信息

    作者 | 大树先生 来源 | https://blog.csdn.net/MacWx/article/details/111319558 前言 在一次项目开发中,使用到了Netty网络应用框架,以及M ...

  8. 百度熊掌推送php源码,织梦百度熊掌主动推送教程

    织梦百度熊掌主动推送可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录,织梦程序我们可以在后台添加文档完成那一刻即时主动推送到百度或熊掌,也可以在后台文档列表里批量推送 1 ...

  9. 使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)

    工作上有个业务,.Net Core WebAPI作为服务端,需要将运行过程中产生的日志分类,并实时推送到各种终端进行报警,终端有桌面(WPF).移动(Xamarin.Forms).网站(Angular ...

最新文章

  1. Java数据类型简单认识
  2. linux-grub修复5步搞定
  3. if嵌套-火车站安检-检查刀的长度
  4. php伪协议实现命令执行的七种姿势
  5. optimized mysql_MySQL|MySQL执行计划
  6. 2018 年,NLP 研究与应用进展到什么水平了?
  7. GO语言的进阶之路-Golang高级数据结构定义
  8. 压缩文件后,每次的HASH值(MD5)都不相同的原因
  9. 晨风机器人回复词库_机器人自动回复问答
  10. 实现上一篇明日方舟官网仿制的代码
  11. masm32踩坑总结
  12. 从0开始的python学习:编译原理实验1:程序语言的重复率检查
  13. php以大写字母分割,js按大写字母拆分字符串
  14. a标签的href属性 download属性
  15. aso核心,影响ASO优化的核心问题大汇总
  16. moment.js 中文API
  17. 考研政治——刷题看课流程
  18. (十二)苏世民:我的经验和教训:苏世民带领黑石走向巅峰的十大管理原则
  19. Mac 蓝牙鼠标卡顿的解决方法
  20. 2016面试整理--来源牛客网

热门文章

  1. 经典蓝牙与低功耗蓝牙的区别
  2. 用 Python 创作酷炫的几何图形
  3. matlab实验-拉格朗日插值的龙格(Runge)现象
  4. 新款H3C服务器R4900配置raid
  5. 如何用Python制作一个简单的二维码生成器
  6. MultiDex精补篇,进一步知道MultiDex的配置
  7. linux 之sed命令详解
  8. jmeter辅助功能详解(http请求默认值,断言)
  9. github-创建新branch
  10. 计算机操作实训总结,计算机操作系统安全实训心得总结.doc