hvvdl
Member
I have an application that controls many leds via smartphone using B4A. Each Led is controlled by an esp8266 01s via MQTT. When there is a message, an LED blinks. When the next LED is blinking, the current LED is not blinking and lights up normally. But I can't control Timer1.Enabled=False.
Hope your help.
Hope your help.
B4R:
Sub Process_Globals
Public Serial1 As Serial
Private AStream As AsyncStreams
Private WiFi As ESP8266WiFi
Private WiFiStr As WiFiSocket
Private MQTT As MqttClient
Private MQTTOpt As MqttConnectOptions
Private MQTTUser As String = "esp000005"
Private MQTTPassword As String = "*****302"
Private MQTTHostName As String ="ssl://test.mosquitto.org"
Private MQTTPort As Int = 1883
Private Pin As Pin
Public Timer1 As Timer
End Sub
Private Sub AppStart
Serial1.Initialize(9600)
Log("AppStart")
AStream.Initialize(Serial1.Stream, "Astream_NewData", "Astream_Error")
If WiFi.Connect2("***WIFI","****6302") Then
Pin.Initialize(3, Pin.MODE_OUTPUT)
Log("Connected to WiFi, Local IP ", WiFi.LocalIp) 'Else Log("Not Connected to WiFi")
Dim ClientId As String = Rnd(0, 999999999) 'create a unique id
MQTT.Initialize2(WiFiStr.stream, MQTTHostName, MQTTPort, ClientId, "MQTT_MessageArrived", "MQTT_Disconnected")
MQTTOpt.Initialize(MQTTUser, MQTTPassword)
MQTT_Connect(0)
Log(MQTTHostName)
Else
Log("Not Connected to WiFi")
End If
End Sub
Sub MQTT_MessageArrived (Topic As String, Payload() As Byte)
Timer1.Initialize("Nhay_stick",500)
'Timer1.Enabled=False
Log("Topic = ", Topic, " and Payload = ", Payload)
Dim BC As ByteConverter
Log(Topic)
If Topic = MQTTUser Then
If BC.StringFromBytes(Payload) = True Then
Timer1.Enabled=True
Nhay_stick
End If
End If
End Sub
Sub MQTT_Connect(Unused As Byte)
If MQTT.Connect = False Then
Log("Trying to connect to broker")
MQTT.Connect2(MQTTOpt)
CallSubPlus("MQTT_Connect", 1000, 0)
Else
Log("Connected to broker")
MQTT.Subscribe(MQTTUser, 0)
End If
End Sub
Sub MQTT_Disconnected
Log("Disconnected")
MQTT.Close
MQTT_Connect(0)
End Sub
Sub Astream_NewData (Buffer() As Byte)
Log("Received: ", Buffer)
Timer1.Enabled=False
End Sub
Sub AStream_Error
Log("error")
End Sub
Sub Nhay_stick()
Pin.Initialize(3, Pin.MODE_INPUT)
Delay(200)
Pin.Initialize(3, Pin.MODE_OUTPUT)
Delay(700)
End Sub
B4A:
ub Process_Globals
Private MQTT As MqttClient
Private MQTTPassword As String = "*****302"
Private MQTTServerURI As String = "tcp://test.mosquitto.org:1883"
Private BC As ByteConverter
Private K1 As Boolean=False
'Dim rst() As String
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
Private Button1 As Button
Private lblStatus As Label
Private SpnTimerMinutes As Spinner
Private ToggleButton1 As ToggleButton
Private txtESPName As EditText
Private btnTat As Button
Private txtESPs As EditText
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub MQTT_Connect(MQTTUser As String)
Dim ClientId As String = Rnd(0, 999999999) 'create a unique id
MQTT.Initialize("MQTT", MQTTServerURI,ClientId)
Dim ConnOpt As MqttConnectOptions
ConnOpt.Initialize(MQTTUser, MQTTPassword)
MQTT.Connect2(ConnOpt)
End Sub
Sub MQTT_Connected (Success As Boolean)
If Success = False Then
Log(LastException)
lblStatus.Text = "Error connecting"
Else
lblStatus.Text = " - Connected to broker"
MQTT.Publish2(txtESPName.Text , BC.StringToBytes(K1, "utf8"),0,False)
End If
End Sub
Private Sub MQTT_Disconnected
lblStatus.Text = " - Disconnected from broker"
End Sub
Private Sub MQTT_MessageArrived (Topic As String, Payload() As Byte)
End Sub
Private Sub Button1_Click
K1=True
CallSub(Me, MQTT_Connect(txtESPName.Text))
End Sub