Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


  • 0

About the method of MQTT reconnection


xrdandy

Question

Hi,

 

I have a HC3L and using MQTT to control Smart Implant and Single Switch.

 

If the network is disconnected or there is no data transmission in MQTT for a long time, the connection seems to be interrupted, but the MQTT client does not have a property to check if it is still connected. I currently put the reconnection on the onError and onClosed events to perform the reconnection. Below is my code...

 

Please login or register to see this code.

 

Are there other options for reconnecting?

 

Andy Chiang

 

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0
function QuickApp:CheckMqttClientLoop()
    if (self.mqttClient == nil) or (self.mqttReconnect == true) then
        print('start conn mqtt:' .. json.encode(self.gatewayConfig) .. 'param:' .. json.encode(self.mqttParams))
        local mqtt_cli = mqtt.Client.connect('mqtt://' .. self.gatewayConfig.ip .. ':1883', self.mqttParams)
        mqtt_cli._debug = false
        mqtt_cli:addEventListener('closed', function(event)
            -- print('mqtt closed')
            self:handleMqttClosed(event)
        end)
        mqtt_cli:addEventListener('subscribed', function(event)
            -- print('mqtt subscribed')
            self:handleMqttSubscribed(event)
        end)
        mqtt_cli:addEventListener('message', function(event)
            -- print('receive msg')
            self:handleMqttReceiveMessage(event)
        end)
        mqtt_cli:addEventListener('error', function(event)
            -- print('receive err')
            self:handleMqttErr(event)
        end)
        mqtt_cli:addEventListener('connected', function(event)
            -- print('create mqtt connect finish')
            self:handleMqttConnected(mqtt_cli, event)
        end)
        print("mqtt client start conn")
        self.mqttClient = mqtt_cli
    end
    -- self:trace('check mqtt conn')
    hub.setTimeout(6000, function()
        self:CheckMqttClientLoop()
    end)
end

u should use check conn loop function to check mqtt connect,hub.setTimeout() is useful

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...