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

 

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.