Inhaltsverzeichnis:

WiFi-fähiger temperaturgesteuerter Smart Plug - Gunook
WiFi-fähiger temperaturgesteuerter Smart Plug - Gunook

Video: WiFi-fähiger temperaturgesteuerter Smart Plug - Gunook

Video: WiFi-fähiger temperaturgesteuerter Smart Plug - Gunook
Video: 📶Koogeek WIFI Smart Socket Plug for Apple HomeKit 🎥VIDEO✅Buy in Online Store (RisoFan💻) 2024, Juli
Anonim
WiFi-fähiger temperaturgesteuerter Smart Plug
WiFi-fähiger temperaturgesteuerter Smart Plug

In dieser Anleitung sehen wir uns an, wie man einen WiFi-fähigen Temperaturfühler mit einem einfachen ESP8266 für das schwere Heben und einem DHT11 Temperatur- / Feuchtigkeitssensor baut. Wir werden auch die von mir erstellte Platine verwenden, die jetzt auch im Tindie-Store des Senders erhältlich ist, wenn Sie sie kaufen möchten.

Beginnen wir mit der Stückliste, die Sie benötigen werden:

ESP8266 WLAN-Modul

amzn.to/2pkGPoa

DHT11-Sensor

amzn.to/2phwfhO

TP-Link Smart Plug

amzn.to/2GElQUz

Sie können das gesamte Modul auch im Tindie-Laden für den Kanal abholen:

www.tindie.com/products/misperry/wifi-enab…

Sehen Sie sich auch JLCPCB für PCB Fabriction an. Sie sind die, mit denen ich die Platine gemacht habe:

Kostenloser Versand bei Erstbestellung & 2 USD PCB-Prototyping auf

Schritt 1: Hinzufügen des Codes zu ESP8266

Wir müssen nun den folgenden Code auf den ESP8266 flashen. Dieser Code ist im folgenden Github-Repository zu finden:

Im folgenden Code müssen Sie nur die obersten Definitionsabschnitte einrichten:

MQTT-Server:

MQTT-Benutzer:

MQTT-Passwort:

MQTT_sensor_topic:

-W-lan

Said: das Sagen des WLAN-Netzwerks, mit dem Sie sich verbinden

Passwort: das WLAN-Passwort.

Sobald Sie dies im folgenden Code ausgefüllt haben, können Sie es kompilieren und auf Fehler überprüfen. Wenn 0 Fehler auftreten, können Sie es auf den ESP8266 flashen.

/* * Dateiname: TempHumSensor.ino * * Anwendung: HomeAssistant Raumheizungsthermostat * * Beschreibung: Dieser Code ist für das ESP8266 WiFi-fähige Arduino * kompatible Gerät. Dadurch werden die Temperaturinformationen * des DHT11-Geräts zur Verarbeitung an das HASS-Frontend weitergeleitet. * * Autor: M. Sperry - https://www.youtube.com/misperry * Datum: 03/* Revision: 1.0 * * */

#enthalten

#einschließen #einschließen #einschließen #einschließen #einschließen

#define CON_TIME_OUT 20 //Timeout keine Verbindung zum WLAN

#define MQTT_TIME_OUT 10 //Timeout keine Verbindung zum MQTT-Server

#define DHTPIN 0 // Pin, der mit dem DHT-Sensor verbunden ist

#define DHTTYPE DHT11 // Der Sensortyp ist der DHT11, Sie können ihn in DHT22 (AM2302), DHT21 (AM2301) ändern

#define mqtt_server "" // Geben Sie Ihre MQTT-Serveradresse oder IP ein. Ich verwende meine DuckDNS-Adresse (yourname.duckdns.org) in diesem Feld

#define mqtt_user "" //Geben Sie Ihren MQTT-Benutzernamen ein #define mqtt_password "" //Geben Sie Ihr Passwort ein #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" //Geben Sie ein Thema für Ihr MQTT ein

// Wifi: SSID und Passwort

const char* ssid = ""; const char* Passwort = "";

//DHT-Setup

DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiClient wifiClient;

PubSubClient-Client (wifiClient);

