====== Buzzer example ======
{{:en:iot:examples:soundmodule.png?200|}}
Needed libraries:
lib_deps = ITTIoT, gmarty2000/Buzzer@^1.0.0
The code below will alert the buzz sound when values have been submitted by the mqtt server
/*
* IoT Buzzer example
*
* This example subscribe to the "buzzer" topic. When a message received, then it
* will make a sound
*
* Created 02 Febrary 2018 by Heiko Pikner
*/
// Includes global variables and librarys that the Buzzer uses
#include
#include
#include
#define MODULE_TOPIC "ESP30/buzzer"
#define WIFI_NAME "name"
#define WIFI_PASSWORD "password"
//Pin definition for the buzzer (GPIO15)
#define BUZZER_PIN D8
Buzzer buzzer(BUZZER_PIN);
// Splitting string into smaller parts, so that the sound level and length can be read out
// https://stackoverflow.com/questions/9072320/split-string-into-string-array
String getValue(String data, char separator, int index)
{
int found = 0;
int strIndex[] = {0, -1};
int maxIndex = data.length()-1;
for(int i=0; i<=maxIndex && found<=index; i++)
{
if(data.charAt(i)==separator || i==maxIndex)
{
found++;
strIndex[0] = strIndex[1]+1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}
// If message received sound the buzz. For example:
// mosquitto_pub -u test -P test -t "ITT/IOT/3/buzzer" -m "49;100"
// The first message is the pitch(integer between 1-8191) and the second message is the duration
void iot_received(String topic, String msg)
{
Serial.print("MSG FROM USER callback, topic: ");
Serial.print(topic);
Serial.print(" payload: ");
Serial.println(msg);
if(topic == MODULE_TOPIC)
{
String Note = getValue(msg,';',0);
String time = getValue(msg,';',1);
buzzer.sound(Note.toInt(),time.toInt());
}
}
// Function started after the connection to the server is established.
void iot_connected()
{
Serial.println("MQTT connected callback");
// Subscribe to the topic "buzzer"
iot.subscribe(MODULE_TOPIC);
iot.log("IoT buzzer example!");
}
void setup()
{
Serial.begin(115200); // setting up serial connection parameter
Serial.println("Booting");
//iot.setConfig("wname", WIFI_NAME);
//iot.setConfig("wpass", WIFI_PASSWORD);
// Print json config to serial
iot.printConfig();
// Initialize IoT library
iot.setup();
}
//Main code, which runs in loop
void loop()
{
// IoT behind the plan work, it should be periodically called
iot.handle();
delay(200); // Wait for 0.2 second
}