Sajátkészítésű Smart Home eszközeink egyik legfontosabb kelléke az ioBroker MQTT adapter. Az MQTT kis erőforrásigényű kétirányú kommunikációt tesz lehetővé, ezért az MQTT protokoll jó lehetőség szerver és mikrokontroller közti adatcserére.
Ha még nincs telepítve az ioBroker kattints ide.
Elöször telepíteni kell az MQTT adaptert. Ehez az adapter panelon írjuk be a keresőbe MQTT, majd válasszuk az MQTT Broker/Client adaptert.
Kattints „+” gombra:
Ha kész, válaszd a Server/broker lehetőséget, alább válaszd ki az IP címet. Állíthatsz be felhasználónevet és jelszót, de belső hálózaton ez nem feltétlenül szükséges.
Kész is vagyunk. Használatba vehetjük az MQTT adaptert. Kattints a „Play” gombra.
Az Objekte panelon az MQTT adapter, még nem csatlakozik semmi.
Lássuk az első eszközünket, pédául ezt.
És a kód:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SSID";
const char* password = "Wifi Jelszó";
const char* mqtt_server = "192.168.xxx.xxx";
int Led = D5;
WiFiClient espClient;
PubSubClient client(espClient);
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
pinMode(Led, OUTPUT);
digitalWrite(Led, LOW);
}
void loop()
{
if (!client.connected())
{
reconnect();
}
client.loop();
}
void reconnect()
{
while (!client.connected())
{
String clientId = "ESP8266_LED_Client";
if (client.connect(clientId.c_str()))
{
client.subscribe("LEDtopic");
}
else
{
delay(6000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length)
{
payload[length] = '#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SSID";
const char* password = "Wifi Jelszó";
const char* mqtt_server = "192.168.xxx.xxx";
int Led = D5;
WiFiClient espClient;
PubSubClient client(espClient);
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
pinMode(Led, OUTPUT);
digitalWrite(Led, LOW);
}
void loop()
{
if (!client.connected())
{
reconnect();
}
client.loop();
}
void reconnect()
{
while (!client.connected())
{
String clientId = "ESP8266_LED_Client";
if (client.connect(clientId.c_str()))
{
client.subscribe("LEDtopic");
}
else
{
delay(6000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length)
{
payload[length] = '\0';
String strTopic = String(topic);
String strPayload = String((char * ) payload);
if(strTopic == "LEDtopic")
{
if(strPayload == "false")
{
digitalWrite(Led, LOW);
}
if(strPayload == "true")
{
digitalWrite(Led, HIGH);
}
}
}
';
String strTopic = String(topic);
String strPayload = String((char * ) payload);
if(strTopic == "LEDtopic")
{
if(strPayload == "false")
{
digitalWrite(Led, LOW);
}
if(strPayload == "true")
{
digitalWrite(Led, HIGH);
}
}
}
Gyorsan tötsük fel a NodeMCU Esp8266-ra és lássuk az eredményt.
Megjelent az eszközünk, most már vezérelhetjük is. A szöveges mezőbe írjuk a bekapcsoláshoz „true” vagy a kikapcsoláshoz „false”.
Android telefonról kapcsolódhatunk az MQTT szerverhez ezzel az egyszerű kis alkalmazással.
Remélem tetszett a cikk, és hasznos információ volt a számodra.
Mini asztali számítógép Windows 11 Pro rendszerrel. 8 GB DDR4, 128 GB SSD négymagos Celeron J4125 processzorral (2,7 GHz-ig) 4xUSB 3.0 port 2xGigabit Ethernet 4K HDMI/DP WiFi Dual BT 4.2
Optimális Smarthome, Mosquitto, ioBroker vagy médiaszerver számára.
hirdetés