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

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • 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

Senin, 18 Desember 2023

Antares Webhooks - Solusi Pengolahan Data Realtime Memanfaatkan Google Sheets

 



Tulisan ini merupakan kelanjutan dari pembahasan pengolahan data REALTIME antares menggunakan MQTT (dapat dibaca disini ). Lalu bagaimana jika pengolahan datanya dilakukan oleh script yang tidak mengenal event based seperti API ? Tenang saja ternyata tombol SUBSCRIBE pada console device antares merupakan fasilitas pengolahan data bernama WEBHOOK. Apa itu ? Mari kita tanya chatGPT.


API (Application Programming Interface):


API (Application Programming Interface) adalah kumpulan aturan yang memungkinkan satu aplikasi perangkat lunak berinteraksi dengan aplikasi lainnya. API menyediakan cara bagi sistem perangkat lunak yang berbeda untuk berkomunikasi satu sama lain dengan mendefinisikan metode dan format data yang dapat digunakan aplikasi untuk meminta dan bertukar informasi. API bisa digunakan untuk mengambil data, melakukan tindakan, atau mengintegrasikan fungsionalitas dari satu sistem ke sistem lainnya. Biasanya melibatkan mekanisme permintaan-respons, di mana aplikasi mengirim permintaan data atau aksi ke API, dan API mengembalikan respons.


Webhook:

Webhook, di sisi lain, adalah mekanisme bagi aplikasi web untuk memberikan informasi secara real-time kepada aplikasi atau sistem lainnya. Berbeda dengan API yang bergantung pada aplikasi untuk melakukan permintaan informasi, webhook mengirim data secara otomatis dari satu aplikasi ke aplikasi lainnya ketika terjadi peristiwa atau pemicu tertentu. Webhook adalah cara bagi aplikasi untuk memberi tahu satu sama lain tentang peristiwa atau pembaruan tanpa memerlukan polling terus-menerus untuk informasi. Ketika peristiwa yang telah ditentukan terjadi, aplikasi yang meng-host webhook akan mengirim permintaan HTTP POST ke URL tertentu, biasanya berisi data yang relevan dengan peristiwa tersebut.


Perbedaan:

Perbedaan kunci antara API dan webhook terletak pada arah komunikasi dan mekanisme pemicu:

  • API umumnya melibatkan model permintaan-respons di mana aplikasi secara aktif meminta data atau aksi dari titik akhir yang telah ditentukan aplikasi lain.
  • Webhook beroperasi dalam model push, di mana data secara otomatis dikirim dari satu aplikasi ke aplikasi lain berdasarkan peristiwa atau pemicu tertentu tanpa perlu permintaan yang berkelanjutan.

Jadi, API digunakan untuk permintaan dan respons sesuai kebutuhan, sementara webhook digunakan untuk notifikasi peristiwa real-time dan berbagi data antar aplikasi.


Untuk mencobanya (pertama kali bagi saya) mari kita lanjutkan praktek simulasi data IOT - python dari google colab (tulisan saya sebelumnya) menuju kke antares, dan kemudian kita gunakan layanan testing webhookd bernama REQUESTCATCHER.


1. Buat alamat endpoint webhooks anda secara gratis di website requestcatcher.com



2. Masukkan endpoint webhooks di tombol subscribe pada console device antares. Dan masukkan seperti contoh pada gambar alamatnya https://ahocool.requestcatcher.com/test


 


3. Jalankan script simulasi pengiriman data suhu dan kelembaban pada google colab dan perhatikan data yang masuk pada console antares akan muncul juga pada alamat requestcatcher secara realtime.




Lalu bagaimana pengolahan datanya agar lebih berguna , secara endpoint nya memerlukan server dan pengolahanya pun di servercloud ? Tenang ! Ternyata google sheets memiliki fasilitas ekstensi / addons yang beranama "webhooks for sheets". Banyak video membahas cara registrasi dan setingnya, pada intinya ikuti langkah-langkah pada google sheets terutama pada bagian pengaktifkan scripts pada akun google anda.


1. Lakukan setting webhook paga google sheets kamu sampai muncul gambar astronot seperti dibawah ini. Link yang ada dibawahnya merupakan ENDPOINT dari webhooknya.


2. Lakukan subscribe pada antares dan masukkan endpoint webhooks dari google sheets.



3. Jika subscribe berhasil akan muncul tampilan testing seperti berikut :




4. Jalankan script simulasi data IOT pada google colab dan data akan masuk ke google sheets. Kita kemudian ambil data pada kolom yang berguna dan lalu kita masukkan ke sheets2 untuk diolah grafiknya.


5. Perlu parsing teks serta pengolahan jenis data yang tepat sehingga data yang masuk bisa menjadi NUMBER sebagai syarat agar bisa dimasukkan ke CHART / GRAFIK.





6. Hasilnya grafik realtime dapat di nikmati oleh yang memerlukan data.




Share:

Jumat, 15 Desember 2023

Membedah keruwetan Pub-Sub MQTT pada antares


Satu kata yang dapat menjabarkan MQTT pada platform IOT milik telkom antares adalah keruwetannya, namun saya sudah terlebih dahulu mengalami pusing saat membedahnya 3 tahun yang lalu pada tulisan saya disini:  https://www.aisi555.com/2020/06/solved-bug-fatal-pada-mqtt-subscription.html, dan saya sudah "khatam" dengan ini. Buat anda sepertinya harus paham prinsisp M2M IOT yg dipakai oleh antares yaitu :

  • Proses PUB antares spesifik dikirimkan ke project/device namun berbeda dengan SUB pada Antares yang menggunakan 1 topik yg sama untuk kemudian lebih tepatnya dinamakan proses RESPONSE. Jadi ketika data MQTT realtime diterima antares (pada akun yang sama), maka semua data dari semua device yg PUB akan diberikan/relay kepada client yang SUB (secara realtime juga), jadi butuh parsing data  payload dengan metode tertentu baru data yg di inginkan muncul. Bisa dibaca disini  ,  disini , dan disini 
  • Python Paho-mqtt sebagai library paling umum untuk menerima dan mengolah protokol mqtt sehingga dapat dilanjutkan ke proses advance seperti menyimpan database, membuat grafik atau mengirim ke bot telegram. Bisa dibaca dulu agar mengerti disini dan disini.

Untuk kali ini saya memanfaatkan google colab untuk melakukan PUBLISH data random ke antares melaui script python, dan dapat dicoba GRATIS dengan script dibawah ini : jangan lupa  install paho-mqtt dulu di colab!


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

# Inisialisasi broker
broker_address="mqtt.antares.id"
broker_port=1883
antareskey= "aaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbb" #sesuaikan key antares anda
antaresdevice ="Project/DHT11" #sesuaikan project/device anda

topicpubantares = f'/oneM2M/req/{antareskey}/antares-cse/json'

def on_publish(client,userdata,result):                  
    print("data terkirim ke broker")
    pass


def antares_pub(datae):
    print(datae)
    data_raw = ("{"
      "\"m2m:rqp\": {"
      f'\"fr\": {{antareskey}},'
      f'\"to\": \"/antares-cse/antares-id/{antaresdevice}\",'
      "\"op\": 1,"    
      "\"rqi\": 123456,"
      "\"pc\": {"
          "\"m2m:cin\": {"
            "\"cnf\": \"message\","
            f'\"con\": \"{datae}\"'
          "}"
        "},"
      "\"ty\": 4"
      " }"
      "}")
    ret=client.publish(topicpubantares,data_raw)


client= mqtt.Client(f'unesa-client-{randrange(0,1000)}')  #clientnya harus random
client.on_publish = on_publish                           #assign function to callback
client.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(80,95,2)
    datanya = {"suhu": suhu, "humi": humi}
    antares_pub(datanya)
    sleep(5)



Jadi ubah dulu parameter akun dan device sesuai yang anda buat di antares. Selajutnya gunakan MQTT explorer untuk membuat demo proses SUB nya.


1. Masuk ke MQTT EXPLORER dengan parameter MQTT Servernya di : mqtt.antares.id port 1883. Username dan password jangan diisi, namun pada bagian advance anda perlu subscribe pada topik yang ada input User:Key antares anda.





TOPIK  SUBSCRIBE :
  /oneM2M/resp/antares-cse/access:key/json


2. Masuk/konek ke mqtt explorer lalu running script python pada google colab,
dan jika benar akan muncul hasil seperti ini






Videonya dapat di lihat disini







Share:

Jumat, 08 Desember 2023

Dimmer Arus AC: Menghubungkan Triac Dengan IOT - MQTT

 



Pembahasan saya kali ini merupakan kesimpulan dari 4 tulisan saya sebelumnya dan juga merupakan evaluasi dari pengumpulan tugas dari mahasiswa saya di jurusan teknik listrik - fakultas vokasi - unesa Surabaya. Tugas yang saya berikan bertujuan untuk memperkenalkan konsep elektronika daya modern yang terhubung dengan IOT sehingga mahasiswa mampu membayangkan kedepannya akan berhadapan dengan kelistrikan model terbaru.

