Përmbajtje:

Monitori juaj i faturës së energjisë: 4 hapa
Monitori juaj i faturës së energjisë: 4 hapa

Video: Monitori juaj i faturës së energjisë: 4 hapa

Video: Monitori juaj i faturës së energjisë: 4 hapa
Video: ТАКОВ МОЙ ПУТЬ В L4D2 2024, Korrik
Anonim
Monitori juaj i faturës së energjisë
Monitori juaj i faturës së energjisë

P ABR KIST PROJEKT

Nëse vërtet dëshironi ta bëni shtëpinë tuaj më të zgjuar, me siguri do të dëshironi të filloni nga faturat tuaja mujore (pra energjia, gazi, etj …). Siç thonë disa, Mirë për Planetin, Portofolin dhe Bottom Line. Pajisjet kompjuterike me burim të hapur janë mënyra jonë për të arritur qëndrueshmërinë në mjedisin e shtëpisë! Kjo ide na solli për të ndërtuar një zgjidhje të thjeshtë dhe të sigurt, të lehtë për tu integruar me çdo softuer të automatizimit të shtëpisë pasi ekspozon të dhëna mbi MQTT (në rastin tonë ne do t'ju tregojmë se si t'i integroni ato në Home Assistant).

Vështrim i përgjithshëm

Për të matur konsumin e energjisë elektrike, ne zgjodhëm të përdorim Finder Energy Meter, pasi është projektuar për përdorim hekurudhor DIN dhe përshtatet në mënyrë të përkryer në kabinetin kryesor të shtëpisë sonë. Gjëja interesante e këtij produkti është se ai ka një ndërfaqe RS485 Modbus, një protokoll standard komunikimi industrial i cili e bën bisedën me një Arduino vërtet të lehtë. Në fakt, Arduino ka lëshuar një mburojë zyrtare, MKR485 dhe dy biblioteka për të deshifruar protokollin. Si tabelë kryesore, ne zgjodhëm Arduino MKR WiFi 1010, pasi ajo ndan faktorin e formës MKR dhe ka lidhje WiFi.

SetupWarning! Kontrolloni rregulloret e vendit tuaj në lidhje me sistemin elektrik të shtëpisë tuaj dhe jini jashtëzakonisht të kujdesshëm sepse mund të jetë vdekjeprurës! Nëse nuk dini si, telefononi një elektricist. Hapi i parë është instalimi i njehsorit në kabinetin tuaj elektrik. Për të siguruar që jeni duke punuar në një mjedis të sigurt, fikni energjinë nga terminali elektrik përpara sistemit tuaj dhe kontrolloni dy herë me multimetër që nuk ka tension midis terminaleve. Pastaj vendosni njehsorin e energjisë brenda kabinetit tuaj dhe lidhni telat e gjalla dhe neutrale nga ndërprerësi kryesor në hyrjen e njehsorit, mos harroni të përdorni konventën e ngjyrave (blu për neutrale dhe kafe/të zezë/gri për të jetuar në BE). Dalja duhet të lidhet me pjesën tjetër të sistemit.

Lidhjet kryesore të tensionit. Telat e mësipërm janë hyrje, telat përtej janë dalje.

Hapi 1: Pjesët e nevojshme

Pjesët e nevojshme
Pjesët e nevojshme

Hapi 2: Nevojat për softuer

Nevoja për Softuer
Nevoja për Softuer

Softuer

Filloni kompjuterin tuaj dhe hapni IDE -në tuaj. Ju mund të përdorni Arduino IDE ose Arduino Krijoni Editor. Kodi po plotëson kërkesat e mëposhtme: Komunikimi Modbus, menaxhimi i WiFi Protokolli MQTT Modbus është dhe protokoll me burim të hapur për sensorë dhe makina industriale. Për ta bërë Arduino të flasë për Modbus, ne do të përdorim bibliotekën Arduino Modbus. Kjo bibliotekë paketon të gjithë përdoruesit dhe bën lidhjen me çdo pajisje Modbus me të vërtetë të shpejtë. Meqenëse do të lexojmë regjistra, duke ndjekur fletën e të dhënave të njehsorit, ne mund të gjejmë të gjithë informacionin që na nevojiten si kodet e funksionit, adresën e regjistrit dhe madhësinë e regjistrit me fjalë. Por për ta bërë më të qartë, le të shpjegojmë se si funksionon Modbus: Mesazhet Modbus ndjekin një strukturë të thjeshtë: 01 03 04 00 16 00 02 25 C7 0x01po Adresa e Pajisjes 0x03 është Kodi i Funksionit që tregon pajisjen nëse duam të lexojmë ose shkruajmë të dhëna *, në këtë rast, lexoni regjistrat e mbajtjes 0x04 për Byte Count00 16 - Ne dërgojmë 4 byte të adresës së regjistrit (00 16) që i tregon pajisjes atë që duam të lexojmë 00 02- pastaj madhësinë e regjistrit (00 02) me fjalë (çdo fjalë është 2 bajtë e gjatë) 4 bajtët e fundit janë kod CRC. Ky kod gjenerohet nga një funksion matematikor mbi bajtët e mëparshëm, kjo siguron që mesazhi të jetë marrë në mënyrë korrekte.

Integrimi i Asistentit në Shtëpi Shtimi i njehsorit te Asistenti i Shtëpisë është mjaft i drejtpërdrejtë. Duke supozuar se keni një ndërmjetës MQTT të konfiguruar (Këtu është udhëzuesi), gjithçka që duhet të bëni është të shtoni përkufizime të reja nën skedarin configuration.yaml. sensori: - platforma: emri mqtt: "Tensioni Kryesor" gjendja_tema: "njësia e energjisë/kryesore/tensioni" e matjes: "V" Këtu ju duhet të vendosni emrin e matjes, temën MQTT për të lexuar dhe njësinë matëse të sasisë. Ruani skedarin, kontrolloni konfigurimin dhe ringarkoni Home Assistant, tani matjet do të shfaqen në faqen kryesore.

Paneli i konsumit të Asistentit në shtëpi që tregon leximet aktuale

Home Assistant do të kujdeset për krijimin e grafikëve dhe automatizimin e proceseve të shkaktuara nga leximet tuaja. Ky tutorial ka përfunduar, tani ju takon të shtoni veçori dhe ta personalizoni atë për qëllimet tuaja!

Hapi 3: Mblidhni

Mbledh
Mbledh
Mbledh
Mbledh

U krye? Timeshtë koha për të vidhosur lidhjen RS485! Ne do të përdorim kabllo të përdredhur me një palë të vetme me tokën, e përdorur zakonisht për linjat telefonike. Me këtë kabllo, ju mund të transmetoni në një distancë të gjatë (1.2 km). Sidoqoftë, ne thjesht përdorim një kabllo mjaft të gjatë për të dalë nga kabineti dhe për ta vendosur Arduino në një vend të arritshëm.

Lidhja Finder RS485

Ndërfaqja RS485 emërton terminalet e saj A, B dhe COM. Një standard i zakonshëm de-fakto është përdorimi i TX+/RX+ ose D+ si një alternativë për B (e lartë për MARK dmth boshe), TX-/RX- ose D- si një alternativë për A (e ulët për MARK dmth boshe) Meqenëse Mburoja MKR mbështet edhe Full Duplex, do të shihni dy terminale të tjerë, Y dhe Z. Këtu do të vidhosim skajin tjetër të kabllit pasi ne e dimë nga fleta e të dhënave se komunikimi gjysmë dupleks ndodh vetëm në terminalet Y dhe Z. Terminali COM duhet të lidhet me ISOGND. Meqenëse ne përdorim një lidhje gjysmë dupleks dhe meqenëse kabllot janë peer-to-peer, ne duhet të vendosim çelsat në mburojën MKR485 që të përputhen me konfigurimin tonë: vendosim HALF (2 në çaktivizim) dhe përfundimin në YZ (3 në ON); e para nuk ka rendesi. Përfundimi është një rezistencë që lidh dy terminalet e të dhënave, për zbutjen e ndërhyrjeve.

Kjo eshte. Tani mund të mbyllni kabinetin dhe të përqendroheni në anën e softuerit!

Hapi 4: Kodi

Kodi
Kodi

#përfshi

#include #include #include // kredencialet tuaja wifi const char ssid = "**********"; const char pass = "**********";

Rrjeti WiFiClient; Klienti MQTTClient; normë e gjatë e pa firmosur = 60000; // norma e parazgjedhur e rifreskimit në ms pa shenjë long last Millis = 0;

// funksioni i lidhjes void lidh () {Serial.print ("kontrollimi i wifi …"); ndërsa (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vonesa (1000); } Serial.print ("\ n po lidhet …"); ndërsa (! client.connect ("emri i pajisjes", "emri i përdoruesit", "përdoruesi_pw")) {// NDRYSHO P TOR TAT PATRBASHNI SETUPIN TUAJ Serial.print ("."); vonesa (1000); } Serial.println ("\ nlidhur!"); client.subscribe ("energjia/kryesore/rifreskim"); // tema për të vendosur shkallën e rifreskimit në distancë} // mqtt të marrë funksionin e kthimit të thirrjes mesazh i pavlerëRreceptuar (String & topic, String & payload) {Serial.println ("hyrëse:" + temë + " -" + ngarkesë); nëse (tema == "energjia/kryesore/rifreskimi") {// shkalla e rifreskimit të nivelit të trajtimit = ngarkesa.toInt ()*1000; Serial.println ("norma e re"+String (norma)); }}

void setup () {Serial.begin (115200); WiFi.filloni (ssid, kaloni); ndërsa (! Serial); client.begin ("broker_ip", neto); // NDRYSHO P TOR TAT PATRBASHKT klientin TUAJ SETUP.onMessage (messageReived); // filloni klientin Modbus RTU nëse (! ModbusRTUClient.begin (9600)) {Serial.println ("Dështoi në fillimin e Modbus RTU Client!"); ndërsa (1); }}

void loop () {client.loop (); nëse (! client.connected ()) {// kontrolloni lidhjen e rrjetit (); } // publikoni një mesazh pasi të ketë përfunduar rifreskimi (rutina jo -bllokuese) nëse (millis () - lastMillis> norma) {lastMillis = millis (); // bëni të gjitha thirrjet e lexuara të notojnë volt = readVoltage (); vonesë (100); float amp = readCurrent (); vonesë (100); dy vat = readPower (); vonesë (100); float hz = readFreq (); vonesë (100); dyfishtë wh = readEnergy (); // publikoni rezultatet sipas temave të lidhura client.publish ("energjia/kryesore/tensioni", String (volt, 3)); client.publish ("energjia/kryesore/aktuale", String (amp, 3)); client.publish ("energjia/kryesore/fuqia", String (watt, 3)); client.publish ("energjia/kryesore/frekuenca", String (hz, 3)); client.publish ("energjia/kryesore/energjia", 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"); vonesë (100); }}

/ * Funksionet për të lexuar regjistrat Finder Energy Meter * * Kontrolloni manualin e protokollit modbus për të kuptuar kodin * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf */float readVoltage () {float volt = 0.; nëse (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x000C, 2)) {// bëni thirrjen në regjistër Serial.print ("dështoi në leximin e tensionit!"); Serial.println (ModbusRTUClient.lastError ()); // mbajtës gabimi} tjetër {uint16_t word1 = ModbusRTUClient.read (); // lexoni të dhëna nga tamponi uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = word1 << 16 | fjalë2; // bit matematikë volt = millivolt/1000.0; } volt i kthimit; } float readCurrent () {float amper = 0.; nëse (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("nuk lexoi rrymën!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | fjalë2; amper = miliamp/1000.0; } kthehu amper; }

double readPower () {double watt = 0.; nëse (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("nuk lexoi fuqinë!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milivat; nëse (word1 >> 7 == 0) {milliwatt = word1

Recommended: