B4R Question Control Leds [SOLVED]

hvvdl

Member
The problem is solved very simply. From B4a send 2 consecutive messages to B4R.
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.
 
Top