PiggyMeter
Αυτό το άρθρο σας δείχνει πώς να κατασκευάσετε μια συσκευή για την απομακρυσμένη ανάγνωση δεδομένων από έναν ηλεκτρικό μετρητή (ή οποιαδήποτε συσκευή με συμβατή διεπαφή).
Χρησιμοποιεί ευρέως διαθέσιμα εξαρτήματα, λογισμικό ανοιχτού κώδικα και είναι συμβατό με δημοφιλές λογισμικό αυτοματισμού σπιτιού, Home Assistant.
INFO
Ένα κιτ για τη συναρμολόγηση μιας λειτουργικής συσκευής είναι διαθέσιμο για αγορά στο Tindie: PiggyMeter KIT.
Χαρακτηριστικά
- Υποστηρίζει πρωτόκολλα βασισμένα στο IEC62056-21
- Υποστηρίζει παθητικό πρωτόκολλο SML χρησιμοποιώντας το εγγενές στοιχείο ESPHome
- Πολλαπλοί μετρητές: ενέργεια, νερό, θερμική και άλλα
- Χρησιμοποιεί λογισμικό ανοιχτού κώδικα ESPHome
- Ασύρματη επικοινωνία μέσω Wi-Fi
- Ενσωματώνεται με το Home Assistant
- Προαιρετικός διακομιστής ιστού
- Φθηνό υλικό ESP32-C3 ή ESP32-S2
- Σχεδιασμός θήκης διαθέσιμος για εκτύπωση 3D
Υποστηρίζει μετρητές συμβατούς με το πρότυπο IEC62056-21 που λειτουργούν σε λειτουργίες A, B, C, D (αλλά όχι E). Για λεπτομέρειες δείτε το συστατικό IEC 62056-21.
Σημειώστε ότι υπάρχουν πολλές παραλλαγές του πρωτοκόλλου. Αν και ο μετρητής μπορεί να χρησιμοποιεί την ίδια οπτική διεπαφή, η μορφή του πλαισίου δεδομένων μπορεί να είναι διαφορετική.
Επιπλέον, υποστηρίζει μετρητές που χρησιμοποιούν το πρωτόκολλο SML (Smart Message Language) χρησιμοποιώντας το συστατικό SML του ESPHome.
WARNING
Τα πρότυπα DLMS, M-Bus και ANSI C12.18/19 δεν υποστηρίζονται από το λογισμικό.
Πώς να ελέγξετε αν ο μετρητής υποστηρίζεται;
Ο όρος IEC 62056-21 χρησιμοποιείται για πολλαπλά πρωτόκολλα (με το ίδιο υλικό αλλά διαφορετική κωδικοποίηση δεδομένων). Η συσκευή υποστηρίζει μετρητές που παρέχουν δεδομένα κωδικοποιημένα σε ASCII, κάτι σαν αυτό:
console
1-0:15.8.1(00000009999.567*kWh)
1-0:15.8.2(00000000000.000*kWh)
1-0:15.8.3(00000000000.000*kWh)
1-0:15.8.4(00000000000.000*kWh)
Ο μετρητής πρέπει να είναι συμβατός με το Διεθνές Πρότυπο IEC 62056-21:2002.
Για το πρωτόκολλο SML, αναζητήστε το λογότυπο SML στον μετρητή ή ελέγξτε το εγχειρίδιο. Το στοιχείο ESPHome υποστηρίζει μόνο παθητική λειτουργία, δεν στέλνει αιτήματα στον μετρητή. Σε αυτή τη λειτουργία, ο μετρητής στέλνει δεδομένα κάθε λίγα δευτερόλεπτα.
Μετρητές που αναφέρονται ότι λειτουργούν με το PiggyMeter
Η λίστα δημιουργείται βάσει αναφορών χρηστών. Δεν υπάρχει εγγύηση ότι είναι ακριβής.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D μέσω SML component
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
INFO
Μη διστάσετε να στείλετε email στο info@aquaticus.info αν γνωρίζετε κάποιον μετρητή που λειτουργεί με το PiggyMeter αλλά δεν αναφέρεται παραπάνω.
Εναλλακτικό λογισμικό
Το υλικό του PiggyMeter μπορεί να λειτουργήσει με πολλούς διαφορετικούς μετρητές που χρησιμοποιούν οπτική διεπαφή. Ωστόσο, το λογισμικό υποστηρίζει επί του παρόντος μόνο ένα πρότυπο, περιορίζοντας πρακτικά το εύρος των υποστηριζόμενων μετρητών.
Μπορείτε να δοκιμάσετε να χρησιμοποιήσετε εναλλακτικό λογισμικό που μπορεί να προσθέσει υποστήριξη σε διαφορετικούς μετρητές. Είναι σημαντικό να σημειωθεί ότι δεν υπάρχει διαβεβαίωση ότι θα λειτουργήσει απρόσκοπτα με το PiggyMeter. Για υποστήριξη, παρακαλώ επικοινωνήστε με τον αρχικό συγγραφέα.
- DLMS/COSEM Esphome module https://github.com/viric/esphome-ziv
Κατάλογος υλικών
Μέρος | Περιγραφή |
---|---|
CPU | Wemos C3 ή S2 Mini https://www.wemos.cc/en/latest/ |
Οπτική διεπαφή | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2.54mm raster; το πλαστικό μέρος πρέπει να έχει ύψος 8.5 mm |
Μαγνήτης Δακτυλίου | ⌀30/⌀15×2mm |
Θήκη | Θήκη εκτυπωμένη σε 3D https://github.com/aquaticus/piggymeter_case |
Ροδέλα | Ροδέλα εκτυπωμένη σε 3D https://github.com/aquaticus/piggymeter_case |
Καπάκι | Πίσω καπάκι εκτυπωμένο σε 3D https://github.com/aquaticus/piggymeter_case |
Πλακέτα CPU
Χρειάζεστε μια πλακέτα με εγκατεστημένο το τσιπ της Espressif και συμβατό pinout Wemos/Lolin. Ο βασικός παράγοντας είναι η τοποθεσία των 4 ακίδων: GND
, VCC
, TX
, και RX
.
Το μέγεθος της πλακέτας PCB είναι επίσης κρίσιμο. Η θήκη που εκτυπώνεται σε 3D ταιριάζει μόνο στις πλακέτες (ή τα κλώνους τους) που αναφέρονται παρακάτω:
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
Θεωρητικά, μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη πλακέτα CPU με συμβατό pinout, όπως ESP32 και ESP8266 D1 mini. Αλλά σε αυτή την περίπτωση πρέπει να σχεδιάσετε τη δική σας θήκη και να τροποποιήσετε λίγο τα αρχεία ρυθμίσεων (τύπος πλακέτας και ακίδες σειριακής θύρας).
Οπτική διεπαφή
Ένας μετρητής χρησιμοποιεί μια οπτική διεπαφή συμβατή με το πρότυπο IEC62056-21, επικοινωνώντας με έναν ανιχνευτή μέσω μιας υπέρυθρης διόδου και ενός φωτοτρανζίστορ.
Η διεπαφή συνδέεται με μία από τις σειριακές θύρες στην πλακέτα CPU. Φυσικά χρειάζεστε και VCC και GND.
Κολλήστε 2 ακροδέκτες. Πρέπει να χρησιμοποιήσετε ακροδέκτη ύψους 8.5 mm. Ο σχεδιασμός της θήκης φιλοξενεί αυτό το ύψος, εξασφαλίζοντας σωστή εφαρμογή. Αν το ύψος υπερβαίνει αυτή τη διάσταση, το κλείσιμο του καπακιού μπορεί να είναι προβληματικό.
Θήκη
Κατεβάστε αρχεία για εκτυπωτή 3D από https://github.com/aquaticus/piggymeter_case. Χρησιμοποιήστε την έκδοση V5 για τον τελευταίο σχεδιασμό.
Η θήκη αποτελείται από τρία μέρη:
- την κύρια θήκη,
- ένα ροδέλα,
- και ένα καπάκι.
Υπάρχουν τρία ξεχωριστά αρχεία STL διαθέσιμα για κάθε συστατικό, ή εναλλακτικά, ένα μόνο αρχείο 3fm που ενσωματώνει και τα τρία στοιχεία.
Η θήκη πληροί τις απαιτήσεις του προτύπου IEC62056-21 Οπτική Ανιχνευτή>.
INFO
Η θήκη έχει ένα μικρό κούμπωμα. Για να την κλείσετε ή να την ανοίξετε, χρειάζεται να ασκήσετε κάποια δύναμη.
Προτεινόμενες ρυθμίσεις εκτύπωσης 3D
- Υλικό: PLA
- Στρώση: 0.2 mm
- Χωρίς υποστήριξη
Συναρμολόγηση
Τοποθετήστε τα εξαρτήματα μέσα στη θήκη με την εξής σειρά:
- Μαγνήτης
- Ροδέλα
- Οπτική διεπαφή
- Πλακέτα CPU
- Καπάκι
INFO
Παρακολουθήστε τη συναρμολόγηση στο Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Προγραμματισμός για μετρητές IEC62056-21
Ξεκινήστε εγκαθιστώντας το ESPHome.
Με βάση την πλακέτα CPU σας, επιλέξτε το κατάλληλο αρχείο ρύθμισης. Επιπλέον, κάντε χειροκίνητες προσαρμογές σε ορισμένες παραμέτρους, όπως ο κωδικός πρόσβασης WiFi.
Λήψη αρχείων ρύθμισης
Κλωνοποιήστε το αποθετήριο git με τα αρχεία ρύθμισης:
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Δημιουργία αρχείου secrets.yaml
Δημιουργήστε ένα αρχείο secrets.yaml
στον κατάλογο όπου βρίσκονται τα αρχεία ρύθμισης. Αυτό το αρχείο θα περιέχει το όνομα του δικτύου WiFi και τον αντίστοιχο κωδικό πρόσβασης.
yaml
# Home Assistant API encryption key
api_key: my_home_assistant_encryption_key
# OTA password
ota_pass: my_ota_password
# WiFi network name
wifi_ssid: my_network
# WiFi network password
wifi_pass: my_password
Τροποποίηση ρύθμισης έργου
Η ρύθμιση έρχεται προρυθμισμένη με τυπικά σημεία δεδομένων για έναν ηλεκτρικό μετρητή.
Μπορείτε να προσαρμόσετε τη λίστα, ειδικά αν ο μετρητής σας διαφέρει από τον τύπο ηλεκτρικού μετρητή. Ανατρέξτε στο συστατικό IEC 62056-21 για περισσότερες πληροφορίες.
yaml
sensor:
- platform: iec62056
obis: 1-0:15.8.0
name: Absolute active energy total
unit_of_measurement: kWh
accuracy_decimals: 3
device_class: energy
state_class: total_increasing
Δημιουργία και φόρτωση του firmware
bash
esphome run piggymeter-s2-iec62056-21.yaml
Η παραπάνω εντολή φορτώνει το firmware και εμφανίζει την έξοδο του παρακολουθητή. Από προεπιλογή, η διεπαφή διαβάζει δεδομένα από έναν μετρητή κάθε 1 λεπτό.
TIP
Για την πλακέτα ESP32-S2 πρέπει να πατήσετε το κουμπί BOOT και στη συνέχεια το κουμπί RESET στην PCB για να εισέλθετε σε λειτουργία προγραμματισμού. Επιπλέον, μπορεί να δείτε ένα μήνυμα σφάλματος μετά τη φόρτωση -- απλά αγνοήστε το.
log
[12:21:27][D][iec62056.component:232]: Connection start
[12:21:27][D][binary_sensor:036]: 'Meter Connection Status': Sending state ON
[12:21:28][D][switch:013]: 'Internal LED' Turning ON.
[12:21:28][D][switch:056]: 'Internal LED': Sending state ON
[12:21:28][D][iec62056.component:174]: Meter identification: '/XXX6\2YYYYY'
[12:21:28][D][iec62056.component:407]: Meter reported protocol: C
[12:21:28][D][iec62056.component:410]: Meter reported max baud rate: 19200 bps ('6')
[12:21:28][D][iec62056.component:438]: Using negotiated baud rate 9600 bps.
[12:21:29][D][iec62056.component:470]: Switching to new baud rate 9600 bps ('5')
[12:21:29][D][iec62056.component:482]: Meter started readout transmission
[12:21:29][D][iec62056.component:524]: Data: 0-0:C.1.0(12345678)
[12:21:29][D][iec62056.component:524]: Data: 0-0:1.0.0(2000-01-01 20:10:30)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.0(00000001000.657*kWh)
[12:21:29][D][iec62056.component:620]: Set sensor 'Absolute active energy total' for OBIS '1-0:15.8.0'. Value: 1000.656982
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.1(00000002000.657*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.2(00000003000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.3(00000004000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.4(00000005000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:01)
Προγραμματισμός για μετρητές SML
Τα πρώτα βήματα είναι ίδια με αυτά για τους μετρητές IEC62056-21.
Μετά την κλωνοποίηση του αποθετηρίου και τη δημιουργία του αρχείου secrets.yaml
, χρησιμοποιήστε αρχεία ρύθμισης για μετρητές SML.
bash
esphome run piggymeter-s2-sml.yaml
Πιθανότατα, θα χρειαστεί να προσαρμόσετε το αρχείο ρυθμίσεων ώστε να ταιριάζει με τα σημεία δεδομένων που μεταδίδονται από το μετρητή. Αξίζει επίσης να επαληθεύσετε το baud rate και τα data bits της σειριακής θύρας.
Home Assistant
Η συσκευή θα πρέπει να ανιχνευθεί αυτόματα από το Home Assistant. Αν όχι, μπορείτε να την προσθέσετε χειροκίνητα κάνοντας κλικ στο Προσθήκη Ενσωμάτωσης και επιλέγοντας την ενσωμάτωση ESPHome.
Το PiggyMeter εκθέτει τρεις ομάδες αντικειμένων:
Ενεργοποίηση Ανάγνωσης
Αυτή η ενεργοποίηση αναγκάζει το PiggyMeter να διαβάσει δεδομένα από έναν μετρητή εκτός προγράμματος.
Κατάσταση Σύνδεσης Μετρητή
Η κατάσταση $1 υποδεικνύει ότι η διεπαφή ανταλλάσσει δεδομένα με το μετρητή.
Αισθητήρες
Αυτή είναι μια λίστα αισθητήρων που ορίζονται στο αρχείο ρυθμίσεων.
Αυτόνομη λειτουργία
Το PiggyMeter μπορεί να λειτουργήσει ανεξάρτητα από το Home Assistant, προσφέροντας τη δυνατότητα ενεργοποίησης ενός web server. Αυτός ο server εμφανίζει αναγνώσεις δεδομένων απευθείας σε έναν web browser και προσφέρει ένα απλό REST API.
Για να ενεργοποιήσετε τον web server, συμπεριλάβετε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων:
yaml
web_server:
port: 80
Περισσότερες πληροφορίες για τον web server μπορείτε να βρείτε στην τεκμηρίωση του ESPHome.
Τροποποιήσεις
Από προεπιλογή, η συσκευή συλλέγει δεδομένα κάθε λεπτό και το εσωτερικό LED φωτίζεται κατά τη διάρκεια της μετάδοσης.
Μόνο περιορισμένος αριθμός κωδικών OBIS ορίζεται στο αρχείο yaml ρυθμίσεων. Συνιστάται έντονα να τροποποιήσετε τη λίστα των αισθητήρων ώστε να ταιριάζει με έναν μετρητή.
Αν και οι κωδικοί OBIS είναι τυποποιημένοι, οι μετρητές μπορεί να μεταδίδουν διαφορετικό αριθμό κωδικών. Για να διαπιστώσετε τους υποστηριζόμενους κωδικούς για το μετρητή σας, ενεργοποιήστε την καταγραφή DEBUG
για το συστατικό IEC62056-21 και αναλύστε την έξοδο του καταγραφικού.
Διαγνωστικά και Προβλήματα IEC62056-21
Αυτή η ενότητα είναι μόνο για μετρητές IEC62056-21 (όχι SML).
Μετά την αναβάθμιση του firmware, η συσκευή θα προσπαθήσει να διαβάσει δεδομένα από έναν μετρητή μετά από περίπου 15 δευτερόλεπτα. Αν η μετάδοση αποτύχει, θα επαναλάβει δύο φορές κάθε 15 δευτερόλεπτα.
Μπορείτε να προσαρμόσετε αυτές τις παραμέτρους ρυθμίζοντας τα κατάλληλα tokens. Συμβουλευτείτε την τεκμηρίωση του IEC62056-21 component για περισσότερες λεπτομέρειες.
Συνιστάται να αλλάξετε το προεπιλεγμένο επίπεδο καταγραφής από DEBUG
σε INFO
μόλις επιβεβαιωθεί ότι η συσκευή λειτουργεί σωστά.
Παρακάτω παρατίθενται κοινά προβλήματα και οι αντίστοιχες λύσεις τους.
TIP
Βεβαιωθείτε ότι ο ανιχνευτής είναι ασφαλώς προσαρτημένος στο μετρητή, ευθυγραμμίζοντας το βέλος στον ανιχνευτή προς τα πάνω.
Καμία μετάδοση από το μετρητή
log
[E][iec62056.component:268]: No transmission from meter.
Αυτό μπορεί να υποδηλώνει:
- Πιο συχνά, η διεπαφή δεν είναι συνδεδεμένη σε μετρητή.
- Η διεπαφή δεν είναι σωστά ευθυγραμμισμένη με την οπτική διεπαφή ενός μετρητή.
- Ο μετρητής δεν είναι συμβατός.
Βεβαιωθείτε ότι η οπτική διεπαφή είναι τοποθετημένη παράλληλα με την μπροστινή επιφάνεια του περιβλήματος. Εάν η συσκευή λειτουργεί όταν είναι συνδεδεμένη στο μετρητή χωρίς το περίβλημα, αλλά δεν λειτουργεί μετά την εισαγωγή στο περίβλημα, αυτό μπορεί να είναι το πρόβλημα. Σε μια τέτοια περίπτωση, μπορείτε επίσης να εξετάσετε το ενδεχόμενο μεγέθυνσης των δύο οπών στο περίβλημα.
Δεν έλαβαν δεδομένα όλοι οι αισθητήρες
log
[E][iec62056.component:644]: Not all sensors received data from the meter. The first one: OBIS '1-0:72.7.0'. Verify sensor is defined with valid OBIS code.
Αυτό μπορεί να υποδηλώνει δύο προβλήματα:
- Ο μετρητής δεν υποστηρίζει τον κωδικό OBIS που έχετε ρυθμίσει στο αρχείο yaml. Απλά αφαιρέστε τον αισθητήρα με συγκεκριμένο κωδικό OBIS από τη ρύθμιση.
- Μπορεί να υπάρχει τυπογραφικό λάθος ή λανθασμένος ορισμός του κωδικού OBIS για τον αισθητήρα στο αρχείο ρύθμισης. Ελέγξτε ξανά τον κωδικό.
Ο μετρητής μεταδίδει δεδομένα αυτόματα αλλά η συσκευή δεν λαμβάνει τίποτα
Αυτό υποδηλώνει ότι ο μετρητής υποστηρίζει τη λειτουργία D του IEC62056-21. Σε αυτή τη λειτουργία, ο μετρητής μεταδίδει αυτόνομα δεδομένα κάθε λίγα δευτερόλεπτα χωρίς να απαιτείται συγκεκριμένο αίτημα. Βεβαιωθείτε ότι η σειριακή θύρα είναι ρυθμισμένη να ευθυγραμμίζεται με τη μορφή μετάδοσης του μετρητή, συνήθως ρυθμισμένη σε 9600 7E1 ή 2400 7E1 στις περισσότερες περιπτώσεις.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
Επιπλέον, η Λειτουργία D πρέπει να ενεργοποιηθεί χειροκίνητα ορίζοντας mode_d=True
στη διαμόρφωση της πλατφόρμας.
yaml
# Ενεργοποίηση λειτουργίας D
iec62056:
mode_d: True
Σφάλματα ελέγχου ακεραιότητας
log
[E][iec62056.component:504]: Η επαλήθευση BCC απέτυχε. Αναμενόταν 0x6b, ελήφθη 0x14
Αυτό το σφάλμα υποδηλώνει προβλήματα μετάδοσης.
Συνήθως, η ταχύτητα μετάδοσης είναι υπερβολικά υψηλή. Η μείωση του μέγιστου ρυθμού baud θα πρέπει να βοηθήσει.
yaml
iec62056:
baud_rate_max : 4800
Ελήφθη αναγνώριση μετρητή αλλά όχι μετάδοση
log
[D][iec62056.component:174]: Αναγνώριση μετρητή: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Ο μετρητής υποδεικνύει τη λειτουργία E, η οποία δεν υποστηρίζεται. Προσπάθεια για λειτουργία C. Αυτό θα λειτουργήσει για μετρητές που υποστηρίζουν και τις δύο λειτουργίες E και C.
[E][iec62056.component:268]: Δεν υπάρχει μετάδοση από τον μετρητή.
Η συμβολοσειρά αναγνώρισης του μετρητή λαμβάνεται επιτυχώς, αλλά δεν υπάρχει μετάδοση δεδομένων. Επιπλέον, το αρχείο καταγραφής εμφανίζει ένα μήνυμα που δηλώνει, "Ο μετρητής υποδεικνύει τη λειτουργία E."
Ο μετρητής λειτουργεί αποκλειστικά στη λειτουργία E, την οποία το PiggyMeter δεν υποστηρίζει. Κατά συνέπεια, το λογισμικό προσπαθεί να μεταβεί τον μετρητή στη λειτουργία C, αλλά αυτή η προσπάθεια αποτυγχάνει.
Εάν ένας μετρητής υποστηρίζει και τις λειτουργίες E και C, το σύστημα θα πρέπει να λειτουργεί σωστά.