Tartalomjegyzék:
Videó: Az energiaszámla monitor: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
EZT A PROJEKTET
Ha valóban okosabbá akarja tenni otthonát, akkor valószínűleg a havi számláiból (azaz energia, gáz stb.) Kell kiindulnia. Ahogy egyesek mondják, jó a Planetnek, a pénztárcának és a lényegnek. A nyílt forráskódú hardver az utunk a fenntarthatóság eléréséhez az otthoni környezetben! Ez az ötlet arra késztetett bennünket, hogy egy egyszerű és biztonságos megoldást hozzunk létre, amely könnyen integrálható bármilyen otthoni automatizálási szoftverrel, mivel az MQTT -n keresztül teszi közzé az adatokat (a mi esetünkben megmutatjuk, hogyan integrálhatja őket a Home Assistant rendszerbe).
Áttekintés
Az elektromos energiafogyasztás mérése érdekében a Finder energiamérő használatát választottuk, mivel azt DIN sínre tervezték, és tökéletesen illeszkedik házunk főszekrényébe. A jó dolog ebben a termékben az, hogy rendelkezik RS485 Modbus interfésszel, egy ipari szabványos kommunikációs protokollal, amely igazán megkönnyíti az Arduino -val való beszélgetést. Valójában az Arduino kiadott egy hivatalos pajzsot, az MKR485 -öt és két könyvtárat a protokoll dekódolásához. Alaplapként az Arduino MKR WiFi 1010 -et választottuk, mivel az MKR formatervezéssel megegyezik, és WiFi -kapcsolattal rendelkezik.
Beállítás Figyelem! Ellenőrizze az ország szabályait a ház elektromos rendszerével kapcsolatban, és legyen rendkívül óvatos, mert halálos lehet! Ha nem tudja, hívjon villanyszerelőt. Az első lépés a mérő felszerelése az elektromos szekrénybe. Annak érdekében, hogy biztonságos környezetben dolgozzon, kapcsolja ki az áramellátást a rendszer előtt lévő elektromos terminálról, és ellenőrizze a multiméterrel, hogy nincs feszültség a csatlakozók között. Ezután helyezze az energiamérőt a szekrényébe, és csatlakoztassa a feszültségmentes és semleges vezetékeket a fő megszakítóból a mérő bemenetéhez, ne felejtse el használni a színmegállapítást (kék a semlegeshez, barna/fekete/szürke az EU -ban élőkhöz). A kimenetet a rendszer többi részéhez kell csatlakoztatni.
Fő feszültségcsatlakozások. A fenti vezetékek bemenetek, a túlsó vezetékek kimenetek.
1. lépés: Szükséges alkatrészek
2. lépés: Szoftver szükséges
Szoftver
Indítsa el a számítógépet, és nyissa meg az IDE -t. Használhatja az Arduino IDE vagy az Arduino Create Editor programot. A kód megfelel a következő kéréseknek: Modbus kommunikáció, WiFi menedzsment MQTT protokoll A Modbus és nyílt forráskódú protokoll ipari érzékelőkhöz és gépekhez. Ahhoz, hogy az Arduino beszéljen Modbusról, az Arduino Modbus könyvtárat fogjuk használni. Ez a könyvtár csomagolja az összes kezelőt, és minden Modbus -eszköz csatlakoztatását igazán gyorsá teszi. Mivel a regisztereket fogjuk olvasni, a mérő adatlapját követve minden szükséges információt megtalálunk, például a funkciókódokat, a regiszter címét és a regiszter méretét szavakkal. De hogy világosabb legyen, magyarázzuk el a Modbus működését: A Modbus üzenetek egyszerű szerkezetet követnek: 01 03 04 00 16 00 02 25 C7 0x01 az eszköz címe A 0x03 a funkciókód, amely megmondja a készüléknek, hogy adatokat akarunk -e olvasni vagy írni. *, ebben az esetben olvassa el a 0x04 tároló regisztereket a Byte Count00 16 számára - 4 bájt regisztrációs címet küldünk (00 16), amely megmondja az eszköznek, hogy mit szeretnénk olvasni 00 02- majd a regiszter méretét (00 02) szavakkal (minden szó 2 bájt hosszú) Az utolsó 4 bájt CRC kód. Ez a kód egy matematikai függvényből generálódik az előző bájtokhoz képest, ez biztosítja, hogy az üzenetet megfelelően fogadták.
Az otthoni asszisztens integrálása A mérő hozzáadása a Home Assistant -hez meglehetősen egyszerű. Feltételezve, hogy MQTT bróker van konfigurálva (itt található az útmutató), mindössze annyit kell tennie, hogy új definíciókat ad hozzá a configuration.yaml fájlhoz. érzékelő: - platform: mqtt name: "Main Voltage" state_topic: "energia/fő/feszültség" unit_of_measurement: "V" Ide kell beírni a mérés nevét, az MQTT témát és a mennyiség mértékegységét. Mentse a fájlt, ellenőrizze a konfigurációt és töltse be újra a Home Assistant alkalmazást, most a mérések megjelennek a főoldalon.
A Home Assistant fogyasztási panel az aktuális értékeket mutatja
A Home Assistant gondoskodik a grafikonok létrehozásáról és az olvasás által kiváltott folyamatok automatizálásáról. Ez az oktatóanyag befejeződött, most Önön múlik, hogy milyen funkciókat ad hozzá és testre szabja saját céljaira!
3. lépés: Szerelje össze
Kész? Itt az ideje, hogy csavarja be az RS485 csatlakozót! Csavart egypáros kábelt fogunk használni a földdel, általában telefonvonalakhoz. Ezzel a kábellel nagy távolságra (1,2 km) továbbíthat. Azonban csak elég hosszú kábelt használunk a szekrényből való kilépéshez, és az Arduino -t hozzáférhető helyre helyezzük.
Kereső RS485 kapcsolat
Az RS485 interfész elnevezi A, B és COM termináljait. Általános de facto szabvány a TX+/RX+ vagy a D+ alternatívája a B számára (magas a MARK, azaz üresjárat), a TX-/RX- vagy a D- alternatíva az A számára (alacsony a MARK, azaz üresjárat). Az MKR pajzs támogatja a Full Duplex funkciót is, két másik terminált lát, Y és Z. Itt csavarjuk be a kábel másik végét, mivel az adatlapból tudjuk, hogy a fél-duplex kommunikáció csak az Y és Z terminálokon történik. A COM terminált az ISOGND -hez kell csatlakoztatni. Mivel fél-duplex kapcsolatot használunk, és mivel a kábelezés peer-to-peer, ezért az MKR485 pajzson lévő kapcsolókat úgy kell beállítanunk, hogy illeszkedjenek a beállításunkhoz: a FÉL (2 ki) és a befejezést YZ (3- TOVÁBB); az első nem számít. A lezárás a két adatterminált összekötő ellenállás az interferencia csillapítására.
Ez az. Most bezárhatja a szekrényt, és a szoftver oldalára koncentrálhat!
4. lépés: Kód
#befoglalni
#include #include #include // wifi hitelesítő adatai const char ssid = "**********"; const char pass = "**********";
WiFiClient net; MQTTClient kliens; előjel nélküli hosszú árfolyam = 60000; // alapértelmezett frissítési gyakoriság ms -ban unsigned long lastMillis = 0;
// connect function void connect () {Serial.print ("wifi ellenőrzése …"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); késleltetés (1000); } Serial.print ("\ ncsatlakozás …"); while (! client.connect ("device_name", "user_name", "user_pw"))) {// VÁLTOZTATÁS A BEÁLLÍTÁSOK MEGFELELÉSÉHEZ Serial.print ("."); késleltetés (1000); } Serial.println ("\ ncsatlakoztatva!"); client.subscribe ("energia/fő/frissítés"); // téma a frissítési gyakoriság távoli beállításához} // mqtt visszahívási funkció fogadása void messageReceived (String & topic, String & payload) {Serial.println ("bejövő:" + téma + " -" + hasznos terhelés); if (topic == "energy/main/refreshrate") {// frissítési gyakoriság kezelő rate = payload.toInt ()*1000; Serial.println ("új arány"+karakterlánc (arány)); }}
void setup () {Serial.begin (115200); WiFi.begin (ssid, pass); while (! Sorozat); client.begin ("broker_ip", net); // VÁLTOZTATÁS A BEÁLLÍTÁSOK klienséhez.onMessage (messageReceived); // indítsa el a Modbus RTU ügyfelet, ha (! ModbusRTUClient.begin (9600)) {Serial.println ("Nem sikerült elindítani a Modbus RTU klienst!"); míg (1); }}
void loop () {client.loop (); if (! client.connected ()) {// ellenőrizze a hálózati kapcsolatot connect (); } // üzenet közzététele a frissítés után (nem blokkoló rutin) if (millis () - lastMillis> rate) {lastMillis = millis (); // hogy az összes olvasott hívás float volt = readVoltage (); késleltetés (100); float amp = readCurrent (); késleltetés (100); dupla watt = readPower (); késleltetés (100); float hz = readFreq (); késleltetés (100); double wh = readEnergy (); // az eredmények közzététele kapcsolódó témák alatt client.publish ("energia/fő/feszültség", String (volt, 3)); client.publish ("energia/fő/áram", karakterlánc (erősítő, 3)); client.publish ("energia/fő/teljesítmény", String (watt, 3)); client.publish ("energia/fő/frekvencia", karakterlánc (hz, 3)); client.publish ("energia/fő/energia", karakterlánc (wh, 3)); Soros.nyomat (String (volt, 3)+"V"+String (amp, 3)+"A"+String (watt, 3)+"W"); Soros.println (Karakterlánc (hz, 3)+"Hz"+Karakterlánc (wh, 3)+"kWh"); késleltetés (100); }}
/ * A Finder Energy Meter regiszterek olvasásának funkciói * * A kód megértéséhez nézze meg a modbus protokoll kézikönyvét * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf */float readVoltage () {float volt = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x000C, 2)) {// hívja fel a Serial.print regisztert ("nem sikerült leolvasni a feszültséget!"); Serial.println (ModbusRTUClient.lastError ()); // hibakezelő} else {uint16_t word1 = ModbusRTUClient.read (); // adatok olvasása a pufferből uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = szó1 << 16 | szó2; // bit matematikai volt = millivolt/1000.0; } visszatérő volt; } float readCurrent () {float amper = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("nem sikerült leolvasni az aktuálisat!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = szó1 << 16 | szó2; amper = milliamp/1000,0; } visszatérő amper; }
double readPower () {double watt = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("nem sikerült leolvasni a teljesítményt!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milliwatt; ha (szó1 >> 7 == 0) {milliwatt = szó1
Ajánlott:
A Raspberry Pi 4 beállítása laptopon/számítógépen keresztül Ethernet-kábellel (nincs monitor, nincs Wi-Fi): 8 lépés
A Raspberry Pi 4 beállítása laptopon/pc-n keresztül Ethernet-kábellel (nincs monitor, nincs Wi-Fi): Ebben a beállításban a Raspberry Pi 4 Model-B 1 Gb RAM-mal fogunk dolgozni. A Raspberry-Pi egy fedélzeti számítógép, amelyet oktatási célokra és barkácsprojektekhez használnak, megfizethető áron, 5 V 3A tápegységet igényel
Hőmérséklet, páratartalom monitor - Arduino Mega + Ethernet W5100: 5 lépés
Hőmérséklet, páratartalom monitor - Arduino Mega + Ethernet W5100: 1. modul - FLAT - hardver: Arduino Mega 2560 Wiznet W5100 Ethernet pajzs 8x DS18B20 hőmérséklet -érzékelő OneWire buszon - 4 OneWire buszra (2,4,1,1) 2x digitális hőmérsékletre osztva és páratartalom érzékelő DHT22 (AM2302) 1x hőmérséklet és páratartalom
Radoncsökkentő monitor: 4 lépés
Radoncsökkentő monitor: Áttekintés A radon természetesen az otthonunk alatti sziklákból és talajból származik az Egyesült Államokban és az Európai Unióban. Körülöttünk mindig szagtalan, íztelen és láthatatlan radioaktív gáz van. A radon problémás, mert beszivárog otthonunkba
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3: 7 lépés
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet-/páratartalom -figyelő - 3. javítás: Frissítés: 2020. november 23. - A 2 x AAA elem első cseréje 2019. január 15. óta, azaz 22 hónap 2xAAA alkáli esetén Frissítés: 2019. április 7. - 3. verzió lp_BLE_TempHumidity, hozzáadja a dátum/idő grafikonokat a pfodApp V3.0.362+használatával, és az automatikus fojtószelepet
Az AO Smith vízmelegítő monitor csökkenti az IRIS -t: 3 lépés
Az AO Smith vízmelegítő monitor csökkenti az IRIS -t: Röviddel azután, hogy megvásárolt egy új vízmelegítőt, amely "intelligens" lehet. vagy távirányítással. A Lowes megszüntette IRIS -platformját, így az összes IRIS -termék használhatatlanná vált. Bár kiadták a forráskódot a hubhoz, de az én párom