Monitor for central heating system (e.g. 2zones+hw) Supports up to 15 temp probes (DS18B20/DS18S20) 3 valve monitors Gas pulse meter recording Use stand-alone or with nodeEnergyServer See http://robdobson.com/2015/09/central-heating-monitor

Dependencies:   EthernetInterfacePlusHostname NTPClient Onewire RdWebServer SDFileSystem-RTOS mbed-rtos mbed-src

RdDS18B20.h

Committer:
Bobty
Date:
2015-02-22
Revision:
9:0e103c2f869a
Parent:
8:5980547ae71c
Child:
16:89778849e9f7

File content as of revision 9:0e103c2f869a:

// Handles OneWire temperature sensors DB18S20
// Can handle multiple devices per pin
// Rob Dobson, 2015

#ifndef RdDS18B20__H
#define RdDS18B20__H

#include "mbed.h"
#include "Onewire.h"

class DS18B20
{
public:
    DS18B20(PinName mbedPin);
    void ReqConvert();
    double ReadTemperature(int addrIdx);
    void DebugPrintAddress(int addrIdx);
    void SearchToGetAddresses();
    int GetNumAddresses()
    {
        return _numValidAddresses;
    }
    uint8_t* GetAddress(int addrIdx, uint8_t* addrBufPtr);
    char* GetAddressStr(int addrIdx);
    double GetLatestTemperature(int addrIdx, time_t& timeOfReading);
    
    static const int ONEWIRE_ADDR_STRLEN = 3 * ONEWIRE_ADDR_BYTES + 1;
    static const int MAX_BUS_DEVICES = 8;
    
    static const int INVALID_TEMPERATURE = -1000.0;
    
private:
    int _numValidAddresses;
    uint8_t _addrTable[MAX_BUS_DEVICES][ONEWIRE_ADDR_BYTES];
    double _temperatureTable[MAX_BUS_DEVICES];
    time_t _timeOfReadingTable[MAX_BUS_DEVICES];
    Onewire _oneWire;
    char _addrStr[ONEWIRE_ADDR_STRLEN];
};

#endif