// Funktion aufgerufen, um die Temperatur und die Luftfeuchtigkeit zu veröffentlichen

void publishData(float p_temperature) { // JSON-Objekt erstellen // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // INFO: die Daten müssen in einen String umgewandelt werden; ein Problem tritt bei der Verwendung von Floats auf… //in Fahrenheit umwandeln p_temperature = (p_temperature * 1,8) + 32; // in Fahrenheit umwandeln root["temperature"] = (String)p_temperature; root.prettyPrintTo(Seriell); Serial.println("");

Zeichendaten[200];

root.printTo(data, root.measureLength() + 1); client.publish(MQTT_SENSOR_TOPIC, Daten, wahr); }

// Funktion beim Eintreffen einer MQTT-Nachricht aufgerufen

void callback(char* p_topic, byte* p_payload, unsigned int p_length) { }

Void erneut verbinden () {

// Schleife, bis wir wieder verbunden sind, während (!client.connected()) {Serial.print("INFO: Attempting MQTT connection…"); // Verbindungsversuch if (client.connect("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println("INFO: connected"); } else { Serial.print ("FEHLER: fehlgeschlagen, rc="); Serial.print (client.state ()); Serial.println ("DEBUG: versuchen Sie es in 5 Sekunden erneut"); // 5 Sekunden warten, bevor es erneut versucht wird delay(5000); } } }

Leere Einrichtung (void) {

Serial.begin (9600);

// Wir beginnen mit der Verbindung mit einem WiFi-Netzwerk

Serial.println(); Serial.println(); Serial.print ("Verbinden mit"); Serial.println (ssid);

WiFi.begin(ssid, Passwort);

while (WiFi.status() != WL_CONNECTED) {

Verzögerung (800); Serial.print("."); }

Serial.println("");

Serial.println ("WiFi verbunden"); Serial.println("IP-Adresse:"); Serial.println (WiFi.localIP()); // Initieren der MQTT-Verbindung client.setServer(mqtt_server, 1883); client.setCallback (Rückruf);

// DHT-Sensor initialisieren

dht.begin(); Serial.println ("DHT11 Unified Sensor Data");

// Temperatursensordetails drucken

sensor_t-Sensor; dht.temperature().getSensor(&sensor); Serial.println("------------------------------------------------"); Serial.println ("Temperatur"); Seriendruck ("Sensor: "); Serial.println (sensor.name); Serial.print ("Treiberversion: "); Serial.println (sensor.version); Serial.print ("Eindeutige ID: "); Serial.println (sensor.sensor_id); Serial.print ("Maximalwert: "); Serial.print (sensor.max_value); Serial.println(" *C"); Serial.print ("Min-Wert: "); Serial.print (sensor.min_value); Serial.println(" *C"); Serial.print ("Auflösung: "); Serial.print (sensor.resolution); Serial.println(" *C"); Serial.println("------------------------------------------------"); // Details zum Feuchtigkeitssensor drucken. dht.humidity().getSensor(&sensor); Serial.println("------------------------------------------------"); Serial.println ("Luftfeuchtigkeit"); Seriendruck ("Sensor: "); Serial.println (sensor.name); Serial.print ("Treiberversion: "); Serial.println (sensor.version); Serial.print ("Eindeutige ID: "); Serial.println (sensor.sensor_id); Serial.print ("Maximalwert: "); Serial.print (sensor.max_value); Serial.println("%"); Serial.print ("Min-Wert: "); Serial.print (sensor.min_value); Serial.println("%"); Serial.print ("Auflösung: "); Serial.print (sensor.resolution); Serial.println("%"); Serial.println("------------------------------------------------");

// Verzögerung zwischen Sensormesswerten basierend auf Sensordetails einstellen

delayMS = sensor.min_delay / 1000; }

Leere Schleife (Leere) {

Schwimmertemperatur;

if (!client.connected())

{ erneut verbinden (); }

Verzögerung (VerzögerungMS);

// Temperaturereignis abrufen und seinen Wert ausgeben.

sensor_event_t-Ereignis; dht.temperature().getEvent(&event); if (isnan (event.temperature)) { Serial.println ("Fehler beim Lesen der Temperatur!"); Temperatur = 0,00; aufrechtzuerhalten. Sonst { Temperatur = event.temperature; Serial.print ("Temperatur: "); Serial.print (Temperatur); Serial.println(" *C"); } // in MQTT veröffentlichen publishData(temperature); }

Schritt 2: Einrichten Ihres TP-LINK Smart Plug

Einrichten Ihres TP-LINK Smart Plug
Einrichten Ihres TP-LINK Smart Plug

Sie müssen Ihren TP-LINK Smart Plug oder einen anderen Smart Plug entsprechend den Empfehlungen des Herstellers einstellen.

Notieren Sie sich unbedingt die MAC-Adresse auf dem Gerät. Wenn Ihr Gerät wie mein TP-LINK-Gerät ist, können Sie keine statische IP-Adresse angeben. Daher müssen Sie Ihren Router für die DHCP-Reservierung konfigurieren. Dies nimmt die MAC-Adresse Ihres Geräts und wenn dieses Gerät eine Adresse anfordert, gibt der Router ihm jedes Mal dieselbe Adresse.

Hier ist ein Link, um dies mit Linksys einzurichten

www.linksys.com/us/support-article?article…

Schritt 3: Home Assistant einrichten

Nun richten Sie den Home Assistant ein. Dazu müssen Sie der Datei configuration.yaml, die sich in der Ordnerstruktur /home/homeassistant/.homeassistant auf dem Gerät befindet, auf dem Sie es installiert haben, die folgenden Konfigurationen hinzufügen.

Nachdem Sie dies zu Ihrer Home Assistant-Konfiguration hinzugefügt haben, müssen Sie Ihre Home Assistant-Software neu starten, damit die Änderungen wirksam werden.

Außerdem werde ich den TP-LINK Smart Plug für das Schaltgerät verwenden und die Definition befindet sich unten in der Konfigurationsdatei. Die für das Gerät verwendete IP-Adresse ist diejenige, die Sie im vorherigen Schritt für die DHCP-Reservierung eingerichtet haben.

Diese Konfiguration ist auch im folgenden Github-Repo zu finden:

mqtt:switch: - Plattform: tplink-Name: Schlafzimmer-Heizungshost: 192.168.2.11

Sensor 1:

Plattform: mqtt state_topic: 'ha/bedroom_temp' Name: Schlafzimmer Temp unit_of_measurement: '°F' value_template: '{{ value_json.temperature }}'

Automatisierung:

- Alias: _Temp Bedroom Temp High Trigger: - Plattform: numeric_state entity_id: sensor. Bedroom_Temp oben: 73

Handlung:

service: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- Alias: _Temp Schlafzimmer Temp niedrig

Trigger: - Plattform: Numerical_state Entity_id: sensor. Bedroom_Temp unten: 73 Aktion: Service: homeassistant.turn_on Entity_id: switch. Bedroom_Heater

Schritt 4: Letzte Schritte

Image
Image
Letzte Schritte
Letzte Schritte
Letzte Schritte
Letzte Schritte

Mit Ihrer Home Assistant-Konfiguration und Ihrem Arduino-Code-Setup sind Sie nun bereit, das gesamte System zu aktivieren. Stecken Sie daher Ihren Heizungs-/Gebläse-/Kühlerstecker in den Smart Plug und stecken Sie den Smart Plug ein. Sobald es fertig ist, müssen Sie ein kleines USB-Ladegerät und dann den WiFi-fähigen Temperaturfühler anschließen. Sobald alles online ist, sollten Sie in Ihrem Home Assistant-Dashboard nachsehen und die neue Temperatur sehen können, die gemeldet wird.

Vielen Dank für all Ihre Hilfe und Unterstützung. Lasst ein Like da und besucht den Kanal unter https://www.youbue.com/misperry und seht, was wir alles für euch da haben. Stellen Sie sicher, dass Sie den Kanal abonnieren und mit Ihren Freunden teilen, um den Kanal zu unterstützen.

Empfohlen: