Inhaltsverzeichnis:

NodeMCU MQTT Iot-Projekt - Schalter umschalten - Gunook
NodeMCU MQTT Iot-Projekt - Schalter umschalten - Gunook

Video: NodeMCU MQTT Iot-Projekt - Schalter umschalten - Gunook

Video: NodeMCU MQTT Iot-Projekt - Schalter umschalten - Gunook
Video: ESP8266 Digital Outputs - Relais über Webseite steuern 2024, Juli
Anonim
Image
Image

OSOYOO NodeMCU IOT Starterkit

Bitte folgen Sie uns auf Facebook, finden Sie unseren neu veröffentlichten Artikel und teilen Sie Ihre Idee und Ihr Video zur kreativen Verwendung unserer Produkte. Du kannst Cashback oder Giveaway von uns bekommen!Facebook:

Youtube:

In dieser Lektion verbinden wir einen Switch-Button mit der NodeMCU und senden den Switch-Status an einen MQTT-Broker. Wenn die Schaltfläche gedrückt wird, veröffentlicht NodeMCU den Schaltflächenstatus „gedrückt“an den MQTT-Broker und der MQTT-Client abonniert diese Nachrichten. Beim Loslassen des Tasters wird „nicht gedrückt“gesendet.

Schritt 1: Vorbereitung

Verbindungsdiagramm
Verbindungsdiagramm

Hardware:

NodeMCU-Platine x 1

Schaltertaste x 1

1K Widerstand x 1

Steckbrett x 1

Überbrückungsdrähte

Software:

Arduino-IDE (Version 1.6.4+)

ESP8266 Board Package und der Serial Port Driver

MQTT-Client (MQTTBox hier)

Arduino-Bibliothek: PubSubClient

Schritt 2: Verbindungsdiagramm

In dieser Lektion verwenden wir D2 (GPIO4), um den Switch zu steuern. Bitte richten Sie die Hardware gemäß dem Verbindungsdiagramm ein.

Hinweis: Der 1k-Widerstand wird als Pull-Down-Widerstand verwendet. In einer solchen Schaltung ist der NodeMCU-Eingang bei geschlossenem Schalter auf einem logisch hohen Wert, aber wenn der Schalter geöffnet ist, zieht der Pull-Down-Widerstand die Eingangsspannung bis auf Masse (logischer Nullwert), wodurch ein undefinierter Zustand am Eingang verhindert wird.

Schritt 3: Code

Code
Code
Code
Code

Kopieren Sie den folgenden Code in die Arduino-IDE:

/* _ _ _ _ _ _ _ _ _ _ * / _ / /_)/ _ \| | | |/ _ / / _ / / _) _ \| / *| |_| |_ | |_| | |_| | |_| | |_| ((_| |_| | | | | * \_/(_/ \_/ \_ |\_/ \_(_)_)_/|_|_|_| * (_/ * Verwenden Sie die NodeMCU sendet Schalterschaltflächenstatus über WLAN an MQTT-Client * Tutorial-URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // Taste ist mit GPIO-Pin D1 verbunden

// Aktualisieren Sie diese mit Werten, die für Ihr Netzwerk geeignet sind. const char* ssid = "********"; // Geben Sie hier Ihre WLAN-Ssid ein const char* password = "********"; // Geben Sie hier Ihr WLAN-Passwort ein. const char* mqtt_server = "broker.mqttdashboard.com"; //const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient-Client (espClient); lange letzteNachricht = 0; Zeichennachricht[50];

void setup_wifi() {

Verzögerung (100); // Wir beginnen mit der Verbindung zu einem WiFi-Netzwerk Serial.print ("Connecting to"); Serial.println (ssid); WiFi.begin(ssid, Passwort); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (500); Serial.print("."); } RandomSeed (Mikros ()); Serial.println(""); Serial.println ("WiFi verbunden"); Serial.println("IP-Adresse:"); Serial.println (WiFi.localIP()); }

void callback(char* topic, byte* payload, unsigned int length)

{} //Rückruf beenden

Void erneut verbinden () {

// Schleife, bis wir wieder verbunden sind, während (!client.connected()) {Serial.print("MQTT-Verbindung wird versucht…"); // Eine zufällige Client-ID erstellen String clientId = "ESP8266Client-"; clientId += String (zufällig (0xffff), HEX); // Versuch eine Verbindung herzustellen //wenn Ihr MQTT-Broker clientID, username und password hat //Bitte ändern Sie die folgende Zeile in if (client.connect(clientId, userName, passWord)) if (client.connect(clientId.c_str())) {Serial.println ("verbunden"); //Sobald mit dem MQTT-Broker verbunden, den Befehl abonnieren, falls vorhanden client.subscribe("OsoyooCommand"); } sonst {Serial.print ("fehlgeschlagen, rc = "); Serial.print (client.state ()); Serial.println ("versuchen Sie es in 5 Sekunden erneut"); // 5 Sekunden warten, bevor es erneut versucht wird delay(5000); } } } //Wiederverbindung beenden ()

Leere Einrichtung () {

Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback (Rückruf); pinMode (BUTTON_PIN, INPUT); }

Leere Schleife () {

if (!client.connected()) { reconnect(); } client.loop(); jetzt lang = millis(); int-Status; // Nachricht alle 2 Sekunden senden if (now - lastMsg > 2000) { lastMsg = now; status = digitalRead (BUTTON_PIN); String msg="Schaltflächenstatus: "; if(status==HIGH) { msg= msg+ "Gedrückt"; char-Nachricht[58]; msg.toCharArray(Nachricht, 58); Serial.println (Nachricht); //Sensordaten an MQTT-Broker veröffentlichen client.publish("OsoyooData", Nachricht); } else { msg= msg+ "Nicht drücken"; char-Nachricht[58]; msg.toCharArray(Nachricht, 58); Serial.println (Nachricht); //Sensordaten an MQTT-Broker veröffentlichen client.publish("OsoyooData", Nachricht); } } }

Bearbeiten Sie den Code, um ihn an Ihre eigenen WLAN- und MQTT-Einstellungen anzupassen, wie folgt: 1) Hotspot-Konfiguration: Suchen Sie unter der Codezeile und geben Sie dort Ihre eigene ssid und Ihr Passwort ein.

const char* ssid = „your_hotspot_ssid“;const char* Passwort = „your_hotspot_password“;

2) Einstellung der MQTT-Serveradresse: Sie können Ihre eigene MQTT-Broker-URL oder IP-Adresse verwenden, um den Wert über mqtt_server festzulegen. Sie können auch einige berühmte kostenlose MQTT-Server verwenden, um das Projekt zu testen, z. B. „broker.mqtt-dashboard.com“, „iot.eclipse.org“usw.

const char* mqtt_server = „broker.mqtt-dashboard.com“;

3) MQTT-Client-Einstellungen Wenn Ihr MQTT-Broker Client-ID, Benutzername und Passwort-Authentifizierung erfordert, müssen Sie dies ändern

if (client.connect(clientId.c_str()))

Zu

if (client.connect(clientId, userName, passWord)) // Geben Sie Ihre clientId/userName/passWord hier ein

Wenn nicht, behalten Sie sie einfach als Standard bei. Wählen Sie danach den entsprechenden Board-Typ und Port-Typ wie unten beschrieben aus und laden Sie dann die Skizze auf die NodeMCU hoch.

  • Platine: "NodeMCU 0.9 (ESP-12-Modul)"
  • CPU-Frequenz: „80 MHz“Flash-Größe:“
  • 4M (3M SPIFFS)”
  • Upload-Geschwindigkeit: "115200"
  • Port: Wählen Sie Ihren eigenen seriellen Port für Ihre NodeMCU

Schritt 4: MQTT-Client-Einstellungen

MQTT-Client-Einstellungen
MQTT-Client-Einstellungen
MQTT-Client-Einstellungen
MQTT-Client-Einstellungen

Wenn Sie nicht wissen, wie Sie den MQTT-Client konfigurieren, besuchen Sie bitte unseren letzten Artikel:

Themeneinstellungen:Zu veröffentlichendes Thema: OsoyooCommand

Thema zum Abonnieren: OsoyooData

Laufergebnis

Sobald der Upload abgeschlossen ist, wenn der WLAN-Hotspot-Name und die Passworteinstellung in Ordnung sind und der MQTT-Broker verbunden ist, öffnen Sie den Serial Monitor. Sie sehen das folgende Ergebnis: Halten Sie diese Taste gedrückt, der Serial Monitor gibt alle 2 Sekunden "Button status: Pressed" aus;Wenn Sie diese Taste loslassen, gibt der Serial Monitor alle 2 Sekunden „Button status: Not Pressed“aus.

Empfohlen: