Агуулгын хүснэгт:

WiFi идэвхжүүлсэн температурын хяналттай ухаалаг залгуур: 4 алхам
WiFi идэвхжүүлсэн температурын хяналттай ухаалаг залгуур: 4 алхам
Anonim
WiFi идэвхжүүлсэн температурын хяналттай ухаалаг залгуур
WiFi идэвхжүүлсэн температурын хяналттай ухаалаг залгуур

Энэхүү зааварчилгааны багцад бид хүнд даацын зориулалттай энгийн ESP8266 болон DHT11 температур/чийгшил мэдрэгч ашиглан WiFi идэвхжүүлсэн температурын датчикийг хэрхэн бүтээх талаар авч үзэх болно. Хэрэв та худалдаж авахыг хүсвэл миний үүсгэсэн хэлхээний самбарыг бас ашиглах болно, мөн одоо сувгийн tindie дэлгүүрт зарагдаж байна.

Танд хэрэгтэй материалын хуудсыг эхэлье.

ESP8266 WiFi модуль

amzn.to/2pkGPoa

DHT11 мэдрэгч

amzn.to/2phwfhO

TP-Link ухаалаг залгуур

amzn.to/2GElQUz

Та мөн сувгийн tindie дэлгүүрээс модулийг бүхэлд нь авах боломжтой.

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

ПХБ -ийн даавууны хувьд JLCPCB -ийг үзнэ үү. Тэд миний ПХБ -ийг хийж байсан хүмүүс юм.

Эхний захиалгаар үнэгүй хүргэлт, 2 долларын ПХБ -ийн прототипийг https://jlcpcb.com дээрээс авах боломжтой

Алхам 1: ESP8266 -д кодыг нэмж оруулах

Одоо бид дараах кодыг ESP8266 дээр асаах хэрэгтэй болно. Энэ кодыг дараах github репозитороос олж болно:

Доорх код дээр та зөвхөн тодорхойлолтын шилдэг хэдэн хэсгийг тохируулах хэрэгтэй болно.

MQTT сервер:

MQTT хэрэглэгч:

MQTT нууц үг:

MQTT_sensor_topic:

-Wi -Fi

Гэж хэлсэн: таны холбогдож буй wifi сүлжээний тухай

Нууц үг: WiFi нууц үг.

Доорх кодыг бөглөсний дараа та алдааг эмхэтгэж, шалгаж болно, хэрэв 0 алдаа байвал үүнийг ESP8266 дээр асааж болно.

/ * * Файлын нэр: TempHumSensor.ino * * Програм: HomeAssistant зай халаагчийн термостат * * Тодорхойлолт: Энэ код нь ESP8266 WiFi -ийг дэмждэг arduino * нийцтэй төхөөрөмжид зориулагдсан болно. Энэ нь DHT11 төхөөрөмжийн температурын мэдээллийг * HASS -ийн урд хэсэгт боловсруулж дамжуулах болно. * * Зохиогч: М. Сперри - https://www.youtube.com/misperry * Огноо: 03/ * Хянан засварлах: 1.0 * * */

#оруулах

#оруулах #оруулах #оруулах #оруулах #оруулах

CON_TIME_OUT 20 -ийг #тодорхойлно уу // wifi -тай холбогдоогүй байна

#тодорхойлох MQTT_TIME_OUT 10 // MQTT сервертэй холбогдоогүй байна

#тодорхойлох DHTPIN 0 // DHT мэдрэгчтэй холбогдсон зүү

#тодорхойлох DHTTYPE DHT11 // Мэдрэгчийн төрөл нь DHT11 бөгөөд та үүнийг DHT22 (AM2302), DHT21 (AM2301) болгон өөрчилж болно.

#define mqtt_server "" // MQTT серверийн нэмэгдлүүд эсвэл IP хаягаа оруулна уу. Би энэ талбарт DuckDNS хаяг (yourname.duckdns.org) ашигладаг

#define mqtt_user "" // MQTT хэрэглэгчийн нэрээ оруулна уу #dequine mqtt_password "" // нууц үгээ оруулна уу #dequine MQTT_SENSOR_TOPIC "ha/bedroom_temp" // MQTT -ийнхээ сэдвийг оруулна уу.

// Wifi: SSID ба нууц үг

const char* ssid = ""; const char* нууц үг = "";

// DHT -ийн тохиргоо

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiClient wifiClient;

PubSubClient үйлчлүүлэгч (wifiClient);

// температур ба чийгшлийг нийтлэх функц

void publishData (float p_temperature) {// JSON объект үүсгэх // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: өгөгдлийг мөр болгон хөрвүүлэх ёстой; хөвөгчийг ашиглахад асуудал гардаг… // fahrenheit рүү хөрвүүлэх p_temperature = (p_temperature * 1.8) + 32; // фаренгейтийн үндэс болгон хөрвүүлэх ["температур"] = (String) p_temperature; root.prettyPrintTo (Цуваа); Serial.println ("");

char өгөгдөл [200];

root.printTo (өгөгдөл, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, өгөгдөл, үнэн); }

// функц нь MQTT мессеж ирэхэд дуудагддаг

хүчингүй дуудлага хийх (char* p_topic, байт* p_payload, гарын үсэг зураагүй int p_length) {}

хүчингүй дахин холбох () {

// (! Client.connected ()) {Serial.print ("INFO: MQTT холболтыг оролдож байна …") байхад бид дахин холбогдох хүртэл гогцоо хийх; // Холбох оролдлого хэрэв (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: холбогдсон"); } өөр {Serial.print ("ERROR: fail, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: 5 секундын дараа дахин оролдоно уу"); // Дахин оролдохын тулд 5 секунд хүлээнэ үү (5000); }}}

хүчингүй тохиргоо (хүчингүй) {

Цуваа эхлэх (9600);

// Бид WiFi сүлжээнд холбогдож эхэлдэг

Serial.println (); Serial.println (); Serial.print ("Холбогдож байна"); Serial.println (ssid);

WiFi.begin (ssid, нууц үг);

байхад (WiFi.status ()! = WL_CONNECTED) {

саатал (800); Serial.print ("."); }

Serial.println ("");

Serial.println ("WiFi холбогдсон"); Serial.println ("IP хаяг:"); Serial.println (WiFi.localIP ()); // init MQTT холболт client.setServer (mqtt_server, 1883); client.setCallback (буцааж залгах);

// DHT мэдрэгчийг эхлүүлэх

dht.begin (); Serial.println ("DHT11 мэдрэгчийн нэгдсэн мэдээлэл");

// Температур мэдрэгчийн дэлгэрэнгүй мэдээллийг хэвлэх

sensor_t мэдрэгч; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Температур"); Serial.print ("Мэдрэгч:"); Serial.println (мэдрэгчийн нэр); Serial.print ("Driver Ver:"); Serial.println (мэдрэгч. Хувилбар); Serial.print ("Өвөрмөц ID:"); Serial.println (sensor.sensor_id); Serial.print ("Хамгийн их утга:"); Цуваа.хэвлэх (sensor.max_value); Serial.println (" *C"); Serial.print ("Хамгийн бага утга:"); Цуваа.хэвлэх (sensor.min_value); Serial.println (" *C"); Serial.print ("Тогтоол:"); Цуваа.хэвлэх (мэдрэгч. Шийдвэр); Serial.println (" *C"); Serial.println ("------------------------------------"); // Чийглэг мэдрэгчийн дэлгэрэнгүй мэдээллийг хэвлэх. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Чийгшил"); Serial.print ("Мэдрэгч:"); Serial.println (мэдрэгчийн нэр); Serial.print ("Driver Ver:"); Serial.println (мэдрэгч. Хувилбар); Serial.print ("Өвөрмөц ID:"); Serial.println (sensor.sensor_id); Serial.print ("Хамгийн их утга:"); Цуваа.хэвлэх (sensor.max_value); Serial.println ("%"); Serial.print ("Хамгийн бага утга:"); Цуваа.хэвлэх (sensor.min_value); Serial.println ("%"); Serial.print ("Тогтоол:"); Цуваа.хэвлэх (мэдрэгч. Шийдвэр); Serial.println ("%"); Serial.println ("------------------------------------");

// Мэдрэгчийн дэлгэрэнгүй мэдээлэл дээр үндэслэн мэдрэгчийн уншилтын хоорондох хоцролтыг тохируулна уу

delayMS = sensor.min_delay / 1000; }

