Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
În acest set de instrucțiuni ne vom uita la modul de construire a unei sonde de temperatură cu WiFi, folosind un ESP8266 simplu pentru ridicare grea și un senzor de temperatură / umiditate DHT11. De asemenea, vom folosi placa de circuite pe care am creat-o și este, de asemenea, în vânzare acum în magazinul tindie al canalului, dacă doriți să cumpărați.
Să începem cu lista de materiale de care veți avea nevoie:
Modul WiFi ESP8266
amzn.to/2pkGPoa
Senzor DHT11
amzn.to/2phwfhO
Conector inteligent TP-Link
amzn.to/2GElQUz
De asemenea, puteți ridica întregul modul la magazinul tindie pentru canal:
www.tindie.com/products/misperry/wifi-enab…
De asemenea, verificați JLCPCB pentru PCB Fabrication. Ei sunt cei care obișnuiam să fac PCB:
Livrare gratuită la prima comandă și prototiparea PCB de 2 USD pe
Pasul 1: Adăugarea codului la ESP8266
Acum va trebui să intermitem următorul cod pe ESP8266. Acest cod poate fi găsit la următorul depozit github:
În codul de mai jos va trebui să configurați doar câteva secțiuni de definiție:
Server MQTT:
Utilizator MQTT:
Parolă MQTT:
MQTT_sensor_topic:
-Wifi
A spus: a spus despre rețeaua wifi la care vă conectați
Parolă: parola WiFi.
Odată ce ați completat acest cod în codul de mai jos, puteți compila și verifica erori și dacă există 0 erori, îl puteți bloca pe ESP8266.
/ * * Nume fișier: TempHumSensor.ino * * Aplicație: termostat HomeAssistant Space Heater * * Descriere: Acest cod este pentru dispozitivul compatibil ESP8266 WiFi activat arduino *. Aceasta va retransmite informațiile de temperatură * ale dispozitivului DHT11 către frontendul HASS pentru procesare. * * Autor: M. Sperry - https://www.youtube.com/misperry * Data: 03 / * Revizuire: 1.0 * * * /
#include
#include #include #include #include #include
#define CON_TIME_OUT 20 // Timeout pentru nicio conexiune la wifi
#define MQTT_TIME_OUT 10 // Timeout pentru nicio conexiune la serverul MQTT
#define DHTPIN 0 // Pin care este conectat la senzorul DHT
#define DHTTYPE DHT11 // Tipul de senzor este DHT11, îl puteți schimba în DHT22 (AM2302), DHT21 (AM2301)
#define mqtt_server "" // Introduceți serverul de adrese MQTT sau adresa IP. Îmi folosesc adresa de adăugare DuckDNS (yourname.duckdns.org) în acest câmp
#define mqtt_user "" // introduceți numele dvs. de utilizator MQTT #define mqtt_password "" // introduceți parola #define MQTT_SENSOR_TOPIC "ha / bedroom_temp" // Introduceți subiectul pentru MQTT
// Wifi: SSID și parolă
const char * ssid = ""; const char * password = "";
// DHT SEtup
DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;
WiFiClient wifiClient;
Clientul PubSubClient (wifiClient);
// funcție numită pentru a publica temperatura și umiditatea
void publishData (float p_temperature) {// creați un obiect JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: datele trebuie convertite într-un șir; apare o problemă când se utilizează flotante … // convertiți în fahrenheit p_temperature = (p_temperature * 1.8) + 32; // convertire la fahrenheit root ["temperature"] = (String) p_temperature; root.prettyPrintTo (Serial); Serial.println ("");
date char [200];
root.printTo (date, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, date, adevărat); }
// funcție apelată la sosirea unui mesaj MQTT
callback nul (char * p_topic, octet * p_payload, nesemnat int p_length) {}
void reconnect () {
// Buclați până când suntem reconectați în timp ce (! Client.connected ()) {Serial.print ("INFO: Încercarea conexiunii MQTT …"); // Încercați să vă conectați dacă (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: conectat"); } else {Serial.print ("EROARE: eșuat, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: încercați din nou peste 5 secunde"); // Așteptați 5 secunde înainte de a reîncerca întârzierea (5000); }}}
configurare nulă (nulă) {
Serial.begin (9600);
// Începem prin conectarea la o rețea WiFi
Serial.println (); Serial.println (); Serial.print („Conectarea la”); Serial.println (ssid);
WiFi.begin (ssid, parolă);
while (WiFi.status ()! = WL_CONNECTED) {
întârziere (800); Serial.print ("."); }
Serial.println ("");
Serial.println ("WiFi conectat"); Serial.println ("adresa IP:"); Serial.println (WiFi.localIP ()); // inițiați conexiunea MQTT client.setServer (mqtt_server, 1883); client.setCallback (apel invers);
// Inițializați senzorul DHT
dht.begin (); Serial.println ("DHT11 Unified Sensor Data");
// Imprimați detaliile senzorului de temperatură
senzor_t senzor; dht.temperature (). getSensor (& senzor); Serial.println ("------------------------------------"); Serial.println ("Temperatură"); Serial.print ("Senzor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (senzor.versiune); Serial.print ("ID unic:"); Serial.println (sensor.sensor_id); Serial.print („Valoare maximă”); Serial.print (sensor.max_value); Serial.println ("* C"); Serial.print ("Valoare min."); Serial.print (sensor.min_value); Serial.println ("* C"); Serial.print ("Rezoluție:"); Serial.print (senzor.rezoluție); Serial.println ("* C"); Serial.println ("------------------------------------"); // Imprimați detaliile senzorului de umiditate. dht.humidity (). getSensor (& senzor); Serial.println ("------------------------------------"); Serial.println ("Umiditate"); Serial.print ("Senzor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (senzor.versiune); Serial.print ("ID unic:"); Serial.println (sensor.sensor_id); Serial.print („Valoare maximă”); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Valoare min."); Serial.print (sensor.min_value); Serial.println ("%"); Serial.print ("Rezoluție:"); Serial.print (senzor.rezoluție); Serial.println ("%"); Serial.println ("------------------------------------");
// Setați întârzierea între citirile senzorului pe baza detaliilor senzorului
delayMS = sensor.min_delay / 1000; }
bucla void (nul) {
temperatura plutitorului;
if (! client.connected ())
{reconnect (); }
întârziere (delayMS);
// Obțineți un eveniment de temperatură și imprimați valoarea acestuia.
senzori_eveniment_t eveniment; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Eroare la citirea temperaturii!"); temperatura = 0,00; } else {temperature = event.temperature; Serial.print ("Temperatura:"); Serial.print (temperatura); Serial.println ("* C"); } // publica pe MQTT publishData (temperatura); }
Pasul 2: Configurarea mufei inteligente TP-LINK
Va trebui să vă setați fișa inteligentă TP-LINK sau orice fișă inteligentă pentru acea materie, așa cum recomandă producătorul.
Asigurați-vă că luați notă de adresa MAC de pe dispozitiv. Dacă dispozitivul dvs. este ca dispozitivul meu TP-LINK, nu puteți stoca o adresă IP statică. Astfel, va trebui să vă configurați routerul pentru rezervarea DHCP. Aceasta va lua adresa MAC a dispozitivului dvs. și atunci când dispozitivul solicită o adresă, routerul îi va oferi aceeași adresă de fiecare dată.
Iată un link către cum să configurați acest lucru cu Linksys
www.linksys.com/us/support-article?article…
Pasul 3: Configurarea Home Assistant
Acum, pentru a configura Home Assistant. Pentru aceasta, va trebui să adăugați următoarele configurații la fișierul configuration.yaml care se află în structura de foldere /home/homeassistant/.homeassistant de pe dispozitivul pe care l-ați instalat.
După ce ați terminat de adăugat acest lucru în configurația asistentului de acasă, va trebui să reporniți software-ul asistentului de acasă pentru ca modificările să aibă efect.
De asemenea, voi folosi mufa inteligentă TP-LINK pentru dispozitivul de comutare și definiția este mai jos în fișierul de configurare. Adresa IP utilizată pentru dispozitiv este cea pe care ați configurat-o pentru rezervarea DHCP în pasul anterior.
Această configurație poate fi găsită și la următoarea repo github:
mqtt: switch: - platformă: tplink nume: Dormitorul încălzitorului dormitorului: 192.168.2.11
senzor 1:
platform: mqtt state_topic: 'ha / bedroom_temp' nume: Temp dormitor unit_of_measurement: '° F' value_template: '{{value_json.temperature}}'
automatizare:
- alias: _Temp Bedroom Temp Declanșator ridicat: - platformă: numeric_state entity_id: sensor. Bedroom_Temp mai sus: 73
acțiune:
service: homeassistant.turn_off entity_id: switch. Bedroom_Heater
- alias: _Temp Bedroom Temp Low
trigger: - platform: numeric_state entity_id: sensor. Bedroom_Temp mai jos: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater
Pasul 4: pașii finali
Acum, cu configurarea asistentului de acasă și cu codul Arduino configurat, veți fi gata să activați întregul sistem. Astfel, puneți mufa încălzitorului / ventilatorului / răcitorului în mufa inteligentă și conectați mufa inteligentă. Odată ce este gata, va trebui să conectați un mic încărcător USB și apoi sonda de temperatură activată WiFi. Odată ce totul este online, ar trebui să vă puteți uita în tabloul de bord al asistentului de acasă și să vedeți cum se raportează noua temperatură.
Vă mulțumesc foarte mult pentru tot ajutorul și sprijinul acordat. asigurați-vă că lăsați un like și veniți să vizitați canalul de la https://www.youbue.com/misperry și să vedeți ce avem acolo pentru dvs. Asigurați-vă că vă abonați și distribuiți prietenilor dvs. pentru a ajuta canalul.
Recomandat:
Lampă Matrix activată WiFi: 6 pași (cu imagini)
Lampă matricială activată WiFi: Cine nu vrea să aibă o lampă uimitoare care să poată afișa animații și să se sincronizeze cu alte lămpi din casă? Nu, nimeni. De aceea am creat o lampă RGB personalizată. Lampa este formată din 256 de LED-uri adresabile individual și toate LED-urile pot fi contr
Ceas cu alarmă inteligentă: o ceas cu alarmă inteligentă realizată cu Raspberry Pi: 10 pași (cu imagini)
Ceas cu alarmă inteligentă: o ceas cu alarmă inteligentă realizată cu Raspberry Pi: Ți-ai dorit vreodată un ceas inteligent? Dacă da, aceasta este soluția pentru dvs.! Am creat Smart Alarm Clock, acesta este un ceas pe care îl puteți schimba ora alarmei conform site-ului web. Când alarma se declanșează, se va auzi un sunet (buzzer) și 2 lumini vor
Pompa inteligentă a mașinii de cafea controlată de senzorul cu ultrasunete Raspberry Pi și HC-SR04 și Cloud4RPi: 6 pași
Pompă inteligentă pentru mașină de cafea controlată de senzorul cu ultrasunete Raspberry Pi și HC-SR04 și Cloud4RPi: în teorie, de fiecare dată când mergi la aparatul de cafea pentru ceașca de dimineață, există doar o șansă de unu la douăzeci să umpleți apa rezervor. Cu toate acestea, în practică, se pare că aparatul găsește cumva o modalitate de a pune întotdeauna această corvoadă asupra ta
Mașină controlată de la distanță - Controlată utilizând controlerul fără fir Xbox 360: 5 pași
Mașină controlată de la distanță - controlată folosind controler wireless Xbox 360: acestea sunt instrucțiuni pentru a vă construi propria mașină controlată de la distanță, controlată cu ajutorul unui controler fără fir Xbox 360
Lampa mumie - Lampă inteligentă controlată WiFi: 5 pași (cu imagini)
Lampa cu mumie - Lampă inteligentă controlată prin WiFi: acum aproximativ 230 de mii de ani ființa umană a învățat să controleze focul, ceea ce duce la o schimbare majoră a stilului său de viață, deoarece a început să lucreze noaptea, folosind și lumina din foc. Putem spune că acesta este începutul iluminatului interior. Acum eu