Menggunakan pengontrol PLCnext sebagai perangkat rumah pintar melalui Asisten Rumah
Proyek demo kecil ini menunjukkan cara mudah menggunakan pengontrol PLCnext sebagai perangkat rumah pintar dalam perangkat lunak otomasi rumah sumber terbuka Home Assistant melalui REST API dan Modbus TCP. Dengan pengontrol PLCnext Anda dapat menggunakan komponen Axioline dalam otomatisasi Anda untuk menambahkan Output yang lebih kuat dengan mudah daripada Pin GPIO dari Raspberry Pi, sensor suhu seperti Pt100 dan sistem bus seperti DALI. Yang Anda butuhkan hanyalah instalasi Asisten Rumah yang berfungsi dan pengontrol PLC berikutnya dengan proyek PLC berikutnya yang kecil namun dapat dijalankan.
Prasyarat
- Home Assistant Core 2021.1.5
- Balena
- Insinyur PLCnext 2020.6
- AXC F 2152FW 2020.0 LTS
- Gambar Raspberry Pi 2 (Pengaktifan dapat memakan waktu satu jam.)
Perpustakaan:
- Modbus_TCP (Build 8) untuk PLCnext Engineer
Layanan Asisten Rumah:
Deskripsi Fungsionalitas
Untuk memberikan gambaran singkat tentang kemungkinan menggunakan PLCnext Controller sebagai perangkat rumah pintar, ada proyek PLCnext yang dapat menyetel ulang perangkat lain dengan mengontrol tegangan suplainya dengan relai. Reset dipicu oleh perintah yang dikirim ke Bot Telegram, sebelum email dikirim dengan informasi bahwa restart dimulai. Contoh ini akan ditampilkan dengan dua cara berbeda untuk menghubungkan pengontrol PLCnext ke lingkungan Home Assistant.
Arsitektur
Koneksi melalui Modbus TCP
Dimulai dengan koneksi Modbus TCP, server Modbus ditambahkan ke proyek PLCnext dengan menggunakan ibrary Modbus TCPl. Konfigurasinya sama seperti pada contoh library. Memilih register Modbus yang tepat tergantung pada jenis data dan cara penggunaannya. Dalam hal ini variabel dipetakan ke register koil.
Harap perhatikan fakta, bahwa server Modbus tidak mendukung lebih dari satu koneksi pada saat itu. Jadi jika koneksi tidak diakhiri dengan benar, yang sayangnya terkadang terjadi saat menguji koneksi, server akan mengalami error dan harus direstart secara manual. Untuk menghindari hal ini, disarankan untuk memprogram restart otomatis server Modbus di proyek PLCnext.
Untuk klien Modbus ada dua kemungkinan utama di Home Assistant dan Anda bebas memilih favorit Anda. Yang pertama adalah menggunakan add-on Node-RED dan salah satu library Modbus yang tersedia di sana. Yang lebih intuitif adalah mengonfigurasi entitas di configuration.yaml
lingkungan Asisten Rumah Anda (informasi lebih lanjut). Seperti yang ditunjukkan di bawah ini, layanan sakelar standar digunakan, yang merupakan cara umum untuk bekerja dengan variabel boolean, karena telah menerapkan fungsi turn_on/turn_off untuk menyetel atau menyetel ulang variabel.
modbus:
type: tcp # using Modbus TCP
host: YOUR_SERVER_IP # fill the server ip address
port: 502
name: hub1 # could be changed
switch:
- platform: modbus
coils:
- name: restartMB # could be changed
hub: hub1
slave: 1
coil: 13 # the register position of the variable
Jika Anda memilih kemungkinan Node-RED, perhatikan fakta bahwa ini biasanya memulai koneksi yang berbeda untuk membaca dan menulis dengan Modbus TCP, sehingga server Modbus mengalami kesalahan seperti yang disebutkan di atas. Untuk menghindari hal ini, Anda dapat menggunakan Modbus UDP atau dua server Modbus di proyek PLCnext Anda, satu untuk membaca dan satu lagi untuk menulis.
Koneksi melalui REST API
Kemungkinan kedua untuk koneksi adalah antarmuka data PLCnext REST. Antarmuka ini terkait dengan PLCnext HMI, sehingga perlu memiliki setidaknya satu halaman HMI di proyek PLCnext Anda, meskipun kosong, agar REST API tersedia. Selanjutnya, variabel harus ditandatangani dengan bendera HMI. Untuk informasi lebih detail, silakan lihat di Pusat Info PLCnext.
Dalam hal ini add-on Node-RED digunakan untuk menghasilkan permintaan HTTP di sisi Home Assistant. Instalasi add-on dilakukan dengan mengikuti petunjuk ini dan ini. Pastikan Anda telah melakukan kedua langkah tersebut sebelum melanjutkan.
Jika otentikasi pengguna HMI di proyek PLCnext diaktifkan, otentikasi di Node-RED akan terlihat seperti ini:
Alur menjalankan otentikasi dan menyimpan token akses untuk digunakan dalam permintaan selanjutnya. Untuk struktur yang tepat dari permintaan HTTP, harap periksa juga dokumentasi di Pusat Info PLCnext.
Untuk mendapatkan akses ke data lingkungan Asisten Rumah Anda di Node-RED, ada beberapa node yang datang dengan add-on Node-RED. Alur pendek di bagian bawah gambar berikut membuat entitas baru di Asisten Rumah dan di alur di atas entitas ini diperiksa untuk perubahan. Jika entitas disetel ke true, variabel di pengontrol PLCnext juga disetel ke true dan memicu reset. Karena variabel restart dalam proyek PLCnext secara otomatis disetel ke false setelah reset, entitas di Home Assistant juga disetel ke false setelah penundaan selama 5 detik.
Telegram Keduanya
Untuk berkomunikasi dengan Home Assistant, Telegram Bot API digunakan. Untuk menggunakan ini bot baru harus didaftarkan dengan mengikuti instruksi ini.
telegram_bot:
- platform: polling
api_key: YOUR_API_TOKEN
allowed_chat_ids:
- YOUR_CHAT_ID_1
- YOUR_CHAT_ID_2
Cara termudah untuk menemukan id obrolan Anda adalah dengan menulis pesan kepada bot Anda dan kemudian memulai permintaan http:
https://api.telegram.org/botYOUR_API_TOKEN/getUpdates
Contoh yang berguna untuk Telegram Bot mungkin, yang memberi tahu Anda setiap pagi tentang kondisi cuaca hari ini, sehingga Anda memiliki indikasi apa yang harus Anda kenakan hari ini. Dalam proyek ini ia mendapat tugas lain, untuk mengatur ulang PLC (tekan tombol di register Modbus) dengan perintah di Telegram. Perintah “/MBrestartPLC” dikirim ke bot dan memulai skrip otomatisasi di Home Assistant, yang akhirnya mengubah nilai register koil Modbus dan “/RESTrestartPLC” melakukan hal yang sama dengan menggunakan REST API.
SMTP
Di Home Assistant, Simple Mail Transfer Protocol (SMTP) dapat digunakan untuk mengirim email dengan pilihan data yang tersedia di otomatisasi rumah Anda. Layanan dapat diimplementasikan dengan menambahkan kode berikut ke configuration.yaml
:
notify:
- name: SMTP_MESSENGER # could be changed
platform: smtp
server: SMTP_SERVER # e.g. smtp.gmail.com
port: 587
timeout: 15
sender: YOUR_EMAIL_ADRESS
encryption: starttls
username: YOUR_USERNAME
password: YOUR_PASSWORD
recipient:
- EMAIL_ADRESS_OF_THE_RECIPIENT
sender_name: My Home Assistant # could be changed
Klik di sini untuk mendapatkan informasi lebih lanjut tentang layanan SMTP di Home Assistant.
Otomasi
Jika semua layanan dan perpustakaan diimplementasikan dan disiapkan, mereka harus digabungkan. Ini dilakukan oleh otomatisasi yang diprogram dalam automations.yaml
dari lingkungan Asisten Rumah. Struktur otomatisasi sangat sederhana seperti yang ditunjukkan pada tabel di bawah ini. Alias hanyalah nama untuk otomatisasi di Home Assistant. Pemicu adalah kondisi yang harus benar untuk menjalankan otomatisasi, seperti perintah telegram tertentu seperti yang digunakan dalam kasus ini, dan tindakan adalah tugas, seperti dalam kasus ini menyetel variabel ke true dan mengirim email.
Modbus TCP | API REST |
- id: '1' alias: 'Trigger a reset of a controller via modbus' trigger: platform: event event_type: telegram_command event_data: command: '/MBrestartPLC' action: - service: switch.turn_on entity_id: switch.restartMB - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via modbus!' | - id: '2' alias: 'Trigger a reset of a controller via rest api' trigger: platform: event event_type: telegram_command event_data: command: '/RESTrestartPLC' action: - service: switch.turn_on entity_id: switch.restartREST - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via rest!' |
Kesimpulan
Proyek demo kecil ini membuktikan, bahwa cukup sederhana untuk mengintegrasikan pengontrol PLCnext dalam otomatisasi rumah. Ketersediaan semua data PLC di Home Assistant membuka jalan bagi aplikasi yang jauh lebih canggih daripada contoh ini. Pikirkan tentang program PLC yang lebih kompleks yang dapat dikontrol dan dipantau bergantung pada cuaca atau data lain yang tersedia di Home Assistant.