Untuk menghubungkan Triac dimmer ke IOT sebenarnya bisa pembaca rangkai sendiri dengan menelusuri tulisan saya sebelumnya mengenai konsep mikrokontroller dengan protokol IOT MQTT. 

Ada 2 buah konsep PUBLISH dan SUBSCRIBE yang bisa dibaca dipenjelasan tulisan saya disini.


- Dimmer IOT tanpa ZCD

Perhatikan rangkaian dibawah ini, yang merupakan rangkaian dimmer yang sering dijumpai dan dapat dibeli di toko online, dan telah saya bahas sebelumnya disini.



Dari rangkaian sederhana diatas dapat dilihat bahwa pengaturan trigger dari Triac didapatkan oleh delay R-C yang terhubung dengan Diac. Dengan merubah nilai VR / potensiometer pada rangkaian diatas maka dapat pula merubah kecerahan dari lampu/beban akibat delay "firing angle" pada triac. Bagaimana kalau resistansinya ini kita ubah secara IOT ? Perhatikan ulasan pameran saya terdahulu yang bisa dibaca disini



Pada pameran ini saya mendapatkan ide untuk mengontrol lampu menggunakan fitting lampu ber LDR (yang umum ada di toko listrik) dimana saya akan menyalakan lampu dan mematikannya secara IOT. Untuk itu kita akan tiru konsepnya namun kini saya akan dengan merubah resistansi pada potensiometer dengan menggantinya dengan LDR dan memberikannya sumber cahaya dari LED. Jadi dengan merubah-ubah kecerahan lampu LED maka resistansi dari LDR akan ikut berubah dan berefek pada Triac dan beban lampu.


#include <ESP8266WiFi.h>
#include <PubSubClient.h> //library pubsub MQTT



const char *ssid =  "nama wifi";   // Gunakan sesuai wifi kamu
const char *pass =  "passwordnya";   // 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

// Ubah nama topik biar unik gak nabrak sama rekan lainnya
#define TOPIC "/aisi555/dimmer"

//IO pin

#define LED_DIM D4  //prot D4 ke LED lalu menyinari LDR

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

void setup() {
  pinMode(LED_DIM, OUTPUT);  //inisialisasi LED

  digitalWrite(LED_DIM,LOW);
  
  //Inisialisasi broker & Callback sub message
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(mqtt_callback);
  Serial.begin(9600);
  delay(10);
  Serial.println();
  Serial.println();
  setupwifi();

}

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");   
      }
   

    if (client.connected()){
      Serial.print("subscribe to topic: ");
      Serial.println(TOPIC);
      client.subscribe(TOPIC); //subscribe ke topic 
    }
  
}


//function callback saat ada pesan SUB yg masuk

void mqtt_callback(char* topic, byte* payload, unsigned int length) {
 
  Serial.print("Message arrived in topic: ");
  Serial.println(topic);
 
  Serial.print("Message:");
 
  String message;
  for (int i = 0; i < length; i++) {
    message = message + (char)payload[i];  //Conver *byte to String
  }
   Serial.print(message);
   
  analogWrite(LED_DIM, message.toInt()); //angka yg masuk 0-255 jadi sesuaikan
    
  Serial.println();
  Serial.println("-----------------------");  


}



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



Hasil dari script diatas seperti video praktek mahasiswa saya dibawah. Perhatikan bahwa perlu adanya penyesuaian jarak antara led vs LDR sehingga nilai yang didapatkan sesuai. Bisa juga dengan mengatur angka yang dikirim dicari minimum dan maksimum yang sesuai dengan tingkat kecerahan lampu.




- Dimmer Menggunakan ZCD


Script yang digunakan oleh mahasiswa saya kebanyakan menggunakan library dimmer dari robodyn, namun kesulitan mereka adalah memahami konsep dimmernya, apa sih yang dilakukan oleh Triac?

Sebenarnya konsepnya bisa dibaca pada tulisan saya sebelumnya disini, dimana yang diatur adalah delay firing angle atau "derajat tembak" dari triac setelah terjadi momen Zero crossing. Scriptnya cukup sederhana, hanya merubah sedikit saja.



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

const char *ssid =  "nama wifi";   // Gunakan sesuai wifi kamu
const char *pass =  "passwordnya";   //

//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

