ThingsCloud通过继电器控制小灯【留存自用】

#include <ThingsCloudWiFiManager.h>
#include <ThingsCloudMQTT.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
//#include <ArduinoJson.h>


//======================================================
// 设置 ssid / password,连接到你的 WiFi AP
const char *ssid = "wifi";
const char *password = "12345678";
// 在 ThingsCloud 控制台的设备详情页中,复制以下设备连接信息
// https://console.thingscloud.xyz
#define THINGSCLOUD_MQTT_HOST "sh-3-mqtt.iot-api.com"
#define THINGSCLOUD_DEVICE_ACCESS_TOKEN "xvevcadpctoq8py8"
#define THINGSCLOUD_PROJECT_KEY "U3Kwk77cDp"
//======================================================

ThingsCloudMQTT client(
  THINGSCLOUD_MQTT_HOST,
  THINGSCLOUD_DEVICE_ACCESS_TOKEN,
  THINGSCLOUD_PROJECT_KEY);

// 设置继电器的输入引脚
#define RELAY_PIN 5

void setup() {
  Serial.begin(115200);

  pinMode(RELAY_PIN, OUTPUT);
  // 初始断开继电器,输出高电平
  digitalWrite(RELAY_PIN, HIGH);

  // 允许 SDK 的日志输出
  client.enableDebuggingMessages();

  // 连接 WiFi AP
  client.setWifiCredentials(ssid, password);
}

void handleAttributes(const JsonObject &obj) {
  if (obj.containsKey("switch1")) {
    // 接收到下发的 relay 属性
    if (obj["switch1"] == true) {
      // 闭合继电器,输出低电平
      digitalWrite(RELAY_PIN, LOW);
      Serial.println("relay switch to ON");
    } else {
      // 断开继电器,输出高电平
      digitalWrite(RELAY_PIN, HIGH);
      Serial.println("relay switch to OFF");
    }
  }
}

// 必须实现这个回调函数,当 MQTT 连接成功后执行该函数。
void onMQTTConnect() {

  // 订阅获取属性的回复消息
  client.onAttributesGetResponse([](const String &topic, const JsonObject &obj) {
    if (obj["switch1"] == 1) {
      handleAttributes(obj["attributes"]);
    }
  });

  // 订阅云平台下发属性的消息
  client.onAttributesPush([](const JsonObject &obj) {
    handleAttributes(obj);
  });

  // 读取设备在云平台上的属性,用于初始化继电器状态。
  // 云平台回复的属性会进入上边 client.onAttributesGetResponse 接收的消息。
  client.getAttributes();
}

void loop() {
  client.loop();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值