『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2440|回复: 13

[求助] 关于esphome 简单用户交互的问题

[复制链接]

5

主题

35

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
金钱
197
HASS币
0
发表于 2021-9-20 17:23:38 | 显示全部楼层 |阅读模式
我用esp8266和继电器做了一个开关,并部署到ha,通过ha的自动化可以轻松完成 每天指定时间开关,但是如果想在开关不联网的时候也能正常运行,就只能把自动化写入esp8266,我目前只会把时间写死在固件,想要改设置只能重新刷固件,我想知道如何在搭建一个交互界面,比如在homeassistant上,可以自由设定是否定时开关,还可以指定时间,保存配置到esp8266,这样即时断网也不影响功能,我知道esphome应该提供了相应组件,但是不知道如何搜索,还请指教。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

发表于 2021-9-20 20:17:16 | 显示全部楼层
ha向esphome节点传递数据的方法有以下几种,自己根据需要挑着用了:
1. esphome里引用ha的实体状态及其属性值
2. number组件和select组件
3. esphome向ha提供服务、ha里以服务调用参数的形式向ha传递数据

不过追求断网也能用的话,需要测试确认,或者在程序上特殊处理一下,因为esphome和ha节点断开连接后状态值会变成unavailable,可能需要提前存储和判断
回复

使用道具 举报

5

主题

68

帖子

928

积分

高级会员

Rank: 4

积分
928
金钱
860
HASS币
0
发表于 2021-9-20 20:20:17 | 显示全部楼层
不联网很难校准时间,如果只是单纯的周期执行比较简单,on_time Trigger,可以在esphome中看下
回复

使用道具 举报

5

主题

35

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
金钱
197
HASS币
0
 楼主| 发表于 2021-9-20 21:03:04 | 显示全部楼层
XCray 发表于 2021-9-20 20:17
ha向esphome节点传递数据的方法有以下几种,自己根据需要挑着用了:
1. esphome里引用ha的实体状态及其属性 ...

我的需求应该是方式3,一点区别就是ha只是提供一个类似web配置界面一样的接口,比如是否开启定时的布尔值和时间参数,这些参数不存储在ha里,而是设置好以后直接写入esp芯片的flash。相当于联网只是校时和设置参数,芯片可以独立运行。请问需要调用esp的什么服务。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

发表于 2021-9-20 21:25:40 | 显示全部楼层
ymcedison 发表于 2021-9-20 21:03
我的需求应该是方式3,一点区别就是ha只是提供一个类似web配置界面一样的接口,比如是否开启定时的布尔值 ...

我觉得几种方式应该都可以实现你的需求,可能3比较简单一点。

“需要调用esp的什么服务”——你首先要在esphome侧定制服务,然后才能在HA侧调用它。
https://esphome.io/components/api.html#user-defined-services

评分

参与人数 1金钱 +5 收起 理由
ymcedison + 5 感谢楼主分享!正是我需要的。.

查看全部评分

回复

使用道具 举报

5

主题

35

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
金钱
197
HASS币
0
 楼主| 发表于 2021-9-20 21:26:12 | 显示全部楼层
asdasfhth 发表于 2021-9-20 20:20
不联网很难校准时间,如果只是单纯的周期执行比较简单,on_time Trigger,可以在esphome中看下 ...

你说的是对的,我主要想知道怎么向esp芯片传递参数并保存在flash中,以供类似on_time Trigger的函数调用
回复

使用道具 举报

5

主题

35

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
金钱
197
HASS币
0
 楼主| 发表于 2021-9-20 21:27:33 | 显示全部楼层
XCray 发表于 2021-9-20 21:25
我觉得几种方式应该都可以实现你的需求,可能3比较简单一点。

“需要调用esp的什么服务”——你首先要在 ...

感谢,我学习一下
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

发表于 2021-9-20 21:33:58 | 显示全部楼层
asdasfhth 发表于 2021-9-20 20:20
不联网很难校准时间,如果只是单纯的周期执行比较简单,on_time Trigger,可以在esphome中看下 ...

楼主的需求应该不是一直不联网,而是有时会断网。

在已经同步好时间之后,esp节点自己是可以维护时钟的,只不过很长时间断网的话可能误差会大一点点,但不会太大,几天校准一次应该就够了。对于家居自动化而言,毫秒级甚至秒级的误差不算啥。
回复

使用道具 举报

5

主题

35

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
金钱
197
HASS币
0
 楼主| 发表于 2021-9-20 23:58:36 | 显示全部楼层
XCray 发表于 2021-9-20 21:33
楼主的需求应该不是一直不联网,而是有时会断网。

在已经同步好时间之后,esp节点自己是可以维护时钟的 ...

请教大神,为啥我在yaml里面定义了用户服务,在ha里面找不到这个服务
api:
  services:
    - service: timing_setting #自定义定时
      variables:
        time_timing: int
      then:
        - globals.set:
            id: timing_setting
            value: !lambda 'return time_timing;'
        - logger.log: id(timing_setting)
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

发表于 2021-9-21 06:25:26 | 显示全部楼层
ymcedison 发表于 2021-9-20 23:58
请教大神,为啥我在yaml里面定义了用户服务,在ha里面找不到这个服务

估计又犯了低级错误。。。

ha里没有添加这个节点?
看文档,服务的名称前面有esphome.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 12:38 , Processed in 0.118031 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表