Мазмұны:
Бейне: Сіздің энергия есебінің мониторы: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
БҰЛ ЖОБА ТУРАЛЫ
Егер сіз шынымен де үйіңізді ақылды еткіңіз келсе, сіз ай сайынғы төлемдерден (энергия, газ және т. Кейбіреулер айтқандай, планета, әмиян және төменгі сызық үшін жақсы. Ашық бастапқы жабдық-бұл үй жағдайында тұрақтылыққа жетудің жолы! Бұл идея бізге кез келген үй автоматтандыру бағдарламалық жасақтамасымен оңай қосылатын қарапайым және қауіпсіз шешімді құруға мүмкіндік берді, өйткені ол MQTT арқылы деректерді көрсетеді (біздің жағдайда біз оны үй көмекшісіне қалай біріктіру керектігін көрсетеміз).
Шолу
Электр энергиясын тұтынуды өлшеу үшін біз Finder Energy Meter қолдануды шештік, себебі ол DIN рельсіне арналған және біздің үйдің негізгі шкафына өте жақсы сәйкес келеді. Бұл өнімдегі керемет нәрсе - бұл RS485 Modbus интерфейсі, өнеркәсіптік стандартты байланыс протоколы, бұл Arduino -мен сөйлесуді жеңілдетеді. Шын мәнінде, Arduino протоколын декодтау үшін MKR485 ресми қалқаны мен екі кітапхананы шығарды. Негізгі тақта ретінде біз Arduino MKR WiFi 1010 таңдадық, себебі ол MKR формалық факторымен бөліседі және WiFi байланысы бар.
Орнату Ескерту! Сіздің елдегі үйдің электр жүйесімен жұмыс істеу ережелерін тексеріңіз және өте сақ болыңыз, себебі ол өлімге әкелуі мүмкін! Егер сіз білмесеңіз, электрикке хабарласыңыз. Бірінші қадам - есептегішті электр шкафына орнату. Қауіпсіз ортада жұмыс жасайтындығыңызды қамтамасыз ету үшін жүйенің алдында тұрған электр терминалының қуатын өшіріп, терминалдар арасында кернеу жоқ екенін мультиметрмен екі рет тексеріңіз. Содан кейін энергия есептегішті шкафтың ішіне қойыңыз және негізгі ажыратқыштан есептегіштің кірісіне ток пен бейтарап сымдарды қосыңыз, түс конвенциясын қолдануды ұмытпаңыз (бейтарап үшін көк және ЕО -да қоңыр/қара/сұр). Шығу жүйенің қалған бөлігіне қосылуы керек.
Негізгі кернеу қосылыстары. Жоғарыдағы сымдар - кіріс, одан тыс сымдар - шығыс.
1 -қадам: қажет бөлшектер
2 -қадам: Needes бағдарламалық жасақтамасы
Бағдарламалық қамтамасыз ету
Компьютерді іске қосыңыз және 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 - бұл функция, егер біз деректерді оқығымыз немесе жазғымыз келсе, құрылғыға хабар беретін код. *, бұл жағдайда, байт Count00 үшін 0x04 холдинг регистрлерін оқыңыз - Біз құрылғыға оқығымыз келетін нәрсені айтатын регистр адресінің 4 байтын (00 16) жібереміз 00 02- содан кейін регистрдің өлшемін (00 02) сөзбен (әр сөздің ұзындығы 2 байт) Соңғы 4 байт - CRC коды. Бұл код алдыңғы байттарға қарағанда математикалық функциядан жасалады, бұл хабардың дұрыс қабылданғанын қамтамасыз етеді.
Үй көмекшісінің интеграциясы Үйге көмекшіге есептегішті қосу өте қарапайым. Егер сізде MQTT брокері конфигурацияланған болса (мұнда нұсқаулық), сізге конфигурация.yaml файлының астына жаңа анықтамалар қосу жеткілікті. сенсор: - платформа: mqtt атауы: «Негізгі кернеу» күйі_тақырыбы: «энергия/негізгі/кернеу» бірлігі_оның өлшемі: «V» Мұнда өлшеу атауын, оқылатын MQTT тақырыбын және шаманың өлшем бірлігін қою керек. Файлды сақтаңыз, конфигурацияны тексеріңіз және Home Assistant -ті қайта жүктеңіз, енді өлшемдер негізгі бетте пайда болады.
Ағымдағы көрсеткіштерді көрсететін Home Assistant тұтыну тақтасы
Үй көмекшісі графиктер құруға және сіздің оқуларыңыз арқылы процестерді автоматтандыруға қамқорлық жасайды. Бұл оқу құралы аяқталды, енді мүмкіндіктерді қосу және оны өз мақсаттарыңыз үшін баптау сізге байланысты!
3 -қадам: жинау
Орындалды ма? RS485 қосылымын бұрайтын уақыт келді! Біз әдетте телефон желілері үшін пайдаланылатын жермен бұралған бір жұп кабельді қолданамыз. Бұл кабель арқылы сіз алыс қашықтыққа (1,2 км) жібере аласыз. Дегенмен, біз шкафтан шығып, Arduino -ны қол жетімді жерге қою үшін жеткілікті ұзын кабельді қолданамыз.
Finder RS485 қосылымы
RS485 интерфейсі өзінің терминалдарын A, B және COM деп атайды. Жалпыға ортақ де-факто стандарт- бұл B-ге балама ретінде TX+/RX+ немесе D+ қолдану (MARK үшін жоғары, яғни бос), TX-/RX- немесе D- үшін альтернатива ретінде (MARK үшін төмен, яғни бос). MKR экраны Full Duplex-ті қолдайды, сіз басқа екі терминалды көресіз: Y және Z. Мұнда біз кабельдің екінші ұшын бұрап аламыз, өйткені біз деректер парағынан жартылай дуплексті байланыс тек Y және Z терминалдарында болатынын білеміз. COM терминалы ISOGND -ге қосылуы керек. Біз жартылай дуплексті қосылымды қолданатындықтан және кабель бір-біріне тең болғандықтан, біз MKR485 қалқанындағы қосқыштарды біздің қондырғымызға сәйкес орнатуымыз керек: біз ЖАРТЫ (2 өшірулі) және YZ (3 ҚОСУЛЫ); біріншісі маңызды емес. Аяқтау - бұл кедергілерді азайту үшін екі деректер терминалын қосатын қарсылық.
Бұл - бұл. Енді сіз шкафты жауып, бағдарламалық қамтамасыз ету жағына назар аудара аласыз!
4 -қадам: код
#қосу
#include #include #include // сіздің wifi тіркелгі деректеріңіз const char ssid = «**********»; const char pass = «**********»;
WiFiClient желісі; MQTTClient клиенті; қол қойылмаған ұзақ ставка = 60000; // әдепкі жаңарту жылдамдығы мс белгісіз 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 кері шақыру функциясын қабылдайды void хабар Алынды (Жол және тақырып, Жол және жүктеме) {Serial.println («кіріс:» + тақырып + « -» + пайдалы жүктеме); 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); // ӨЗГЕРТУЛЕРДІ ОРНАТУ клиент.onMessage (хабарлама алынды); // Modbus RTU клиентін іске қосыңыз, егер (! ModbusRTUClient.begin (9600)) {Serial.println («Modbus RTU клиентін іске қосу сәтсіз болды!»); кезінде (1); }}
void loop () {client.loop (); if (! client.connected ()) {// желіге қосылуды тексеру (); } // жаңартудан кейін хабарды жариялаңыз (бұғатталмайтын тәртіп) if (millis () - lastMillis> rate) {lastMillis = millis (); // барлық оқылатын қоңырауларды жасаңыз float volt = readVoltage (); кешіктіру (100); float amp = readCurrent (); кешіктіру (100); қос ватт = readPower (); кешіктіру (100); float hz = readFreq (); кешіктіру (100); қос wh = readEnergy (); // нәтижелерді байланысты тақырыптар бойынша жариялау client.publish («энергия/негізгі/кернеу», Жол (вольт, 3)); client.publish («энергия/негізгі/ағым», String (амп, 3)); client.publish («энергия/негізгі/қуат», String (ватт, 3)); client.publish («энергия/негізгі/жиілік», Жол (гц, 3)); client.publish («energy/main/energy», String (wh, 3)); Serial.print (Жол (вольт, 3)+«V»+Жол (амп, 3)+«А»+Жол (ватт, 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 ()); // қате өңдеуші} 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 ()); } басқа {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | word2; ампер = миллиампер/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 милливатт; егер (word1 >> 7 == 0) {milliwatt = word1
Ұсынылған:
DIY көп функциялы энергия есептегіші V2.0: 12 қадам (суреттермен)
DIY көп функциялы энергия есептегіші V2.0: Бұл нұсқаулықта мен сізге Wemos (ESP8266) негізіндегі көп функциялы энергия есептегішін жасауды көрсетемін. Бұл шағын метр - бұл кернеуді, токты, қуатты, энергия мен қуатты бақылайтын өте пайдалы құрылғы. Бұлардан басқа, ол қоршаған ортаны бақылайды
Жабық өсімдіктердің ақылды мониторы - Сіздің зауытты суару қажет екенін біліңіз: 8 қадам (суреттермен)
Жабық өсімдіктердің ақылды мониторы - Сіздің өсімдікке суару қажет екенін біліңіз: Бірнеше ай бұрын мен сізге топырақ туралы пайдалы ақпарат беру үшін топырақтың ылғалдылығын бақылауға арналған таяқшаны жасадым, ол батареямен жұмыс істейді және оны сіздің үй өсімдіктеріңіздің кастрюльіне жабыстыруға болады. ылғалдылық деңгейі мен жарықдиодты шамдар сізге қашан керек екенін айтады
DIY Arduino көп функциялы энергия есептегіші V1.0: 13 қадам (суреттермен)
DIY Arduino көп функциялы энергия есептегіші V1.0: Бұл нұсқаулықта мен сізге Arduino негізіндегі көп функциялы энергия есептегішті қалай жасау керектігін көрсетемін. Бұл кішкентай метр - бұл электрлік параметрлер туралы маңызды ақпаратты көрсететін өте пайдалы құрылғы. Құрылғы 6 пайдалы электрлік параметрді өлшей алады
15 минут ішінде энергия мониторы: 3 қадам
15 минут ішінде энергия мониторы - бұл электр есептегішіндегі жарқылға таспаны қоюға арналған wifi сенсоры. Ол LDR жарқылын анықтайды және OLED дисплейіндегі қуатты көрсетеді. Thingsboard бақылау тақтасына деректерді жібереді, мұнда мысал. Тегін демо есептік жазбаға тіркеліңіз: https: //thingsboard.io
Шамның энергия мониторы: 9 қадам (суреттермен)
Лампочкадағы энергия мониторы: Мен күнделікті жұмысым үшін энергетикалық зерттеулер жүргіземін. Біздің пәтерде энергияны қалай қолданатынымызды білу мені қатты қызықтыратыны таңқаларлық емес. Осы жылдар ішінде мен бір шығатын энергия мониторын (Kill-A-Watt метр), сондай-ақ тұтастай қолдандым