İçindekiler:

WiFi Etkin Sıcaklık Kontrollü Akıllı Fiş: 4 Adım
WiFi Etkin Sıcaklık Kontrollü Akıllı Fiş: 4 Adım

Video: WiFi Etkin Sıcaklık Kontrollü Akıllı Fiş: 4 Adım

Video: WiFi Etkin Sıcaklık Kontrollü Akıllı Fiş: 4 Adım
Video: MODEM ÇEKİM GÜCÜ ARTTIRMA 2024, Temmuz
Anonim
WiFi Etkin Sıcaklık Kontrollü Akıllı Fiş
WiFi Etkin Sıcaklık Kontrollü Akıllı Fiş

Bu talimat setinde, ağır kaldırma için basit bir ESP8266 ve bir DHT11 sıcaklık/nem sensörü kullanarak WiFi özellikli bir sıcaklık probunun nasıl oluşturulacağını inceleyeceğiz. Ayrıca satın almak isterseniz kendi yaptığım ve kanalın tindie mağazasında satışta olan devre kartını da kullanacağız.

İhtiyaç duyacağınız malzeme listesiyle başlayalım:

ESP8266 WiFi Modülü

amzn.to/2pkGPoa

DHT11 Sensörü

amzn.to/2phwfhO

TP-Link Akıllı Fiş

amzn.to/2GElQUz

Tüm modülü kanal için tindie mağazasından da alabilirsiniz:

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

Ayrıca PCB Üretimi için JLCPCB'ye bakın. PCB'yi yapmak için kullandığım kişiler:

İlk Siparişte Ücretsiz Gönderim ve https://jlcpcb.com'da 2 $ PCB Prototipleme

Adım 1: Kodu ESP8266'ya Ekleme

Şimdi aşağıdaki kodu ESP8266'ya flashlamamız gerekecek. Bu kod aşağıdaki github deposunda bulunabilir:

Aşağıdaki kodda yalnızca ilk birkaç tanım bölümünü ayarlamanız gerekecek:

MQTT Sunucusu:

MQTT Kullanıcısı:

MQTT Şifresi:

MQTT_sensor_topic:

-Wifi

Dedi ki: Bağlandığınız wifi ağının dedi

Şifre: WiFi şifresi.

Bunu aşağıdaki kodu doldurduktan sonra derleyebilir ve hataları kontrol edebilirsiniz ve eğer 0 hata varsa ESP8266'ya flash edebilirsiniz.

/* * Dosya Adı: TempHumSensor.ino * * Uygulama: HomeAssistant Alan Isıtıcı Termostatı * * Açıklama: Bu kod, ESP8266 WiFi özellikli arduino * uyumlu cihaz içindir. Bu, DHT11 cihazının sıcaklık bilgilerini * işlenmek üzere HASS ön ucuna iletecektir. * * Yazar: M. Sperry - https://www.youtube.com/misperry * Tarih: 03/* Revizyon: 1.0 * * */

#Dahil etmek

#include #include #include #include #include

#define CON_TIME_OUT 20 //Wifi bağlantısı yokken zaman aşımı

#define MQTT_TIME_OUT 10 //MQTT sunucusuna bağlantı yokken zaman aşımı

#define DHTPIN 0 //DHT sensörüne bağlı pin

#define DHTTYPE DHT11 //Sensör tipi DHT11'dir, bunu DHT22 (AM2302), DHT21 (AM2301) olarak değiştirebilirsiniz

#define mqtt_server "" // MQTT sunucu adresinizi veya IP adresinizi girin. Bu alanda DuckDNS adresimi (adınız.duckdns.org) kullanıyorum

#define mqtt_user "" //MQTT kullanıcı adınızı girin #define mqtt_password "" //şifrenizi girin #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" //MQTT'niz için konu girin

// Wifi: SSID ve şifre

const char* ssid = ""; const char* şifre = "";

//DHT Kurulumu

DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t gecikmeMS;

WiFiClient wifiClient;

PubSubClient istemcisi (wifiClient);

// sıcaklık ve nemi yayınlamak için çağrılan fonksiyon

voidPublishData(float p_temperature) { // bir JSON nesnesi oluşturun // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // BİLGİ: veriler bir dizgeye dönüştürülmelidir; kayan nokta kullanılırken bir sorun oluşuyor… // fahrenhayt'a çevir p_temperature = (p_temperature * 1.8) + 32; // fahrenhayt'a çevir root["temperature"] = (String)p_temperature; root.prettyPrintTo(Seri); Seri.println("");

karakter verileri[200];

root.printTo(veri, root.measureLength() + 1); client.publish(MQTT_SENSOR_TOPIC, veri, doğru); }

// MQTT mesajı geldiğinde çağrılan fonksiyon

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

geçersiz yeniden bağlanma () {

// Yeniden bağlanana kadar döngü while (!client.connected()) { Serial.print("BİLGİ: MQTT bağlantısı deneniyor…"); // Bağlanmaya çalış if (client.connect("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println("BİLGİ: bağlandı"); } else { Serial.print("HATA: başarısız, rc="); Serial.print(client.state()); Serial.println("DEBUG: 5 saniye sonra tekrar deneyiniz"); // gecikmeyi tekrar denemeden önce 5 saniye bekleyin (5000); } } }

geçersiz kurulum(void) {

Seri.başla(9600);

// Bir WiFi ağına bağlanarak başlıyoruz

Seri.println(); Seri.println(); Serial.print("Bağlanıyor"); Serial.println(ssid);

WiFi.begin(ssid, şifre);

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

gecikme(800); Seri.print("."); }

Seri.println("");

Serial.println("WiFi bağlandı"); Serial.println("IP adresi: "); Serial.println(WiFi.localIP()); // MQTT bağlantısını başlat client.setServer(mqtt_server, 1883); client.setCallback(geri arama);

// DHT sensörünü başlat

dht.begin(); Serial.println("DHT11 Birleşik Sensör Verileri");

//Sıcaklık sensörü ayrıntılarını yazdır

sensor_t sensörü; dht.temperature().getSensor(&sensor); Serial.println("------------------------------------"); Serial.println("Sıcaklık"); Seri.print ("Sensör: "); Seri.println(sensör.adı); Serial.print ("Sürücü Sürümü: "); Serial.println(sensör.versiyon); Serial.print ("Benzersiz Kimlik: "); Seri.println(sensor.sensor_id); Serial.print ("Maksimum Değer: "); Seri.print(sensor.max_value); Serial.println(" *C"); Serial.print ("Min Değer: "); Serial.print(sensor.min_value); Serial.println(" *C"); Serial.print ("Çözünürlük: "); Seri.baskı(sensör.çözünürlük); Serial.println(" *C"); Serial.println("------------------------------------"); // Nem sensörü ayrıntılarını yazdırın. dht.humidity().getSensor(&sensor); Serial.println("------------------------------------"); Serial.println("Nem"); Seri.print ("Sensör: "); Seri.println(sensör.adı); Serial.print ("Sürücü Sürümü: "); Serial.println(sensör.versiyon); Serial.print ("Benzersiz Kimlik: "); Seri.println(sensor.sensor_id); Serial.print ("Maksimum Değer: "); Seri.print(sensor.max_value); Serial.println("%"); Serial.print ("Min Değer: "); Serial.print(sensor.min_value); Serial.println("%"); Serial.print ("Çözünürlük: "); Seri.baskı(sensör.çözünürlük); Serial.println("%"); Serial.println("------------------------------------");

// Sensör ayrıntılarına göre sensör okumaları arasındaki gecikmeyi ayarlayın

gecikmeMS = sensor.min_delay / 1000; }

void loop(void) {

yüzer sıcaklık;

if (!client.connected())

{ yeniden bağlan(); }

gecikme (gecikmeMS);

// Sıcaklık olayını alın ve değerini yazdırın.

sensor_event_t olayı; dht.temperature().getEvent(&event); if (isnan(event.temperature)) { Serial.println("Sıcaklık okuma hatası!"); sıcaklık = 0.00; } else { sıcaklık = olay.sıcaklık; Serial.print("Sıcaklık: "); Serial.print(sıcaklık); Serial.println(" *C"); } // MQTT'ye yayınla yayınData(sıcaklık); }

2. Adım: TP-LINK Akıllı Fişinizi Kurma

TP-LINK Akıllı Fişinizi Kurma
TP-LINK Akıllı Fişinizi Kurma

TP-LINK akıllı fişinizi veya bu malzeme için herhangi bir akıllı fişi üreticinin önerdiği şekilde ayarlamanız gerekecektir.

Cihazdaki MAC adresini not ettiğinizden emin olun. Cihazınız TP-LINK cihazım gibiyse statik bir IP adresi belirleyemezsiniz. Bu nedenle, yönlendiricinizi DHCP Rezervasyonu için yapılandırmanız gerekecektir. Bu, cihazınızın MAC adresini alacak ve bu cihaz bir adres istediğinde yönlendirici ona her seferinde aynı adresi verecektir.

İşte bunu Linksys ile nasıl kuracağınıza dair bir link

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

3. Adım: Ev Asistanını Ayarlama

Şimdi Ev Asistanını kurmak için. Bunun için kurulumunu yaptığınız cihazda /home/homeassistant/.homeassistant klasör yapısında bulunan configuration.yaml dosyasına aşağıdaki konfigürasyonları eklemeniz gerekecektir.

Bunu ev asistanı yapılandırmanıza eklemeyi bitirdikten sonra, değişikliklerin etkili olması için ev asistanı yazılımınızı yeniden başlatmanız gerekecektir.

Ayrıca anahtarlama cihazı için TP-LINK akıllı fişini kullanacağım ve konfigürasyon dosyasında tanımı aşağıdadır. Aygıt için kullanılan IP adresi, önceki adımda DHCP rezervasyonu için ayarladığınız adrestir.

Bu yapılandırma aşağıdaki github deposunda da bulunabilir:

mqtt:switch: - platform: tplink adı: Yatak Odası Isıtıcı ana bilgisayarı: 192.168.2.11

sensör 1:

platform: mqtt state_topic: 'ha/yatak odası_temp' adı: Yatak Odası Sıcaklık birimi_measurement: '°F' value_template: '{{ value_json.temperature }}'

otomasyon:

- takma ad: _Temp Bedroom Temp Yüksek tetik: - platform: numeric_state entity_id: sensor. Bedroom_Temp yukarıda: 73

eylem:

hizmet: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- takma ad: _Temp Yatak Odası Sıcaklığı Düşük

tetik: - platform: numeric_state entity_id: sensor. Bedroom_Temp aşağıda: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

4. Adım: Son Adımlar

Image
Image
Son Adımlar
Son Adımlar
Son Adımlar
Son Adımlar

Artık ev asistanınız konfigürasyonunuz ve Arduino kod kurulumunuz ile tüm sistemi aktive etmeye hazır olacaksınız. Böylece ısıtıcı/fan/soğutucu fişinizi akıllı fişe takın ve akıllı fişe takın. Hazır olduğunda, küçük bir USB şarj cihazı ve ardından WiFi özellikli Sıcaklık probu takmanız gerekecektir. Her şey çevrimiçi olduğunda, ev asistanınızın kontrol paneline bakabilmeli ve rapor edilen yeni sıcaklığı görebilmelisiniz.

Tüm yardımlarınız ve desteğiniz için çok teşekkür ederim. Bir beğeni bıraktığınızdan emin olun ve https://www.youbue.com/misperry adresindeki kanalı ziyaret edin ve sizin için orada nelerimiz olduğunu görün. Kanala yardımcı olmak için abone olduğunuzdan ve arkadaşlarınızla paylaştığınızdan emin olun.

Önerilen: