Innholdsfortegnelse:
Video: Monitor for energiregning: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
OM DETTE PROJEKTET
Hvis du virkelig vil gjøre hjemmet ditt smartere, vil du sannsynligvis starte med månedlige regninger (dvs. energi, gass, osv.). Som noen sier, Good for Planet, The Wallet og The Bottom Line. Åpen kildevare-maskinvare er vår måte å nå bærekraft i hjemmemiljøet! Denne ideen brakte oss til å bygge en enkel og sikker løsning, enkel å integrere med hvilken som helst hjemmeautomatiseringsprogramvare siden den avslører data over MQTT (i vårt tilfelle viser vi deg hvordan du integrerer den i Home Assistant).
Oversikt
For å måle det elektriske energiforbruket valgte vi å bruke Finder Energy Meter, siden det er designet for bruk på DIN -skinner og passer perfekt i hovedskapet i huset vårt. Det kule med dette produktet er at det har et RS485 Modbus -grensesnitt, en industriell standard kommunikasjonsprotokoll som gjør det veldig enkelt å snakke med en Arduino. Faktisk har Arduino gitt ut et offisielt skjold, MKR485 og to biblioteker for å dekode protokollen. Som hovedkort valgte vi Arduino MKR WiFi 1010, siden den deler MKR -formfaktoren og har WiFi -tilkobling.
Oppsett Advarsel! Sjekk landets forskrifter om håndtering av husets elektriske system og vær ekstremt forsiktig fordi det kan være dødelig! Ring en elektriker hvis du ikke vet det. Det første trinnet er å installere måleren i ditt elektriske skap. For å sikre at du jobber i et trygt miljø, må du slå av strømmen fra den elektriske terminalen foran systemet og dobbeltsjekke med multimeteret at det ikke er spenning mellom terminalene. Plasser deretter energimåleren inne i skapet og koble strømførende og nøytrale ledninger fra hovedbryteren til inngangen til måleren, husk å bruke fargekonvensjonen (blå for nøytral og brun/svart/grå for live i EU). Utgangen må kobles til resten av systemet.
Hovedspenningstilkoblinger. Ledninger ovenfor er inngang, ledninger utover er utganger.
Trinn 1: Nødvendige deler
Trinn 2: Programvare trenger
Programvare
Start datamaskinen og åpne IDE. Du kan bruke Arduino IDE eller Arduino Create Editor. Koden oppfyller følgende forespørsler: Modbus-kommunikasjon, WiFi-styring MQTT-protokoll Modbus er og åpen kildekode-protokoll for industrielle sensorer og maskiner. For å få Arduino til å snakke Modbus, skal vi bruke Arduino Modbus -biblioteket. Dette biblioteket pakker alle behandlerne og gjør det raskt å koble til en hvilken som helst Modbus -enhet. Siden vi skal lese registre, etter målerens datablad, kan vi finne all informasjonen vi trenger, som funksjonskoder, adresse til registeret og størrelsen på registret i ord. Men for å gjøre det tydeligere, la oss forklare hvordan Modbus fungerer: Modbus -meldinger følger en enkel struktur: 01 03 04 00 16 00 02 25 C7 0x01 er enhetsadressen 0x03 funksjonskoden som forteller enheten om vi vil lese eller skrive data *, i dette tilfellet, les holdingregister 0x04 for Byte Count00 16 - Vi sender 4 byte registeradresse (00 16) som forteller enheten hva vi vil lese 00 02- deretter størrelsen på registeret (00 02) i ord (hvert ord er 2 byte langt) De siste 4 byte er CRC -kode. Denne koden genereres fra en matematisk funksjon over tidligere byte, dette sikrer at meldingen er mottatt riktig.
Hjemmeassistentintegrering Det er ganske enkelt å legge til måleren til hjemmeassistenten. Forutsatt at du har en MQTT -megler konfigurert (Her er veiledningen), er alt du trenger å gjøre å legge til nye definisjoner under filen config.yaml. sensor: - plattform: mqtt navn: "Hovedspenning" state_topic: "energi/hoved/spenning" enhet_for_måling: "V" Her må du sette navnet på målingen, MQTT -emnet som skal leses og måleenheten for mengden. Lagre filen, sjekk konfigurasjonen og last inn Home Assistant på nytt, nå vil målingene vises på hovedsiden.
Home Assistant forbrukspanel som viser nåværende avlesninger
Home Assistant tar seg av å lage grafer og automatisere prosesser utløst av lesningene dine. Denne opplæringen er ferdig, nå er det opp til deg å legge til funksjoner og tilpasse den til dine egne formål!
Trinn 3: Monter
Ferdig? Det er på tide å skru inn RS485 -tilkoblingen! Vi bruker vridd enkeltpar -kabel med bakken, vanligvis brukt til telefonlinjer. Med denne kabelen kan du sende over en lang avstand (1,2 km). Imidlertid bruker vi bare en kabel lenge nok til å gå ut av skapet og plassere Arduino på et tilgjengelig sted.
Finder RS485 -tilkobling
RS485 -grensesnittet navngir terminalene A, B og COM. En vanlig de facto-standard er bruk av TX+/RX+ eller D+ som et alternativ for B (høyt for MARK dvs. inaktiv), TX-/RX- eller D- som et alternativ for A (lavt for MARK dvs. inaktiv) Siden MKR-skjold støtter også Full Duplex, du ser to andre terminaler, Y og Z. Her skal vi skru den andre enden av kabelen siden vi vet fra databladet at halvdupleks-kommunikasjon bare skjer på Y- og Z-terminaler. COM -terminalen må kobles til ISOGND. Siden vi bruker en halv dupleks-tilkobling og siden kablingen er node-til-node, må vi sette opp bryterne på MKR485-skjermen for å matche vårt oppsett: vi setter HALV (2 til av) og avslutning på YZ (3 til PÅ); den første spiller ingen rolle. Avslutningen er en motstand som forbinder de to dataterminalene for å dempe forstyrrelser.
Det var det. Nå kan du lukke skapet og fokusere på programvaresiden!
Trinn 4: Kode
#inkludere
#include #include #include // din wifi -legitimasjon const char ssid = "**********"; const char pass = "**********";
WiFiClient nett; MQTTClient klient; usignert lang hastighet = 60000; // standard oppdateringsfrekvens i ms unsigned long lastMillis = 0;
// koble til funksjon void connect () {Serial.print ("sjekker wifi …"); mens (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (1000); } Serial.print ("\ nkoble til …"); while (! client.connect ("device_name", "user_name", "user_pw")) {// CHANGE TO MATCH YOUR SETUP Serial.print ("."); forsinkelse (1000); } Serial.println ("\ nkoblet!"); client.subscribe ("energi/main/oppdater"); // emne for å angi oppdateringshastighet eksternt} // mqtt motta tilbakeringingsfunksjon void messageReceived (String & topic, String & payload) {Serial.println ("incoming:" + topic + " -" + payload); if (topic == "energy/main/refresh") {// refresh rate handler rate = nyttelast.tilInt ()*1000; Serial.println ("ny rate"+streng (rate)); }}
ugyldig oppsett () {Serial.begin (115200); WiFi. Begynner (ssid, pass); mens (! Seriell); client.begin ("broker_ip", netto); // ENDRE FOR Å MATCHE DIN OPPSETT klient. OnMessage (melding mottatt); // start Modbus RTU -klienten hvis (! ModbusRTUClient.begin (9600)) {Serial.println ("Kunne ikke starte Modbus RTU -klient!"); mens (1); }}
void loop () {client.loop (); hvis (! client.connected ()) {// sjekk nettverkstilkoblingen connect (); } // publiser en melding etter at oppdateringen har gått (ikke -blokkerende rutine) if (millis () - lastMillis> rate) {lastMillis = millis (); // få alle leseanropene til å flyte volt = readVoltage (); forsinkelse (100); float amp = readCurrent (); forsinkelse (100); dobbel watt = readPower (); forsinkelse (100); float hz = readFreq (); forsinkelse (100); dobbel wh = readEnergy (); // publisere resultater under relaterte emner client.publish ("energy/main/voltage", String (volt, 3)); client.publish ("energy/main/current", String (amp, 3)); client.publish ("energi/main/power", streng (watt, 3)); client.publish ("energi/hoved/frekvens", streng (hz, 3)); client.publish ("energy/main/energy", String (wh, 3)); Serial.print (streng (volt, 3)+"V"+streng (amp, 3)+"A"+streng (watt, 3)+"W"); Serial.println (String (hz, 3)+"Hz"+String (wh, 3)+"kWh"); forsinkelse (100); }}
/ * Funksjoner for å lese Finder Energy Meter -registre * * Sjekk manualen for modbus -protokollen for å forstå koden * 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)) {// ring til registeret Serial.print ("kunne ikke lese spenning!"); Serial.println (ModbusRTUClient.lastError ()); // error handler} else {uint16_t word1 = ModbusRTUClient.read (); // lese data fra bufferen uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = word1 << 16 | word2; // bit matematisk volt = millivolt/1000.0; } returvolum; } float readCurrent () {float ampere = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("kunne ikke lese gjeldende!"); Serial.println (ModbusRTUClient.lastError ()); } annet {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | word2; ampere = milliamp/1000,0; } returnere ampere; }
double readPower () {double watt = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("mislyktes i å lese strøm!"); Serial.println (ModbusRTUClient.lastError ()); } annet {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milliwatt; hvis (word1 >> 7 == 0) {milliwatt = word1
Anbefalt:
Radon Mitigation Monitor: 4 trinn
Radon Mitigation Monitor: Oversikt Radon kommer naturlig fra stein og jord under hjemmene våre over hele USA og EU. Det er alltid rundt oss en luktfri, smakløs og usynlig radioaktiv gass. Radon er problematisk fordi det lekker ut i hjemmet vårt
Vannmykner Salt Level Monitor: 7 trinn
Vannmykner Salt Level Monitor: Vannmyknere fungerer ved hjelp av en prosess som kalles ionebytter der kalsium- og magnesiumioner fra hardt vann utveksles med natriumklorid (salt) via en spesiell harpiks. Vannet går inn i et trykkbeholder der det beveger seg gjennom harpiksperlene
Monitor Inteligente De Comedouro: 5 trinn
Monitor Inteligente De Comedouro: Este projeto consiste em apresentar uma balança inteligente que irá monitorar o comedouro do animal e irá alertar quando chegar a hora de repor o alimento e/ou a água. Consiste em validar um peso minimo considerável que o comedouro deverá conter, ca
Bird Feeder Monitor V2.0: 12 trinn (med bilder)
Bird Feeder Monitor V2.0: Dette er et prosjekt for å overvåke, fotografere og registrere antall og tid som er brukt av fugler som besøker fuglemateren vår. Flere Raspberry Pi (RPi) ble brukt til dette prosjektet. Den ene ble brukt som en kapasitiv berøringssensor, Adafruit CAP1188, for å oppdage, registrere
Slik laster du fôr til kyr: 9 trinn
Slik laster du fôr til kyr: Alt som lever trenger mat for å overleve. I vinter- og vårmånedene er det ikke gress for kyr å beite på. Dette gjør det veldig viktig at kuene blir matet skikkelig slik at de produserer sunne kalver. I de følgende trinnene vil pr