Implement OTA over local WiFi

This commit is contained in:
Lomanic 2019-11-22 21:21:54 +01:00
parent e99219cc16
commit 87dc889a7b
1 changed files with 43 additions and 6 deletions

View File

@ -7,6 +7,9 @@
*/ */
#include <Arduino.h> #include <Arduino.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
/// Pins configuration /// Pins configuration
@ -18,7 +21,7 @@
#define MQTT_SERVER "sonic.fuz.re" #define MQTT_SERVER "sonic.fuz.re"
#define MQTT_SERVERPORT 1883 #define MQTT_SERVERPORT 1883
#define ESP_HOSTNAME "piedthon"
#include "WifiCredFuz.cpp" // Wifi and MQTT Credentials #include "WifiCredFuz.cpp" // Wifi and MQTT Credentials
/* with /* with
@ -67,8 +70,8 @@ Adafruit_MQTT_Client mqtt(&client, MQTT_SERVER, MQTT_SERVERPORT, MQTT_USERNAME,
/****************************** Feeds ***************************************/ /****************************** Feeds ***************************************/
// Setup a feed called 'pub_photocell' for publishing. // Setup a feed called 'pub_piedthon' for publishing.
Adafruit_MQTT_Publish pub_photocell = Adafruit_MQTT_Publish(&mqtt, "piedthon/debug"); Adafruit_MQTT_Publish pub_piedthon = Adafruit_MQTT_Publish(&mqtt, "piedthon/debug");
// Setup a feed called 'sub_piedthon' for subscribing to changes. // Setup a feed called 'sub_piedthon' for subscribing to changes.
Adafruit_MQTT_Subscribe sub_piedthon = Adafruit_MQTT_Subscribe(&mqtt, "piedthon/input"); Adafruit_MQTT_Subscribe sub_piedthon = Adafruit_MQTT_Subscribe(&mqtt, "piedthon/input");
@ -122,7 +125,7 @@ void messageToPiedthon(char *msg) {
digitalWrite(GPIO_VERT, LOW); digitalWrite(GPIO_VERT, LOW);
digitalWrite(GPIO_ROUGE, HIGH); digitalWrite(GPIO_ROUGE, HIGH);
break; break;
case '3' : // Rien case '3' : // Rien
digitalWrite(GPIO_ROUGE, HIGH); digitalWrite(GPIO_ROUGE, HIGH);
digitalWrite(GPIO_VERT, HIGH); digitalWrite(GPIO_VERT, HIGH);
break; break;
@ -135,7 +138,6 @@ void messageToPiedthon(char *msg) {
void setup() { void setup() {
Serial.begin(115200); Serial.begin(115200);
delay(10); delay(10);
Serial.println(F("Adafruit MQTT PiedThon remix")); Serial.println(F("Adafruit MQTT PiedThon remix"));
@ -143,16 +145,51 @@ void setup() {
pinMode(GPIO_VERT, OUTPUT); pinMode(GPIO_VERT, OUTPUT);
pinMode(GPIO_ROUGE, OUTPUT); pinMode(GPIO_ROUGE, OUTPUT);
randomSeed(analogRead(0));
setupWifi(); setupWifi();
// Setup MQTT subscription for onoff feed. // Setup MQTT subscription for onoff feed.
mqtt.subscribe(&sub_piedthon); mqtt.subscribe(&sub_piedthon);
ArduinoOTA.setHostname(ESP_HOSTNAME);
ArduinoOTA.onStart([]() { // switch off all the GPIOs during upgrade
digitalWrite(GPIO_ROUGE, HIGH);
digitalWrite(GPIO_VERT, HIGH);
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
/*if (progress % (total / 4) == 0) {
digitalWrite(GPIO_ROUGE, random(2) ? LOW : HIGH);
digitalWrite(GPIO_VERT, random(2) ? LOW : HIGH);
}*/
});
ArduinoOTA.onEnd([]() { // do a fancy thing with our board led at end
for (int i = 0; i < 10; i++) {
int RANDOM_GPIO = GPIO_ROUGE;
if (random(2)) { // random(2) returns 0 or 1 randomly
RANDOM_GPIO = GPIO_VERT;
}
digitalWrite(RANDOM_GPIO, !digitalRead(RANDOM_GPIO));
delay(400);
}
digitalWrite(GPIO_ROUGE, LOW);
digitalWrite(GPIO_VERT, LOW);
});
ArduinoOTA.onError([](ota_error_t error) {
(void)error;
ESP.restart();
});
ArduinoOTA.begin();
} }
void loop() { void loop() {
MQTT_connect(); MQTT_connect();
ArduinoOTA.handle();
Adafruit_MQTT_Subscribe *subscription; Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) { while ((subscription = mqtt.readSubscription(5000))) {