Show HDD warnings based on sectors (#97)

If one of the following metrics is >0 an warning is shown

* Reallocated_Sector_Count
* Current_Pending_Sector
* Offline_Uncorrectable

Reviewed-on: #97
Co-authored-by: localhorst <localhorst@mosad.xyz>
Co-committed-by: localhorst <localhorst@mosad.xyz>
This commit was merged in pull request #97.
This commit is contained in:
2026-05-01 15:03:15 +02:00
committed by Hendrik Schutter
parent 5478a871f1
commit 55481b86fd
8 changed files with 423 additions and 290 deletions
+17 -12
View File
@@ -10,24 +10,29 @@
#include "reHDD.h"
/**
* @brief SMART data reader for drives
*
* Parses smartctl JSON output to extract:
* - Device information (model, serial, capacity)
* - Power statistics (hours, cycles)
* - Temperature
* - Critical sector counts (reallocated, pending, uncorrectable)
*
* Uses deterministic state machine parser for reliable multi-line JSON parsing.
*/
class SMART
{
protected:
public:
/**
* @brief Read S.M.A.R.T. data from drive and populate Drive object
* @param drive Pointer to Drive instance to populate with SMART data
*/
static void readSMARTData(Drive *drive);
private:
SMART(void);
static bool parseExitStatus(std::string sLine, uint8_t &status);
static bool parseModelFamily(std::string sLine, std::string &modelFamily);
static bool parseModelName(std::string sLine, std::string &modelName);
static bool parseSerial(std::string sLine, std::string &serial);
static bool parseCapacity(std::string sLine, uint64_t &capacity);
static bool parseErrorCount(std::string sLine, uint32_t &errorCount);
static bool parsePowerOnHours(std::string sLine, uint32_t &powerOnHours);
static bool parsePowerCycles(std::string sLine, uint32_t &powerCycles);
static bool parseTemperature(std::string sLine, uint32_t &temperature);
SMART(void); // Utility class - no instances
};
#endif // SMART_H_
#endif // SMART_H_