Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Data Science

    Mengulik Digitalisasi data statistik dengan bantuan python untuk pemanfaatan di bidang transportasi, kesehatan, keuangan dan masih banyak lagi

  • Artificial Intelligence - Pengenalan Object

    Menghadirkan pemanfaatan AI dengan praktek-praktek yang mudah diikuti - cocok untuk mahasiswa yang mencari ide tugas akhir

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label mqtt. Tampilkan semua postingan
Tampilkan postingan dengan label mqtt. Tampilkan semua postingan

Selasa, 23 Desember 2025

Pzem 017 - DC Power Meter dan Monitoring IOT-MQTT-HTML di Github



Kebutuhan akan energi listrik searah (DC) dalam berbagai aplikasi,seperti sistem tenaga surya (PLTS), sistem penyimpanan energi menggunakan aki, dan beban lampu DC, menuntut adanya pengawasan yang presisi terhadap parameter operasionalnya. 

Pemantauan terhadap tegangan (voltage), arus (current), dan daya (power) sangat penting untuk menjaga kesehatan baterai serta memastikan efisiensi konsumsi beban listrik. Pengukuran manual menggunakan multimeter konvensional seringkali tidak efisien untuk pengamatan jangka panjang karena tidak dapat merekam data secara kontinu dan real-time. (Saputra dkk., 2022).

Modul sensor PZEM-017 muncul sebagai solusi teknologi yang efektif untuk kebutuhan tersebut. Berdasarkan penelitian, PZEM-017 memiliki tingkat akurasi yang sangat tinggi dalam pembacaan parameter listrik DC, dengan tingkat akurasi pembacaan tegangan mencapai 99,98%, arus 98,08%, dan daya 98,33%. Sensor ini menggunakan protokol komunikasi Modbus-RTU melalui antarmuka RS485 yang memungkinkan transmisi data digital yang stabil bahkan dalam lingkungan dengan gangguan interferensi elektromagnetik. (Solar-Thailand, n.d.; Iswahyudi dkk., 2025).



Akses ke Pzem 04 & 017 - Python - Modbus baca disini 


Integrasi perangkat keras dengan platform perangkat lunak modernseperti Python memberikan fleksibilitas dalam pemrosesan data. Python mampu menjalankan fungsi kalkulasi dan mengirimkan data secara sinkron ke antarmuka berbasis web. Dengan memanfaatkan dashboard HTML yang dideploy melalui GitHub Pages, data monitoring dapat diakses secara daring, memungkinkan pengguna untuk memantau status aki dan beban lampu dari jarak jauh. 

Melalui percobaan ini, penggunaan PZEM-017 dengan suplai aki 12V dan beban lampu didokumentasikan untuk menganalisis performa sistem kelistrikan DC secara menyeluruh.


Berdasarkan latar belakang yang telah dijabarkan diatas, maka formula yang akan diusulkan pertanyaannya pada percobaan ini adalah:

1. Bagaimana cara integrasi sensor PZEM-017 dengan bahasa pemrograman Python sehingga sensor mampu membaca parameter energi listrik DC yang sesuai?

2. Bagaimana dampak pemberian beban lampu terhadap stabilitas tegangan serta seberapa besar arus yang dikonsumsi oleh suplai aki 12V?

3. Bagaimana cara merancang antarmuka dashboard monitoring berbasis web dengan desain HTML agar dapat dipantau secara real time?

4. Berapa tingkat akurasi dan reaktifitas sebua sensor terhadap perobahan parameter saat beban dipasang?


Pada percobaan kali ini terdapat beberapa komponen utama dan beberapa komponen penunjang yang masing masing memeliki peran penting untuk menunjang keberhasilan dalam percobaan. Komponen penunjang yang berperan penting tersebut dijelaskan sebagai berikut:


1. Modul PZEM-017 (DC)



