Pustaka ini hanya berfungsi dengan firmware versi 1.7.14 atau lebih rendah.
Dalam versi firmware yang lebih baru, Eon telah menonaktifkan API lokal dan membuat perpustakaan ini menjadi usang, terima kasih BESAR kepada Eon! ?
Baca selengkapnya di edisi #1
Hai dan selamat datang! Klik tombol di bawah jika Anda menikmati perpustakaan ini dan ingin mendukung pekerjaan saya. Banyak kopi yang dikonsumsi sebagai software developer lho?
Tentu saja, ini sepenuhnya bersifat sukarela.
Pustaka sederhana untuk API bawaan E.ON Elna yang ditulis dengan Python 3. Elna adalah perangkat pengukur daya pintar yang dicolokkan ke port HAN (Home Area Network) meteran listrik menggunakan konektor RJ12.
Perpustakaan ini menggunakan API bawaan di dalam perangkat Elna untuk mengumpulkan informasi, tentang konsumsi daya dan/atau produksi Anda, langsung dari perangkat itu sendiri.
Elna didasarkan pada perangkat keras dari Net2Grid sehingga mungkin juga kompatibel dengan lebih banyak perangkat dari keluarga Net2Grid. Setiap masukan diterima.
Berikut adalah aplikasi demo baris perintah kecil yang menampilkan informasi yang dapat diperoleh dari perangkat.
Lihat kode sumber demo di sini: smartmeter-demo.py.
Ini adalah aplikasi demo yang lebih nyata dengan banyak kemiripan dengan aplikasi CLI terkenal. Ini akan memeriksa konsumsi daya sesaat (mpc) Anda dan mengeluarkannya ke konsol. Setelah CTRL+C ditekan, ini menunjukkan perhitungan konsumsi daya minimum, maksimum dan rata-rata serta waktu pulang pergi dari paket yang dikirim ke Elna, dan banyak lagi.
Kode sumber tersedia di sini: powerping-demo.py.
Siapkan lingkungan virtual:
virtualenv venv
source venv/bin/activate
Instal versi terbaru dengan pip
:
pip install elnasmartmeter
Untuk menggunakan perpustakaan Anda perlu mengetahui alamat IP perangkat Elna. Anda dapat menemukannya di server DHCP router Anda (atau di mana pun Anda menjalankan server DHCP Anda). Alamat MAC Elna tercetak di bagian belakang perangkat.
from elna import smartmeter
# Connect the library to the Elna device
meter = smartmeter . Connect ( '192.168.0.10' )
# Get general information
info = meter . get_info ()
# Get power readings
electricity = meter . get_electricity ()
# Get WLAN information
wlan = meter . get_wlan_info ()
Sesederhana itu untuk mengetahui konsumsi/produksi listrik rumah tangga Anda. Sebentar lagi kita akan melihat bagaimana mengakses informasi melalui objek info
dan electricity
.
Semua metode yang dapat dipanggil dari perpustakaan akan memberikan pengecualian jika gagal. Daftar lengkap pengecualian dapat ditemukan di sini.
from elna import smartmeter
from elna . exceptions import *
...
try :
info = meter . get_info ()
except NewConnectionError as e :
print ( e )
Objek yang mewakili berbagai entitas di perpustakaan dapat dikeluarkan dengan metode print()
untuk memudahkan pemeriksaan propertinya.
Sebagai contoh, Anda dapat menampilkan properti objek Information
dengan meneruskannya ke metode print()
:
print ( info )
# Output: <class 'elna.classes.Information'>: {'id': '01ab:0200:00cd:03ef', 'manufacturer': 'NET2GRID', 'model': 'SBWF4602', 'firmware': '1.7.14', 'hardware': 1, 'batch': 'HMX-P0D-123456'}
Hal yang sama berlaku untuk semua kelas di perpustakaan: Information
, Electricity
, Power
dan WLANInformation
.
Ada dua bagian data yang dapat diambil dengan perpustakaan ini: Information
perangkat umum dan Statistik Power
.
Untuk mendapatkan informasi perangkat secara umum, kita cukup memanggil metode get_info()
.
info = meter . get_info ()
Akses nilai melalui properti kelas:
info . id # Returns the device ID : '01ab:0200:00cd:03ef' (for example).
info . manufacturer # Returns the manufacturer : 'NET2GRID'
info . model # Returns the model : 'SBWF4602'
info . firmware # Returns the firmware version : '1.7.14'
info . hardware # Returns the hardware version : 1
info . batch # Returns the batch number : 'HMX-P0D-123456'
Untuk mendapatkan pembacaan daya kita memanggil metode get_electricity()
. Pembacaan ini sedikit lebih rumit karena informasi yang dikumpulkan dari perangkat Elna dibagi ke dalam sub-kelas, namun tidak terlalu rumit:
electricity = meter . get_electricity ()
Dapatkan konsumsi daya saat ini :
electricity . now . key # Returns the string : 'now'
electricity . now . value # Returns the power : 453 (for example).
electricity . now . unit # Returns the unit : 'W' (as in Watt)
electricity . now . timestamp # Returns a timestamp : '2022-12-24 13:37:00'
Dapatkan konsumsi daya minimum pada periode tersebut:
electricity . minimum . key # Returns the string : 'minimum'
electricity . minimum . value # Returns the power : 202 (for example).
electricity . minimum . unit # Returns the unit : 'W' (as in Watt)
electricity . minimum . timestamp # Returns a timestamp : '2022-12-13 13:37:00'
Dapatkan konsumsi daya maksimum dalam periode:
electricity . maximum . key # Returns the string : 'maximum'
electricity . maximum . value # Returns the power : 14320 (for example).
electricity . maximum . unit # Returns the unit : 'W' (as in Watt)
electricity . maximum . timestamp # Returns a timestamp : '2022-12-31 13:37:00'
Jangka waktu (periode) pencatatan nilai minimum dan maksimum tidak diketahui (bagi saya).
Dapatkan kekuatan yang diimpor . Ini akan menjadi kekuatan total yang masuk ke dalam rumah tangga:
electricity . imported . key # Returns the string : 'imported'
electricity . imported . value # Returns the power : 12345678 (for example).
electricity . imported . unit # Returns the unit : 'Wh' (as in Watt hours)
electricity . imported . timestamp # Returns a timestamp : '2022-12-31 13:37:00'
Dapatkan kekuatan yang diekspor . Ini adalah total daya yang keluar dari rumah tangga:
electricity . exported . key # Returns the string : 'exported'
electricity . exported . value # Returns the power : 87654321 (for example).
electricity . exported . unit # Returns the unit : 'Wh' (as in Watt hours)
electricity . exported . timestamp # Returns a timestamp : '2022-12-31 13:37:00'
Lihat demo smartmeter di atas untuk mencobanya.
Kita juga bisa mendapatkan informasi WLAN perangkat dengan memanggil metode get_wlan_info()
. Perangkat dapat bertindak sebagai Klien Nirkabel (Stasiun) dan Titik Akses (AP) tergantung apakah perangkat telah terhubung ke jaringan WiFi Anda atau tidak.
wlan = meter . get_wlan_info ()
Akses informasi WLAN melalui properti kelas objek:
wlan . mode # Returns the current WLAN mode
wlan . ap_ssid # Returns the Access Point SSID
wlan . ap_key # Returns the Access Point Password
wlan . client_ssid # Returns the SSID of the AP Elna is connected to
wlan . join_status # Returns the number of clients joined to the Elna AP
wlan . mac # Returns the MAC address currently in use
wlan . ip # Returns the IP address
wlan . subnet # Returns the Subnet mask
wlan . gateway # Returns the Default gateway
wlan . dns # Returns the Primary DNS server
wlan . dnsalt # Returns the Secondary DNS server
wlan . n2g_id # Returns the Net2Grid ID number
wlan . sta_mac # Returns the MAC address of the WLAN Station
wlan . ap_mac # Returns the MAC address of the Access Point
wlan . eth_mac # Returns the Ethernet MAC address (?)
Catatan: Deskripsi berikut properti WLAN di atas hanyalah perkiraan.
Nama produk, merek dagang, dan merek dagang terdaftar dalam repositori ini, adalah milik dari pemiliknya masing-masing, dan digunakan oleh penulis untuk tujuan identifikasi saja. Penggunaan nama, merek dagang, dan merek ini, tidak menyiratkan dukungan atau afiliasi.