9. Telegram Pantau

1. Buka Telegram, di kolom Search, ketik botfather, klik 2 kali pada akun ini, sehingga terbuka halaman chat. Ketik /newbot di kolom Write a message.
 
 
Gambar 1. Buat bot yang baru dengan bantuan BotFather, ketik /newbot

2. Pilih nama yang unik, ketik sembarang nama yang belum pernah digunakan. Dalam contoh di sini, digunakan nama: pzem004_esp32. 
3. Berikutnya diminta untuk menambahkan akhiran bot pada nama tersebut. Apabila nama bot yang dibuat sudah sesuai, BotFather akan memberikan token, seperti terlihat pada gambar berikut ini:
 
 
Gambar 2. Apabila nama Bot sudah sesuai, maka BotFather akan meberikan token

4. Catat Nama Bot dan Token di atas untuk keperluan penyambungan dengan Node-RED. Untuk itu buka Node-RED dengan mengetikkan alamat IP Orange Pi diikuti port 1880, sebagai contoh: 192.168.100.140:1880
 
 
Gambar 3. Buka Node-RED di alamat IP Raspberry diikuti alamat port 1880
 
5. Berikutnya, instal node-red-contrib-telegrambot, caranya, klik tombol menu “Hamburger” di pojok kanan atas, pilih Manage Pallete, klik Tab Install, ketik telegrambot, pilih node-red-contrib-telegrambot, kemudian klik Install.
 
 
Gambar 4. Instal node-red-contrib-telegrambot

6. Setelah node-red-contrib-telegrambot berhasil terinstal, ketik telegram di kolom Filter nodes, kemudian ambil dan tempatkan node Telegram Receiver di halaman Flow 1.
 
 
Gambar 5. Ambil dan tempatkan node Telegram Receiver

7. Klik 2 kali node Telegram Receiver, kemudian di kotak Edit node, klik tombol + untuk memasukkan nama Bot dan Tokennya.
 
 
Gambar 6. Klik tombol + untuk memasukkan nama Bot dan Tokennya

8. Ambil nama Bot dan Token yang diberikan BotFather, isikan ke kolom Bot Name dan Token, kemudian tekan tombol Add, dilanjutkan Done.
 
 
Gambar 7. Isikan nama Bot dan Tokennya, tekan Add, kemudian tekan Done

9. Hubungkan kaki output node Telegram Receiver (kaki yang atas) ke node Debug, kemudian tekan tombol Deploy.
 
 
Gambar 8. Hubungkan output node Telegram Receiver ke node Debug, klik Deploy

10. Di Telegram, buka link halaman Bot yang diberikan BotFather (t.me/nama Bot).
 
 
Gambar 9. Buka halaman Bot yang namanya telah diisikan ke node Telegram Receiver

11. Ketik sembarang tulisan di kolom Write a message Telegram, kemudian kirimkan, maka di kolom Debug, tepatnya di kategori content, muncul tulisan yang isinya sama dengan yang diketikkan. Selain tulisan tersebut, terlihat juga di kategori chatId, tampak berisi 10 angka. Angka chatId ini perlu dicatat, karena nantinya akan diperlukan.
 
 
Gambar 10. Ketik sembarang kata di Telegram, kirim, maka di kolom Debug akan muncul tulisan sesuai yang diketikkan, dan juga terlihat chatId yang berisi 10 angka

12. Diinginkan agar muncul notifikasi di Telegram, ketika data sensor PZEM tidak terbaca atau tidak terkirim. Cara pengujian untuk kondisi ini dapat dilakukan dengan mencabut sumber tegangan pada ESP32 yang pertama, sehingga data PZEM tidak dikirimkan. Untuk membuat notifikasi muncul, ambil node Trigger, hubungkan dengan node Change (set msg.payload).    
 
 
Gambar 11. Ambil node Trigger, sambungkan dengan node Change

13. Klik 2 kali pada node Trigger, di kolom Send, pilih nothing, di kolom wait for, isi 1 minutes, kemudian di kolom then send, pilih JSON.
 
 
Gambar 12. Klik 2 kali node Trigger, pilih nothing (2), wait for 1 minutes (3) dan pilih JSON (4)

14. Klik tombol 3 titik horisontal di samping kolom JSON, isi dengan kode berikut ini. Silahkan mengganti xxxxxxxxxx dengan 10 angka chatID yang ditampilkan di kolom Debug Node-RED ketika mengirimkan data dari Telegram (lihat Gambar 4.10).

{
    "type": "message",
    "chatId": "xxxxxxxxxx",
    "content": "sensor PZEM terputus"
}

 
 
Gambar 13. Isi JSON dengan kode di atas, jangan lupa mengganti chatId

15. Sebelum tombol Done ditekan, beri centang pada opsi extend delay if new message arrives.
 
 
Gambar 14. Centang opsi extend delay if new message arrives, klik Done 

16. Ambil node Telegram Sender, hubungkan dengan node Trigger.
 
 
Gambar 15. Ambil node Telegram Sender, hubungkan dengan node Trigger

17. Klik 2 kali node Telegram Sender, di kolom Bot, pilih nama Bot yang telah diisikan sebelumnya di node Telegram Receiver, klik Done.
 
 
Gambar 16. Di node Telegram Sender, pilih nama Bot yang telah diisikan sebelumnya.

18. Klik Deploy, kemudian cabut sumber tegangan ke ESP32 yang pertama (yang terhubung dengan PZEM-004T), kemudian tunggu pesan yang muncul di halaman Bot Telegram.
 
 
Gambar 17. Klik Deploy, cabut sumber tegangan ESP32 yang pertama, kemudian buka halaman Bot Telegram