PZEM-017 adalah modul elektronik yang dirancang khusus untuk mengukur parameter listrik DC seperti tegangan, arus, daya, dan energi. Modul ini menggunakan komunikasi RS485 melalui protokol Modbus-RTU, yang memungkinkan data dibaca secara akurat oleh mikrokontroler atau komputer melalui bantuan konverter serial.


2.  Komunikasi Serial & Python


Python digunakan sebagai bahasa perantara untuk membaca data dari sensor. Dengan pustaka (library) tertentu, Python dapat mengambil data mentah dari sensor PZEM dan mengolahnya menjadi informasi numerik yang dapat ditampilkan atau dikirim ke server web.


3. Dashboard Monitoring (HTML & GitHub Pages)


Visualisasi data dilakukan melalui dashboard berbasis HTML. Penggunaan GitHub Pages memungkinkan data tersebut diakses secara daring melalui URL tertentu, sehingga pemantauan tidak terbatas pada layar lokal komputer saja.


4.  Aki (Baterai Lead-Acid)

Aki atau baterai lead-acid merupakan perangkat elektrokimia yang berfungsi sebagai penyimpan energi listrik dalam bentuk energi kimia. Pada percobaan ini, aki 12V digunakan sebagai sumber tegangan utama (suplai) untuk sistem monitoring. Menurut literatur, aki memiliki karakteristik tegangan yang akan menurun seiring dengan besarnya beban yang diberikan (voltage drop). Penurunan tegangan inidipengaruhi oleh hambatan dalam baterai dan laju pengosongan arus (discharge rate).


5.  Beban Lampu


Lampu DC dalam sistem ini bertindak sebagai beban resistif yang mengonsumsi energi dari suplai aki. Lampu merupakan komponen yang mengubah energi listrik menjadi energi cahaya. Besarnya arus yang ditarik oleh lampu berbanding lurus dengan daya lampu tersebut dan berbanding terbalik dengan tegangan suplai sesuai dengan Hukum Ohm ( P = V x I). 

Penggunaan lampu sebagai beban bertujuan untuk melihat kemampuan sensor PZEM dalam merespons lonjakan arus dan perubahan daya secara real-time saat beban diaktifkan.


6. Shunt Resistor


Shunt resistor adalah komponen elektronika yang memiliki nilai hambatan sangat rendah dan presisi, yang dipasang secara seri dengan beban. Prinsip kerja shunt resistor didasarkan pada Hukum Ohm, di mana arus yang mengalir melalui hambatan tersebut akan  menghasilkan beda potensial (tegangan drop) yang sangat kecil.

Tegangan drop inilah yang kemudian dibaca oleh modul PZEM-017 untuk dikonversi menjadi nilai arus (Ampere). Dalam pengujian arus besar (seperti penggunaan aki dan lampu), shunt resistor berfungsi agar sensor tidak rusak akibat panas berlebih karena arus tidak langsung mengalir melalui sirkuit utama sensor, melainkan melalui hambatan eksternal ini.


Prosedur Pemasangan


1. Langkah pertama adalah menyiapkan alat dan bahan untuk kemudian akan dirangkai.

2. Alat yang diperlukan ialah sensor PZEM-017, Shunt Resistor, Modul rs-485, dan Aki 12V.

3. Kemudian merangkai sistem dengan menghubungkan Aki ke beban. Shunt Resistor dipasang secara seri pada jalur negatif (kutub negatif aki ke shunt, lalu shunt ke beban) sesuai diagram wiring PZEM-017.

4. Menghubungkan kabel data sensor PZEM-017 ke modul RS485 to USB, lalu dicolokkan ke port USB Laptop.

5. Jangan lupa untuk menjalankan program Python yang telah disesuaikan untuk membaca register Modbus PZEM-017 (DC) pada Visual Studio Code.

6. Memastikan pembacaan data Tegangan, Arus, dan Daya muncul pada terminal Python.

7. Mengirimkan data ke broker MQTT dan membuka dashboard.

8. Membuat repositori di GitHub dan mengunggah file index.html untuk dashboard monitoring.

9. Mengatur konfigurasi GitHub Pages pada pengaturan branch main dan folder root.

10. Menghubungkan sensor PZEM ke sumber daya aki 12V dan beban lampu.

11. Lalu hubungkan rangkaian ke suplai agar beban dapat menyala sehingga nantinya informasi seperti te gangan, arus, dan daya akan muncul pada dashboard html.


Cara kirim data pzem ke web github melalui MQTT baca disini. 




Berdasarkan pengujian yang telah dilakukan dengan menggunakan suplai aki 12V dan beban lampu DC, berikut adalah data hasil pengukuran yang diperoleh melalui dashboard monitoring:

Parameter Tegangan (Voltage):

Sistem membaca tegangan pada nilai 9,00 Volt. Terjadi voltage drop (penurunan tegangan) yang cukup signifikan dari nilai nominal aki 12V. Hal ini menunjukkan beban lampu menarik daya yang cukup besar atau kondisi State of Charge (SoC) aki yang sedang menurun.

Parameter Arus (Current):

Arus yang mengalir pada rangkaian terdeteksi sebesar 8,24 Ampere. Nilai ini menunjukkan beban lampu yang digunakan memiliki resistansi rendah sehingga menarik arus yang cukup tinggi dari suplai.

Parameter Daya (Power):

Daya listrik yang dikonsumsi oleh beban adalah sebesar 70,1 Watt. Hasil ini didapatkan dari perkalian real-time antara tegangan (9V) dan arus (8,34A).

Visualisasi Grafik:

Dashboard menampilkan grafik garis yang stabil namun meningkat tajam saat lampu dinyalakan. Grafik arus dan daya menunjukkan responsivitas sensor PZEM-003 yang sangat cepat dalam menangkap perubahan status beban (dari OFF ke ON).

Konektivitas Data:

Integrasi antara Python (sebagai pengolah data serial) dan GitHub Pages (sebagai host dashboard) berjalan tanpa kendala (delay rendah), sehingga data yang tampil di web sinkron dengan kondisi fisik di lapangan.




Bersama mahasiswa kelas Elektronika Daya D4 Teknik Listrik Vokasi Unesa 2024 (I). Link pengumpulan tugas lengkap disini : https://drive.google.com/drive/folders/1zgWdeR1pKQIqIM51rKrKw9vubsfMuFG3?usp=sharing


Share:

Senin, 11 Juli 2022

Magang Industri "Kembali" Menghiasi Aisi555 Setelah Pandemi - Teknik Listrik D4 Unesa Surabaya

 



Semangat berbagi ilmu dari aisi555 baik melalui tulisan maupun praktek langsung dilapangan, sempat mengalami episode "down" setelah terpukul pandemi corona di tahun 2020 dan 2021. Padahal di tahun 2020 mendapat kepercayaan kembali untuk menerima magang anak - anak SMK 1 dan SMK 2 dari kota Kediri, serta yang menggembirakan adalah ditandatanganinya kerjasama magang industri dengan fakultas vokasi ITS, setelah pada 2019 berhasil menerima trial magang anak ITS - D4 kontrol selama 6 bulan. Dan ini semuanya buyar akibat pandemi yang mengurung semua kegiatan pendidikan di rumah saja. Ya saya sadar itu diluar kendali saya dan saya tetap berusaha berbagi ilmu melalui jalur online, baik di blog ini dan saya mulai membuat tutorial via video youtube dan facebook.



Kegiatan diatas merupakan puncak dari rencana besar aisi555 untuk berkecimpung di dunia pendidikan bertema elektronika dan IOT, dimana aisi555 menjadi tersadar bagaimana terbukanya pikiran bahwa dunia pendidikan memiliki pangsa pasar yang tidak akan habis. Namun seperti merupakan salah satu "takdir" penulis, ketika tawaran kerjasama banyak datang, namun 2 minggu setelah pameran diatas, dunia pendidikan dipaksa melakukan "lockdown" karena merebaknya kasus covid yg menyebar di sekolah. Dan setelah lama menunggu akhirnya aisi555 kembali mendapatkan kepercayaan mengisi kuliah tamu dalam bungkus "kampus merdeka" pada 2021. 