void loop (хүчингүй) {

хөвөх температур;

if (! client.connected ())

{дахин холбогдох (); }

саатал (delayMS);

// Температурын үйл явдлыг олж аваад түүний утгыг хэвлэ.

sensors_event_t үйл явдал; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Температурыг уншихад алдаа!"); температур = 0.00; } өөр {температур = event.temperature; Serial.print ("Температур:"); Цуврал хэвлэх (температур); Serial.println (" *C"); } // MQTT -д нийтлэх, нийтлэхData (температур); }

Алхам 2: TP-LINK ухаалаг залгуурыг тохируулах

TP-LINK ухаалаг залгуурыг тохируулж байна
TP-LINK ухаалаг залгуурыг тохируулж байна

Та TP-LINK ухаалаг залгуур эсвэл уг төхөөрөмжид зориулсан ухаалаг залгуурыг үйлдвэрлэгчийн зөвлөсний дагуу тохируулах хэрэгтэй болно.

Төхөөрөмж дээрх MAC хаягийг анхаарч үзэх хэрэгтэй. Хэрэв таны төхөөрөмж миний TP-LINK төхөөрөмж шиг байвал статик IP хаягийг оруулах боломжгүй болно. Тиймээс та чиглүүлэгчээ DHCP захиалгад тохируулах хэрэгтэй болно. Энэ нь таны төхөөрөмжийн MAC хаягийг авах бөгөөд тухайн төхөөрөмж хаягийг хүссэн тохиолдолд чиглүүлэгч түүнд ижил хаягийг өгөх болно.

Үүнийг Linksys ашиглан хэрхэн тохируулах талаархи линк энд байна

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

Алхам 3: Гэрийн туслахыг тохируулах

Одоо гэрийн туслахыг тохируулах болно. Үүнийг хийхийн тулд та суулгасан төхөөрөмж дээрх /home/homeassistant/.homeassistant фолдерын бүтцэд байгаа configuration.yaml файлд дараах тохиргоог нэмэх шаардлагатай болно.

Үүнийг гэрийн туслах тохиргоондоо нэмж дуусмагц өөрчлөлтүүд хүчин төгөлдөр болохын тулд та гэрийн туслах програмаа дахин эхлүүлэх шаардлагатай болно.

Мөн би TP-LINK ухаалаг залгуурыг сэлгэн залгах төхөөрөмж дээр ашиглах бөгөөд тодорхойлолтыг тохиргооны файлд доор харуулав. Төхөөрөмжид ашигладаг IP хаяг нь өмнөх алхамд DHCP захиалга хийхээр тохируулсан хаяг юм.

Энэ тохиргоог дараах github репо дээрээс олж болно:

mqtt: шилжүүлэгч: - платформ: tplink нэр: Унтлагын өрөөний халаагчийн хост: 192.168.2.11

мэдрэгч 1:

платформ: mqtt state_topic: 'ha/bedroom_temp' нэр: Унтлагын өрөөний температурын нэгжийн хэмжээс: '° F' утга_темплэйт: '{{value_json.temperature}}'

автоматжуулалт:

- alias: _Temp Bedroom Temp High trigger: - платформ: numeric_state entity_id: sensor. Bedroom_Temp дээрх: 73

үйлдэл:

үйлчилгээ: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp унтлагын өрөөний температур бага

гох: - платформ: numeric_state entity_id: sensor. Bedroom_Temp доор: 73 үйлдэл: үйлчилгээ: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Алхам 4: Эцсийн алхамууд

Image
Image
Эцсийн алхамууд
Эцсийн алхамууд
Эцсийн алхамууд
Эцсийн алхамууд

Гэрийн туслахын тохиргоо болон Arduino кодыг тохируулсны дараа та системийг бүхэлд нь идэвхжүүлэхэд бэлэн болно. Тиймээс халаагч/сэнс/сэрүүн залгуураа ухаалаг залгуурт хийж ухаалаг залгуурт залгаарай. Бэлэн болмогц та жижиг USB цэнэглэгч, дараа нь WiFi идэвхжүүлсэн температур мэдрэгчийг залгах хэрэгтэй болно. Бүх зүйл онлайн болсны дараа та гэрийнхээ туслах самбараас харж, шинэ температурын талаар мэдээлэх боломжтой байх ёстой.

Бүх тусламж, дэмжлэгт маш их баярлалаа. лайк үлдээж, https://www.youbue.com/misperry дээрх сувгаар зочилж, танд хэрэгтэй бүх зүйлийг олж мэдээрэй. Та сувагт туслахын тулд бүртгүүлж найзуудтайгаа хуваалцаарай.

Зөвлөмж болгож буй: