#pragma once extern volatile bool playing; void playback(JsonDocument doc){ if (doc["playback"].as()){ playing = true; Serial.println("START Playback!"); } else if (doc["playback"].as()){ playing = false; Serial.println("STOP Playback!"); } } void selectMelody(JsonDocument doc){ melody.name = doc["name"].as(); // Convert to std::string melody.id = doc["id"].as(); melody.duration = doc["duration"].as(); melody.infinite_play = doc["infinite"].as(); melody.interval_duration = doc["inter_dur"].as(); melody.speed = doc["speed"].as(); Serial.printf("Name: %s, ID: %d, Duration: %lu, Inf: %s, Inter: %d, Speed: %d\n", melody.name.c_str(), melody.id, melody.duration, melody.infinite_play ? "true" : "false", melody.interval_duration, melody.speed); } void handleJSON(String payload) { JsonDocument doc; DeserializationError error = deserializeJson(doc, payload); if (error) { Serial.print("deserializeJson() failed: "); Serial.println(error.c_str()); return; } selectMelody(doc); playback(doc); } /* possible topics: vesper/client-id/control /play /stop vesper/client-id/select_melody vesper/client-id/update_melody vesper/client-id/add_melody */