Talaan ng mga Nilalaman:
- Hakbang 1: Kailangan ng Mga Bahagi
- Hakbang 2: Mga Kailangan ng Software
- Hakbang 3: Magtipon
- Hakbang 4: Code
Video: Ang iyong Energy Bill Monitor: 4 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
TUNGKOL SA PROYEKTO NA ITO
Kung nais mo talagang gawing mas matalino ang iyong bahay, malamang na gugustuhin mong magsimula mula sa iyong buwanang singil (ie enerhiya, gas, atbp …). Tulad ng sinasabi ng ilan, Mabuti para sa Planet, The Wallet at The Bottom Line. Ang open-source na hardware ay ang aming paraan upang maabot ang pagpapanatili sa kapaligiran sa bahay! Dinala kami ng ideyang ito upang bumuo ng isang simple at ligtas na solusyon, madaling maisama sa anumang software ng automation sa bahay dahil inilalantad nito ang data sa MQTT (sa aming kaso ipapakita namin sa iyo kung paano isama ito sa Home Assistant).
Pangkalahatang-ideya
Upang sukatin ang pagkonsumo ng enerhiya sa kuryente, pinili naming gamitin ang Finder Energy Meter, dahil idinisenyo ito para sa paggamit ng DIN rail at ganap na umaangkop sa pangunahing gabinete ng aming bahay. Ang cool na bagay tungkol sa produktong ito ay mayroon itong interface na RS485 Modbus, isang pang-industriya na pamantayan sa komunikasyon na proteksyon na ginagawang talagang madali ang pakikipag-usap sa isang Arduino. Sa katunayan, naglabas ang Arduino ng isang opisyal na kalasag, ang MKR485 at dalawang aklatan upang ma-decode ang protocol. Bilang mainboard, pinili namin ang Arduino MKR WiFi 1010, dahil ibinabahagi nito ang kadahilanan ng form ng MKR at may koneksyon sa WiFi.
Pag-setup ng Babala! Suriin ang mga regulasyon ng iyong bansa tungkol sa pagharap sa iyong sistemang elektrisidad sa bahay at maging labis na mag-ingat dahil maaari itong nakamamatay! Kung hindi mo alam, paano tumawag sa isang elektrisyan. Ang unang hakbang ay i-install ang metro sa iyong de-koryenteng kabinet. Upang matiyak na nagtatrabaho ka sa isang ligtas na kapaligiran, patayin ang kuryente mula sa de-koryenteng terminal nang maaga sa iyong system at i-double check sa multimeter na walang boltahe sa pagitan ng mga terminal. Pagkatapos ay ilagay ang metro ng enerhiya sa loob ng iyong gabinete at ikonekta ang live at walang katuturang mga wire mula sa pangunahing breaker hanggang sa input ng metro, tandaan na gamitin ang kulay na kombensyon (asul para sa walang kinikilingan at kayumanggi / itim / kulay-abo para sa live sa EU). Ang output ay dapat na konektado sa natitirang system.
Pangunahing mga koneksyon sa boltahe. Ang mga wire sa itaas ay input, ang mga wire na lampas ay mga output.
Hakbang 1: Kailangan ng Mga Bahagi
Hakbang 2: Mga Kailangan ng Software
Software
Simulan ang iyong computer at buksan ang iyong IDE. Maaari mong gamitin ang Arduino IDE o Arduino Lumikha ng Editor. Natutugunan ng code ang mga sumusunod na kahilingan: Pakikipag-usap sa Modbus, pamamahala ng WiFiMQTT protocol na Modbus ay at open-source na protokol para sa mga pang-industriya na sensor at makina. Upang magsalita ang Arduino na Modbus, gagamitin namin ang Arduino Modbus library. Ang library na ito ay naka-pack ang lahat ng mga handler at ginagawang hooking up ang anumang aparato ng Modbus na talagang napakabilis. Dahil magbabasa kami ng mga rehistro, kasunod sa datasheet ng metro, mahahanap namin ang lahat ng impormasyong kailangan namin tulad ng mga function code, address ng rehistro at laki ng rehistro sa mga salita. Ngunit upang gawing mas malinaw ito, ipaliwanag namin kung paano gumagana ang Modbus: Ang mga mensahe sa Modbus ay sumusunod sa isang simpleng istraktura: 01 03 04 00 16 00 02 25 C7 0x01ay ang Device Address 0x03 ay ang Function Code na nagsasabi sa aparato kung nais nating basahin o sumulat ng data *, sa kasong ito, basahin ang mga hawak na rehistro 0x04 para sa Byte Count00 16 - Nagpadala kami ng 4 bytes ng rehistro ng rehistro (00 16) na nagsasabi sa aparato kung ano ang nais naming basahin 00 02- pagkatapos ang laki ng rehistro (00 02) sa mga salita (bawat salita ay 2 bytes ang haba) Huling 4 bytes ay CRC code. Ang code na ito ay nabuo mula sa isang pag-andar sa matematika sa mga nakaraang byte, tinitiyak nito na natanggap nang tama ang mensahe.
Pagsasama ng Home Assistant Ang pagdaragdag ng metro sa Home Assistant ay medyo prangka. Ipagpalagay na mayroon kang isang MQTT broker na na-configure (Narito ang gabay), ang kailangan mo lang gawin ay upang magdagdag ng mga bagong kahulugan sa ilalim ng config.yaml file. sensor: - platform: pangalan ng mqtt: "Pangunahing Boltahe" state_topic: "enerhiya / pangunahing / boltahe" unit_of_measurement: "V" Narito kailangan mong ilagay ang pangalan ng pagsukat, ang paksang MQTT na babasahin at ang yunit ng pagsukat ng dami. I-save ang file, suriin ang pagsasaayos at i-reload ang Home Assistant, ngayon ang mga sukat ay lilitaw sa pangunahing pahina.
Ang panel ng pagkonsumo ng Home Assistant ay nagpapakita ng kasalukuyang mga pagbasa
Pangangalaga sa Home Assistant ang paglikha ng mga graph at i-automate ang mga proseso na na-trigger ng iyong mga pagbasa. Tapos na ang tutorial na ito, ngayon nasa sa iyo na magdagdag ng mga tampok at ipasadya ito para sa iyong sariling mga layunin!
Hakbang 3: Magtipon
Tapos na? Panahon na upang i-tornilyo ang koneksyon sa RS485! Gumagamit kami ng baluktot na solong pares ng cable na may lupa, karaniwang ginagamit para sa mga linya ng telepono. Sa pamamagitan ng cable na ito, maaari kang magpadala sa isang mahabang distansya (1.2 km). Gayunpaman, gumagamit lamang kami ng isang cable sapat na katagal upang lumabas sa gabinete at ilagay ang Arduino sa isang madaling ma-access na lugar.
Koneksyon ng Finder RS485
Pinangalanan ng interface ng RS485 ang mga terminal nito na A, B at COM. Ang isang karaniwang pamantayan ng de-facto ay ang paggamit ng TX + / RX + o D + bilang isang kahalili para sa B (mataas para sa MARK ie idle), TX- / RX- o D- bilang isang kahalili para sa A (mababa para sa MARK ie ie idle) Dahil ang Sinusuportahan din ng MKR kalasag ang Buong Duplex, makikita mo ang dalawang iba pang mga terminal, Y at Z. Dito namin i-tornilyo ang kabilang dulo ng cable dahil alam namin mula sa datasheet na ang komunikasyon na kalahating duplex ay nangyayari lamang sa mga terminal ng Y at Z. Ang terminal ng COM ay dapat na konektado sa ISOGND. Dahil gumagamit kami ng isang koneksyon na half-duplex at dahil ang paglalagay ng kable ay peer-to-peer, kailangan naming i-set up ang mga switch sa kalasag na MKR485 upang tumugma sa aming pag-set up: itinakda namin ang HALF (2 hanggang off) at pagwawakas sa YZ (3 to ON); ang una ay hindi mahalaga. Ang pagwawakas ay isang paglaban na kumukonekta sa dalawang mga terminal ng data, para sa pamamasa ng mga pagkagambala.
Heto na. Ngayon ay maaari mong isara ang gabinete at ituon ang bahagi ng software!
Hakbang 4: Code
# isama
#include #include #include // your wifi credentials const char ssid = "*********"; Const char pass = "*********";
WiFiClient net; MQTTClient client; unsigned mahabang rate = 60000; // default refresh rate in ms unsigned long lastMillis = 0;
// connect function void connect () {Serial.print ("check wifi…"); habang (WiFi.status ()! = WL_CONNected) {Serial.print ("."); pagkaantala (1000); } Serial.print ("\ hindi nag-uugnay …"); habang (! client.connect ("device_name", "user_name", "user_pw")) {// PAGBABAGO UPANG MATCH IYONG SETUP Serial.print ("."); pagkaantala (1000); } Serial.println ("\ nconnected!"); client.subscribe ("enerhiya / pangunahing / pag-refresh"); // paksa upang itakda ang rate ng pag-refresh nang malayuan} // mqtt makatanggap ng pag-andar ng callback na walang bisa na mensaheReceived (String at paksa, String at payload) {Serial.println ("papasok:" + paksa + "-" + payload); kung (paksa == "enerhiya / main / refreshrate") {// rate ng rate ng handler na i-refresh = payload.toInt () * 1000; Serial.println ("bagong rate" + String (rate)); }}
void setup () {Serial.begin (115200); WiFi.begin (ssid, pass); habang (! Serial); client.begin ("broker_ip", net); // CHANGE TO MATCH Your SETUP client.onMessage (messageReceived); // start the Modbus RTU client if (! ModbusRTUClient.begin (9600)) {Serial.println ("Nabigong simulan ang Modbus RTU Client!"); habang (1); }}
void loop () {client.loop (); kung (! client.connected ()) {// suriin ang koneksyon sa koneksyon kumonekta (); } // publish a message pagkatapos ng pag-refresh na lumipas (hindi regular na pag-block) kung (millis () - lastMillis> rate) {lastMillis = millis (); // make all the read calls float volt = readVoltage (); pagkaantala (100); float amp = readCurrent (); pagkaantala (100); doble wat = readPower (); pagkaantala (100); float hz = readFreq (); pagkaantala (100); dobleng wh = readEnergy (); //-publish ang mga resulta sa ilalim ng mga nauugnay na paksa client.publish ("enerhiya / pangunahing / boltahe", String (volt, 3)); client.publish ("enerhiya / pangunahing / kasalukuyang", String (amp, 3)); client.publish ("enerhiya / pangunahing / lakas", String (watt, 3)); client.publish ("enerhiya / pangunahing / dalas", String (hz, 3)); client.publish ("enerhiya / pangunahing / enerhiya", String (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"); pagkaantala (100); }}
/ * Mga pagpapaandar upang mabasa ang mga rehistro ng Finder Energy Meter * * Suriin ang manu-manong modbus protocol upang maunawaan ang code * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf * / float readVoltage () {float volt = 0.; kung (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x000C, 2)) {// tumawag sa rehistro ng Serial.print ("nabigo na basahin ang boltahe!"); Serial.println (ModbusRTUClient.lastError ()); // error handler} iba pa {uint16_t word1 = ModbusRTUClient.read (); // read data from the buffer uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = word1 << 16 | salita2; // bit math volt = millivolt / 1000.0; } bumalik volt; } float readCurrent () {float ampere = 0. kung (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("nabigong basahin ang kasalukuyang!"); Serial.println (ModbusRTUClient.lastError ()); } iba pa {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | salita2; ampere = milliamp / 1000.0; } bumalik ampere; }
double readPower () {doble wat = 0.; kung (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("nabigong basahin ang lakas!"); Serial.println (ModbusRTUClient.lastError ()); } iba pa {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milliwatt; kung (word1 >> 7 == 0) {milliwatt = word1
Inirerekumendang:
Simpleng Gesture Control - Kontrolin ang Iyong Mga Laruan sa RC Gamit ang Kilusan ng Iyong Braso: 4 na Hakbang (na may Mga Larawan)
Simpleng Pagkontrol ng Kilos - Kontrolin ang Iyong Mga Laruan sa RC Gamit ang Kilusan ng Iyong Braso: Maligayang pagdating sa aking 'ible' # 45. Kamakailan lamang ay gumawa ako ng isang ganap na gumaganang bersyon ng BB8 gamit ang mga bahagi ng Lego Star Wars … ang Force Band na ginawa ni Sphero, naisip ko: " Ok, I c
Protektahan ang Iyong Mga Ideya, Protektahan ang Iyong Trabaho: 8 Hakbang
Protektahan ang Iyong Mga Ideya, Protektahan ang Iyong Trabaho: Nawalan ako ng data ilang araw na ang nakakalipas sa pamamagitan ng isang pag-crash ng PC. Nawala ang trabaho ng isang araw.:/ Nai-save ko ang aking data sa cloud upang maiwasan ang isang depekto ng hard disk. Gumagamit ako ng isang bersyon ng software upang maibalik ko ang mga mas lumang bersyon ng aking trabaho. Gumagawa ako ng isang backup araw-araw. Ngunit sa oras na ito
Kontrolin ang Iyong Model Train Layout Gamit ang Iyong Mobile Phone !: 11 Hakbang (na may Mga Larawan)
Kontrolin ang Iyong Modelo sa Layout ng Tren Sa Iyong Mobile Phone!: Ang pagkontrol sa isang layout ng modelo ng tren na may isang wottle at mga kontrol sa turnout ay maaaring maging isang mahusay na pagsisimula para sa mga nagsisimula ngunit nagdudulot sila ng isang problema ng hindi kakayahang dalhin. Gayundin, ang mga wireless Controller na dumating sa merkado ay maaaring kontrolin ang ilang mga locom lamang
Gamit ang Iyong Bluetooth Pinagana ang Sony Ericsson Telepono upang Makontrol ang Iyong Computer: 6 Mga Hakbang
Paggamit ng Iyong Bluetooth na Pinagana ang Sony Ericsson Telepono upang Makontrol ang Iyong Kompyuter: Kanina pa ako nagbabasa ng mga itinuturo, at palaging nais kong gawin ang ilan sa mga bagay na sinulat ng mga tao, ngunit nahanap ko ang aking sarili sa mga bagay na ay mahirap gawin dahil ang mga ito ay tunay na mahirap gawin, o ang ika
I-save ang Planet at Iyong Pocket. $$ I-convert ang Iyong Murang P&S Digital Camera sa Rechargable: 4 na Hakbang (na may Mga Larawan)
I-save ang Planet at Iyong Pocket. $$ I-convert ang Iyong Murang P&S Digital Camera sa Rechargable: Mga taon na ang nakakaraan, bumili ako ng Dolphin Jazz 2.0 Megapixel Digital Camera. Mayroon itong magagandang tampok at presyo. Nagkaroon din ito ng gana sa AAA Bateries. Walang isa na lumalakad palayo sa isang hamon, naisip kong gagamitin ko ito upang magamit ang isang rechargable na baterya upang ihinto ang pag-aaksaya ba