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

Таны эрчим хүчний төлбөрийн хяналт: 4 алхам
Таны эрчим хүчний төлбөрийн хяналт: 4 алхам

Видео: Таны эрчим хүчний төлбөрийн хяналт: 4 алхам

Видео: Таны эрчим хүчний төлбөрийн хяналт: 4 алхам
Видео: РАЗДАЕТ WIFI СЛЕДИТ ЗА ЧЕЛОВЕКОМ 4G камера видеонаблюдения 2024, Долдугаар сарын
Anonim
Таны эрчим хүчний төлбөрийн хяналт
Таны эрчим хүчний төлбөрийн хяналт

ЭНЭ ТӨСЛИЙН ТУХАЙ

Хэрэв та үнэхээр байшинг илүү ухаалаг болгохыг хүсч байвал сар бүрийн төлбөрөөсөө (жишээлбэл, эрчим хүч, хий гэх мэт …) эхлэхийг хүсч магадгүй юм. Зарим хүмүүсийн хэлснээр, Гараг, түрийвч, доод шугамын хувьд сайн. Нээлттэй эхийн тоног төхөөрөмж бол гэрийн орчинд тогтвортой байдалд хүрэх бидний арга юм! Энэхүү санаа нь MQTT -ээр өгөгдлийг ил гаргадаг тул гэрийн автоматжуулалтын аливаа програм хангамжтай нэгтгэхэд хялбар энгийн, найдвартай шийдлийг бий болгоход бидэнд тусалсан юм (манай тохиолдолд бид үүнийг гэрийн туслах төхөөрөмжид хэрхэн нэгтгэх талаар танд үзүүлэх болно).

Тойм

Цахилгаан эрчим хүчний хэрэглээг хэмжихийн тулд бид Finder Energy Meter -ийг ашиглахаар шийдсэн. Энэ бүтээгдэхүүний хамгийн гайхалтай зүйл бол RS485 Modbus интерфэйстэй бөгөөд үйлдвэрлэлийн стандарт холбооны протокол бөгөөд энэ нь Arduino -той харьцахад маш хялбар болгодог. Үнэн хэрэгтээ Arduino нь протоколыг тайлах албан ёсны бамбай, MKR485 болон хоёр номын санг гаргасан. Үндсэн самбарын хувьд бид Arduino MKR WiFi 1010 -ийг сонгосон, учир нь энэ нь MKR хэлбэрийн коэффициентийг хуваалцдаг бөгөөд WiFi холболттой байдаг.

Тохируулах Анхааруулга! Байшингийнхаа цахилгааны системийг зохицуулах тухай улсынхаа дүрэм журмыг шалгаж, үхэлд хүргэж болзошгүй тул маш болгоомжтой байгаарай! Хэрэв та мэдэхгүй бол цахилгаанчин руу залгаарай. Эхний алхам бол тоолуурыг цахилгаан шүүгээнд суурилуулах явдал юм. Аюулгүй орчинд ажиллаж байгаа гэдгээ баталгаажуулахын тулд системийнхээ урд талын терминалын цахилгааныг унтрааж, терминалуудын хооронд хүчдэл байхгүй эсэхийг мултиметрээр дахин шалгаарай. Дараа нь эрчим хүчний тоолуурыг шүүгээнийхээ дотор байрлуулж, үндсэн таслуураас тоолуурын оролт руу гүйдэл ба төвийг сахисан утсыг холбож, өнгөний конвенцийг (төвийг сахисан хувьд цэнхэр, ЕХ -нд амьдрахад хүрэн/хар/саарал) ашиглахаа бүү мартаарай. Гаралтыг системийн бусад хэсэгт холбох ёстой.

Гол хүчдэлийн холболтууд. Дээрх утаснууд нь оролт, цаашдын утаснууд нь гаралтууд юм.

Алхам 1: Шаардлагатай эд анги

Шаардлагатай эд ангиуд
Шаардлагатай эд ангиуд

Алхам 2: Needes програм хангамж

Програм хангамж Needes
Програм хангамж Needes

Програм хангамж

