Massive changes. Added a quite nice webinterface with live data using WebSockets. Removed the FTP server (wasn't that useful anyways). JSON creating using ArduinoJson instead of String concatenation. Ans, and, and.

This commit is contained in:
2019-11-16 23:03:13 +01:00
parent 0cddfaf0d9
commit 7c3eb2f605
22 changed files with 625 additions and 2809 deletions

View File

@ -2,6 +2,7 @@
#include <SPI.h>
#include <SD.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include "config.h"
#include "controller.h"
#include "player.h"
@ -9,14 +10,13 @@
#include "http_server.h"
#include "mqtt_client.h"
#include "playlist_manager.h"
#include <ESP8266FtpServer.h>
Controller* controller;
Player* player;
PlaylistManager* pm;
//HTTPServer* http_server;
FtpServer* ftp_server;
HTTPServer* http_server;
MQTTClient* mqtt_client;
unsigned long last_mqtt_report = 0;
void setup() {
@ -65,18 +65,28 @@ void setup() {
delay(1000);
ESP.restart();
}
INFO("WiFi connected.\n");
INFO("WiFi connected. IP address: %s\n", WiFi.localIP().toString().c_str());
mqtt_client = new MQTTClient();
//MDNS.begin("esmp3");
MDNS.begin("esmp3");
controller->set_mqtt_client(mqtt_client);
DEBUG("Setting up WiFi and web server...\n");
//http_server = new HTTPServer(player, controller);
DEBUG("Setting up HTTP server...\n");
http_server = new HTTPServer(player, controller);
controller->register_http_server(http_server);
ftp_server = new FtpServer();
ftp_server->begin("user", "pass");
DEBUG("Starting NTP client...\n");
// Taken from https://github.com/esp8266/Arduino/blob/master/cores/esp8266/TZ.h
configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "europe.pool.ntp.org");
struct tm time;
if (getLocalTime(&time, 10000)) {
char buffer[100];
strftime(buffer, 100, "%Y-%m-%d %H:%M:%S", &time);
DEBUG("Got time: %s\n", buffer);
} else {
INFO("Could not fetch current time via NTP.\n");
}
INFO("Initialization completed.\n");
}
@ -86,11 +96,9 @@ void loop() {
if (more_data_needed) return;
controller->loop();
//http_server->loop();
ftp_server->handleFTP();
mqtt_client->loop();
if ((last_mqtt_report + 10000 < millis()) || last_mqtt_report > millis()) {
last_mqtt_report = millis();
mqtt_client->publish_status(controller->get_status_json());
mqtt_client->publish_status(controller->json());
}
}