Aisi555 yang bernaung dibawah bendera PT. Indotech Infrastruktur Solusi kemudian menjalin kerjasama magang Industri untuk mahasiswa yang kini dibebaskan memilih jenis industri apa yang akan di ambil, yang kemudian kesempatan ini diambil oleh anak-anak jurusan D4 Teknik Listrik - Prodi Vokasi - Unesa Surabaya angkatan 2019. Magang industri ini telah diadakan pada februari - juni 2022 dengan tema yang diambil bergaris besar pada Baterai dan monitoringnya secara IOT. 



Pola magang kali ini diadakan secara Online dan Offline dimana ada meeting pengarahan teori setiap minggunya yang dilaksanakan melalui media meeting video online. Kemudian di tiap bulanannya diadakan pertemuan tatap muka untuk melakukan evaluasi dan menyusun project yang tepat sebagai tugas akhir dan laporan magang sesuai tema yang diberikan oleh pihak kampus. Berikut ini beberapa garis besar atau tema yang diberikan tiap bulannya :


  • Bulan 1 : Pengenalan organisasi perusahaan dan peraturan perusahaan
  • Bulan 2  : Teknologi baterai sell basah / aki, charging dan discharging serta perawatannya
  • Bulan 3  : Baterai Lithium ion dan Mikrokontroller
  • Bulan 4  : Komunikasi data sensor dan IOT  
  • Bulan 5  : Digital Marketing
  • Bulan 6  : Proyek akhir yang berhubungan dengan Baterai & IOT




Dan pada akhir dari periode magang kali ini telah dilaksanakan presentasi project akhir dari masing-masing peserta sebagai berikut :


Project 1 :  Charger Accu Auto Cut Off berbasis timer 555




Project 2 :  Desulfator Aki Basah berbasis timer 555




Project 3 :  BMS dan PowerBank Baterai Li-Ion 18650 




Project 4 :  Monitoring Kesehatan Accu Berbasis Arduino




Project 5 :   Monitoring Kesehatan Aki Secara IOT dengan Protokol MQTT





Berminat untuk magang bersama aisi555 ? Kontak kami ada di sebelah kanan layar ....Saya tunggu ....

Share:

Selasa, 16 November 2021

MQTT Data Simulator Menggunakan Python - PahoMqtt

 



Kadang kalanya para penggiat IOT adalah mereka yang tidak berhubungan langsung dengan benda yg bernama mikrokontroler maupun sensor. Ya benar saja kenyataan ini terjadi akibat semakin melebarnya topik sensor 8 bit ke dunia koding yg semakin menjangkau mereka yg biasanya hanya terkoneksi dengan komputer PC saja. Akibatnya para "koder" yg jago ini menjadi kewalahan dalam memperoleh data pembacaan sensor kecuali bekerjasama dengan mereka yg sering bekerja dengan sensor dan mikrokontroler. Padahal kalau dilihat kemampuan orang yg mempunyai latar belakang koding informatika akan menghasilkan program yg lebih rapi pada umumnya. 


Lalu bagaimana menghasilkan data pembacaan sensor tanpa menggunakan mikrokontroller? Mudah saja sebenarnya karena kita dapat memanfaatkan bahasa pemrograman apapun untuk menciptakan data numerik random yang menyerupai data pembacaan sensor. Namun kendalanya adalah bahasa pemrograman paling mudah dan ready untuk komunikasi sensor secara IOT apa ya ? Jawabannya adalah python yg sering saya gunakan untuk mengolah data IOT menggunakan protokol MQTT, seperti pada pembahasan sebelumnya disini : https://www.aisi555.com/2020/07/tutorial-menggambar-grafik-data-arduino.html


Jadi untuk komunikasi berbasis MQTT sudah tersedia library /package siap pakai bernama paho MQTT.


pip install paho-mqtt


Diatas merupakan cara untuk menginstall packagenya pada console python anda. Sedangkan untuk membuat angka pembacaan sensor secara random bisa menggunakan script berikut:



from random import randrange

suhu = float( randrange(250,350,2) / 10)
humi = randrange(50,95,2)

Jadi dengan menggabungkan pahomqtt dan  randrange kita bisa memperoleh simulasi pembacaan sensor yg datanya dapat dicoba pada MQTT explorer atau IOT MQTT PANEL pada smartphone anda.



import paho.mqtt.client as mqtt
from time import sleep
from random import randrange

# Inisialisasi broker 
broker_address="broker.hivemq.com" 
broker_port=1883

def on_publish(client,userdata,result):                   #create function for callback
    print("data terkirim ke broker")
    pass

client1= mqtt.Client(f'unesa-client-{randrange(0,100)}')  #clientnya harus random
client1.on_publish = on_publish                           #assign function to callback
client1.connect(broker_address,broker_port)               #establish connection
while 1:                                                  #loop terus sambil kirim data
    suhu = float( randrange(250,350,2) / 10)              #random suhu dan kelembaban
    humi = randrange(50,95,2)
    ret= client1.publish("/testyuk/suhu",suhu)            #PUB suhu ke topik /testyuk/suhu
    sleep(3)
    ret= client1.publish("/testyuk/humi",humi)            #PUB Kelembaban ke topik /testyuk/humi
    sleep(3)         


Jangan lupa untuk membuat nama client     client1= mqtt.Client("unesa123")  yg unik agar tidak sama dengan nama client orang lain.  Hasilnya seperti berikut ini :








Share:

Senin, 13 September 2021

ESP8266 - @Telegram_Bot - Part 2 : Database

 



Perlu dipahami dan disadari bagi para pembaca sekalian, ESP8266 adalah microcontroller yang sangat terbatas resource nya, baik dalam ukuran ram/rom serta kemampuan untuk penggunaanya dalam komputasi lebih lanjut. Salah satunya adalah ketika penulis mencoba memanfaatkan micropython pada esp8266 apakah mampu langsung berkomunikasi dengan bot telegram? Ternyata limitasinya terjadi pada memori ram, yg kurang bersahabat saat menggunakan jalur SSL certificate. Apalagi ketika berbicara tentang database, mungkin bisa, namun sangat disarankan untuk menggunakan jembatan lainnya berupa komputer yang berbasis 32/64 bit seperti raspberry pi atau PC sekalipun.

Sebenarnya tujuan menulis di part 2 ini adalah jembatan untuk praktek akhir menampilkan grafik suhu dan kelembaban yang akan ditampilkan pada telegram bot. Untuk itu akan dibahas terlebih dahulu cara menyimpan data pembacaan sensor DHT11 pada database. Secara singkat jalan ceritanya seperti berikut:  pembacaan sensor DHT11 akan dikirimkan oleh wemos/esp8266 secara MQTT PUB ke broker, sedangkan PC saya yg terinstal SQL Lite dan  python sebagai bahasa pemrogramannya yg akan satu persatu menyisipkan data ke tabel dbase saat ada pesan SUB dari broker MQTT.


Langkah pertama adalah dengan melakukan instalasi SQLite pada website : https://www.sqlite.org/download.html , pilih yg sesuai dengan environtmet pc yg kamu gunakan lalu buatlah tabel dengan nama dht11 seperti gambar dibawah ini :



Jadi kita akan menyimpan pembacaan suhu dan kelembaban, ditambahkan juga kolom date yg merupakan waktu dari data sensor diterima. Pengiriman data ini dilakukan melalui MQTT, jadi sebelumnya harap dipahami praktek sebelumya disini : https://www.aisi555.com/2021/08/wemos-esp-8266-part-5-mqtt-ke-aplikasi.html , namun data yang kita kirim disini berupa  JSON teks dengan format seperti berikut :


