add preferences
This commit is contained in:
@@ -7,10 +7,19 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool silenceDetected = true;
|
bool silenceDetected = true;
|
||||||
uint32_t lastSoundTime;
|
uint32_t lastSoundTime = 0;
|
||||||
|
byte ambientPlaylist = 1;
|
||||||
|
byte musicPlaylist = 2;
|
||||||
|
int timeout = 10;
|
||||||
|
|
||||||
|
static const char _enabled[];
|
||||||
|
static const char _ambientPlaylist[];
|
||||||
|
static const char _musicPlaylist[];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
AutoPlaylistUsermod(const char *name, bool enabled):Usermod(name, enabled) {}
|
||||||
|
|
||||||
// gets called once at boot. Do all initialization that doesn't depend on
|
// gets called once at boot. Do all initialization that doesn't depend on
|
||||||
// network here
|
// network here
|
||||||
void setup() {
|
void setup() {
|
||||||
@@ -25,6 +34,9 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
* Da loop.
|
* Da loop.
|
||||||
*/
|
*/
|
||||||
void loop() {
|
void loop() {
|
||||||
|
|
||||||
|
if(!enabled) return;
|
||||||
|
|
||||||
um_data_t *um_data;
|
um_data_t *um_data;
|
||||||
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
|
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
|
||||||
// No Audio Reactive
|
// No Audio Reactive
|
||||||
@@ -38,16 +50,22 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
lastSoundTime = millis();
|
lastSoundTime = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(millis() - lastSoundTime > 60000) {
|
if(millis() - lastSoundTime > (timeout * 1000)) {
|
||||||
if(!silenceDetected) {
|
if(!silenceDetected) {
|
||||||
silenceDetected = true;
|
silenceDetected = true;
|
||||||
USER_PRINTLN("Silence");
|
String name = "";
|
||||||
|
getPresetName(ambientPlaylist, name);
|
||||||
|
USER_PRINTF("AutoPlaylist: Silence - apply %s\n", name.c_str());
|
||||||
|
applyPreset(ambientPlaylist, CALL_MODE_NOTIFICATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(silenceDetected) {
|
if(silenceDetected) {
|
||||||
silenceDetected = false;
|
silenceDetected = false;
|
||||||
USER_PRINTLN("End of silence");
|
String name = "";
|
||||||
|
getPresetName(musicPlaylist, name);
|
||||||
|
USER_PRINTF("AutoPlaylist: End of silence - apply %s\n", name.c_str());
|
||||||
|
applyPreset(musicPlaylist, CALL_MODE_NOTIFICATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -64,7 +82,12 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JsonArray infoArr = user.createNestedArray(FPSTR(_name)); // name
|
JsonArray infoArr = user.createNestedArray(FPSTR(_name)); // name
|
||||||
|
if(!enabled) {
|
||||||
|
infoArr.add("disabled");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
infoArr.add(lastSoundTime);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -106,12 +129,10 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
|
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
|
||||||
*/
|
*/
|
||||||
void addToConfig(JsonObject& root) {
|
void addToConfig(JsonObject& root) {
|
||||||
// we add JSON object: {"Autosave": {"autoSaveAfterSec": 10, "autoSavePreset": 99}}
|
|
||||||
JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname
|
JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname
|
||||||
// top[FPSTR(_autoSaveEnabled)] = enabled;
|
// top[FPSTR(_enabled)] = enabled;
|
||||||
// top[FPSTR(_autoSaveAfterSec)] = autoSaveAfterSec; // usermodparam
|
top[FPSTR(_ambientPlaylist)] = ambientPlaylist; // usermodparam
|
||||||
// top[FPSTR(_autoSavePreset)] = autoSavePreset; // usermodparam
|
top[FPSTR(_musicPlaylist)] = musicPlaylist; // usermodparam
|
||||||
// top[FPSTR(_autoSaveApplyOnBoot)] = applyAutoSaveOnBoot;
|
|
||||||
DEBUG_PRINTLN(F("AutoPlaylist config saved."));
|
DEBUG_PRINTLN(F("AutoPlaylist config saved."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,7 +147,6 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
* The function should return true if configuration was successfully loaded or false if there was no configuration.
|
* The function should return true if configuration was successfully loaded or false if there was no configuration.
|
||||||
*/
|
*/
|
||||||
bool readFromConfig(JsonObject& root) {
|
bool readFromConfig(JsonObject& root) {
|
||||||
// we look for JSON object: {"Autosave": {"enabled": true, "autoSaveAfterSec": 10, "autoSavePreset": 250, ...}}
|
|
||||||
JsonObject top = root[FPSTR(_name)];
|
JsonObject top = root[FPSTR(_name)];
|
||||||
if (top.isNull()) {
|
if (top.isNull()) {
|
||||||
DEBUG_PRINT(FPSTR(_name));
|
DEBUG_PRINT(FPSTR(_name));
|
||||||
@@ -135,6 +155,9 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_PRINT(FPSTR(_name));
|
DEBUG_PRINT(FPSTR(_name));
|
||||||
|
getJsonValue(top["ambientPlaylist"], ambientPlaylist);
|
||||||
|
getJsonValue(top["musicPlaylist"], musicPlaylist);
|
||||||
|
|
||||||
DEBUG_PRINTLN(F(" config (re)loaded."));
|
DEBUG_PRINTLN(F(" config (re)loaded."));
|
||||||
|
|
||||||
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
|
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
|
||||||
@@ -150,3 +173,6 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char AutoPlaylistUsermod::_enabled[] PROGMEM = "enabled";
|
||||||
|
const char AutoPlaylistUsermod::_ambientPlaylist[] PROGMEM = "ambientPlaylist";
|
||||||
|
const char AutoPlaylistUsermod::_musicPlaylist[] PROGMEM = "musicPlaylist";
|
||||||
|
|||||||
Reference in New Issue
Block a user