Компьютерээ асаагаад IDE -ээ нээнэ үү. Та Arduino IDE эсвэл Arduino Create Editor ашиглаж болно. Код нь дараах хүсэлтийг хангаж байна: Modbus харилцаа холбоо, WiFi менежмент Arduino -г Modbus болгохын тулд бид Arduino Modbus номын санг ашиглах гэж байна. Энэхүү номын сан нь бүх зохицуулагчийг багцалж, ямар ч Modbus төхөөрөмжийг хурдан холбож өгдөг. Бид бүртгэлийг унших гэж байгаа тул тоолуурын мэдээллийн хуудсыг дагаж функцийн код, бүртгэлийн хаяг, регистрийн хэмжээ гэх мэт шаардлагатай бүх мэдээллийг үгээр олж авах боломжтой. Гэхдээ илүү ойлгомжтой болгохын тулд Modbus хэрхэн ажилладаг талаар тайлбарлаж өгье: Modbus зурвасууд нь энгийн бүтэцтэй байдаг: 01 03 04 00 16 00 02 25 C7 0x01 нь төхөөрөмжийн хаяг 0x03 нь бид өгөгдөл унших эсвэл бичихийг хүсч байгаа эсэхийг хэлдэг функцын код юм. *, энэ тохиолдолд 0x04 бүртгэлийн бүртгэлийг уншаарай Byte Count00 16 - Бид төхөөрөмжөөс уншихыг хүссэн зүйлээ хэлдэг регистрийн хаягийн 4 байт (00 16) илгээдэг 00 02- дараа нь регистрийн хэмжээг (00 02) үгээр илэрхийлнэ. (үг бүр 2 байтын урттай) Сүүлийн 4 байт нь CRC код юм. Энэ кодыг өмнөх байтуудаас математикийн функцээр үүсгэсэн бөгөөд энэ нь мессежийг зөв хүлээн авсан эсэхийг баталгаажуулдаг.

Гэрийн туслах хэрэгсэлд тоолуур нэмэх нь маш энгийн зүйл юм. Хэрэв танд MQTT брокер тохируулагдсан гэж үзвэл (энд гарын авлага байна), хийх хэрэгтэй зүйл бол config.yaml файлын доор шинэ тодорхойлолт нэмэх явдал юм. мэдрэгч: - платформ: mqtt нэр: "Үндсэн хүчдэл" төлөвийн_сэдэв: "энерги/үндсэн/хүчдэл" -ийн_ хэмжилтийн нэгж: "V" Энд та хэмжлийн нэр, унших MQTT сэдэв, хэмжигдэхүүний хэмжих нэгжийг оруулах ёстой. Файлыг хадгалж, тохиргоог шалгаад Home Assistant -ийг дахин ачаална уу, одоо хэмжилтүүд үндсэн хуудсан дээр гарч ирнэ.

Гэрийн туслах хэрэгслийн хэрэглээний самбар нь одоогийн уншилтыг харуулж байна

Гэрийн туслах нь таны уншсанаас үүдэлтэй график үүсгэх, процессыг автоматжуулах ажлыг хариуцах болно. Энэхүү зааварчилгаа дууссан, одоо та өөрийн онцлогт тохируулан өөрчилж, ашиглах боломжтой боллоо!

Алхам 3: угсрах

Угсрах
Угсрах
Угсрах
Угсрах

Дууссан уу? RS485 холболтыг салгах цаг болжээ! Бид ихэвчлэн утасны шугамд ашигладаг газардуулгатай нэг хос кабелийг ашиглах болно. Энэхүү кабелийн тусламжтайгаар та хол зайд (1.2 км) дамжуулах боломжтой. Гэсэн хэдий ч бид кабинетаас гараад Arduino -ийг хүртээмжтэй газар байрлуулахын тулд хангалттай урт кабель ашигладаг.

Finder RS485 холболт

RS485 интерфэйс нь A, B, COM терминалаа нэрлэнэ. Нийт де-факто стандарт бол TX+/RX+ эсвэл D+ -г B (MARK-ийн хувьд өндөр, сул зогсолтын хувьд өндөр), TX-/RX- эсвэл D- -г A-ийн (MARK-ийн хувьд бага, сул зогсолтын хувьд) хувилбар болгон ашиглах явдал юм. MKR бамбай нь Full Duplex-ийг дэмждэг бөгөөд та Y ба Z гэсэн хоёр өөр терминалыг харах болно. Энд хагас кабелийн холболт зөвхөн Y ба Z терминал дээр хийгддэг болохыг өгөгдлийн хүснэгтээс мэдэж байгаа тул кабелийн нөгөө үзүүрийг шургуулна. COM терминал нь ISOGND -тэй холбогдсон байх ёстой. Хагас дуплекс холболтыг ашигладаг бөгөөд кабель нь үе тэнгийнхэн тул бид тохиргоондоо нийцүүлэн MKR485 бамбай дээрх унтраалгуудыг тохируулах ёстой: бид HALF (2 унтраах) ба YZ (3 ON); эхнийх нь хамаагүй. Цуцлалт нь хөндлөнгийн оролцоог намдаахын тулд хоёр өгөгдлийн терминалыг холбосон эсэргүүцэл юм.

Энэ бол энэ. Одоо та шүүгээгээ хааж, програм хангамжийн тал дээр анхаарлаа төвлөрүүлж болно!

Алхам 4: Код

Код
Код

#оруулах

#include #include #include // таны wifi итгэмжлэлийг const char ssid = "**********"; const char pass = "**********";

WiFiClient сүлжээ; MQTTClient үйлчлүүлэгч; гарын үсэг зураагүй урт ханш = 60000; // ms -д анхдагч шинэчлэлтийн хурд unsigned long lastMillis = 0;

// холбох функц void connect () {Serial.print ("wifi шалгаж байна …"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); саатал (1000); } Serial.print ("\ nхолбож байна …"); while (! client.connect ("device_name", "user_name", "user_pw")) {// ТАНИЛЦУУЛАЛТАА ТОХИОЛЦОХЫН ӨӨРЧЛӨЛТ Serial.print ("."); саатал (1000); } Serial.println ("\ nхолбогдсон!"); client.subscribe ("energy/main/refreshrate"); // шинэчлэх хурдыг алсаас тохируулах сэдэв} // mqtt дуудлага хүлээн авах функцийг хүчингүй болгох мессеж хүлээн авав (String & topic, String & payload) {Serial.println ("ирж буй:" + сэдэв + " -" + ачаа); if (topic == "energy/main/refreshrate") {// refresh rate handler rate = payload.toInt ()*1000; Serial.println ("шинэ ханш"+Мөр (хувь)); }}

void setup () {Serial.begin (115200); WiFi.begin (ssid, pass); байхад (! Цуваа); client.begin ("broker_ip", net); // SETUP -г тохируулахын тулд өөрчлөх. Client.onMessage (messageReceived); // Modbus RTU клиентийг эхлүүлэх бол (! ModbusRTUClient.begin (9600)) {Serial.println ("Modbus RTU клиентийг эхлүүлж чадсангүй!"); байхад (1); }}

void loop () {client.loop (); if (! client.connected ()) {// сүлжээний холболтыг шалгах (); } // сэргээгдсэний дараа зурвас нийтлэх (блоклохгүй) хэрэв (millis () - lastMillis> rate) {lastMillis = millis (); // уншсан бүх дуудлагыг float volt = readVoltage () болгох; саатал (100); float amp = readCurrent (); саатал (100); давхар ватт = readPower (); саатал (100); float hz = readFreq (); саатал (100); давхар wh = readEnergy (); // холбогдох сэдвүүдийн дор үр дүнг нийтлэх client.publish ("эрчим хүч/үндсэн/хүчдэл", String (вольт, 3)); client.publish ("энерги/үндсэн/гүйдэл", String (өсгөгч, 3)); client.publish ("эрчим хүч/үндсэн/хүч", String (ватт, 3)); client.publish ("энерги/үндсэн/давтамж", String (hz, 3)); client.publish ("энерги/үндсэн/энерги", String (wh, 3)); Serial.print (String (вольт, 3)+"V"+String (өсгөгч, 3)+"A"+String (ватт, 3)+"W"); Serial.println (String (hz, 3)+"Hz"+String (wh, 3)+"kWh"); саатал (100); }}

/ * Finder Energy Meter регистрүүдийг унших функцууд * * Кодыг ойлгохын тулд modbus протоколын гарын авлагыг шалгаарай * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf */float readVoltage () {float вольт = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x000C, 2)) {// бүртгэл рүү Serial.print дуудлага хийх ("хүчдэлийг уншиж чадсангүй!"); Serial.println (ModbusRTUClient.lastError ()); // алдаа зохицуулагч} өөр {uint16_t word1 = ModbusRTUClient.read (); // буферээс өгөгдлийг уншина уу uint16_t word2 = ModbusRTUClient.read (); uint32_t милливолт = үг1 << 16 | үг2; // бит математикийн вольт = милливолт/1000.0; } буцах вольт; } float readCurrent () {float ampere = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("одоогийн уншиж чадсангүй!"); Serial.println (ModbusRTUClient.lastError ()); } өөр {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | үг2; ампер = миллиампер/1000.0; } буцах ампер; }

давхар унших Power () {давхар ватт = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("хүчийг уншиж чадсангүй!"); Serial.println (ModbusRTUClient.lastError ()); } өөр {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t милливатт; if (word1 >> 7 == 0) {milliwatt = word1

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