![Вашият монитор за сметки за енергия: 4 стъпки Вашият монитор за сметки за енергия: 4 стъпки](https://i.howwhatproduce.com/images/008/image-21042-j.webp)
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57
![Вашият монитор за сметки за енергия Вашият монитор за сметки за енергия](https://i.howwhatproduce.com/images/008/image-21042-1-j.webp)
ЗА ТОЗИ ПРОЕКТ
Ако наистина искате да направите дома си по -умен, вероятно ще искате да започнете от месечните си сметки (т.е. енергия, газ и т.н. …). Както някои казват, Добър за планетата, Портфейла и Долната линия. Хардуерът с отворен код е нашият начин да постигнем устойчивост в домашната среда! Тази идея ни накара да изградим просто и сигурно решение, лесно за интегриране с всеки софтуер за домашна автоматизация, тъй като излага данни през MQTT (в нашия случай ще ви покажем как да го интегрирате в Home Assistant).
Общ преглед
За да измерим консумацията на електрическа енергия, избрахме да използваме Finder Energy Meter, тъй като той е предназначен за използване на DIN шина и се вписва перфектно в основния шкаф на нашата къща. Хубавото на този продукт е, че той има RS485 Modbus интерфейс, стандартен индустриален комуникационен протокол, който прави разговора с Arduino наистина лесен. Всъщност Arduino пусна официален щит, MKR485 и две библиотеки за декодиране на протокола. Като дънна платка избрахме Arduino MKR WiFi 1010, тъй като той споделя форм -фактора MKR и има WiFi свързаност.
Настройка Внимание! Проверете правилата на вашата държава относно работата с електрическата система на вашия дом и бъдете изключително внимателни, защото това може да бъде смъртоносно! Ако не знаете как, обадете се на електротехник. Първата стъпка е да инсталирате глюкомера във вашия електрически шкаф. За да сте сигурни, че работите в безопасна среда, изключете захранването от електрическия терминал преди вашата система и проверете два пъти с мултиметъра дали няма напрежение между клемите. След това поставете електромера в шкафа си и свържете жици и неутрални проводници от главния прекъсвач към входа на глюкомера, не забравяйте да използвате цветовата конвенция (синьо за неутрално и кафяво/черно/сиво за живи в ЕС). Изходът трябва да бъде свързан към останалата част от системата.
Връзки за основно напрежение. Проводниците отгоре са входни, проводниците отвъд са изходи.
Стъпка 1: Необходими части
![Необходими части Необходими части](https://i.howwhatproduce.com/images/008/image-21042-2-j.webp)
Стъпка 2: Софтуерни нужди
![Софтуерни нужди Софтуерни нужди](https://i.howwhatproduce.com/images/008/image-21042-3-j.webp)
Софтуер
Стартирайте компютъра и отворете IDE. Можете да използвате Arduino IDE или Arduino Create Editor. Кодът отговаря на следните изисквания: Комуникация Modbus, управление на WiFi протокол MQTT Modbus е протокол с отворен код за индустриални сензори и машини. За да накараме 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 код. Този код се генерира от математическа функция през предишни байтове, което гарантира, че съобщението е получено правилно.
Интеграция на Home Assistant Добавянето на глюкомера към Home Assistant е доста лесно. Ако приемем, че имате конфигуриран брокер на MQTT (Ето ръководството), всичко, което трябва да направите, е да добавите нови дефиниции под файла configuration.yaml. сензор: - платформа: mqtt име: "Главно напрежение" state_topic: "енергия/основно/напрежение" единица_измерване: "V" Тук трябва да поставите името на измерването, темата MQTT за четене и мерната единица на количеството. Запазете файла, проверете конфигурацията и презаредете Home Assistant, сега измерванията ще се появят на главната страница.
Панел за потребление на Home Assistant, показващ текущите показания
Home Assistant ще се погрижи за създаването на графики и ще автоматизира процесите, задействани от вашите показания. Този урок приключи, сега от вас зависи да добавите функции и да го персонализирате за вашите собствени цели!
Стъпка 3: Сглобете
![Съберете Съберете](https://i.howwhatproduce.com/images/008/image-21042-4-j.webp)
![Съберете Съберете](https://i.howwhatproduce.com/images/008/image-21042-5-j.webp)
Свършен? Време е да завиете връзката 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. Тъй като използваме полудуплекс връзка и тъй като кабелите са peer-to-peer, трябва да настроим превключвателите на щита MKR485, за да съответстват на нашата настройка: настройваме HALF (2 на изключено) и прекратяване на YZ (3 до НА); първото няма значение. Прекратяването е съпротивление, свързващо двата терминала за данни, за заглушаване на смущения.
Това е то. Сега можете да затворите шкафа и да се съсредоточите върху софтуерната страна!
Стъпка 4: Код
![Код Код](https://i.howwhatproduce.com/images/008/image-21042-6-j.webp)
#включва
#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 ("енергия/основно/опресняване"); // тема за задаване на честота на опресняване дистанционно} // mqtt получавам функция за обратно повикване void messageReceived (String & topic, String & payload) {Serial.println ("incoming:" + topic + " -" + payload); if (topic == "energy/main/refreshrate") {// скорост на обработка на честотата на опресняване = payload.toInt ()*1000; Serial.println ("нова скорост"+низ (скорост)); }}
void setup () {Serial.begin (115200); WiFi.begin (ssid, pass); while (! Сериен); client.begin ("broker_ip", net); // ПРОМЯНА ДА СЪОТВЕТСТВА НА ВАШАТА НАСТРОЙКА client.onMessage (messageReceived); // стартирайте клиента на Modbus RTU, ако (! ModbusRTUClient.begin (9600)) {Serial.println ("Неуспешно стартиране на Modbus RTU клиент!"); докато (1); }}
void loop () {client.loop (); if (! client.connected ()) {// проверете мрежовата връзка connect (); } // публикуване на съобщение след изминало опресняване (неблокираща рутина) if (millis () - lastMillis> rate) {lastMillis = millis (); // прави всички прочетени повиквания плаващи volt = readVoltage (); забавяне (100); float amp = readCurrent (); забавяне (100); двоен ват = readPower (); забавяне (100); float hz = readFreq (); забавяне (100); double wh = readEnergy (); // публикуване на резултати по сродни теми client.publish ("енергия/основно/напрежение", низ (волт, 3)); client.publish ("енергия/основна/ток", низ (усилвател, 3)); client.publish ("енергия/основна/мощност", низ (ват, 3)); client.publish ("енергия/основна/честота", низ (hz, 3)); client.publish ("енергия/основна/енергия", низ (wh, 3)); Serial.print (String (volt, 3)+"V"+String (amp, 3)+"A"+String (watt, 3)+"W"); Serial.println (String (hz, 3)+"Hz"+String (wh, 3)+"kWh"); забавяне (100); }}
/ * Функции за четене на регистрите на измервателния уред на Finder * * Проверете ръководството за протокол 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 ()); // манипулатор на грешки} else {uint16_t word1 = ModbusRTUClient.read (); // четене на данни от буфера uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = word1 << 16 | word2; // битов математически волт = миливолта/1000.0; } възвратен волт; } float readCurrent () {float ampere = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("неуспешно четене на текущо!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | word2; ампер = милиампер/1000,0; } ампер за връщане; }
double readPower () {двоен ват = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("не успя да прочете мощността!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t миливат; if (word1 >> 7 == 0) {milliwatt = word1
Препоръчано:
Вашият собствен интелигентен автомобил и отвъд HyperDuino+R V3.5R с Funduino/Arduino: 4 стъпки
![Вашият собствен интелигентен автомобил и отвъд HyperDuino+R V3.5R с Funduino/Arduino: 4 стъпки Вашият собствен интелигентен автомобил и отвъд HyperDuino+R V3.5R с Funduino/Arduino: 4 стъпки](https://i.howwhatproduce.com/images/002/image-3995-14-j.webp)
Вашият собствен интелигентен автомобил и отвъд HyperDuino+R V3.5R с Funduino/Arduino: Това е директно копие от този набор от инструкции ТУК. За повече информация се обърнете към HyperDuino.com. С HyperDuino+R v4.0R можете да започнете път на изследване в много различни посоки, от управление на двигатели до изследване на електрониката
ITea - Вашият личен монитор за чай: 8 стъпки
![ITea - Вашият личен монитор за чай: 8 стъпки ITea - Вашият личен монитор за чай: 8 стъпки](https://i.howwhatproduce.com/images/002/image-4866-38-j.webp)
ITea | Вашият личен монитор за чай: Здравейте, колеги читатели и добре дошли в проекта iTea! Преди да започна този проект, си помислих за нещо, което бих могъл да подобря в живота си, използвайки обикновени роботи и електронни компоненти, които имам в къщата си. Няколко седмици преди да напишете този артикул
Как правилно да измерваме консумацията на енергия на модулите за безжична комуникация в епохата на ниска консумация на енергия?: 6 стъпки
![Как правилно да измерваме консумацията на енергия на модулите за безжична комуникация в епохата на ниска консумация на енергия?: 6 стъпки Как правилно да измерваме консумацията на енергия на модулите за безжична комуникация в епохата на ниска консумация на енергия?: 6 стъпки](https://i.howwhatproduce.com/images/003/image-8287-10-j.webp)
Как правилно да измерваме консумацията на енергия на безжичните комуникационни модули в епохата на ниска консумация на енергия?: Ниската консумация на енергия е изключително важно понятие в Интернет на нещата. Повечето IoT възли трябва да се захранват от батерии. Само чрез правилно измерване на консумацията на енергия на безжичния модул можем да преценим точно колко батерия съм
ГЕНЕРАТОР НА СЛЪНЧЕВА ЕНЕРГИЯ - Енергия от слънцето за ежедневни домакински уреди: 4 стъпки
![ГЕНЕРАТОР НА СЛЪНЧЕВА ЕНЕРГИЯ - Енергия от слънцето за ежедневни домакински уреди: 4 стъпки ГЕНЕРАТОР НА СЛЪНЧЕВА ЕНЕРГИЯ - Енергия от слънцето за ежедневни домакински уреди: 4 стъпки](https://i.howwhatproduce.com/images/004/image-9196-27-j.webp)
ГЕНЕРАТОР НА СЛЪНЧЕВА ЕНЕРГИЯ | Енергия от слънцето за ежедневни домакински уреди: Това е много прост научен проект, който се основава на превръщането на слънчевата енергия в използваема електрическа енергия. Той използва регулатора на напрежението и нищо друго. Изберете всички компоненти и се пригответе да направите страхотен проект, който ще ви помогне да
Монитор за поверителност, хакнат от стар LCD монитор: 7 стъпки (със снимки)
![Монитор за поверителност, хакнат от стар LCD монитор: 7 стъпки (със снимки) Монитор за поверителност, хакнат от стар LCD монитор: 7 стъпки (със снимки)](https://i.howwhatproduce.com/images/005/image-13216-11-j.webp)
Монитор за поверителност, хакнат от стар LCD монитор: Най -накрая можете да направите нещо с този стар LCD монитор, който имате в гаража. Можете да го превърнете в монитор за поверителност! Изглежда изцяло бяло за всички, освен за вас, защото носите „магия“очила! Всичко, което наистина трябва да имате, е татко