将智能插头连接到自定义 Web API

物联网 智能插头
2021-06-24 16:23:54

我正在做一个毕业项目,我需要通过 WAN 将智能插头连接到网络服务器(显然智能插头和服务器不在同一个网络上)。

换句话说,我希望能够通过我的网站打开/关闭智能插头,并让智能插头将电源读数发送到我服务器的 API。

大多数智能插头都连接到其制造商的 API。我想购买一个智能插头,我可以对其进行配置/编程以连接到我自己的 API。

是否有任何支持该功能的智能插头?

我会很感激任何更多的建议或信息,因为我有点迷茫。

编辑:我做了一个广泛的谷歌搜索,那里的大多数方法:

  1. 反向工程Android应用程序和制造商服务器之间的API并调用制造商服务器来控制智能插头,或使用IFFT也调用制造商服务器。

  2. 在本地网络上创建一个脚本,从 WAN 接收命令并通过它的 LAN API 将命令发送到 smartplug,但显然这不是我需要的,因为它要求您在设备(树莓派)上运行脚本 24 小时。

  3. 还有 upnp 和端口转发方法允许您在 WAN 上使用本地网络 API,但出于安全原因,这也不是一个选项。

我需要一个具有电源监控功能的智能插头,我可以让它连接到我自己的服务器。

  1. 我阅读了有关在智能插头 (sonoff) 上刷新自定义固件 (tasmota) 以使其连接到 WAN 上的 MQTT 代理的信息。我认为这满足了我的需要,我可以在我的服务器上安装一个 MQTT 代理并使智能插头连接到它,但这种方法有点老套,我不想冒险。我也不知道它是否支持电源监控。

有一个名为 MOKO SMART MK112 的智能插头,它支持 MQTT 和开箱即用的电源监控,但问题是由于 COVID19,我无法从中国获得它。

如果您知道有什么好的资源可以做到这一点,或者知道任何支持 MQTT 和电源监控的智能插头,我或任何其他建议都会非常感激。

2个回答

运行 Tasmota 固件Sonoff S31可能是最好的解决方案,它可以让您自定义连接到的位置。

S31 支持电源监控,并且使用 Tasmota 固件可以让您控制它发送数据的位置。所以满足您列出的所有要求。

------ 大编辑现在我不在手机上-------

但是要为您已放弃的另一个解决方案投票。使用具有本地 API 并在同一 LAN 上具有 Raspberry Pi 的设备来收集数据,然后将其发送到云端。

我实际上已经部署了这样的系统,因为它解决了很多问题。诀窍是将 Pi 设置为 WiFi 接入点,并将插座连接到 Pi。然后将 Pi 通过其以太网插座插入本地路由器。

这种设置效果很好,因为插座可以预先配置为连接到 Pi 提供的 WiFi 网络,远程用户需要做的就是将 Pi 插入电源并在他们的本地路由器上有一个备用的以太网插座。这基本上消除了在将进行监控的现场对任何技术专业知识的需要。这也意味着 pi 可以在网络中断时缓冲数据,这样您就不会丢失数据。

此设置用于监控多个国家/地区的大量位置的大量设备,并且运行良好。

pi 最终使用了 Balina.io 平台,因此可以轻松地远程管理和更新它,而无需返回它或在需要更新时让某人访问该站点。

感谢您的帮助,我找到了我需要的东西,那就是 Shelly SmartPlug

Shelly SmartPlug 支持两者,一个文档化的 Cloud API(通过 shelly 服务器),因此您不需要拦截或逆向工程任何东西。
以及对MQTT协议的支持。
您需要先通过其 Web 界面启用它,输入您的 MQTT 代理 IP 和端口,然后一切顺利。

它使用 ESP8266 芯片,运行 Mongoose OS,您还可以在空中闪烁 tasmota,无需焊接。

它具有三种通信方式
1.Local HTTP API
2.MQTT
3.Cloud API

这是我的计划:
首先我将按下 shelly 智能插头上的电源按钮,
它将打开一个带有本地 HTTP 服务器的 wifi 网络,您可以使用它来配置它。
通过我的自定义 Android 应用程序,我将调用该服务器 API,将我的 Wifi 凭据传递给它,启用 MQTT,将我的 MQTT 服务器 IP 和端口添加到它,就是这样!

然后我可以使用它的本地 HTTP 服务器通过 LAN 与它通信,或者使用 MQTT 通过 WAN 与它通信。

https://shelly.cloud/products/shelly-plug-smart-home-automation-device/

本地 API:https : //shelly-api-docs.shelly.cloud/_review/mqtt/#shelly-plug
https://shelly-api-docs.shelly.cloud/#shelly-plug-plugs

云 API:https : //shelly.cloud/documents/developers/shelly_cloud_api_access.pdf

Tasmota 个人资料:https ://templates.blakadder.com/shelly_plug_S.html

闪烁:https : //youtu.be/_TSJB_IzxG0