Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

IoT – Mengontrol Relay KISFORTHUNER Dari Internet Melalui CloudMQTT

KISFORTHUNER adalah board mikrokontroler yang dilengkapi dengan 4 buah relay sebagai output dan 4 buah digital input berfilter. Board ini banyak digunakan sebagai interface untuk aplikasi sistem kontrol palang pintu parkir otomatis.

Pada tulisan sebelumnya, saya bereksperimen (nyobain dikit) Internet of Things (IoT) menggunakan Arduino, Gobot dan Mosquitto dengan MQTT Broker/Server test.mosquitto.org. Anda bisa membaca tulisan selengkapnya melalui link berikut ini:

Nyobain-Dikit-IoT-Menggunakan-Arduino-Gobot-dan-Mosquitto

Pada eksperimen kali ini, saya mencoba mengontrol relay board KISFORTHUNER dengan menggunakan MQTT Broker CloudMQTT. Untuk pemrograman, sama seperti sebelumnya, saya menggunakan bahasa Go dengan memanfaatkan framework Gobot.

Gambaran sistemnya adalah sebagai berikut. Board KISFORTHUNER terhubung ke port serial komputer. Untuk mengaktifkan/mematikan relay, komputer harus mengirimkan karakter-karakter tertentu. Berikut adalah cuplikan data yang saya ambil dari halaman situs KISFORTHUNER.

Jadi untuk mengaktifkan RELAY-1, maka program komputer harus mengirimkan karakter ‘A’ ke board KISFORTHUNER melalui port serial. Untuk mematikan RELAY-1, program harus mengirimkan karakter ‘W’. Sedangkan karakter ‘B’ dan ‘X’, ‘C’ dan ‘Y’, ‘D’ dan ‘Z’ digunakan untuk mengaktifkan/mematikan RELAY-2, RELAY-3 dan RELAY-4.

Selanjutnya, program komputer harus terhubung ke MQTT Broker (CloudMQTT) dan merespon bilamana ada MQTT Client yang mem-publish data dengan topic yang sesuai.

Ada 5 topic yang digunakan yakni:

  • kisforthuner/relay1
  • kisforthuner/relay2
  • kisforthuner/relay3
  • kisforthuner/relay4
  • kisforthuner/alive

Topic pertama sampai keempat digunakan untuk mengontrol relay. Topic kelima digunakan adalah fungsi monitoring bahwa koneksi masih terjadi (alive).

Untuk lebih jelasnya, silakan menyimak listing program selengkapnya di bawah ini.

 

Listing Program iot-kisforthuner.go

package main

import (
 "time"
 "log"
 "os"
 "gobot.io/x/gobot"
 "gobot.io/x/gobot/platforms/mqtt"
 "github.com/tarm/serial"
)

func main() {
 mqttAdaptor := mqtt.NewAdaptorWithAuth("tcp://m12.cloudmqtt.com:13262", "kisforthuner-mqtt", "dudqrykw", "0UU1Egm9xuyb")
 mqttAdaptor.SetAutoReconnect(true)

 c := &serial.Config{Name: os.Args[1], Baud: 9600, ReadTimeout: 5 * time.Second}
 s, err := serial.OpenPort(c)
  if err != nil {
  log.Fatal(err)
 }

 work := func() {
  mqttAdaptor.On("kisforthuner/relay1", func(msg mqtt.Message) {
   cmd := msg.Payload()[0]
   if cmd == 49 {
    s.Write([]byte("A"));
   } else if cmd == 48 {
    s.Write([]byte("W"))
   }
   log.Println(msg)
  })
  mqttAdaptor.On("kisforthuner/relay2", func(msg mqtt.Message) {
   cmd := msg.Payload()[0]
   if cmd == 49 {
    s.Write([]byte("B"))
   } else if cmd == 48 {
    s.Write([]byte("X"))
   }
   log.Println(msg)
  })
  mqttAdaptor.On("kisforthuner/relay3", func(msg mqtt.Message) {
   cmd := msg.Payload()[0]
   if cmd == 49 {
    s.Write([]byte("C"))
   } else if cmd == 48 {
    s.Write([]byte("Y"))
   }
   log.Println(msg)
  })
  mqttAdaptor.On("kisforthuner/relay4", func(msg mqtt.Message) {
   cmd := msg.Payload()[0]
   if cmd == 49 {
    s.Write([]byte("D"))
   } else if cmd == 48 {
    s.Write([]byte("Z"))
   }
   log.Println(msg)
  })

  gobot.Every(30*time.Second, func() {
   mqttAdaptor.Publish("kisforthuner/alive", []byte("i am still alive"))
  })
 }

 robot := gobot.NewRobot("kisforthunerbot",
  []gobot.Connection{mqttAdaptor},
  work,
 )
 robot.Start()
}

 

Hasil Eksperimen

Demikian catatan singkat hasil eksperimen yang saya lakukan. Semoga bermanfaat.

Anda bisa melihat produk-produk kami pada situs-situs berikut ini:

http://teknikelektrolinks.com

http://www.usbinov.com

 

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>