Oak MQTT test
| #include <ESP8266WiFi.h> | |
| #include <PubSubClient.h> | |
| #include <string.h> | |
| // Update with values suitable for your network. | |
| const char* mqtt_server = "pine64"; | |
| WiFiClient espClient; | |
| PubSubClient client(espClient); | |
| long lastMsg = 0; | |
| char msg[50]; | |
| int value = 0; | |
| const byte ledPin = 1; // Pin with LED on Digistump Oak | |
| long lastReconnectAttempt = 0; | |
| void setup() | |
| { | |
| pinMode(ledPin, OUTPUT); | |
| Particle.publish("MQTT ledStatus sketch starting..."); | |
| client.setServer(mqtt_server, 1883); | |
| client.setCallback(callback); | |
| lastReconnectAttempt = 0; | |
| } | |
| void callback(char* topic, byte* payload, unsigned int length) | |
| { | |
| Serial.print("Message arrived ["); | |
| Serial.print(topic); | |
| Serial.print("] "); | |
| for (int i = 0; i < length; i++) | |
| { | |
| char receivedChar = (char)payload[i]; | |
| Serial.print(receivedChar); | |
| if (receivedChar == '0') | |
| digitalWrite(ledPin, LOW); | |
| if (receivedChar == '1') | |
| digitalWrite(ledPin, HIGH); | |
| } | |
| Serial.println(); | |
| } | |
| boolean reconnect() | |
| { | |
| if (client.connect("OAK")) | |
| { | |
| // Once connected, publish an announcement... | |
| client.publish("outTopic/stat", "hello world"); | |
| // ... and resubscribe | |
| client.subscribe("ledStatus"); | |
| } | |
| return client.connected(); | |
| } | |
| void loop() | |
| { | |
| long now = millis(); | |
| if (!client.connected()) | |
| { | |
| if (now - lastReconnectAttempt > 5000) | |
| { | |
| lastReconnectAttempt = now; | |
| // Attempt to reconnect | |
| if (reconnect()) | |
| { | |
| lastReconnectAttempt = 0; | |
| } | |
| } | |
| } | |
| else | |
| { | |
| client.loop(); | |
| } | |
| delay(20); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment