Inhoudsopgave:

Wifi-geactiveerde temperatuurgestuurde slimme stekker - Ajarnpa
Wifi-geactiveerde temperatuurgestuurde slimme stekker - Ajarnpa
Anonim
Wifi-geactiveerde temperatuurgestuurde slimme stekker
Wifi-geactiveerde temperatuurgestuurde slimme stekker

In deze instructieset zullen we kijken hoe we een temperatuursonde met wifi kunnen bouwen met behulp van een eenvoudige ESP8266 voor het zware werk en een DHT11 temperatuur- / vochtigheidssensor. We zullen ook de printplaat gebruiken die ik heb gemaakt en is nu ook te koop in de tindie-winkel van het kanaal als je wilt kopen.

Laten we beginnen met de stuklijst die u nodig heeft:

ESP8266 WiFi-module

amzn.to/2pkGPoa

DHT11-sensor

amzn.to/2phwfhO

TP-Link slimme stekker

amzn.to/2GElQUz

Je kunt ook de hele module ophalen in de tindie-winkel voor het kanaal:

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

Bekijk ook JLCPCB voor PCB Fabriction. Zij zijn degene die ik gebruikte om de PCB te maken:

Gratis verzending bij eerste bestelling en $ 2 PCB-prototyping op

Stap 1: De code toevoegen aan ESP8266

We moeten nu de volgende code op de ESP8266 flashen. Deze code is te vinden in de volgende github-repository:

In de onderstaande code hoeft u alleen de bovenste paar definitiesecties in te stellen:

MQTT-server:

MQTT-gebruiker:

MQTT-wachtwoord:

MQTT_sensor_topic:

-Wifi

Zei: het gezegde van het wifi-netwerk waarmee u verbinding maakt

Wachtwoord: het wifi-wachtwoord.

Zodra je dit hebt ingevuld in de onderstaande code, kun je compileren en controleren op fouten en als er 0 fouten zijn, kun je deze op de ESP8266 flashen.

/* * Bestandsnaam: TempHumSensor.ino * * Toepassing: HomeAssistant Thermostaat voor ruimteverwarming * * Beschrijving: Deze code is voor het ESP8266 WiFi-compatibele arduino *-compatibel apparaat. Hierdoor wordt de temperatuurinformatie * van het DHT11-apparaat doorgestuurd naar de HASS-frontend voor verwerking. * * Auteur: M. Sperry - https://www.youtube.com/misperry * Datum: 03/* Revisie: 1.0 * * */

#erbij betrekken

#include #include #include #include #include

#define CON_TIME_OUT 20 //Time-out van geen verbinding met wifi

#define MQTT_TIME_OUT 10 //Time-out van geen verbinding met MQTT-server

#define DHTPIN 0 //Pin die is aangesloten op de DHT-sensor

#define DHTTYPE DHT11 //Type sensor is de DHT11, u kunt deze wijzigen in DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Voer uw MQTT-serveradders of IP in. Ik gebruik mijn DuckDNS-adres (jouwnaam.duckdns.org) in dit veld

#define mqtt_user "" //voer uw MQTT-gebruikersnaam in #define mqtt_password "" //voer uw wachtwoord in #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" //Voer een onderwerp in voor uw MQTT

// Wifi: SSID en wachtwoord

const char* ssid = ""; const char* wachtwoord = "";

//DHT-configuratie

DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t vertragingMS;

WiFiClient wifiClient;

PubSubClient-client (wifiClient);

// functie aangeroepen om de temperatuur en de vochtigheid te publiceren

