Daftar Isi:
- Langkah 1: Bagian yang Dibutuhkan
- Langkah 2: Kebutuhan Perangkat Lunak
- Langkah 3: Merakit
- Langkah 4: Kode
Video: Monitor Tagihan Energi Anda: 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
TENTANG PROYEK INI
Jika Anda benar-benar ingin membuat rumah Anda lebih pintar, Anda mungkin ingin memulai dari tagihan bulanan Anda (yaitu energi, gas, dll…). Seperti yang dikatakan beberapa orang, Good for Planet, The Wallet, dan The Bottom Line. Perangkat keras sumber terbuka adalah cara kami untuk mencapai keberlanjutan di lingkungan rumah! Ide ini membawa kami untuk membangun solusi yang sederhana dan aman, mudah diintegrasikan dengan perangkat lunak otomatisasi rumah apa pun karena ini memaparkan data melalui MQTT (dalam kasus kami, kami akan menunjukkan cara mengintegrasikannya ke Asisten Rumah).
Gambaran
Untuk mengukur konsumsi energi listrik, kami memilih untuk menggunakan Finder Energy Meter, karena dirancang untuk penggunaan DIN rail dan sangat pas di lemari utama rumah kami. Hal keren tentang produk ini adalah ia memiliki antarmuka Modbus RS485, protokol komunikasi standar industri yang membuat berbicara dengan Arduino sangat mudah. Faktanya, Arduino telah merilis perisai resmi, MKR485 dan dua perpustakaan untuk memecahkan kode protokol. Sebagai mainboard, kami memilih Arduino MKR WiFi 1010, karena berbagi faktor bentuk MKR dan memiliki konektivitas WiFi.
PengaturanPeringatan! Periksa peraturan negara Anda tentang menangani sistem kelistrikan rumah Anda dan berhati-hatilah karena dapat mematikan! Jika Anda tidak tahu caranya, hubungi teknisi listrik. Langkah pertama adalah memasang meteran di kabinet listrik Anda. Untuk memastikan Anda bekerja di lingkungan yang aman, matikan daya dari terminal listrik di depan sistem Anda dan periksa kembali dengan multimeter bahwa tidak ada tegangan di antara terminal. Kemudian letakkan pengukur energi di dalam kabinet Anda dan hubungkan kabel hidup dan netral dari pemutus utama ke input pengukur, ingatlah untuk menggunakan konvensi warna (biru untuk netral dan coklat/hitam/abu-abu untuk siaran langsung di UE). Output harus terhubung ke seluruh sistem.
Sambungan tegangan utama. Kabel di atas adalah input, kabel di luar adalah output.
Langkah 1: Bagian yang Dibutuhkan
Langkah 2: Kebutuhan Perangkat Lunak
Perangkat lunak
Mulai komputer Anda dan buka IDE Anda. Anda dapat menggunakan Arduino IDE atau Arduino Create Editor. Kode memenuhi permintaan berikut: Komunikasi Modbus, manajemen WiFi Protokol MQTT Modbus adalah dan protokol sumber terbuka untuk sensor dan mesin industri. Untuk membuat Arduino talk Modbus, kita akan menggunakan library Arduino Modbus. Pustaka ini mengemas semua penangan dan membuat menghubungkan perangkat Modbus dengan sangat cepat. Karena kita akan membaca register, mengikuti lembar data meter, kita dapat menemukan semua informasi yang kita butuhkan seperti kode fungsi, alamat register dan ukuran register dalam kata-kata. Namun agar lebih jelas, mari kita jelaskan cara kerja Modbus: Pesan Modbus mengikuti struktur sederhana: 01 03 04 00 16 00 02 25 C7 0x01adalah Device Address 0x03 adalah Kode Fungsi yang memberi tahu perangkat jika kita ingin membaca atau menulis data *, dalam hal ini, baca holding register 0x04 untuk Byte Count00 16 - Kami mengirim 4 byte alamat register (00 16) yang memberi tahu perangkat apa yang ingin kami baca 00 02- lalu ukuran register (00 02) dalam kata-kata (setiap kata panjangnya 2 byte) 4 byte terakhir adalah kode CRC. Kode ini dihasilkan dari fungsi matematika di atas byte sebelumnya, ini memastikan pesan telah diterima dengan benar.
Integrasi Asisten RumahMenambahkan meteran ke Asisten Rumah cukup mudah. Dengan asumsi Anda memiliki broker MQTT yang dikonfigurasi (Berikut adalah panduannya), yang perlu Anda lakukan adalah menambahkan definisi baru di bawah file configuration.yaml. sensor: - platform: mqtt nama: "Tegangan Utama" state_topic: "energi/utama/tegangan" unit_of_measurement: "V" Di sini Anda harus memasukkan nama pengukuran, topik MQTT yang akan dibaca dan satuan besaran. Simpan file, periksa konfigurasi dan muat ulang Home Assistant, sekarang pengukuran akan muncul di halaman utama.
Panel konsumsi Asisten Rumah menampilkan bacaan saat ini
Asisten Rumah akan menangani pembuatan grafik dan mengotomatiskan proses yang dipicu oleh pembacaan Anda. Tutorial ini telah selesai, sekarang terserah Anda untuk menambahkan fitur dan menyesuaikannya untuk tujuan Anda sendiri!
Langkah 3: Merakit
Selesai? Saatnya memasang koneksi RS485! Kami akan menggunakan kabel twisted pair dengan ground, biasanya digunakan untuk saluran telepon. Dengan kabel ini, Anda dapat mentransmisikan jarak jauh (1,2 km). Namun, kami hanya menggunakan kabel yang cukup panjang untuk keluar dari kabinet dan menempatkan Arduino di tempat yang mudah dijangkau.
Koneksi Finder RS485
Antarmuka RS485 menamai terminalnya A, B dan COM. Standar de-facto yang umum adalah penggunaan TX+/RX+ atau D+ sebagai alternatif untuk B (tinggi untuk MARK yaitu idle), TX-/RX- atau D- sebagai alternatif untuk A (rendah untuk MARK yaitu idle) Sejak Pelindung MKR juga mendukung Full Duplex, Anda akan melihat dua terminal lain, Y dan Z. Di sini kita akan memasang ujung kabel yang lain karena kita tahu dari datasheet bahwa komunikasi half-duplex hanya terjadi pada terminal Y dan Z. Terminal COM harus terhubung ke ISOGND. Karena kami menggunakan koneksi half-duplex dan karena pengkabelan adalah peer-to-peer, kami harus mengatur sakelar pada pelindung MKR485 agar sesuai dengan pengaturan kami: kami mengatur HALF (2 ke off) dan penghentian pada YZ (3 ke PADA); yang pertama tidak masalah. Terminasi adalah resistansi yang menghubungkan dua terminal data, untuk meredam interferensi.
Ini dia. Sekarang Anda dapat menutup kabinet dan fokus pada sisi perangkat lunak!
Langkah 4: Kode
#termasuk
#include #include #include //kredensial wifi Anda const char ssid = "**********"; const char pass = "**********";
jaringan WiFiClient; klien MQTTClient; tingkat panjang yang tidak ditandatangani = 60000; // kecepatan refresh default dalam ms unsigned long lastMillis = 0;
//koneksi fungsi void connect() { Serial.print("memeriksa wifi…"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); penundaan (1000); } Serial.print("\nmenghubungkan…"); while (!client.connect("device_name", "user_name", "user_pw")) { //CHANGE TO MATCH YOUR SETUP Serial.print("."); penundaan (1000); } Serial.println("\nterhubung!"); client.subscribe("energi/utama/refresh"); //topik untuk mengatur kecepatan refresh dari jarak jauh } //mqtt menerima fungsi panggilan balik void messageReceived(String &topic, String &payload) { Serial.println("incoming: " + topic + " - " + payload); if(topic == "energy/main/refreshrate"){ //refresh rate handler rate = payload.toInt()*1000; Serial.println("nilai baru "+String(tarif)); } }
void setup() { Serial.begin(115200); WiFi.begin(ssid, pass); while (!Serial); client.begin("broker_ip", bersih); //UBAH UNTUK SESUAI DENGAN KONFIGURASI ANDA client.onMessage(messageReceived); // memulai klien Modbus RTU if (!ModbusRTUClient.begin(9600)) { Serial.println("Gagal memulai Klien Modbus RTU!"); sementara (1); } }
void loop() { klien.loop(); if (!client.connected()) { //periksa koneksi jaringan connect(); } // mempublikasikan pesan setelah penyegaran berlalu (rutin tanpa pemblokiran) if (millis() - lastMillis > rate) { lastMillis = millis(); //membuat semua panggilan baca float volt = readVoltage(); penundaan(100); float amp = readCurrent(); penundaan(100); watt ganda = readPower(); penundaan(100); float hz = readFreq(); penundaan(100); ganda wh = readEnergi(); //mempublikasikan hasil di bawah topik terkait client.publish("energi/utama/tegangan", String(volt, 3)); client.publish("energi/utama/arus", String(amp, 3)); client.publish("energi/utama/daya", String(watt, 3)); client.publish("energi/utama/frekuensi", String(hz, 3)); client.publish("energi/utama/energi", 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"); penundaan(100); } }
/* Berfungsi untuk membaca register Finder Energy Meter * * Periksa manual protokol modbus untuk memahami kodenya * 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)) { //memanggil register Serial.print("gagal membaca tegangan! "); Serial.println(ModbusRTUClient.lastError()); //penangan kesalahan }else{ uint16_t word1 = ModbusRTUClient.read(); //membaca data dari buffer uint16_t word2 = ModbusRTUClient.read(); uint32_t milivolt = kata1 << 16 | kata2; //bit matematika volt = milivolt/1000.0; } tegangan kembali; } float readCurrent(){ float ampere = 0.; if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) { Serial.print("gagal membaca arus! "); Serial.println(ModbusRTUClient.lastError()); }else{ uint16_t word1 = ModbusRTUClient.read(); uint16_t word2 = ModbusRTUClient.read(); int32_t milliamp = word1 << 16 | kata2; ampere = miliamp/1000.0; } kembali ampere; }
double readPower(){ double watt = 0.; if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0025, 3)) { Serial.print("gagal membaca daya! "); Serial.println(ModbusRTUClient.lastError()); }else{ uint16_t word1 = ModbusRTUClient.read(); uint16_t word2 = ModbusRTUClient.read(); uint16_t word3 = ModbusRTUClient.read(); uint64_t miliwatt; if(word1 >> 7 == 0){ milliwatt = word1
Direkomendasikan:
Monitor Energi dalam 15 Menit: 3 Langkah
Monitor Energi dalam 15 Menit: Ini adalah sensor wifi untuk menempel pada flasher di meteran listrik Anda. Ini mendeteksi kilatan dengan LDR, dan menampilkan daya pada layar OLED. Mengirim data ke Dasbor Thingsboard, contoh langsung di sini. Mendaftar untuk mendapatkan akun demo gratis: https://thingsboard.io
Masker Covid-19 yang Menjerit pada Anda Jika Anda Menyentuh Wajah Anda: 4 Langkah
Masker Covid-19 yang Menjerit pada Anda Jika Anda Menyentuh Wajah Anda: Tidak Bisa Berhenti Menyentuh Wajah Anda? Tempelkan elektronik ini ke topeng yang Anda miliki dan Anda akan terus diingatkan untuk tidak melakukannya
Energi bebas ? Isi Daya Ponsel Anda Dengan Generator Engkol Tangan: 3 Langkah
Energi bebas ? Isi Daya Ponsel Anda Dengan Generator Engkol Tangan: Masalah: Ponsel selalu KEHABISAN JUICEPonsel telah menjadi bagian penting dari kehidupan setiap orang. Menjelajah, bermain game, dan mengirim pesan, Anda menghabiskan setiap menit dengan ponsel Anda. Kita memasuki era Nomophobia, No Mobile Phone Phobia. y
Bagaimana Mendapatkan Musik Dari Hampir Semua Website (Haha) (Selama Anda Bisa Mendengarnya Anda Bisa Mendapatkannya Oke Baik Jika Itu Tertanam dalam Flash Anda Mungkin Tidak Bisa) DIEDIT!!!!! Info Tambahan: 4 Langkah
Cara Mendapatkan Musik Dari HAMPIR Website (Haha) (Selama Anda Bisa Mendengarnya Anda Bisa Mendapatkannya… Oke Baik Jika Tertanam di Flash Anda Mungkin Tidak Bisa) DIEDIT!!!!! Info Tambahan: jika Anda pernah pergi ke situs web dan memainkan lagu yang Anda sukai dan inginkan, maka inilah instruksi untuk Anda, bukan salah saya jika Anda mengacaukan sesuatu (satu-satunya cara itu akan terjadi adalah jika Anda mulai menghapus barang tanpa alasan ) sudah bisa mendapatkan musik untuk
Ubah Adaptor Energizer Energi to Go untuk Mengisi Daya Ponsel Motorola Anda: 4 Langkah
Ubah Adaptor Energizer Energi to Go untuk Mengisi Daya Ponsel Motorola Anda: Saya membeli pengisi daya Energizer Energi To Go untuk mengisi daya Palm TX saya di lapangan saat melakukan geocaching. Itu datang dengan adaptor untuk mengisi daya Palm serta satu untuk mengisi daya beberapa ponsel acak yang tidak saya miliki. Tampaknya jika saya ingin mengisi daya Motorol saya