hvvdl
Member
The problem is solved very simply. From B4a send 2 consecutive messages to B4R.
And B4A:
Can control 1 or more LEDs.
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 = "******05"
Private MQTTPassword As String = "******2"
Private MQTTHostName As String ="ssl://test.mosquitto.org"
Private MQTTPort As Int = 1883
Private Pin As Pin
Private Timer1 As Timer
End Sub
'1,2,3,4,5
Private Sub AppStart
Serial1.Initialize(9600)
Log("AppStart")
AStream.Initialize(Serial1.Stream, "Astream_NewData", "Astream_Error")
'AStreamOf.Initialize(SerialOf.Stream, "AstreamOf_NewData", "AstreamOf_Error")
If WiFi.Connect2("*****","*****2") 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)
Timer1.Initialize("Timer1_Tick",500)
Else
Log("Not Connected to WiFi")
End If
End Sub
Sub MQTT_MessageArrived (Topic As String, Payload() As Byte)
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
Else
Timer1.Enabled=False
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)
End Sub
Sub AStream_Error
Log("error")
End Sub
Sub Timer1_Tick()
Pin.DigitalWrite(True)
Delay(200)
Pin.DigitalWrite(False)
Delay(800)
End Sub
And B4A:
B4A:
Private Sub Button1_Click
If txtESPs.Text <>"" Then
MQTT.Publish2(txtESPs.Text , BC.StringToBytes("false", "utf8"),0,False)
End If
Sleep(200)
MQTT.Publish2(txtESPName.Text , BC.StringToBytes("true", "utf8"),0,False)
txtESPs.Text=txtESPName.Text
End Sub
Can control 1 or more LEDs.