I've seen this code on the internet and its really working but when i try to integrate it to node-red using mqtt protocol the sigMin value is always at 0.
#define BROKER_IP    "192.168.254.110"
#define DEV_NAME     "mqttdevice"
#define MQTT_USER    "mqtt_user"
#define MQTT_PW      "mqtt_password"
#include <WiFiNINA.h>
#include <MQTT.h>
const char* ssid = "HG8145V5_3D80E";
const char* pass = "rSCvg92E";
const char topic[]  = "motor";
WiFiClient net;
MQTTClient client;
const int sensitivity = -58; 
const int gain = 20;            
const int sensorPIN = A0;
const int sampleWindow = 1000;  
unsigned int sample;
unsigned long lastMillis = 0;
void connect() {
  Serial.print("checking wifi...");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.print("\nconnecting...");
  while (!client.connect(DEV_NAME, MQTT_USER, MQTT_PW)) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("\nconnected!");
  client.subscribe("\mqtt_table_1"); //SUBSCRIBE TO TOPIC /hello
}
void messageReceived(String &topic, String &payload) {
  Serial.println("incoming: " + topic + " - " + payload);
}
void setup()
{
  Serial.begin(9600);
  WiFi.begin(ssid, pass);
  client.begin(BROKER_IP, 1883, net);
  //client.onMessage(messageReceived);
  connect();
}
void loop()
{
    client.loop();
    if (!client.connected()) {
    connect();
    }
    
   
   unsigned long startMillis= millis();  
   unsigned int peakToPeak = 0;         
   unsigned int signalMax = 0;
   unsigned int signalMin = 1024;      
   // collect data for Sample window width in mS 
   while (millis() - startMillis < sampleWindow)
   {
      sample = analogRead(sensorPIN);
      
      if (sample < 1024)
      {
       
         if (sample > signalMax)
         {
            signalMax = sample;
         }
         else if (sample < signalMin)
         {
            signalMin = sample;
         }
      }
   }
   peakToPeak = signalMax - signalMin;              
   
   double volts = ((peakToPeak * 5.0) / 1024)*10;  
                                                       
   double volts_db = 20*log10(volts/0.001259); 
                                                                   
   double spl_db = volts_db + 94 + sensitivity - gain; 
   String dB_mqtt =  String(spl_db, 2);
   if (millis() - lastMillis > 1000) {
   lastMillis = millis();
      String dB_mqtt =  String(spl_db, 2);
      client.publish("mqtt_table_1", dB_mqtt);
 }
              
   Serial.print("sample: " + String(sample) );
   Serial.print("\t");
   Serial.print("signalMax: " + String(signalMax) );
   Serial.print("\t");
   Serial.print("signalMin: " + String(signalMin) );
   Serial.print("\t");
   Serial.print("peakToPeak: " + String(peakToPeak) );
   Serial.print("\t");
   Serial.print("volts: " + String(volts) );
   Serial.print("\t");                        // prints a tab
   Serial.print("dB: " + String(volts_db) );
   Serial.print("\t");
   Serial.println("dB-spl: " + String(spl_db) );
   
}
Here is the output
15:16:33.088 -> sample: 522	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97
15:16:34.104 -> sample: 509	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97
15:16:35.142 -> sample: 502	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97
15:16:36.136 -> sample: 508	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97
15:16:37.170 -> sample: 513	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97
15:16:38.209 -> sample: 660	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97
15:16:39.244 -> sample: 534	signalMax: 1023	signalMin: 0	peakToPeak: 1023	volts: 49.95	dB: 91.97	dB-spl: 107.97