zoukankan      html  css  js  c++  java
  • (二 -1) 天猫精灵接入Home Assistant-控制Mqtt设备

    关于hass对接mqtt 请参考官网

    https://www.hachina.io/docs/7083.html

    1 登陆运行着hass的阿里云服务器

    2 修改hass配置文件,添加mqtt服务信息

     把这个文件拷贝到自己的电脑上,修改后重新上传服务器

     添加以下内容

    2.1hass连接Mqtt服务器

    参考官网 https://www.hachina.io/docs/7211.html

    你可以使用Mosquitto的公有云MQTT服务器进行测试。如下配置:

    # configuration.yaml配置样例
    mqtt:
      # MQTT Broker的IP地址或者域名
      broker: test.mosquitto.org
    #如过是本地搭建的
    #broker: 127.0.0.1
    # MQTT Broker的端口号,缺省为1883 port: 1883 # 用户名 #username: hachina # 密码 #password: hachina # 配置自动发现 discovery: true # 自动发现使用的主题位置前缀,缺省为homeassistant discovery_prefix: homeassistant

    2.2hass手动添加一个设备(灯)

    参考官网 https://www.hachina.io/docs/7214.html

      • 主题位置(topic)
        主题位置表明双方在哪里进行通讯。
        比如,一盏灯的命令主题(command_topic),表示HomeAssistant会将开关命令发送到这儿,而灯会到这儿读取命令进行开关操作;比如,一个温度计的状态主题(state_topic),表示温度计会将温度值发送到这儿,HomeAssistant会从这儿读取温度展现在前端。
        一个设备可能包含多个主题位置。例如,温湿度传感器的温度和湿度可以分在两个主题位置,灯的状态和控制命令一般也会分在不同的主题位置。
      • 信息内容(payload)
        信息内容表示双方用什么信息代表什么含义。
        比如,开关灯命令,可以是”ON/OFF”,也可以是”on/off”,”true/false”,”1/0″……
        HomeAssistant配置项中payload_XXXX代表对信息内容的配置。
    # 这是一个MQTT设备,名字是"MQTT Sensor 1",在MQTT中发布信息的位置在"home/bedroom/temperature"
    # 此配置添加系统内实体sensor.mqtt_sensor_1
    light:
      #设备类型 MQTT
      - platform: mqtt
      # 设备名字
        name: "LED light over MQTT"
      # HASS标准格式  状态话题  HASS接收来自设备的状态信息
        state_topic: "hachina/hardware/led01/state"
      # HASS标准格式  命令话题  HASS发送控制设备的命令
        command_topic: "hachina/hardware/led01/switch"
      # 命令格式  on 和 off
        payload_on: "on"
        payload_off: "off"


    被控端(灯)将状态发布到主题“hachina/hardware/led01/state”中,控制端(HomeAssistant)订阅这个主题,用于当前状态显示;

    控制端(Home Assistant)将控制命令发布到主题“hachina/hardware/led01/switch”中,被控端(灯)订阅这个主题,根据其内容进行实际的开关动作。


    双方以”on”代表开,以”off”代表关。

     

     3重启 hass

    4 登陆控制台,发现多了个灯设备

    5 点击按钮,在对应话题会收到" on "

    在hass点击一下开关,开关打开

    手机调试软件订阅话题,模拟自己是个灯监听

    但是马上hass界面端的按钮又回到关闭状态,为什么?

    因为手机只是监听,没有往状态话题发布消息--on, 这样hass没有得到灯的反馈,误以为它没开,而自动把开关展示状态显示为关。

    需要在硬件esp8266中写程序,每次收到 开灯命令,对应返回 开的状态。

  • 相关阅读:
    ASP.NET MVC中多种ActionResult用法总结
    jQuery中异步操作对象Deferred
    jQuery中bind方法和live方法区别解析
    深入理解Javascript中this, prototype, constructor
    SQL及常见的三种类型注释
    SQLServer的两个日期相减(间隔)datediff函数
    SQLServer查询进程与死锁语句
    SqlServer获取当前日期的详细写法
    SQL中 Decode 和 Sign 语法的简单用法
    数据仓库模型之CDM、LDM与PDM的区别
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9471726.html
Copyright © 2011-2022 走看看