====== 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 }