19. Setelah 1 menit sejak sumber tegangan dicabut, muncul tulisan “sensor PZEM terputus”.
 
 
Gambar 18. Setelah 1 menit sejak sumber tegangan dicabut, muncul tulisan “sensor PZEM terputus”

20. Sampai di sini langkah-langkah mengirimkan notifikasi kesalahan (sensor PZEM terputus) ke Telegram telah selesai. Berikutnya diinginkan bisa memantau data Sensor dari Telegram, untuk itu ambil dan tempatkan node Telegram command.
 
 
Gambar 19. Ambil dan tempatkan node Telegram Command
 
21. Klik 2 kali node Telegram Command, di kolom Bot, pilih nama Bot yang telah diisikan sebelumnya. Di kolom Command, isi dengan garis miring diikuti sebuah kata sembarang, sebagai contoh: /pantau. Kata dengan awalan garis miring ini perlu diketikkan di Telegram untuk memanggil tampilan kelima tombol. 
 
 
Gambar 20. Pilih nama Bot, isi di kolom Command /pantau

22. Berikutnya tambahkan node Function, hubungkan dengan node Telegram Command.
 
 
Gambar 21. Ambil node Function, hubungkan dengan node Telegram Command

23. Klik 2 kali pada node Function, isi dengan kode berikut ini. Jangan lupa untuk mengganti xxxxxxxxxx pada chatID dengan angka yang diperoleh di kolom Debug (Gambar 4.10).
 
var opts = {
    reply_markup: JSON.stringify({
        "inline_keyboard": [[
            {
                "text": "Tegangan",
                "callback_data": "1"
            },
            {
                "text": "Arus",
                "callback_data": "2"
            },
            {
                "text": "Daya",
                "callback_data": "3"
            },
            {
                "text": "Energi",
                "callback_data": "4"
            },
            {
                "text": "Biaya",
                "callback_data": "5"
            }]
        ]
    })
};
msg.error = false;
msg.payload.content = 'Pilih Data?';
msg.payload.options = opts;
msg.payload.chatId = xxxxxxxxxx;
msg.payload.type = "message";
return [msg];
 
 
Gambar 22. Isi node Function dengan kode di atas, jangan lupa mengganti chatId

24. Hubungkan output node Function ini ke node Telegram Sender.
 
 
Gambar 23. Hubungkan output node Function ke node Telegram Sender

25. Berikutnya, ambil dan tempatkan node Telegram Event (Callback_Query).
 
 
Gambar 24. Ambil dan tempatkan node Telegram Event (Callback_Query)

26. Klik 2 kali node Telegram Event, pilih nama Bot yang telah diisikan sebelumnya, dan di kolom Event, pilih Callback Query.
 
 
Gambar 25. Klik 2 kali, pilih nama Bot dan di kolom Event pilih Callback Query

27. Ambil node Change (Set msg.payload) dan hubungkan ke node Telegram Event.
 
 
Gambar 26. Ambil node Change (Set msg.payload) dan hubungkan ke node Telegram Event

28. Klik 2 kali node Change, isi di kolom Set = msg.callback, dan di kolom to the value = msg.payload, klik Done.
 
 
Gambar 27. Isi di kolom Set = msg.callback dan di kolom to the value = msg.payload

29. Ambil node Influxdb In, dan hubungkan ke output node Change.
 
 
Gambar 28. Ambil node Influxdb In dan hubungkan ke output node Change

30. Klik 2 kali node Influxdb In, dan pilih Server dengan nama Server yang telah diisikan sebelumnya, dan di kolom Query, isi dengan kode berikut ini:

select * from pzem004 group by * order by time desc limit 1
 
 
Gambar 29. Klik 2 kali node Influxdb In, pilih Server, di kolom Query, isi dengan kode di atas

31. Berikutnya, ambill dan tempatkan node Function kedua.
 
 
Gambar 30. Ambil dan tempatkan node Function

32. Hubungkan input node Function kedua ini dengan node Influxdb In, dan outputnya dengan node Telegram Sender.
 
 
Gambar 31. Hubungkan input node Function dengan node Influxdb In dan output node Function dengan node Telegram Sender

33. Klik 2 kali node Function kedua, isi dengan kode berikut ini. Jangan lupa mengganti xxxxxxxxxx pada chatId dengan angka yang diperoleh di kolom Debug.

if (msg.callback.content == 1) {
    msg.payload.content = msg.payload[0].tegangan + " V";
}
if (msg.callback.content == 2) {
    msg.payload.content = msg.payload[0].arus + " A";
}
if (msg.callback.content == 3) {
    msg.payload.content = msg.payload[0].daya + " W";
}
if (msg.callback.content == 4) {
    msg.payload.content = msg.payload[0].energi + " kWh";
}
if (msg.callback.content == 5) {
    msg.payload.content = "Rp " + msg.payload[0].biaya;
}
msg.payload.type = "message";
msg.payload.chatId = "xxxxxxxxxx";
return msg;
 
 
Gambar 32. Klik 2 kali node Function kedua, isi dengan kode di atas, jangan lupa mengganti chatId
 
34. Klik tombol Deploy, dan kemudian buka halaman Bot di Telegram, ketik di kolom Write a message kode command: /pantau, maka akan muncul 5 buah tombol dengan nama Tegangan, Arus, Daya, Energi dan Biaya. Tekan salah satu tombol, maka data yang sesuai dengan nama tombol tersebut akan ditampilkan nilai terakhirnya.
 
 
Gambar 33. Ketik /pantau, maka 5 tombol akan muncul, klik salah satu tombol, maka data yang namanya sesuai dengan nama tombol akan ditampilkan nilai terakhirnya

35. Sampai di sini langkah-langkah menampilkan data sensor PZEM di Telegram selesai.
 


No comments:

Post a Comment