Changeset 19015 for trunk/FACT++/src


Ignore:
Timestamp:
05/24/18 10:07:45 (7 years ago)
Author:
tbretz
Message:
Added rain sensor
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/smartfact.cc

    r18972 r19015  
    4444#include "HeadersMagicWeather.h"
    4545#include "HeadersTemperature.h"
     46#include "HeadersRainSensor.h"
    4647
    4748#include <boost/filesystem.hpp>
     
    545546    Time  fTngWeatherDustTime;
    546547
     548    deque<float> fRainSensorDataHist;
     549    Time  fRainSensorDataTime;
     550
    547551    vector<float> fBiasControlVoltageVec;
    548552
     
    633637    DimDescribedState fDimTngWeather;
    634638    DimDescribedState fDimTemperature;
     639    DimDescribedState fDimRainSensor;
    635640    DimDescribedState fDimFeedback;
    636641    DimDescribedState fDimBiasControl;
     
    10571062
    10581063        ofstream(fPath+"/tngdust.data") << out.str();
     1064
     1065        return GetCurrentState();
     1066    }
     1067
     1068    int HandleRainSensorData(const EventImp &d)
     1069    {
     1070        if (!CheckDataSize(d, "RainSensor:Data", 12)) // F:1;X:1
     1071            return GetCurrentState();
     1072
     1073        fRainSensorDataTime = d.GetTime();
     1074
     1075        fRainSensorDataHist.push_back(d.GetFloat());
     1076        if (fRainSensorDataHist.size()>300)
     1077                fRainSensorDataHist.pop_front();
     1078
     1079        const Statistics stat(fRainSensorDataHist);
     1080
     1081        const double scale = stat.max>0 ? pow(10, ceil(log10(stat.max))) : 0;
     1082
     1083        WriteHist(d, "hist-rain-sensor-data", fRainSensorDataHist, scale);
     1084
     1085        ostringstream out;
     1086        out << d.GetJavaDate() << '\n';
     1087
     1088        ofstream(fPath+"/rainsensor.data") << out.str();
    10591089
    10601090        return GetCurrentState();
     
    22462276        Out() << fDimMagicLidar     << endl;
    22472277        Out() << fDimTemperature    << endl;
     2278        Out() << fDimRainSensor     << endl;
    22482279        Out() << fDimRateScan       << endl;
    22492280        Out() << fDimChat           << endl;
     
    30713102                col = HTML::kRed;
    30723103
    3073             out << col << '\t';
    3074             out << fMagicWeatherHist[kHum].back()   << '\t';
     3104            if (fDimRainSensor.state()==RainSensor::State::kValid && !fRainSensorDataHist.empty() && fRainSensorDataHist.back()>0)
     3105            {
     3106                out << HTML::kRed << '\t';
     3107                out << "RAIN" << '\t';
     3108            }
     3109            else
     3110            {
     3111                out << col << '\t';
     3112                out << fMagicWeatherHist[kHum].back() << '\t';
     3113            }
    30753114            out << setprecision(2);
    30763115            out << fMagicWeatherHist[kGusts].back() << '\n';
     
    32043243            out << GetStateHtml(fDimMagicLidar,     MagicLidar::State::kConnected);
    32053244            out << GetStateHtml(fDimTemperature,    Temperature::State::kValid);
     3245            out << GetStateHtml(fDimRainSensor,     RainSensor::State::kValid);
    32063246            out << GetStateHtml(fDimChat,           0);
    32073247            out << GetStateHtml(fDimSkypeClient,    1);
     
    32713311        fDimTngWeather    ("TNG_WEATHER"),
    32723312        fDimTemperature   ("TEMPERATURE"),
     3313        fDimRainSensor    ("RAIN_SENSOR"),
    32733314        fDimFeedback      ("FEEDBACK"),
    32743315        fDimBiasControl   ("BIAS_CONTROL"),
     
    33003341        fDimTngWeather.Subscribe(*this);
    33013342        fDimTemperature.Subscribe(*this);
     3343        fDimRainSensor.Subscribe(*this);
    33023344        fDimFeedback.Subscribe(*this);
    33033345        fDimBiasControl.Subscribe(*this);
     
    33713413        Subscribe("TNG_WEATHER/DUST")
    33723414            (bind(&StateMachineSmartFACT::HandleTngWeatherDust,      this, placeholders::_1));
     3415        Subscribe("RAIN_SENSOR/DATA")
     3416            (bind(&StateMachineSmartFACT::HandleRainSensorData,      this, placeholders::_1));
    33733417
    33743418        Subscribe("FEEDBACK/CALIBRATED_CURRENTS")
Note: See TracChangeset for help on using the changeset viewer.