void publishData (float p_temperature) {// maak een JSON-object // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // INFO: de gegevens moeten worden omgezet in een string; er doet zich een probleem voor bij het gebruik van floats… //convert to fahrenheit p_temperature = (p_temperature * 1.8) + 32; // converteren naar fahrenheit root ["temperatuur"] = (String) p_temperature; root.prettyPrintTo(Seriële); Serieel.println("");

char-gegevens[200];

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

// functie aangeroepen wanneer een MQTT-bericht binnenkwam

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

ongeldig opnieuw verbinden() {

// Loop totdat we opnieuw verbonden zijn while (!client.connected()) { Serial.print("INFO: Poging tot MQTT-verbinding…"); // Poging om verbinding te maken if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println ("INFO: verbonden"); } else { Serial.print("FOUT: mislukt, rc="); Serial.print(client.state()); Serial.println("DEBUG: probeer het over 5 seconden opnieuw"); // Wacht 5 seconden voordat u de vertraging opnieuw probeert (5000); } } }

ongeldige setup (ongeldig) {

Serieel.begin(9600);

// We beginnen door verbinding te maken met een wifi-netwerk

Serieel.println(); Serieel.println(); Serial.print("Verbinding maken met "); Seriële.println(ssid);

WiFi.begin(ssid, wachtwoord);

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

vertraging (800); Serieel.print("."); }

Serieel.println("");

Serial.println("WiFi verbonden"); Serial.println("IP-adres: "); Serial.println(WiFi.localIP()); // init de MQTT-verbinding client.setServer (mqtt_server, 1883); client.setTerugbellen (terugbellen);

// Initialiseer DHT-sensor

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

// Details afdruktemperatuursensor

sensor_t-sensor; dht.temperatuur().getSensor(&sensor); Serial.println("------------------------------------"); Serial.println("Temperatuur"); Serial.print ("Sensor: "); Serial.println(sensor.naam); Serial.print ("stuurprogrammaversie: "); Serieel.println(sensor.versie); Serial.print ("Unieke ID: "); Serieel.println(sensor.sensor_id); Serial.print ("Max. waarde: "); Serial.print(sensor.max_value); Serieel.println(" *C"); Serial.print ("Min waarde: "); Seriële.afdruk (sensor.min_waarde); Serieel.println(" *C"); Serial.print ("Resolutie: "); Seriële.afdruk (sensor.resolutie); Serieel.println(" *C"); Serial.println("------------------------------------"); // Details van de vochtigheidssensor afdrukken. dht.humidity().getSensor(&sensor); Serial.println("------------------------------------"); Serial.println ("Vochtigheid"); Serial.print ("Sensor: "); Serial.println(sensor.naam); Serial.print ("stuurprogrammaversie: "); Serieel.println(sensor.versie); Serial.print ("Unieke ID: "); Serieel.println(sensor.sensor_id); Serial.print ("Max. waarde: "); Serial.print(sensor.max_value); Serieel.println("%"); Serial.print ("Min waarde: "); Seriële.afdruk (sensor.min_waarde); Serieel.println("%"); Serial.print ("Resolutie: "); Seriële.afdruk (sensor.resolutie); Serieel.println("%"); Serial.println("------------------------------------");

// Stel vertraging in tussen sensormetingen op basis van sensordetails

vertragingMS = sensor.min_vertraging / 1000; }

lege lus (leegte) {

vlottertemperatuur;

if (!client.connected())

{ opnieuw verbinden(); }

vertraging (vertragingMS);

// Haal temperatuurgebeurtenis op en druk de waarde af.

sensoren_event_t gebeurtenis; dht.temperatuur().getEvent(&event); if (isnan(gebeurtenis.temperatuur)) { Serial.println("Fout bij het lezen van temperatuur!"); temperatuur = 0,00; } else { temperatuur = gebeurtenis.temperatuur; Serial.print("Temperatuur: "); Seriële.afdruk (temperatuur); Serieel.println(" *C"); } // publiceren naar MQTT publishData(temperatuur); }

Stap 2: Uw TP-LINK Smart Plug instellen

Uw TP-LINK Smart Plug instellen
Uw TP-LINK Smart Plug instellen

U moet uw TP-LINK smart plug, of een andere smart plug, instellen op de manier die de fabrikant aanbeveelt.

Zorg ervoor dat u het MAC-adres op het apparaat noteert. Als uw apparaat op mijn TP-LINK-apparaat lijkt, kunt u geen statisch IP-adres instellen. U moet uw router dus configureren voor DHCP-reservering. Dit neemt het MAC-adres van uw apparaat en wanneer dat apparaat om een adres vraagt, geeft de router het elke keer hetzelfde adres.

Hier is een link om dit in te stellen met Linksys

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

Stap 3: Home Assistant instellen

Nu om Home Assistant in te stellen. Hiervoor moet u de volgende configuraties toevoegen aan het bestand configuration.yaml dat zich bevindt in de mapstructuur /home/homeassistant/.homeassistant op het apparaat waarop u het hebt geïnstalleerd.

Als u klaar bent met het toevoegen van dit aan uw Home Assistant-configuratie, moet u uw Home Assistant-software opnieuw opstarten om de wijzigingen door te voeren.

Ook zal ik de TP-LINK smart plug gebruiken voor het schakelapparaat en de definitie staat hieronder in het configuratiebestand. Het IP-adres dat voor het apparaat wordt gebruikt, is het adres dat u in de vorige stap hebt ingesteld voor de DHCP-reservering.

Deze configuratie is ook te vinden op de volgende github-repo:

mqtt:switch: - platform: tplink naam: Slaapkamer Heater host: 192.168.2.11

voeler 1:

platform: mqtt state_topic: 'ha/bedroom_temp' naam: Slaapkamer Temp unit_of_measurement: '°F' value_template: '{{ value_json.temperature }}'

automatisering:

- alias: _Temp Slaapkamer Temp Hoog trigger: - platform: numeric_state entiteit_id: sensor. Bedroom_Temp boven: 73

actie:

service: homeassistant.turn_off entiteit_id: switch. Slaapkamer_verwarmer

- alias: _Temp Slaapkamer Temp Laag

trigger: - platform: numeric_state entiteit_id: sensor. Slaapkamer_Temp hieronder: 73 actie: service: homeassistant.turn_on entiteit_id: schakelaar. Slaapkamer_verwarmer

Stap 4: Laatste stappen

Image
Image
Laatste stappen
Laatste stappen
Laatste stappen
Laatste stappen

Nu met de configuratie van uw thuisassistent en uw Arduino-code ingesteld, bent u klaar om het hele systeem te activeren. Plaats dus uw heater/ventilator/koeler plug in de smart plug en steek de smart plug erin. Zodra het klaar is, moet u een kleine USB-oplader aansluiten en vervolgens de voor WiFi geschikte temperatuursonde. Zodra alles online is, zou je in je Home Assistant-dashboard moeten kunnen kijken en de nieuwe temperatuur kunnen zien die wordt gerapporteerd.

Heel erg bedankt voor al je hulp en steun. zorg ervoor dat je een like achterlaat en bezoek het kanaal op https://www.youbue.com/misperry en kijk wat we allemaal voor je hebben. Zorg ervoor dat je je abonneert en deel met je vrienden om het kanaal te helpen.

Aanbevolen: