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

Revision:
9:0e103c2f869a
Parent:
8:5980547ae71c
Child:
16:89778849e9f7
--- a/RdDS18B20.h	Sat Feb 21 19:00:08 2015 +0000
+++ b/RdDS18B20.h	Sun Feb 22 11:57:12 2015 +0000
@@ -8,28 +8,34 @@
 #include "mbed.h"
 #include "Onewire.h"
 
-#define MAX_BUS_DEVICES 8
-
 class DS18B20
 {
 public:
     DS18B20(PinName mbedPin);
     void ReqConvert();
-    double GetTemperature(int addrIdx);
+    double ReadTemperature(int addrIdx);
     void DebugPrintAddress(int addrIdx);
     void SearchToGetAddresses();
     int GetNumAddresses()
     {
         return _numValidAddresses;
     }
-    uint8_t* GetAddress(int addrIdx);
+    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[3 * ONEWIRE_ADDR_BYTES + 1];
+    char _addrStr[ONEWIRE_ADDR_STRLEN];
 };
 
 #endif
\ No newline at end of file