Elixir memiliki beberapa MQTT client yang siap pakai, di antaranya adalah Tortoise dan Huulaki. Pada kesempatan kali ini, saya akan mencoba menggunakan Tortoise.
Persiapan
Berikut adalah prasyarat untuk mencoba Tortoise.
- Sebuah mqtt broker. Mqtt broker dapat diinstal di komputer atau menggunakan jasa MQTT broker di cloud, seperti cloudmqtt.com.
- Pada komputer terinstal Erlang dan Elixir
Memulai Project
Untuk memulai project, ketikkan perintah berikut.
mix new mymqttclient
Tunggu sesaat, program mix akan membuat folder dan file project secara otomatis. Kemudian masuk ke folder mymqttclient.
cd mymqttclient
Buka file mix.exs untuk menambahkan modul tortoise.
defp deps do
[
{:tortoise, "~> 0.9"}
]
Jalankan command berikut untuk mengunduh dan menginstal tortoise yang tadi sudah ditambahkan di file mix.exs.
mix deps.get
Lalu editlah file mymqttclient.ex di dalam folder lib
defmodule Mymqttclient do
def start do
{ok, _pid} =
Tortoise.Connection.start_link(
client_id: MyClient,
user_name: “myusername", password: “mypass",
server: {Tortoise.Transport.Tcp, host: “mymqttserver.com", port: 17401},
handler: {Tortoise.Handler.Logger, []},
subscriptions: [{"test/elixir", 0}]
)
end
def pubit do
Tortoise.publish(MyClient, "test/elixir", "hello")
end
end
Lalu masuk ke terminal interaktif Elixir dengan mengetikkan command berikut.
iex -S mix
Setelah Elixir melakukan kompilasi, dan masuk ke terminal interaktif iex, jalankan command berikut.
iex(1)> Mymqttclient.start()
Jika semua berjalan dengan baik, akan muncul respon seperti berikut.
{:ok, #PID<0.194.0>}
iex(2)>
22:24:14.470 [info] Initializing handler
22:24:14.471 [info] Connection has been established
22:24:14.907 [info] Subscribed to test/elixir
Untuk mem-publish pesan ke server MQTT, topik “test/elixir”, jalankan command berikut.
iex(3)> Mqttclient.pubit()
Karena MQTT client yang tadi kita jalankan men-subskripsi topik “test/elixir”, maka kita kan mendapatkan pesan sebagai berikut.
iex(4)>
22:24:23.488 [info] test/elixir "hello"
Demikianlah penggunaan dasar MQTT client Tortoise.
0 comments:
Post a Comment