数码之家

 找回密码
 立即注册
搜索
查看: 1346|回复: 7

[外设] 改普通排插为四路贝壳物联智能排插

[复制链接]
发表于 2021-11-29 05:23:47 | 显示全部楼层 |阅读模式
因为懒,不想走去打开开关,所以就改普通排插为智能排插,打开排插发现里面的空间足够放四个继电器模块等。上图:




只拍了两张图,其他的懒得拍了

支持天猫精灵

附上代码

/*
    此文件需安装Arduino esp8266开发环境支持,环境搭建参见:http://www.bigiot.net/talk/237.html
    本程序可以用来控制四路继电器
    ESP8266烧入此程序直接,使用高低电频控制光耦继电器来控制电灯
    我的继电器默认高电频关闭,所以在初始化时都初始化为高电频,play关闭开启,stop关闭关闭,输入1-4打开或关闭对应的引脚
    代码基于https://github.com/bigiot/bigiot ... kaiguan/kaiguan.ino
    上的代码进行调整,修复了部分bug,解决了断线重连问题,此代码可以直接烧入到nodemcu模块,分享代码希望对大家有帮助
*/

#include <ESP8266WiFi.h>
#include <aJSON.h>

//=============  此处必须修该============
String DEVICEID="xxx"; // 你的设备编号   ==
String  APIKEY = "xxxx"; // 设备密码==
//=======================================
unsigned long lastCheckInTime = 0; //记录上次报到时间
const unsigned long postingInterval = 40000; // 每隔40秒向服务器报到一次

const char* ssid     = "xxxxx";//无线名称
const char* password = "xxxxxxxx";//无线密码

const char* host = "www.bigiot.net";
const int httpPort = 8181;

int pins[4] = {12,13,14,16};
int state[4] = {HIGH,HIGH,HIGH,HIGH};
int arr_len = sizeof(pins)/sizeof(pins[0]);

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

  WiFi.begin(ssid, password);
  //默认输出关闭电频
  for(int i=0;i<arr_len;i++){
    pinMode(pins, OUTPUT);
    digitalWrite(pins, state);
  }

}

WiFiClient client;

void loop() {

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }

  // Use WiFiClient class to create TCP connections
  if (!client.connected()) {
    if (!client.connect(host, httpPort)) {
      Serial.println("connection failed");
      delay(5000);
      return;
    }
  }

  if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {
    checkIn();
  }

  // Read all the lines of the reply from server and print them to Serial
  if (client.available()) {
    String inputString = client.readStringUntil('\n');
    inputString.trim();
    Serial.println(inputString);
    int len = inputString.length()+1;
    if(inputString.startsWith("{") && inputString.endsWith("}")){
      char jsonString[len];
      inputString.toCharArray(jsonString,len);
      aJsonObject *msg = aJson.parse(jsonString);
      processMessage(msg);
      aJson.deleteItem(msg);         
    }
  }
}

void processMessage(aJsonObject *msg){
  aJsonObject* method = aJson.getObjectItem(msg, "M");
  aJsonObject* content = aJson.getObjectItem(msg, "C");     
  aJsonObject* client_id = aJson.getObjectItem(msg, "ID");
  if (!method) {
    return;
  }
    String M = method->valuestring;
    if(M == "say"){
      String C = content->valuestring;
      String F_C_ID = client_id->valuestring;
      if(C == "play"){
        for(int i=0;i<arr_len;i++){
          state = LOW;
          digitalWrite(pins, state);
        }
        sayToClient(F_C_ID,"LED All on!");   
      }else if(C == "stop"){
        for(int i=0;i<arr_len;i++){
          state = HIGH;
          digitalWrite(pins, state);
        }
        sayToClient(F_C_ID,"LED All off!");   
      }else{
        int pin = C.toInt();
        if(pin > 0 && pin <= arr_len){
          pin--;
          state[pin] = !state[pin];
          digitalWrite(pins[pin], state[pin]);
        }
        sayToClient(F_C_ID,"LED pin:"+pin);
      }
    }
}

void checkIn() {
    String msg = "{\"M\":\"checkin\",\"ID\":\"" + DEVICEID + "\",\"K\":\"" + APIKEY + "\"}\n";
    client.print(msg);
    lastCheckInTime = millis();
}

void sayToClient(String client_id, String content){
  String msg = "{\"M\":\"say\",\"ID\":\"" + client_id + "\",\"C\":\"" + content + "\"}\n";
  client.print(msg);
  lastCheckInTime = millis();
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 2家元 +70 收起 理由
kaixi_ants + 20 原創內容
家睦 + 50

查看全部打赏

发表于 2021-11-29 09:39:25 | 显示全部楼层
用tasmota就不需要写代码和编译了
回复 支持 反对

使用道具 举报

发表于 2021-11-29 10:43:56 | 显示全部楼层
看着,都觉得危险....:lol::lol::lol:
回复 支持 反对

使用道具 举报

发表于 2021-11-29 12:14:09 来自手机浏览器 | 显示全部楼层
内部真够拥挤的
回复 支持 反对

使用道具 举报

发表于 2021-11-29 16:47:00 来自手机浏览器 | 显示全部楼层
楼主还处于模块搭建的兴趣初级阶段,
下一阶段,学会电路仿真,用洞洞板电路焊接或者干脆力创捷配免费打板,空间布局就可以更好的掌握了。
回复 支持 反对

使用道具 举报

发表于 2021-11-30 11:33:22 | 显示全部楼层

楼主还处于模块搭建的兴趣初级阶段,
下一阶段,学会电路仿真,用洞洞板电路焊接或者干脆力创捷配免费打板,空间布局就可以更好的掌握了。
回复 支持 反对

使用道具 举报

发表于 2021-11-30 11:41:24 | 显示全部楼层
:lol::lol::lol:用mos管控制开关就省空间很多了
回复 支持 反对

使用道具 举报

发表于 2022-7-21 21:53:37 | 显示全部楼层
四路全控有点浪费继电器了
回复 支持 反对

使用道具 举报

发表于 2022-7-24 09:35:08 | 显示全部楼层
真够极致空间压缩
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-26 08:13 , Processed in 0.265201 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表