B4R Question ESP8266 connection problems.

dragonguy

Active Member
Licensed User
Longtime User
Hi all,
i use esp8266 to connect to mqtt server, but sometime my esp8266 mqtt or wifi connection down and didn't connect back, i need manually press the reset button to connect again. how can i prevent this situation?

Below is my code:
B4X:
 Private Sub AppStart
    Connect2Network(0)
 End Sub
 
 Public Sub Connect2Network(unused As Byte)
    WiFi.Disconnect
    RunNative("SetSTA", Null)
    If WiFi.Connect2(SSID, Password) Then
        Log("Connected successfully to: ", SSID)
        ConnectToMqtt(0)
    Else   
        Log("Failed to connect.")
        CallSubPlus("Connect2Network", 30000,0)
    End If
End Sub

Private Sub ConnectToMqtt(unused As Byte)
    Log("ConnectToMQTT")
    Dim mo As MqttConnectOptions
    mo.SetLastWill("test/device_disconnect",get_device_id,0,False)
    mo.Initialize("test", "test1234") 'ignore
    Dim port As UInt = 1883
    Dim s As String  = JoinStrings(Array As String(get_device_id, Rnd(1000000,9999999)))
    mqtt.Initialize2(mqttSocket.Stream, "234.146.89.100", port,s, "mqtt_MessageArrived", "mqtt_Disconnected") 'ignore
    If mqtt.Connect2(mo)=False Then
        Log("Failed to connect to MQTT Server")
        mqtt.Close
        MqttConnected = False
        Log("trying to connect again")
        CallSubPlus("ConnectToMqtt", 30000,0)
        Return
    End If
    mqtt.Subscribe(get_device_id,0)
    mqtt.Subscribe("test/#",0)
    Log("mqtt connected : ",MqttConnected, " subcribe topic : ",get_device_id)
End Sub

Sub get_device_id As String
    espex.GetMacAddress(mac)
    Dim result As String
    result=JoinStrings(Array As String(prefix_id,bc.StringFromBytes(bc.HexFromBytes(mac))))
    Return result
End Sub

Sub mqtt_Disconnected
    Log("MQTT_Disconnected")
    ConnectToMqtt(0)
End Sub

Is it i can check the internet connection, if the internet connection broke i force disconnect the wifi and reconnect again. How to better way to check internet connection in B4R?

Thanks!
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…