вопросы esp8266
- Войдите на сайт для отправки комментариев
Сб, 16/09/2017 - 11:32
добрый день ! уважаемые форумчане ! вопрос следующий мне нужно допустим еспишка в выключателе света а я на работе забыли выключить свет. врубаю 3g на трубе захожу на mqtt dashboard и вижу переключатель в положении вкл ! вот код .
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define BUTTON_1 2
#define RELAY_1 0
int REL1;
boolean rState1 = false;
boolean btnPress = false;
boolean lastbtnStat = true;
const char *ssid = "";
const char *pass = "";
const char *mqtt_server = "";
const int mqtt_port = ;
const char *mqtt_user = "";
const char *mqtt_pass = "";
void callback(const MQTT::Publish& pub)
{
String payload = pub.payload_string();
if(String(pub.topic()) == "kalbas")
{
float stled = payload.toInt();
if(stled == 1)
{
digitalWrite(RELAY_1, HIGH);
REL1 = 1;
}
if(stled == 0)
{
digitalWrite(RELAY_1, LOW);
REL1 = 0;
}
}
}
WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);
void setup() {
pinMode(RELAY_1, OUTPUT);
pinMode(BUTTON_1, INPUT_PULLUP);
}
void buttonWF() {
btnPress = digitalRead(BUTTON_1);
if (btnPress && !lastbtnStat){
delay(30); // защита от дребезга
btnPress = digitalRead(BUTTON_1);
if(btnPress && REL1 == 1){
rState1 = !rState1;
digitalWrite(RELAY_1, rState1);
client.publish("kalbas", "0");
}
if(btnPress && REL1 == 0){
rState1 = !rState1;
digitalWrite(RELAY_1, rState1);
client.publish("kalbas", "1");
}
}
lastbtnStat = btnPress;
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
}
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
if (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
client.set_callback(callback);
client.subscribe("kalbas");
}
}
if (client.connected()){
client.loop();
}
}
buttonWF();
}
Что надо конкретно?
приложение? программу на есп8266? mqtt поднять локалный на распберри к примеру? настроить mqtt удаленный?
Это раздел помощи возмездно!
89995897024