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.
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
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 <ESP8266WiFi.h>
- #include <PubSubClient.h>
- 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!
Che codice dovrei inserire se volessi controllare un DigitalInput . Es. un sensore magnetico che mi indichi se una finestra è aperta o chiusa. Grazie Giorgio
RispondiElimina