Πίνακας περιεχομένων:
Βίντεο: Παρακολούθηση λογαριασμού ενέργειας: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
ΓΙΑ ΑΥΤΟ ΤΟ ΕΡΓΟ
Εάν θέλετε πραγματικά να κάνετε το σπίτι σας πιο έξυπνο, πιθανότατα θα θέλετε να ξεκινήσετε από τους μηνιαίους λογαριασμούς σας (δηλαδή ενέργεια, φυσικό αέριο, κλπ …). Όπως λένε μερικοί, Good for Planet, The Wallet και The Bottom Line. Το υλικό ανοιχτού κώδικα είναι ο τρόπος μας για να επιτύχουμε βιωσιμότητα στο οικιακό περιβάλλον! Αυτή η ιδέα μας έφερε να δημιουργήσουμε μια απλή και ασφαλή λύση, εύκολη στην ενσωμάτωση με οποιοδήποτε λογισμικό οικιακού αυτοματισμού, καθώς εκθέτει δεδομένα μέσω MQTT (στην περίπτωσή μας θα σας δείξουμε πώς να τα ενσωματώσετε στο Home Assistant).
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Για να μετρήσουμε την κατανάλωση ηλεκτρικής ενέργειας, επιλέξαμε να χρησιμοποιήσουμε το Finder Energy Meter, αφού έχει σχεδιαστεί για χρήση σε σιδηροτροχιά DIN και ταιριάζει απόλυτα στο κεντρικό ντουλάπι του σπιτιού μας. Το ωραίο με αυτό το προϊόν είναι ότι διαθέτει διεπαφή RS485 Modbus, ένα βιομηχανικό πρότυπο πρωτόκολλο επικοινωνίας που καθιστά την επικοινωνία με ένα Arduino πολύ εύκολη. Στην πραγματικότητα, το Arduino έχει κυκλοφορήσει μια επίσημη ασπίδα, το MKR485 και δύο βιβλιοθήκες για την αποκωδικοποίηση του πρωτοκόλλου. Ως κεντρική πλακέτα, επιλέξαμε το Arduino MKR WiFi 1010, καθώς μοιράζεται τον παράγοντα φόρμας MKR και διαθέτει δυνατότητα σύνδεσης WiFi.
SetupWarning! Ελέγξτε τους κανονισμούς της χώρας σας σχετικά με την αντιμετώπιση του ηλεκτρικού συστήματος του σπιτιού σας και να είστε εξαιρετικά προσεκτικοί γιατί μπορεί να είναι θανατηφόρος! Εάν δεν γνωρίζετε τεχνογνωσία, καλέστε έναν ηλεκτρολόγο. Το πρώτο βήμα είναι να εγκαταστήσετε τον μετρητή στο ηλεκτρικό ντουλάπι σας. Για να διασφαλίσετε ότι εργάζεστε σε ασφαλές περιβάλλον, απενεργοποιήστε την τροφοδοσία από τον ηλεκτρικό ακροδέκτη μπροστά από το σύστημά σας και ελέγξτε ξανά με το πολύμετρο ότι δεν υπάρχει τάση μεταξύ των ακροδεκτών. Στη συνέχεια, τοποθετήστε τον μετρητή ενέργειας μέσα στο ντουλάπι σας και συνδέστε ζωντανά και ουδέτερα καλώδια από τον κύριο διακόπτη στην είσοδο του μετρητή, θυμηθείτε να χρησιμοποιήσετε τη σύμβαση χρωμάτων (μπλε για ουδέτερο και καφέ/μαύρο/γκρι για ζωντανά στην ΕΕ). Η έξοδος πρέπει να συνδεθεί με το υπόλοιπο σύστημα.
Συνδέσεις κύριας τάσης. Τα καλώδια παραπάνω είναι είσοδοι, τα καλώδια πέρα από αυτά είναι έξοδοι.
Βήμα 1: Απαιτούνται εξαρτήματα
Βήμα 2: Απαιτήσεις λογισμικού
Λογισμικό
Εκκινήστε τον υπολογιστή σας και ανοίξτε το 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 είναι ο κώδικας λειτουργίας που λέει στη συσκευή εάν θέλουμε να διαβάζουμε ή να γράφουμε δεδομένα *, σε αυτή την περίπτωση, διαβάστε τους καταχωρητές 0x04 για Byte Count00 16 - Στέλνουμε 4 byte διεύθυνση καταχωρητή (00 16) που λέει στη συσκευή τι θέλουμε να διαβάσουμε 00 02- και μετά το μέγεθος του καταχωρητή (00 02) με λέξεις (κάθε λέξη έχει μήκος 2 byte) Τα τελευταία 4 byte είναι κωδικός CRC. Αυτός ο κώδικας παράγεται από μια μαθηματική συνάρτηση σε σχέση με τα προηγούμενα byte, αυτό διασφαλίζει ότι το μήνυμα έχει ληφθεί σωστά.
Η προσθήκη του μετρητή στο Home Assistant είναι αρκετά απλή. Υποθέτοντας ότι έχετε διαμορφώσει έναν μεσίτη MQTT (Εδώ είναι ο οδηγός), το μόνο που χρειάζεται να κάνετε είναι να προσθέσετε νέους ορισμούς στο αρχείο configuration.yaml. αισθητήρας: - πλατφόρμα: όνομα mqtt: "Main Voltage" state_topic: "energy/main/voltage" unit_of_measurement: "V" Εδώ πρέπει να βάλετε το όνομα της μέτρησης, το θέμα MQTT για ανάγνωση και τη μονάδα μέτρησης της ποσότητας. Αποθηκεύστε το αρχείο, ελέγξτε τη διαμόρφωση και φορτώστε ξανά το Home Assistant, τώρα οι μετρήσεις θα εμφανιστούν στην κύρια σελίδα.
Πίνακας κατανάλωσης Home Assistant που δείχνει τις τρέχουσες ενδείξεις
Το Home Assistant θα φροντίσει για τη δημιουργία γραφημάτων και θα αυτοματοποιήσει διαδικασίες που ενεργοποιούνται από τις αναγνώσεις σας. Αυτό το σεμινάριο ολοκληρώθηκε, τώρα εναπόκειται σε εσάς να προσθέσετε δυνατότητες και να το προσαρμόσετε για τους δικούς σας σκοπούς!
Βήμα 3: Συναρμολόγηση
Εγινε? Isρθε η ώρα να βιδώσετε τη σύνδεση RS485! Θα χρησιμοποιήσουμε στριμμένο καλώδιο ενός ζεύγους με τη γείωση, που συνήθως χρησιμοποιείται για τηλεφωνικές γραμμές. Με αυτό το καλώδιο, μπορείτε να μεταδώσετε σε μεγάλη απόσταση (1,2 χιλιόμετρα). Ωστόσο, χρησιμοποιούμε απλώς ένα καλώδιο αρκετά για να βγούμε από το ντουλάπι και να τοποθετήσουμε το Arduino σε ένα προσβάσιμο σημείο.
Finder RS485 σύνδεση
Η διεπαφή RS485 ονομάζει τους ακροδέκτες της Α, Β και COM. Ένα κοινό de-facto πρότυπο είναι η χρήση των TX+/RX+ ή D+ ως εναλλακτική λύση για το B (υψηλό για MARK δηλαδή αδρανές), TX-/RX- ή D- ως εναλλακτική λύση για A (χαμηλή για MARK δηλ. Αδρανές) Η ασπίδα MKR υποστηρίζει επίσης Full Duplex, θα δείτε δύο άλλους ακροδέκτες, το Y και το Z. Εδώ θα βιδώσουμε το άλλο άκρο του καλωδίου, αφού γνωρίζουμε από το φύλλο δεδομένων ότι η επικοινωνία μισής διπλής όψης συμβαίνει μόνο στους ακροδέκτες Y και Z. Το τερματικό COM πρέπει να συνδεθεί με ISOGND. Δεδομένου ότι χρησιμοποιούμε μια σύνδεση διπλής όψης και επειδή η καλωδίωση είναι peer-to-peer, πρέπει να ρυθμίσουμε τους διακόπτες στην ασπίδα MKR485 για να ταιριάζει με τη ρύθμισή μας: ρυθμίζουμε HALF (2 σε απενεργοποίηση) και τερματισμό σε YZ (3 έως ΕΠΙ); το πρώτο δεν έχει σημασία. Ο τερματισμός είναι μια αντίσταση που συνδέει τα δύο τερματικά δεδομένων, για παρεμβολές απόσβεσης.
Αυτό είναι. Τώρα μπορείτε να κλείσετε το ερμάριο και να εστιάσετε στην πλευρά του λογισμικού!
Βήμα 4: Κωδικός
#περιλαμβάνω
#include #include #include // τα διαπιστευτήριά σας wifi const char ssid = "**********"; const char pass = "**********";
WiFiClient net? Πελάτης MQTTClient. ανυπόγραφη μεγάλη τιμή = 60000; // προεπιλεγμένος ρυθμός ανανέωσης σε ms χωρίς υπογραφή long lastMillis = 0;
// σύνδεση λειτουργίας void connect () {Serial.print ("checking wifi…"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); καθυστέρηση (1000)? } Serial.print ("\ nσύνδεση…"); while (! client.connect ("όνομα_συσκευής", "όνομα_χρήστη", "user_pw")) {// ΑΛΛΑΓΗ ΓΙΑ ΤΗΝ ΤΑΙΡΙΑΣΗ ΤΗΣ ΡΥΘΜΙΣΗΣ ΣΑΣ Serial.print ("."); καθυστέρηση (1000)? } Serial.println ("\ nσύνδεση!"); client.subscribe ("energy/main/refreshrate"); // θέμα για ρύθμιση του ρυθμού ανανέωσης από απόσταση} // mqtt λήψη λειτουργίας επανάκλησης void messageReceived (String & topic, String & payload) {Serial.println ("εισερχόμενα:" + topic + " -" + payload); if (topic == "energy/main/refreshrate") {// ρυθμός ανανέωσης ρυθμιστής = payload.toInt ()*1000; Serial.println ("νέα τιμή"+String (ποσοστό)); }}
void setup () {Serial.begin (115200); WiFi.begin (ssid, pass); ενώ (! Σειριακό)? client.begin ("broker_ip", net); // ΑΛΛΑΓΗ ΓΙΑ ΤΗΝ ΤΑΙΡΙΑΣΗ ΤΗΣ ΡΥΘΜΙΣΗΣ ΣΑΣ client.onMessage (messageReceived); // ξεκινήστε τον πελάτη Modbus RTU εάν (! ModbusRTUClient.begin (9600)) {Serial.println ("Αποτυχία εκκίνησης Modbus RTU Client!"); ενώ (1)? }}
void loop () {client.loop (); εάν (! client.connected ()) {// ελέγξτε τη σύνδεση δικτύου (); } // δημοσιεύστε ένα μήνυμα μετά την παρέλευση της ανανέωσης (ρουτίνα χωρίς αποκλεισμούς) εάν (millis () - lastMillis> ποσοστό) {lastMillis = millis (); // κάνει όλες τις κλήσεις ανάγνωσης float volt = readVoltage (); καθυστέρηση (100)? float amp = readCurrent (); καθυστέρηση (100)? διπλό watt = readPower (); καθυστέρηση (100)? float hz = readFreq (); καθυστέρηση (100)? διπλό wh = readEnergy (); // δημοσιεύει αποτελέσματα κάτω από σχετικά θέματα client.publish ("ενέργεια/κύρια/τάση", συμβολοσειρά (βολτ, 3)); client.publish ("energy/main/current", String (amp, 3)); client.publish ("energy/main/power", String (watt, 3)); client.publish ("ενέργεια/κύρια/συχνότητα", String (hz, 3)); client.publish ("ενέργεια/κύρια/ενέργεια", 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"); καθυστέρηση (100)? }}
/ * Λειτουργίες ανάγνωσης καταχωρητών Finder Energy Meter * * Ελέγξτε το εγχειρίδιο πρωτοκόλλου modbus για να κατανοήσετε τον κώδικα * https://gfinder.findernet.com/public/attachments/7E/EL/PRT_Modbus_7E_64_68_78_86EN.pdf */float readVoltage () {float volt = 0.; εάν (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x000C, 2)) {// πραγματοποιήστε την κλήση στο μητρώο Serial.print ("απέτυχε η ανάγνωση τάσης!"); Serial.println (ModbusRTUClient.lastError ()); // χειριστής σφαλμάτων} else {uint16_t word1 = ModbusRTUClient.read (); // ανάγνωση δεδομένων από το buffer uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = word1 << 16 | word2; // bit μαθηματικά volt = millivolt/1000.0; } βολτ επιστροφής. } float readCurrent () {float ampere = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("απέτυχε η ανάγνωση του ρεύματος!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = word1 << 16 | word2; αμπέρ = milliamp/1000.0; } επιστροφή αμπέρ? }
double readPower () {double watt = 0.; εάν (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("απέτυχε η ανάγνωση ισχύος!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milliwatt; εάν (word1 >> 7 == 0) {milliwatt = word1
Συνιστάται:
Υπολογιστής Αποταμίευσης Τραπεζικού Λογαριασμού: 18 Βήματα
Υπολογιστής Αποταμιεύσεων Τραπεζικού Λογαριασμού: Σας ευχαριστώ που επιλέξατε τον υπολογιστή μου αποταμιεύσεων. Σήμερα θα μάθουμε πώς να προγραμματίζουμε μια τάξη BankAccount για να παρακολουθούμε τα δικά σας προσωπικά έξοδα και αποταμιεύσεις. Για να δημιουργήσετε έναν τραπεζικό λογαριασμό για να παρακολουθείτε τα έξοδά σας, θα χρειαστείτε πρώτα μια βασική
Παρακολούθηση ενέργειας σε 15 λεπτά: 3 βήματα
Παρακολούθηση ενέργειας σε 15 λεπτά: Αυτός είναι ένας αισθητήρας wifi για να κολλήσετε στο φλας στο μετρητή ηλεκτρικής ενέργειας. Ανιχνεύει αναλαμπές με LDR και εμφανίζει ισχύ στην οθόνη OLED. Αποστέλλει δεδομένα στον Πίνακα ελέγχου πίνακα, ζωντανό παράδειγμα εδώ. Εγγραφείτε για έναν δωρεάν λογαριασμό επίδειξης: https: //thingsboard.io
Εισαγωγή και δημιουργία λογαριασμού στην πλατφόρμα του Things Network IoT LoRaWAN: 6 βήματα
Εισαγωγή και δημιουργία λογαριασμού στην πλατφόρμα The Things Network IoT LoRaWAN: Σε αυτή την ευκαιρία θα δημιουργήσουμε έναν λογαριασμό στην πλατφόρμα The Things Network και θα κάνουμε μια σύντομη εισαγωγή, το TTN μια καλή πρωτοβουλία για τη δημιουργία ενός δικτύου για το διαδίκτυο των πραγμάτων ή " IoT ". Το Things Network έχει εφαρμόσει το LoR
Πώς να μετρήσετε σωστά την κατανάλωση ενέργειας των μονάδων ασύρματης επικοινωνίας στην εποχή της χαμηλής κατανάλωσης ενέργειας ;: 6 βήματα
Πώς να μετρήσετε σωστά την κατανάλωση ενέργειας των ενοτήτων ασύρματης επικοινωνίας στην εποχή της χαμηλής κατανάλωσης ενέργειας ;: Η χαμηλή κατανάλωση ενέργειας είναι μια εξαιρετικά σημαντική έννοια στο Διαδίκτυο των Πραγμάτων. Οι περισσότεροι κόμβοι IoT πρέπει να τροφοδοτούνται από μπαταρίες. Μόνο με τη σωστή μέτρηση της κατανάλωσης ενέργειας της ασύρματης μονάδας μπορούμε να εκτιμήσουμε με ακρίβεια πόση μπαταρία
Δημιουργία νέου λογαριασμού στο CRM: 6 βήματα
Δημιουργία νέου λογαριασμού στο CRM: Βήμα προς βήμα οδηγίες για τον τρόπο με τον οποίο ένας νέος λογαριασμός στο CRM