'{"suhu":"30.00" , "humi":"89.0"}'


Untuk script Arduino-Esp8266-MQTT Publish data ke broker hivemq seperti berikut ini :


#include <ESP8266WiFi.h>
#include <PubSubClient.h> //library pubsub by o'leary
#include "DHT.h"


const char *ssid =  "Nama wifi";   // Gunakan sesuai wifi kamu
const char *pass =  "password";   //

//inisialisasi broker
const char *mqtt_server = "broker.hivemq.com"; //BROKER GRATIS
const int mqtt_port = 1883;
const char *mqtt_user = "";
const char *mqtt_pass = "";
const char *mqtt_client_name = "namamu123456"; // Client connections random dan gak boleh sama

// Daftar Topik disingkat, karena biasanya panjang-panjang namanya
#define TOPIC "/aisi555/dht"


//IO pin
const int dhtPin = 13; //pin DHT di wemos

#define DHTTYPE DHT11  //Sensor DHT11
DHT dht(dhtPin, DHTTYPE); 

//Timer
unsigned long previousMillis = 0;
const long interval = 5000;   // interval pengambilan dht 11

WiFiClient wclient;            //wifi client terhubung lib pubsub
PubSubClient client(wclient);

void setup() {
  //Inisialisasi broker & Callback sub message
  client.setServer(mqtt_server, mqtt_port);
  Serial.begin(9600);
  delay(10);
  Serial.println();
  Serial.println();
  setupwifi();
  dht.begin();
}

void setupwifi()
{
   if (WiFi.status() != WL_CONNECTED) {
    Serial.print("Terhubung Ke Wifi:  ");
    Serial.print(ssid);
    Serial.println("...");
    WiFi.begin(ssid, pass);

    if (WiFi.waitForConnectResult() != WL_CONNECTED)
      return;
    Serial.println("WiFi Terhubung");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
  }
}

void reconnectmqtt() //function mengatur koneksi ke broker 
{
   
    
      Serial.println("Connecting to MQTT server..");
     
      if (client.connect(mqtt_client_name,mqtt_user, mqtt_pass)) {
        Serial.println("Connected to MQTT server");
      } else {
        Serial.println("Could not connect to MQTT server");   
      }
   
  
}



// Non-Blocking delay agar gak ganggu proses utama
void SendTempHumid(){
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= interval) {
    // cek interval  
    previousMillis = currentMillis;   
 
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
      Serial.println("Failed to read from DHT sensor!");
    }

    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" °C ");
    

   String jsondht="{\"suhu\" : \""+String(t)+"\" , \"humi\" : \""+String(h)+" \" } ";

    //yg dibawah ini metode pengiriman PUB ke TOPIC
    //dikirim perbyte message + header nya
    //sudah dimudahkan oleh library pubsub

    Serial.println("publish to topic: " );
    Serial.print(TOPIC);
    Serial.print(" : ");
    Serial.println(jsondht);
    char message_buff[jsondht.length() + 1];
    jsondht.toCharArray(message_buff, jsondht.length() + 1);
    client.publish(TOPIC,message_buff );

   

  }

}





void loop() {
 
  if (!client.connected()) 
   {
    reconnectmqtt();
   }
   else client.loop(); //cek terus kalau ada data masuk
  
  
  SendTempHumid();
  
}

 

Script diatas sudah sering saya bahas, jadi bila belum paham agar membaca dulu disini. Selanjutnya script untuk memasukkan nilai suhu (desimal) dan kelembaban (integer) ke dalam sqlite seperti dibawah ini, dan pastikan tabel database kamu type datanya sudah sesuai. 


from paho.mqtt import client as mqtt_client
import random, json, sqlite3, datetime, time

# server/broker mqtt
broker = 'broker.hivemq.com'
port = 1883
topicdht= "/aisi555/dht" # sesuaikan topic

# client id random karena gak boleh sama antar client
client_id = f'python-mqtt-{random.randint(0, 100)}'
username = ''
password = ''


def sql_insert(s,h):
db = sqlite3.connect("blog_aisi555.db") #sesuaikan nama DB
cursor = db.cursor()
now = int(time.time())
tgl = str(datetime.datetime.fromtimestamp(now).strftime('%Y-%m-%d %H:%M:%S'))
cursor.execute("insert into dht11(suhu, humi, date) values(?,?,?)",(s,h,tgl))
db.commit()
cursor.close()
db.close()

# koneksi
def connect_mqtt() -> mqtt_client:
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)

client = mqtt_client.Client(client_id)
client.username_pw_set(username, password)
client.on_connect = on_connect
client.connect(broker, port)
return client

# subscribe ke mqtt broker
def subscribe(client: mqtt_client):
def on_message(client, userdata, msg):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
if (msg.topic == topicdht):
data= json.loads(msg.payload.decode())
suhu = float(data["suhu"])
humi = float(data["humi"])
sql_insert(suhu,humi)
# daftar pada topic
client.subscribe(topicdht)
client.on_message = on_message

def run():
client = connect_mqtt()
subscribe(client)
client.loop_forever()


if __name__ == '__main__':
run()


Penjelasannya seperti berikut :



Library yang dipakai bermacam, mulai dari mqtt sampai json .

from paho.mqtt import client as mqtt_client
import random, json, sqlite3, datetime, time


Inisialisasi MQTT broker :


# server/broker mqtt
broker = 'broker.hivemq.com'
port = 1883
topicdht= "/aisi555/dht" # sesuaikan topic

# client id random karena gak boleh sama antar client
client_id = f'python-mqtt-{random.randint(0, 100)}'
username = ''
password = ''


Koneksi ke broker dimulai pada routine berikut :



def connect_mqtt() -> mqtt_client:
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)

client = mqtt_client.Client(client_id)
client.username_pw_set(username, password)
client.on_connect = on_connect
client.connect(broker, port)
return client


Sedangkan yang ini proses subscribe dari topik dan kemudian menungu pesan masuk :


def subscribe(client: mqtt_client):
def on_message(client, userdata, msg):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
if (msg.topic == topicdht):
data= json.loads(msg.payload.decode())
suhu = float(data["suhu"])
humi = float(data["humi"])
sql_insert(suhu,humi)
# daftar pada topic
client.subscribe(topicdht)
client.on_message = on_message



Script diatas ada yg khusus berupa parsing data suhu dan kelembaban menggunakan json :



            data= json.loads(msg.payload.decode())
suhu = float(data["suhu"])
humi = float(data["humi"])
sql_insert(suhu,humi)



Kemudian Routine sql_insert( t, h) akan memasukkan data suhu dan kelembaban menuju tabel database. Sebelumnya data waktu akan ikut dimasukkan juga :

 
def sql_insert(s,h):
db = sqlite3.connect("blog_aisi555.db")
cursor = db.cursor()
now = int(time.time())
tgl = str(datetime.datetime.fromtimestamp(now).strftime('%Y-%m-%d %H:%M:%S'))
cursor.execute("insert into dht11(suhu, humi, date) values(?,?,?)",(s,h,tgl))
db.commit()
cursor.close()
db.close()


Dan hasilnya seperti berikut ini.




Untuk selanjutnya di tulisan berikutnya akan kita masukkan data suhu dan kelembaban pada database diatas kedalam grafik python MATPLOTLIB.
Share:

Kontak Penulis



12179018.png (60×60)
+6281331339072

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (29) artikel (11) attiny (3) attiny2313 (19) audio (8) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp32 (3) esp8266 (31) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (79) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (3) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (4) ninmedia (5) ntp (1) openwrt (3) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (37) proyek (1) python (11) radio (31) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) SDR (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (96) tutorial (108) tv digital (6) tvri (2) unesa (10) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (6) yolo (10)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika