Index: trunk/FACT++/src/smartfact.cc
===================================================================
--- trunk/FACT++/src/smartfact.cc	(revision 19014)
+++ trunk/FACT++/src/smartfact.cc	(revision 19015)
@@ -44,4 +44,5 @@
 #include "HeadersMagicWeather.h"
 #include "HeadersTemperature.h"
+#include "HeadersRainSensor.h"
 
 #include <boost/filesystem.hpp>
@@ -545,4 +546,7 @@
     Time  fTngWeatherDustTime;
 
+    deque<float> fRainSensorDataHist;
+    Time  fRainSensorDataTime;
+
     vector<float> fBiasControlVoltageVec;
 
@@ -633,4 +637,5 @@
     DimDescribedState fDimTngWeather;
     DimDescribedState fDimTemperature;
+    DimDescribedState fDimRainSensor;
     DimDescribedState fDimFeedback;
     DimDescribedState fDimBiasControl;
@@ -1057,4 +1062,29 @@
 
         ofstream(fPath+"/tngdust.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleRainSensorData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "RainSensor:Data", 12)) // F:1;X:1
+            return GetCurrentState();
+
+        fRainSensorDataTime = d.GetTime();
+
+        fRainSensorDataHist.push_back(d.GetFloat());
+        if (fRainSensorDataHist.size()>300)
+                fRainSensorDataHist.pop_front();
+
+        const Statistics stat(fRainSensorDataHist);
+
+        const double scale = stat.max>0 ? pow(10, ceil(log10(stat.max))) : 0;
+
+        WriteHist(d, "hist-rain-sensor-data", fRainSensorDataHist, scale);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        ofstream(fPath+"/rainsensor.data") << out.str();
 
         return GetCurrentState();
@@ -2246,4 +2276,5 @@
         Out() << fDimMagicLidar     << endl;
         Out() << fDimTemperature    << endl;
+        Out() << fDimRainSensor     << endl;
         Out() << fDimRateScan       << endl;
         Out() << fDimChat           << endl;
@@ -3071,6 +3102,14 @@
                 col = HTML::kRed;
 
-            out << col << '\t';
-            out << fMagicWeatherHist[kHum].back()   << '\t';
+            if (fDimRainSensor.state()==RainSensor::State::kValid && !fRainSensorDataHist.empty() && fRainSensorDataHist.back()>0)
+            {
+                out << HTML::kRed << '\t';
+                out << "RAIN" << '\t';
+            }
+            else
+            {
+                out << col << '\t';
+                out << fMagicWeatherHist[kHum].back() << '\t';
+            }
             out << setprecision(2);
             out << fMagicWeatherHist[kGusts].back() << '\n';
@@ -3204,4 +3243,5 @@
             out << GetStateHtml(fDimMagicLidar,     MagicLidar::State::kConnected);
             out << GetStateHtml(fDimTemperature,    Temperature::State::kValid);
+            out << GetStateHtml(fDimRainSensor,     RainSensor::State::kValid);
             out << GetStateHtml(fDimChat,           0);
             out << GetStateHtml(fDimSkypeClient,    1);
@@ -3271,4 +3311,5 @@
         fDimTngWeather    ("TNG_WEATHER"),
         fDimTemperature   ("TEMPERATURE"),
+        fDimRainSensor    ("RAIN_SENSOR"),
         fDimFeedback      ("FEEDBACK"),
         fDimBiasControl   ("BIAS_CONTROL"),
@@ -3300,4 +3341,5 @@
         fDimTngWeather.Subscribe(*this);
         fDimTemperature.Subscribe(*this);
+        fDimRainSensor.Subscribe(*this);
         fDimFeedback.Subscribe(*this);
         fDimBiasControl.Subscribe(*this);
@@ -3371,4 +3413,6 @@
         Subscribe("TNG_WEATHER/DUST")
             (bind(&StateMachineSmartFACT::HandleTngWeatherDust,      this, placeholders::_1));
+        Subscribe("RAIN_SENSOR/DATA")
+            (bind(&StateMachineSmartFACT::HandleRainSensorData,      this, placeholders::_1));
 
         Subscribe("FEEDBACK/CALIBRATED_CURRENTS")
Index: trunk/FACT++/www/smartfact/struct/rainsensor.page
===================================================================
--- trunk/FACT++/www/smartfact/struct/rainsensor.page	(revision 19015)
+++ trunk/FACT++/www/smartfact/struct/rainsensor.page	(revision 19015)
@@ -0,0 +1,2 @@
+Rain Sensor
+|hist=hist-rain-sensor-data.bin/|
Index: trunk/FACT++/www/smartfact/struct/status.page
===================================================================
--- trunk/FACT++/www/smartfact/struct/status.page	(revision 19014)
+++ trunk/FACT++/www/smartfact/struct/status.page	(revision 19015)
@@ -26,4 +26,5 @@
 |Magic Lidar|$0|
 |Temperature|$0|temperature
+|Rain Sensor|$0|rainsensor
 |Chat server|$0|chat
 |Skype client|$0|
