Ciao! Dopo aver eseguito i primi test con il protocollo MQTT e Arduino (in questo post), passiamo ora ad semplice esempio pratico. In questo caso piloteremo 2 led collegati alla Wemos, direttamente dal prompt dei comandi del nostro pc, tutto questo grazie al Mqtt e Mosquitto. Per prima cosa è necessario collegare 2 led alla Wemos in questo modo: Dopo aver effettuato i collegamenti carichiamo nella Wemos il codice che trovate qui sotto, inserendo SSID e password della vostra rete wifi. E' necessario inserire anche l'indirizzo IP del broker, se il broker Mosquitto sta girando sul vostro pc Windows, potete scoprire l'indirizzo IP digitando "ipconfig" nel prompt dei comandi. /* Derivato dall'esempio "Basic ESP8266 MQTT example" della libreria "PubSubClient" www.danielealberti.it */ #include #include WiFiClient espClient; PubSubClient client(espClient); //sostituisci ssid e password della tua rete wifi const char* ssid = "********"; const char* password = "********"; //sostituisci l'ip con quello del broker (indirizzo del tuo pc se usi mosquitto) const char* mqtt_server = "192.168.***.***"; //nome di questo client, sarà visibile dal broker const char* clientName = "ESP8266_n1"; const int pinLed1 = D0; const int pinLed2 = D1; long lastMsg = 0; String msgIn; int value = 0; void setup() { pinMode(pinLed1, OUTPUT); pinMode(pinLed2, OUTPUT); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { msgIn = ""; Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { msgIn = msgIn + ((char)payload[i]); } Serial.println(msgIn); ControlsByMessage((String)topic, msgIn); } void ControlsByMessage(String tpc, String msg) { Serial.println(tpc); Serial.println(msg); if (tpc == "L1") { if (msg == "ON") { digitalWrite(D0, HIGH); } else if (msg == "OFF") { digitalWrite(D0, LOW); } } if (tpc == "L2") { if (msg == "ON") { digitalWrite(D1, HIGH); } else if (msg == "OFF") { digitalWrite(D1, LOW); } } } void reconnect() { // Loop fino alla riconnessione while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // tenta la connessione if (client.connect(clientName)) { Serial.println("connected"); // sottoscrizione ai Topic client.subscribe("L1"); client.subscribe("L2"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // attendi 5 secondi tra i tentativi di riconnessione delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } client.loop(); } Dopo aver caricato il codice avviate il Broker Mosquitto e aprite un altro prompt per il client. Con i seguenti comandi, da digitare nel client, piloterete i led collegati ai pin D0 e D1: Accendere Led 1: mosquitto_pub -h localhost -i pcDaniele -t L1 -m ON Spegnere Led 1: mosquitto_pub -h localhost -i pcDaniele -t L1 -m OFF Accendere Led 2: mosquitto_pub -h localhost -i pcDaniele -t L2 -m ON Spegnere Led 2: mosquitto_pub -h localhost -i pcDaniele -t L2 -m OFF Questo è tutto, per qualsiasi domanda lascia pure un commento qui sotto! Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!