// Ubah nama topik biar unik gak nabrak sama rekan lainnya
#define TOPIC "/aisi555/dimmer"

//IO pin
#define zcd_pin 3 //sesuaikan dengan pin zcd kamu
#define triac_pin 4 //sesuaikan dengan pin triac kamu

int nilai = 0;

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

void setup() {

  pinMode(zcd_pin, INPUT_PULLUP);
  pinMode(triac_pin, OUTPUT);
  attachInterrupt(zcd_pin, deteksi, FALLING); // attach Interrupt 
  digitalWrite(triac_pin, LOW);
  
  //Inisialisasi broker & Callback sub message
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(mqtt_callback);
  Serial.begin(9600);
  delay(10);
  Serial.println();
  Serial.println();
  setupwifi();
}

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");   
      }
   

    if (client.connected()){
      Serial.print("subscribe to topic: ");
      Serial.println(TOPIC);
      client.subscribe(TOPIC); //subscribe ke topic 
    }
  
}



//function callback saat ada pesan SUB yg masuk

void mqtt_callback(char* topic, byte* payload, unsigned int length) {
 
  Serial.print("Message arrived in topic: ");
  Serial.println(topic);
 
  Serial.print("Message:");
 
  String message;
  for (int i = 0; i < length; i++) {
    message = message + (char)payload[i];  //Conver *byte to String
  }
   Serial.print(message);
   nilai= map(message.toInt(),0,100, 200,7200); // merubah message ke range yang sesuai 0-100
  
    
  Serial.println();
  Serial.println("-----------------------");  


}


ICHACE_RAM_ATTR void deteksi() //deteksi Zerro cross dan delay on triac
{
  delayMicroseconds(nilai); 
  digitalWrite(triac_pin, HIGH);
  
  
  delayMicroseconds(50);  //delay 50 uSec on output pulse to turn on triac
  digitalWrite(triac_pin, LOW);
}

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


Hasilnya bisa dilihat pada video mahasiswa saya dibawah ini :





Share:

Dimmer Arus AC: Menghubungkan ESP8266 Dengan Triac

 


DISCLAIMER : Bermain dengan listrik PLN 220 volt adalah berbahaya, selalu gunakan sarung tangan kain untuk menghindari terjadinya sengatan listrik


Untuk memperlancar pemahaman pada topik kali ini, diharapkan membaca dulu :


- Triac sebagai switch disini

- Zero Crossing Detector ESP8266 disini



Rangkaian yang akan saya gunakan sudah banyak beredar di berbagai sumber di internet, terdiri dari optotriac MOC3021, Triac BTXX dan beberapa resistor pembatas arus. Rangkaian pda umumnya seperti ini :




Script yang akan kita gunakan kali ini cukup sederhana saja, hanya akan memberikan delay beberapa waktu saat zero crossing terdeteksi lalu memutus triacs. Jika delay firing OFF nya lama maka lampu akan terang dan jika cepat saja maka akan menyebabkan triac hidup lebih sebentar dalam 1 periode sinus AC nya.




#include<NoDelay.h>


#define zcd_pin 3 //sesuaikan dengan pin zcd kamu
#define triac_pin 4 //sesuaikan dengan pin triac kamu


noDelay delaytime(500);//ubah waktu perubahan kecerahan



int x,y = 0;
bool naik = true;

void setup() {

  pinMode(zcd_pin, INPUT_PULLUP);
  pinMode(triac_pin, OUTPUT);
  attachInterrupt(zcd_pin, deteksi, FALLING); // attach Interrupt 
  
}

void loop() {

  if(delaytime.update())//buat tambah variabel x
  {
    
	if(naik) x+=10;
	else x=-10;
	
	
	if(x>=100) naik = false;
	else (x <=0 ) naik = true;
	
	y= map(x,0,100, 200,7200); // merubah x ke range y
  
  
  
  }
}

ICHACE_RAM_ATTR void deteksi()
{
  delayMicroseconds(y); 
  digitalWrite(triac_pin, HIGH);
  
  
  delayMicroseconds(50);  //delay 50 uSec on output pulse to turn on triac
  digitalWrite(triac_pin, LOW);
}



Dan efek apakah yang muncul pada lampu? Silahkan ubah-ubah angka yang ada pada script untuk membuat pembaca lebih mengerti maksud dari script diatas.



Jika pembaca sering main di blog ini, maka membuat otomasi lampu IOT seperti gambar diatas akan menjadi sangat mudah seperti yang saya rangkum disini.



SELAMAT BELAJAR.

Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (59) 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 (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (28) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika