Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Mihini/mqtt
< Mihini
MQTT
This example demonstrates the ON/OFF of LED lights via GPIO's pin 17
Variables
local sched = require 'sched' local mqtt = require 'mqtt_library' //import MQTT Lib local gpio = require 'gpio' local log = require 'log'
local MQTT_BROKER = 'iot.eclipse.org' //sandbox broker hosted @Eclipse local MQTT_PORT = 1883 //Port number local MQTT_LOG_NAME = 'MQTT_LED'
-- ---------------------------
local MQTT_LED_RECEIVE = "/MQTT/LED/" //Topic that we subscribe for, to receive an event local MQTT_LED_PUBLISH="/MQTT/PUBDATA/" // topic that we publish in this example local mqtt_client
Call back that will be called on a publish to a subscribed topic /MQTT/LED
local function callback(topic, val) sched.wait(2) //wait if( topic == '/MQTT/LED') then local val2 = gpio.configure(17,{direction="out", edge="both", activelow="0"}) if(val=='on')then gpio.write(17,0) mqtt_client:publish(MQTT_LED_PUBLISH, "Light's ON") elseif(val=='off') then gpio.write(17,1) mqtt_client:publish(MQTT_LED_PUBLISH, "Light's OFF") -- publish data to a topic end end end
Main Function
local function main() log(LOG_NAME, "INFO", "Application started") -- Connect to mqtt mqtt_client = mqtt.client.create(MQTT_BROKER, MQTT_PORT, callback) --Create MQTT client log(LOG_NAME, "INFO", "MQTT Client is created") mqtt_client:connect(MQTT_LOG_NAME) --Connect to the server log(LOG_NAME, "INFO", "Connected to:" .. MQTT_LOG_NAME) sched.wait(2) mqtt_client:subscribe({MQTT_LED_RECEIVE}) --MQTT Subscribe to a topic while(true) do -- print('INside main') mqtt_client:handler() --MQTT handler continously calls sub and pub end-- end sched.run(main) sched.loop()