- platform: mqttname: "GN-B3043-1F773D-K1" #設備名稱,自己設置state_topic: "GN-B3043-1F773D/state/K1" # “GN-B3043-1F773D” MQTT訂閱主題,即插座的設備名稱,可網頁自行設置,設置成Auto 則自動用MAC生產,該地址即自動生成command_topic: "GN-B3043-1F773D/set/K1"unique_id: "32b33778a2614be0a3290f81afdeaba9" #實體ID,任意,不重復就行,不設置,Home Assistant會提示無唯一實體ID payload_on: "1"payload_off: "0"state_on: "1"state_off: "0"optimistic: falseqos: 0retain: falseicon: mdi:monitor- platform: mqttname: "GN-B3043-1F773D-K2"state_topic: "GN-B3043-1F773D/state/K2"command_topic: "GN-B3043-1F773D/set/K2"unique_id: "32b33778a2614be0a3290f81afdeabaa"payload_on: "1"payload_off: "0"state_on: "1"state_off: "0"optimistic: falseqos: 0retain: false- platform: mqttname: "GN-B3043-1F773D-K3"state_topic: "GN-B3043-1F773D/state/K3"command_topic: "GN-B3043-1F773D/set/K3"unique_id: "32b33778a2614be0a3290f81afdeabab"payload_on: "1"payload_off: "0"state_on: "1"state_off: "0"optimistic: falseqos: 0retain: falseicon: mdi:television-classic- platform: mqttname: "GN-B3043-1F773D-K4"state_topic: "GN-B3043-1F773D/state/K4"command_topic: "GN-B3043-1F773D/set/K4"unique_id: "32b33778a2614be0a3290f81afdeabac"payload_on: "1"payload_off: "0"state_on: "1"state_off: "0"optimistic: falseqos: 0retain: false
#include <ESP8266WiFi.h>#include <Ticker.h>#include <WiFiUdp.h>#include <WiFiManager.h>#include <EEPROM.h>#include <PubSubClient.h>#include <ESP8266WebServer.h>#include <ESP8266HTTPUpdateServer.h>Ticker flipper;//定義定時器//#define PIN_POWER 4 //指示燈位于GPIO4#define PIN_LED 13 //指示燈位于GPIO2#define KEY1 0 //KEY對應值GPI14#define KEY2 2 //KEY對應值GPI14#define KEY3 4 //KEY對應值GPI14#define KEY4 5 //KEY對應值GPI14int dspin = 16;//74HC595的14腳 數據輸入引腳SI 數據int clkpin = 12;//74hc595的11腳 時鐘線 SCK 時鐘int latpin = 14;//74hc595的12腳 輸出存儲器鎖存線RCK 鎖存String AutoRigName = "";// 設備名 如果“Auto”則使用MAC自動生成)String RIG_IDENTIFIER ; // EEPROM 地址 120String K1_name = "開關1"; //開關1名稱 EEPROM 地址 200String K2_name = "開關2"; //開關2名稱 EEPROM 地址 220String K3_name = "開關3"; //開關3名稱 EEPROM 地址 240String K4_name = "開關4"; //開關4名稱 EEPROM 地址 260const char ssid[] = "*****"; //WiFi名 EEPROM 地址 140const char pass[] = "****"; //WiFi密碼 EEPROM 地址 160ADC_MODE(ADC_VCC);//設置ADC模式為讀取系統電壓int wifi_flg = 0;//WIFI狀態標志 0 未連接 1 連接中 2 配網中 3 WIFI已連接 4 MQTT已連接int power_time = 0;//倒計時關機int K1_flg;//定義開關1狀態標志位 EEPROM 地址 101int K2_flg;//定義開關1狀態標志位 EEPROM 地址 102int K3_flg;//定義開關1狀態標志位 EEPROM 地址 103int K4_flg;//定義開關1狀態標志位 EEPROM 地址 104int O595_1_flg = 255;//定義595 1 標志位int O595_2_flg = 255;//定義595 1 標志位int K1_ACflag = 2; // EEPROM 地址 181int K2_ACflag = 2; // EEPROM 地址 182int K3_ACflag = 2; // EEPROM 地址 183int K4_ACflag = 2; // EEPROM 地址 184uint32_t t=0;//按鍵計時WiFiClient espClient;PubSubClient client(espClient);const char* mqtt_server = "*******.f3322.org";//mqtt服務地址const char* clientID ="8266-001"; // 設備id//WiFiUDP Udp;//實例化WiFiUDP對象//unsigned int localUdpPort = 4321; // 自定義本地監聽端口//unsigned int remoteUdpPort = 8629; // 自定義遠程監聽端口//char incomingPacket[255]; // 保存Udp工具發過來的消息//char replyPacket[] = "Hi, this is esp8266 "; //發送的消息,僅支持英文void callback(char *topic, byte* payload, unsigned int length); //回調函數聲明,用于傳入mqtt客戶端構造函數作為參數//void write_String(int a,String str);//EEPROM寫字符串//參數: MQTT服務器地址,端口號,回調函數名,承載的連接(WIFI)PubSubClient mqttClient(mqtt_server, 1833, callback, espClient);ESP8266WebServer server(80);ESP8266HTTPUpdateServer httpUpdater;//變量常量定義:String postForms(){String htmlCode = "<!DOCTYPE html><html> ";htmlCode += "<head> ";htmlCode += "<title>GN-B3034智能插座</title> ";htmlCode += "<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> ";htmlCode += "<meta name='viewport' content='width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0'/> ";htmlCode += "<style> ";htmlCode += "body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; } ";htmlCode += "</style> ";htmlCode += "</head> ";htmlCode += "<body> ";htmlCode += "<h1>GN-B3034智能插座控制頁面</h1><br> ";htmlCode += "<h3>請輸入0或1控制開關</h3><br> ";htmlCode += "<form method="post" enctype="application/x-www-form-urlencoded" action="/"> ";htmlCode += " 0為關,1為開 <br> ";htmlCode += "開關1<input type="text" name="K1_power" value= "";htmlCode += K1_flg;htmlCode += "" size="5" initial-scale = 2.0 autocomplete="off">(";htmlCode += K1_name;htmlCode += ")<br> ";htmlCode += "開關2<input type="text" name="K2_power" value= "";htmlCode += K2_flg;htmlCode += "" size="5" initial-scale = 2.0 autocomplete="off">(";htmlCode += K2_name;htmlCode += ")<br> ";htmlCode += "開關3<input type="text" name="K3_power" value= "";htmlCode += K3_flg;htmlCode += "" size="5" initial-scale = 2.0 autocomplete="off">(";htmlCode += K3_name;htmlCode += ")<br> ";htmlCode += "開關4<input type="text" name="K4_power" value= "";htmlCode += K4_flg;htmlCode += "" size="5" initial-scale = 2.0 autocomplete="off">(";htmlCode += K4_name;htmlCode += ")<br> ";htmlCode += "<input type="submit" value="應用"></form><hr> ";htmlCode += "<h3>系統參數設</h3> ";htmlCode += "<form method="post" enctype="application/x-www-form-urlencoded" action="/"> ";htmlCode += "網絡名稱<input type="text" name="network_name" value= "0" size="20" initial-scale = 2.0 autocomplete="off"> ";htmlCode += " ";htmlCode += "<input type="submit" value="修改"> ";htmlCode += "</form> ";htmlCode += "<form method="post" enctype="application/x-www-form-urlencoded" action="/"> ";htmlCode += "網絡密碼<input type="text" name="network_password" value= "0" size="20" initial-scale = 2.0 autocomplete="off"> ";htmlCode += "<input type="submit" value="修改"></form> ";htmlCode += "<form method="post" enctype="application/x-www-form-urlencoded" action="/"> ";htmlCode += "設備名稱<input type="text" name="RIG_IDENTIFIER" value= "";htmlCode +=read_String(120);htmlCode += "" size="20" initial-scale = 2.0 autocomplete="off"> ";htmlCode += "<input type="submit" value="修改">(為Auto時系統自動生成)</form> ";htmlCode += "<p>上電開關狀態(關閉/開啟/保持上次) ";htmlCode += "<p> 開關1 | 開關2 | 開關3 | 開關4<br> ";htmlCode += "<form name="form1" method="post" action=""> ";htmlCode += "<label for="ACflag"></label> ";htmlCode += "<select name="K1_ACflag" id="K1_ACflag"> ";htmlCode += "<option value="0"";if(K1_ACflag == 0){htmlCode += " selected="selected"";}htmlCode += ">關閉</option> ";htmlCode += "<option value="1"";if(K1_ACflag == 1){htmlCode += " selected="selected"";}htmlCode += ">開啟</option> ";htmlCode += "<option value="2"";if(K1_ACflag == 2){htmlCode += " selected="selected"";}htmlCode += ">不變</option> ";htmlCode += "</select> ";htmlCode += "<select name="K2_ACflag" id="K2_ACflag"> ";htmlCode += "<option value="0"";if(K2_ACflag == 0){htmlCode += " selected="selected"";}htmlCode += ">關閉</option> ";htmlCode += "<option value="1"";if(K2_ACflag == 1){htmlCode += " selected="selected"";}htmlCode += ">開啟</option> ";
!注意:請使用瀏覽器自帶下載,迅雷等下載軟件可能無法下載到有效資源。
器件 | 類型 | 描述 | 數據手冊 |
---|---|---|---|
GCJ188R91H104KA01D | 貼片電容(MLCC) | 點擊下載 | |
EKMG100ETC101ME11D | 直插鋁電解電容 | 點擊下載 | |
LL4148 | 開關二極管 | 點擊下載 | |
HF3FF/024-1HS | 繼電器 | 點擊下載 | |
SC0603J3002F2BNRH | 貼片電阻 | 點擊下載 | |
SS8550 | 三極管 | 晶體管類型:PNP 集電極電流Ic:1.5A 集射極擊穿電壓Vce:25V 額定功率:300mW PNP | 點擊下載 |
RCT0310KFLF | 貼片電阻 | 阻值(歐姆):10K 精度:±1% 功率:1/10W 溫度系數:- | 點擊下載 |
RMC06031.5K5%N | 貼片電阻 | 點擊下載 | |
RMC06032.2K1%N | 貼片電阻 | 點擊下載 | |
K2-1102SP-C3SC-04 | 輕觸開關 | 點擊下載 | |
WT8266-S6 ESP-12S | WiFi模塊 | 點擊下載 | |
SN74HC595PWR | 74系列邏輯芯片 | 邏輯類型:移位寄存器 額外特性:三態 移位寄存器 | 點擊下載 |
CF14JA1R00 | 插件電阻 | 點擊下載 |
歡迎加入EEWorld參考設計群,也許能碰到搞同一個設計的小伙伴,群聊設計經驗和難點。 入群方式:微信搜索“helloeeworld”或者掃描二維碼,備注:參考設計,即可被拉入群。 另外,如您在下載此設計遇到問題,也可以微信添加“helloeeworld”及時溝通。
EEWorld Datasheet 技術支持