基于MQTT+小爱同学 控制双开继电器

本文为搭建带来基于物联网方面的应用实例,基于MQTT+Home Assistant+小爱同学。

效果

设备清单

  • esp8266
  • 双开继电器(主要讲解两个以上的继电器)
  • 小灯泡

线路连接

继电器和ESP8266脚针说明

vccvim(这个脚针为5V)

GNDGND

两个控制端接口分别为D6 D7 可在代码中修改。

const int ledPin1 = D6;  
const int ledPin2 = D7;  
基于MQTT+小爱同学 控制双开继电器

继电器和灯泡连接线路。

基于MQTT+小爱同学 控制双开继电器
根据实际,选择闭合状态
基于MQTT+小爱同学 控制双开继电器
实物连接

实例代码

#include   
#include   
  
// WiFi 配置
const char* ssid = "你的WiFi名";  
const char* password = "你的WiFi密码";  
  
// MQTT 服务配置
const char* mqtt_server = "192.168.123.4";  //mqtt服务器地址
const int mqtt_port = 1883;  //mqtt端口
const char* client_id = "ESP8266_LED_Controller";  //设备Id
const char* mqtt_username = "admin"//mqtt账号
const char* mqtt_password = "admin";  //mqtt密码
// MQTT topic  
const char* topic = "home/leds";   //订阅的主题
  
WiFiClient espClient;  
PubSubClient client(espClient);  
  
// 定义Led的脚针
const int ledPin1 = D6;  
const int ledPin2 = D7;  
  
// 定义脚针的初始状态 -关闭
bool led1State = false;  
bool led2State = false;  
  
void setup_wifi() {  
  //开始连接WiFi
  delay(10);  
  Serial.println();  
  Serial.print("Connecting to ");  
  Serial.println(ssid);  
  
  WiFi.begin(ssid, password);  
  
  while (WiFi.status() != WL_CONNECTED) {  
    delay(500);  
    Serial.print(".");  
  }  
  
  Serial.println("");  
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");  
  Serial.println(WiFi.localIP());  
}  
  /*
  下面是控制灯的核心代码,我这里只订阅了一个主题。在同一个主题中,发送不同的命令开启不同的灯。
  on-off 开启1号灯。 
  0-1 开启2号灯。
  */

void callback(char* topic, byte* payload, unsigned int length) {  
  Serial.print("Message arrived [");  
  Serial.print(topic);  
  Serial.print("] ");  
  for (int i = 0; i < length; i++) {  
    Serial.print((char)payload[i]);  
  }  
  Serial.println();  
  
  // Check the payload content  
  char payloadStr[length + 1];  
  memcpy(payloadStr, payload, length);  
  payloadStr[length] = '';  
  
  if (strcmp(topic, topic) == 0) { 
    if (strcmp(payloadStr, "on") == 0) {  
      digitalWrite(ledPin1, HIGH);  
      led1State = true;  
    } else if (strcmp(payloadStr, "off") == 0) {  
      digitalWrite(ledPin1, LOW);  
      led1State = false;  
    } else if (strcmp(payloadStr, "0") == 0) {  
      digitalWrite(ledPin2, LOW);  
      led2State = false;  
    } else if (strcmp(payloadStr, "1") == 0) {  
      digitalWrite(ledPin2, HIGH);  
      led2State = true;  
    } else {  
      Serial.println("Unknown command");  
    }  
  }  
}  
  
void reconnect() {  
  //mqtt
  while (!client.connected()) {  
    Serial.print("Attempting MQTT connection...");  
    if (client.connect(client_id, mqtt_username, mqtt_password)) {  
      Serial.println("connected");  
      client.subscribe(topic);  
    } else {  
      Serial.print("failed, rc=");  
      Serial.print(client.state());  
      Serial.println(" try again in 5 seconds");  
      delay(5000);  
    }  
  }  
}  
  
void setup() {  
  pinMode(ledPin1, OUTPUT);  
  pinMode(ledPin2, OUTPUT);  
  Serial.begin(115200);  
  setup_wifi();  
  client.setServer(mqtt_server, mqtt_port);  
  client.setCallback(callback);  
}  
  
void loop() {  
  if (!client.connected()) {  
    reconnect();  
  }  
  client.loop();  
}

接入Home Assistant

在集成中,添加MQTT。填写服务器相关信息。

基于MQTT+小爱同学 控制双开继电器

添加实体

修改HomeAssistant配置文件configuration.yaml。添加代码如下:

