如何通过 Wi-Fi 控制 ESP8266?

物联网 ESP8266 无线上网 硬件 ESP32
2021-06-08 13:27:02

概括

我想构建(理想情况下基于 ESPHome)一个带有蜂鸣器的设备,我可以通过网络远程触发。

语境

我有几个围绕我的家庭自动化系统构建的系统:

  • 家庭助理保持状态并触发设备上的操作
  • AppDaemon 在那里我编码我的自动化
  • 两种“硬件触发器”:
    • 433 MHz 墙壁开关,信号由 433 Mhz 接收到 Wi-Fi 桥接器(然后到 MQTT)
    • Zigbee 交换机通过 Zigbee2MQTT 进行管理
  • 各种传感器
  • 围绕我自己编写的仪表板的各种服务

我列出所有这些是为了表明到目前为止我有两种主要的操作:

  • 从传感器/谷歌日历/气象服务/各种其他API获取数据→并显示它们的值
  • 从墙壁开关发送消息,最终导致支持 Wi-Fi 的设备(例如 Sonoff Basic)执行某些操作

我缺少什么

我现在想构建一个物联网设备,它可以接受来自我的 Wi-Fi 网络的数据并触发连接到它的模块。您可以将其视为某种可怜的闹钟 - 警报的所有逻辑都被卸载到服务中,而设备只收到发出蜂鸣声的命令。

构建这样一个物联网的正确方法是什么?

我有 NodeMCU 模块或 WeMo D1s。我可以用 ESPHome 刷新它们,带来 WiFi 通信和连接到 GPIO 的能力。

我不明白 Wi-Fi 堆栈是如何与 GPIO 交互的,确切地说。我需要编写特定的模块在编译过程中添加吗?(我已经有 20 年没有用 C 编写代码了,上一次是为了我的博士 - 但这是我可以进入的)。或者是否已经有一个模块可以完成桥接?

一般来说,当我想向支持 Wi-Fi 的 ESPHome 设备发送消息以访问其 GPIO 时,应该采用什么方法。

请注意,我知道如何反其道而行之:我已将现有的 ESPHome 模块添加到 Weemo D1,并且它们在 Home Assistant 或内置 Web 服务器中正确公开。但在这种情况下,此类模块已经存在(针对特定硬件)并且只是将数据发送出去。

2个回答

如果您正在 ESP8266 端寻找定制的东西,您可能想要编写一个程序来执行您希望它执行的操作。如果您已经在使用MQTT,那么您可以考虑在 NodeMCU 上使用MicroPython工具链更简单一些,开发迭代比烧写一个 C 程序要快很多。

ESPHome 中似乎有一个规定:

我会对解决该问题的其他(不同/更好/更典型)方法非常感兴趣