Homepoint 是一个基于屏幕的界面,适用于在 ESP32 芯片组上运行的 MQTT 和 HomeKit 连接的智能家居设备。
特征
演示
安装
建造
配置
场景&设备
无线网络和MQTT
NTP 时间(可选)
示例
路线图
已知错误和问题
贡献
给我买杯咖啡
执照
在前屏幕上查看并触发场景(设备组)。
通过深入场景(通过点击指示器或长按按钮)来触发各个设备。
一目了然地查看多个设备部分打开的场景。
支持温度、湿度、空气质量传感器和 Tasmota 能量读数。
远程配置:通过 Web 界面配置并重新启动 HomePoint。无需重新刷新。
无线更新(测试版) :通过无线方式刷新 HomePoint 新版本。
HomeKit 开关支持(在 Home 应用程序中设置自动化以从 Homepoint 进行切换)*
支持触摸屏或基于按钮的导航。
反应式:每当设备从其他地方触发时,屏幕就会更新。
通过 JSON 文件轻松配置,无需额外代码。
屏幕保护程序会在 10 分钟后关闭屏幕以节省电量。
状态栏显示 WiFi 和 MQTT 的连接情况以及时间。
故障安全模式:在配置损坏的情况下,提供用于远程访问的故障安全模式。
预编译的二进制文件:只需在 ESP32 设备上刷新 HomePoint 即可,无需编译。
*目前在实验分支上。
HomePoint 包含 2 个预编译的 .bin 文件,可在通用 ESP32 模块或 M5Stack 上刷新。有关硬件设置的更多详细信息,请参阅 Wiki。
安装步骤:
从 https://github.com/espressif/esptool/releases 下载 ESPTools
使用python setup.py install
安装 ESPTools
运行esptool.py -b 921600 write_flash -fs 4MB -fm dout 0x0 homepoint_espgeneric.bin
(或 homepoint_m5stack.bin 对于 M5Stack)
或者,观看下面的安装视频:
Homepoint 是使用 ESP-IDF SDK 创建的。
详细的构建说明可在 Wiki 中找到。
配置位于data/config.json
中。
HomePoint 支持两种类型的场景,每种场景都有多种设备选择:
场景类型 | 设备类型 |
---|---|
灯、开关 | (无,所有设备均应为交换机) |
传感器 | 使用可自定义的图标一次显示一个或两个值(singleValue/combinedValues) |
分组传感器最多支持两个设备(由于屏幕空间)。
灯和开关支持组中无限数量的设备。
一些传感器使用JSON作为数据格式,在这种情况下可以定义密钥。这些可以位于传感器 json 有效负载的任何级别,对于 Tasmota 智能插头,键值“Power”可用于显示当前功耗。
WiFi 和 MQTT 凭证将在顶层定义。
为了设置正确的时区,请将 NTP TZ 设置复制并粘贴到timezone
键。
一些 IL9341 显示单元似乎在触摸屏坐标如何与显示屏相对应或如何控制 LED 背光方面有所不同。因此,我们提供了一些选项来覆盖配置文件中的默认值。
钥匙 | 类型 | 价值 |
---|---|---|
“led 引脚上拉” | 布尔值 | true 或false - 控制背光功率,可以根据单元上拉/下拉 |
“屏幕旋转角度” | INT | 旋转参数可以是 0、1、2 或 3 - 以 90 度角度递增 |
“屏幕保护分钟” | INT | 显示屏关闭前的分钟数(默认 10) |
“触摸X轴反转” | 布尔 | 默认值: false ,反转触摸屏的 X 轴,以防未对齐 |
“触摸Y轴反转” | 布尔 | 默认值: true ,反转触摸屏的 Y 轴,以防未对齐 |
“显示颜色反转” | 布尔 | 默认值: false ,反转色彩空间(即对于 ILI9342C 显示器) |
根据 MQTT 规范,MQTT 主题区分大小写。
{ "wifi": "MyWifiSSID", "password": "我的 Wifi 密码", "hostname": "可选主机名", "login": "admin", "webpass": "admin", "mqttbroker": "mqtt: //192.168.1.2", "mqtt用户名": "mqtt用户名", "mqttpasswd": "mymqttpassword", "timezone": "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "scenes": [{ "name": "客厅" , "type": "Light", "icon": "livingroom", "devices": [{ "name": "Some Light", "setTopic": "lights/hue/00:17:88:01:02:3c:2a:6d-0b/set/on", "getTopic": "hue/status/lights/Hue 彩色灯 1", "onValue": " true", "offValue": "false" }, { "name": "门灯", "setTopic": "lights/hue/00:17:88:01:02:3c:2a:6d-0b/set/on", "getTopic": "hue/status /lights/Hue 彩色灯 1", "onValue": "true", "offValue": "false", "icon": "door" }, ] }, { "name": "卧室", "type": "传感器", "icon": "门", "devices": [{ "name": "温度 DHT 传感器", "type": "singleValue", " jsondata": true, "firstIcon": "Temperature_small", "firstKey": "温度", "getTopic": "bedroom/esptemp" }, { "name": "Tasmota 智能插头", "type": "singleValue", "jsondata": true, "firstKey": "Power", "firstIcon":"wattage_small", "getTopic": "tele/DVES_2F73BE/传感器” }] }] }
此处提供了更完整配置的示例。
与 Homebridge-Hue 和 HomeAssistant / ZigBee2MQTT 集成的文档
HomeKit 支持
测试
如果您发现任何错误或需要帮助,请不要犹豫并提出问题:)
欢迎贡献!只需破解并打开拉取请求即可。但请遵循已有代码的风格(即没有制表符、空格)。
我在空闲时间开发了 HomePoint,因为我想了解有关 ESP32 上的 C++ 的更多信息并解决我的智能家居中的具体问题。
随着开发的不断进行,我思考了如何使这个项目开源,并且对创客社区来说更容易访问和用户友好。
如果您喜欢使用 HomePoint 或这项工作,请考虑捐赠一小笔。但别担心,无论如何我都会继续努力;-)。
麻省理工学院©马蒂亚斯·弗里克