Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DS18B20.h 1.08 KiB
//
// Created by zoe on 3/23/23.
//

#ifndef CLIENT_SATELLITE_DS18B20_H
#define CLIENT_SATELLITE_DS18B20_H

#include <ForteSensor.hpp>
#include "DallasTemperature.h"
#include <OneWire.h>
#include <OneWireSingleton.h>

class DS18B20 : ForteSensor<std::list<Measurement>> {
  public:
    void setup() override;
    std::list<Measurement> readData() override;
    std::list<Message> buildMessages() override;
    [[nodiscard]] SensorInformation getSensorInformation() const override;

  private:
    std::shared_ptr<OneWire> oneWire;
    DallasTemperature sensors;
    DeviceAddress sensorAddress;

    // function to print a device address
    String getAddressString(DeviceAddress deviceAddress) {
        String addressString = "";

        for (uint8_t i = 0; i < 8; i++) {
            if (deviceAddress[i] < 16) {
                addressString += "0";
            }
            char hexBuffer[3];
            snprintf(hexBuffer, sizeof(hexBuffer), "%02X", deviceAddress[i]);
            addressString += hexBuffer;
        }
        return addressString;
    }
};

#endif // CLIENT_SATELLITE_DS18B20_H