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:
12:a52996515063
Child:
20:7933076df5af
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Logger.cpp	Sun Feb 22 22:08:37 2015 +0000
@@ -0,0 +1,57 @@
+// Log to SD
+// Rob Dobson, 2015
+
+#include "Logger.h"
+
+Logger::Logger(const char* eventLogFileName, const char* dataLogFileBase)
+{
+    _eventLogFileName = eventLogFileName;
+    _dataLogFileBase = dataLogFileBase;
+}
+
+void Logger::LogEvent(const char* format, ...)
+{
+    char timeBuf[40];
+    time_t seconds = time(NULL);
+    strftime(timeBuf, sizeof(timeBuf), "%Y-%m-%d\t%H:%M:%S\t", localtime(&seconds));
+
+    FILE* fp = fopen(_eventLogFileName, "a");
+    if (fp == NULL)
+    {
+        printf ("Event Log ... Filename %s not found\r\n", _eventLogFileName);
+    }
+    else
+    {
+        fprintf(fp, timeBuf);
+        va_list argptr;
+        va_start(argptr, format);
+        vfprintf(fp, format, argptr);
+        va_end(argptr);
+        fprintf(fp, "\r\n");
+        fclose(fp);
+    }
+}
+
+// Utility function to log data
+void Logger::LogData(const char* format, ...)
+{
+    char fileNameBuf[60];
+    strcpy(fileNameBuf, _dataLogFileBase);
+    time_t seconds = time(NULL);
+    strftime(fileNameBuf+strlen(fileNameBuf), sizeof(fileNameBuf)-strlen(fileNameBuf), "Data_%Y%m%d.txt", localtime(&seconds));
+    
+    FILE* fp = fopen(fileNameBuf, "a");
+    if (fp == NULL)
+    {
+        printf ("Data Log ... Filename %s not found\r\n", _eventLogFileName);
+    }
+    else
+    {
+        va_list argptr;
+        va_start(argptr, format);
+        vfprintf(fp, format, argptr);
+        va_end(argptr);
+        fprintf(fp, "\r\n");
+        fclose(fp);
+    }
+}