mqtt:
 light:
    - unique_id: led_1          #设备ID
      name: "led_1"             #设备名称
      state_topic: "home/leds"   #订阅端口
      command_topic: "home/leds" #同上
      payload_on: "1"           #开灯的指令
      payload_off: "0"          #关灯的指令

    - unique_id: led_2          
      name: "led_2"             
      state_topic: "home/leds"   
      command_topic: "home/leds" 
      payload_on: "on"           #开灯的指令
      payload_off: "off"          #关灯的指令
基于MQTT+小爱同学 控制双开继电器
注意空格 书写很严格

完成后,重启HA。便可以添加实体了!

基于MQTT+小爱同学 控制双开继电器

同步小爱

在HA中,安装巴法云。

基于MQTT+小爱同学 控制双开继电器点击配置 同步实体。

基于MQTT+小爱同学 控制双开继电器

接下来,在米家其他平台同步巴法云。

基于MQTT+小爱同学 控制双开继电器
同步设备
基于MQTT+小爱同学 控制双开继电器
效果
BREAK AWAY
相关推荐
01
物联网入门之MQTT协议(一)
02
一文玩转MQTT(基于esp8266 DHT11 MQTT Mysql实现)
03
OLED+MQTT 实现土壤 温湿度 线上线下展示

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

本内容观点仅代表发布作者本人观点立场,欣文网平台只做信息内容展示和存储。发布作者:全网转载,转转请注明出处:https://www.xinenw.com/45479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年10月19日
下一篇 2024年10月19日

相关推荐

  • 高考生考试穿戴可不能只图寓意好!这些物品带进去,直接就算违纪了!

    点击蓝字| 关注我们 文|我是笑笑 高考的到来无疑让这个夏天增加了几分激动和喜悦,面对高考的到来,老师和考生都格外重视。学生一方面在学校里把握住最后关键的备考时间。 另一方面家长也会想尽一切办法给孩子讨一个好寓意,毕竟很多父母觉得自己也没有什么能够帮助孩子的,给孩子讨一个好寓意,图一心理安慰也是很好的。 企图有好心态的加持,孩子也能取得好成绩。 比如有的家长…

    2024年6月8日
    15400
  • 全红婵在空中转圈的时候,睁眼了吗?

    近日,全红婵和陈芋汐在巴黎再次上演“水花消失术”,毫无悬念包揽金银!标准的翻腾动作、近乎完美的水花,中国跳水队再次展示自己的绝对实力。 图源:新华社 除了跳水,竞技体操、蹦床等项目也常见旋转动作,高分标准包括空中翻转完美,以及最后稳稳落地或者压低水花。而保持竖直落准的关键,除了控制身体姿态的能力,视觉也是辅助选手在飞行阶段找准位置、准备精确着陆的重要条件之一…

    2024年8月20日
    11000
  • 高校这门“能吃”的课火了!“我到毕业也没抢上……”

    奶香四溢 这是一门可以吃的课 学生在门课上 可以品尝各种奶酪 还能了解奶酪背后的故事 这是中国农业大学的 一门特色通识课—— 世界奶酪文化与品鉴 据了解 这门公选课面向所有专业 大一到大四的学生 都可以选 有同学表示 “这个课非常火爆 我现在大三了才抢到这门课” 还有人说 “我到毕业也没抢上” “只有真正吃到奶酪 才会真正了解它” 这门课程时长共八周 每节课…

    2024年4月28日
    19600
  • 去河流与湖泊间游个野泳

    你能够试着描述一下在水中,究竟是一种什么样的感觉吗?是飞翔的感觉吗?水变成了天,推开水的双臂变成了羽翼。是被包围的感觉吗?仿佛重新回到了出生前的状态,那包裹在你四周的,是柔软和温暖的海洋。游泳,对人的意义是什么呢? 自然文学作家罗杰·迪金在18个月里游遍了英国的河流湖泊,并将他的所见所闻记录在了《野泳去》一书中,他在拥抱每一片水域时,沉浸在自然的宁静中,在感…

    2024年8月27日
    9700
  • 骁龙 8 Gen4 要来,怎么还要涨价

    · 骁龙 8 Gen 4 旗舰处理器要来了! 高通骁龙峰会 2024 定档 10 月 21~23 日在夏威夷毛伊岛举行。 按照高通历年的发布节奏,骁龙 8 Gen 4 旗舰手机处理器将在骁龙峰会 2024 上推出。 博主 @数码闲聊站爆料曾称,高通骁龙 8 Gen 4 芯片(SM8750)重新设定的频率较为激进,自研超大核来到了 4.2GHz。 他还透露,手…

    2024年6月18日
    16500

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件A:xinenw@qq.com

邮箱B:xinenw@163.com

工作时间:周一至周五,8:30-23:30;周六周日10:30-18:30;节假日休息

关注微信