手捏远程开机卡 接入HA和小爱

admin 2024年12月3日12:25:34评论4 views字数 2455阅读8分11秒阅读模式

在前面,我们利用ESP8266制作了远程开机卡。是基于点灯搞得。用了一段时间发现延迟比较高,而且容易掉线。

本想直接入手开机卡。但是看看价格,作为一名合格的垃圾佬果断放弃。

手捏远程开机卡 接入HA和小爱
WiFi基础款

实验准备

  • esp8266(十块左右)
  • 热熔胶(用于固定)
  • 杜邦线(没有就普通型代替)

自建MQTT服务

关于MQTT服务的搭建,可以参考文章物联网入门之MQTT协议(一)

实验代码

注意,开发板选择NodeMCU。烧录代码到设备。

手捏远程开机卡 接入HA和小爱
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// Wi-Fi 网络信息
const char* ssid = "PDCN";
const char* password = "1234567890";
// MQTT 服务器信息
const char* mqtt_server = "xx.xxx.xxx.xxx";
const int mqtt_port = 1883;
// 电脑电源控制的GPIO脚针
const int powerPin = D1; // 根据你的ESP8266模块,选择合适的脚针

WiFiClient espClient;
PubSubClient client(espClient);

// 当客户端连接到MQTT服务器时调用
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP8266Client")) {
Serial.println("connected");
// 订阅开机和关机主题
client.subscribe("computer/control");
else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}

void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
}

void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (unsigned int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();

// 将payload转换为字符串
char message[length + 1];
strncpy(message, (char*)payload, length);
message[length] = '�';

// 处理开机命令
if (String(topic) == "computer/control" && String(message) == "on") {
digitalWrite(powerPin, HIGH); // 打开电脑电源
delay(200);//延时200ms模拟按下延迟
digitalWrite(powerPin,LOW);//模拟松开按钮
}
// 处理关机命令 不建议直接关机,可登录服务器用关机命令关机。这里关机相当于直接断电。
if (String(topic) == "computer/control" && String(message) == "off") {
digitalWrite(powerPin, HIGH); // 打开电脑电源

}
}

void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);

pinMode(powerPin, OUTPUT); // 设置GPIO脚针为输出模式
digitalWrite(powerPin, HIGH); // 初始状态为开启电脑电源 可根据实际情况进行调试。
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}

线路

连接到主板开机跳线处,注意正负。

3v3--连接正极

D1--连接负极

手捏远程开机卡 接入HA和小爱

关于Esp8266供电,我直接插到了光猫的USB口中。

接入HA

修改ha配置文件configuration.yaml 添加信息如下:

- unique_id: led_3         #设备ID
      name: "led_3"             #设备名称
      state_topic: "computer/control"   #订阅端口
      command_topic: "computer/control" #同上
      payload_on: "on"           #开灯的指令
      payload_off: "off1"          #关灯的指令

 

手捏远程开机卡 接入HA和小爱

更详细配置MQTT 请移步文章物联网入门之安装Homeassistant(二)

手捏远程开机卡 接入HA和小爱
手捏远程开机卡 接入HA和小爱

同步小爱

别人有的,我们也不能少。利用法巴云插件我们可以将设备同步到米家,进行小爱开机。

手捏远程开机卡 接入HA和小爱
手捏远程开机卡 接入HA和小爱
效果

更多精彩文章 欢迎关注我们

原文始发于微信公众号(kali笔记):手捏远程开机卡 接入HA和小爱

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月3日12:25:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   手捏远程开机卡 接入HA和小爱https://cn-sec.com/archives/3462571.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息