Sommario:

Smart Plug a temperatura controllata con WiFi abilitato: 4 passaggi
Smart Plug a temperatura controllata con WiFi abilitato: 4 passaggi

Video: Smart Plug a temperatura controllata con WiFi abilitato: 4 passaggi

Video: Smart Plug a temperatura controllata con WiFi abilitato: 4 passaggi
Video: Prolunga Wi-Fi gestita ZLD-44EU-W per 4 prese euro e 4 porte USB, Tuya Smart, Home Assistant 2024, Luglio
Anonim
Smart Plug con controllo della temperatura abilitato WiFi
Smart Plug con controllo della temperatura abilitato WiFi

In questo set di istruzioni vedremo come costruire una sonda di temperatura abilitata WiFi utilizzando un semplice ESP8266 per il sollevamento di carichi pesanti e un sensore di temperatura/umidità DHT11. Utilizzeremo anche il circuito stampato che ho creato ed è anche in vendita ora nel negozio tindie del canale se desideri acquistare.

Iniziamo con la distinta base che ti servirà in:

Modulo WiFi ESP8266

amzn.to/2pkGPoa

Sensore DHT11

amzn.to/2phwfhO

Spina intelligente TP-Link

amzn.to/2GElQUz

Puoi anche ritirare l'intero modulo presso il negozio Tindie per il canale:

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

Dai un'occhiata anche a JLCPCB per PCB Fabriction. Sono quelli che ho usato per fare il PCB:

Spedizione gratuita al primo ordine e prototipazione PCB da $ 2 su

Passaggio 1: aggiunta del codice a ESP8266

Ora dovremo far lampeggiare il seguente codice su ESP8266. Questo codice può essere trovato nel seguente repository github:

Nel codice sottostante dovrai impostare solo le prime sezioni di definizione:

Server MQTT:

Utente MQTT:

Password MQTT:

MQTT_sensor_topic:

-Wifi

Detto: il detto della rete wifi a cui ti stai connettendo

Password: la password Wi-Fi.

Una volta compilato il codice seguente, è possibile compilare e verificare la presenza di errori e, se 0 errori, è possibile visualizzarlo su ESP8266.

/* * Nome file: TempHumSensor.ino * * Applicazione: HomeAssistant Space Heater Thermostat * * Descrizione: questo codice è per il dispositivo compatibile con arduino * abilitato WiFi ESP8266. Questo trasmetterà le informazioni sulla temperatura * del dispositivo DHT11 al frontend HASS per l'elaborazione. * * Autore: M. Sperry - https://www.youtube.com/misperry * Data: 03/* Revisione: 1.0 * * */

#includere

#include #include #include #include #include

#define CON_TIME_OUT 20 //Timeout di nessuna connessione al wifi

#define MQTT_TIME_OUT 10 //Timeout di nessuna connessione al server MQTT

#define DHTPIN 0 //Pin che è collegato al sensore DHT

#define DHTTYPE DHT11 //Il tipo di sensore è il DHT11, puoi cambiarlo in DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Inserisci il tuo indirizzo IP o il tuo server MQTT. Uso il mio indirizzo DuckDNS (tuonome.duckdns.org) in questo campo

#define mqtt_user "" //inserisci il tuo nome utente MQTT #define mqtt_password "" //inserisci la tua password #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" //Inserisci argomento per il tuo MQTT

// Wifi: SSID e password

const char* ssid = ""; const char* password = "";

//DHT SETup

DHT_dht unificato (DHTPIN, DHTTYPE); uint32_t delayMS;

Wi-FiClient Wi-FiClient;

PubSubClient client(wifiClient);

// funzione chiamata per pubblicare la temperatura e l'umidità

void publishData(float p_temperature) { // crea un oggetto JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // INFO: i dati devono essere convertiti in una stringa; si verifica un problema quando si utilizzano i float… //convert to fahrenheit p_temperature = (p_temperature * 1.8) + 32; // converti in fahrenheit root["temperature"] = (String)p_temperature; root.prettyPrintTo(Seriale); Serial.println("");

dati char[200];

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

// funzione chiamata quando è arrivato un messaggio MQTT

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

void ricollegare() {

// Ciclo finché non ci ricolleghiamo while (!client.connected()) { Serial.print("INFO: Tentativo di connessione MQTT…"); // Tentativo di connessione if (client.connect("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println("INFO: connesso"); } else { Serial.print("ERRORE: fallito, rc="); Serial.print(client.state()); Serial.println("DEBUG: riprova tra 5 secondi"); // Attendi 5 secondi prima di riprovare delay(5000); } } }

void setup(void) {

Serial.begin(9600);

// Iniziamo connettendoci a una rete WiFi

Serial.println(); Serial.println(); Serial.print("Connessione a "); Serial.println(ssid);

WiFi.begin(ssid, password);

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

ritardo (800); Serial.print("."); }

Serial.println("");

Serial.println("WiFi connesso"); Serial.println("Indirizzo IP: "); Serial.println(WiFi.localIP()); // inizia la connessione MQTT client.setServer(mqtt_server, 1883); client.setCallback(richiamata);

// Inizializza il sensore DHT

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

//Stampa i dettagli del sensore di temperatura

sensore_t sensore; dht.temperature().getSensor(&sensor); Serial.println("------------------------------------"); Serial.println("Temperatura"); Serial.print ("Sensore: "); Serial.println(nome.sensore); Serial.print ("Driver Ver: "); Serial.println(sensor.version); Serial.print ("ID univoco: "); Serial.println(sensor.sensor_id); Serial.print ("Valore massimo: "); Serial.print(sensor.max_value); Serial.println("*C"); Serial.print ("Valore minimo: "); Serial.print(sensor.min_value); Serial.println("*C"); Serial.print ("Risoluzione: "); Serial.print(sensor.resolution); Serial.println("*C"); Serial.println("------------------------------------"); // Stampa i dettagli del sensore di umidità. dht.humidity().getSensor(&sensor); Serial.println("------------------------------------"); Serial.println("Umidità"); Serial.print ("Sensore: "); Serial.println(nome.sensore); Serial.print ("Driver Ver: "); Serial.println(sensor.version); Serial.print ("ID univoco: "); Serial.println(sensor.sensor_id); Serial.print ("Valore massimo: "); Serial.print(sensor.max_value); Serial.println("%"); Serial.print ("Valore minimo: "); Serial.print(sensor.min_value); Serial.println("%"); Serial.print ("Risoluzione: "); Serial.print(sensor.resolution); Serial.println("%"); Serial.println("------------------------------------");

// Imposta il ritardo tra le letture del sensore in base ai dettagli del sensore

ritardoMS = sensore.min_delay / 1000; }

ciclo vuoto (vuoto) {

temperatura del galleggiante;

if (!client.connected())

{ riconnettersi(); }

ritardo (ritardo MS);

// Ottieni l'evento di temperatura e stampa il suo valore.

sensor_event_t evento; dht.temperature().getEvent(&event); if (isnan(event.temperature)) { Serial.println("Errore lettura temperatura!"); temperatura = 0,00; } else { temperatura = evento.temperatura; Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println("*C"); } // pubblica su MQTT publishData(temperatura); }

Passaggio 2: configurazione della presa intelligente TP-LINK

Configurazione della presa intelligente TP-LINK
Configurazione della presa intelligente TP-LINK

Dovrai impostare la tua smart plug TP-LINK o qualsiasi smart plug per quella madre, nel modo consigliato dal produttore.

Assicurati di prendere nota dell'indirizzo MAC sul dispositivo. Se il tuo dispositivo è come il mio dispositivo TP-LINK non puoi impostare un indirizzo IP statico. Pertanto, sarà necessario configurare il router per la prenotazione DHCP. Questo prenderà l'indirizzo MAC del tuo dispositivo e quando quel dispositivo richiede un indirizzo il router gli darà lo stesso indirizzo ogni volta.

Ecco un link su come configurarlo con Linksys

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

Passaggio 3: configurazione di Home Assistant

Ora per configurare Home Assistant. Per questo sarà necessario aggiungere le seguenti configurazioni al file configuration.yaml che si trova nella struttura della cartella /home/homeassistant/.homeassistant sul dispositivo su cui è stato installato.

Una volta completata l'aggiunta alla configurazione dell'assistente domestico, sarà necessario riavviare il software dell'assistente domestico affinché le modifiche abbiano effetto.

Utilizzerò anche la presa intelligente TP-LINK per il dispositivo di commutazione e la definizione è sotto nel file di configurazione. L'indirizzo IP utilizzato per il dispositivo è quello impostato per la prenotazione DHCP nel passaggio precedente.

Questa configurazione può essere trovata anche nel seguente repository github:

mqtt:switch: - piattaforma: tplink nome: Bedroom Heater host: 192.168.2.11

sensore 1:

piattaforma: mqtt state_topic: 'ha/bedroom_temp' name: Bedroom Temp unit_of_measurement: '°F' value_template: '{{ value_json.temperature }}'

automazione:

- alias: _Temp Bedroom Temp High trigger: - platform: numeric_state entity_id: sensor. Bedroom_Temp sopra: 73

azione:

servizio: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp Temp Camera Bassa

trigger: - piattaforma: numeric_state entity_id: sensor. Bedroom_Temp sotto: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Passaggio 4: passaggi finali

Image
Image
Passaggi finali
Passaggi finali
Passaggi finali
Passaggi finali

Ora con la configurazione dell'assistente domestico e la configurazione del codice Arduino sarai pronto per attivare l'intero sistema. Quindi, inserire la spina del riscaldatore/ventilatore/raffreddatore nella presa intelligente e collegare la presa intelligente. Una volta pronto, dovrai collegare un piccolo caricabatterie USB e quindi la sonda di temperatura abilitata per WiFi. Una volta che tutto è online, dovresti essere in grado di guardare nella dashboard dell'assistente domestico e vedere la nuova temperatura segnalata.

Grazie mille per tutto il vostro aiuto e supporto. assicurati di lasciare un mi piace e vieni a visitare il canale su https://www.youbue.com/misperry e guarda cosa abbiamo lì per te. Assicurati di iscriverti e condividere con i tuoi amici per aiutare il canale.

Consigliato: