bool Vantage::initProperties() { INDI::Weather::initProperties(); IUFillText(&PortT[0],"PORT","Port","/dev/vantage"); IUFillTextVector(&PortTP,PortT,1,getDeviceName(),"DEVICE_PORT","Ports",OPTIONS_TAB,IP_RW,60,IPS_IDLE); IUFillSwitch(&BaudRateS[0], "1200", "", ISS_OFF); IUFillSwitch(&BaudRateS[1], "2400", "", ISS_OFF); IUFillSwitch(&BaudRateS[2], "4800", "", ISS_OFF); IUFillSwitch(&BaudRateS[3], "9600", "", ISS_OFF); IUFillSwitch(&BaudRateS[4], "14400", "", ISS_OFF); IUFillSwitch(&BaudRateS[5], "19200", "", ISS_ON); IUFillSwitchVector(&BaudRateSP, BaudRateS, 6, getDeviceName(),"DEVICE_BAUD_RATE", "Baud Rate", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); addParameter("WEATHER_FORECAST", "Forecast", 0, 0, 0, 1); addParameter("WEATHER_TEMPERATURE", "Temperature (C)", -10, 30, -20, 40); addParameter("WEATHER_BAROMETER", "Barometer (mbar)", 20, 32.5, 20, 32.5); addParameter("WEATHER_WIND_SPEED", "Wind (kph)", 0, 20, 0, 40); addParameter("WEAHTER_WIND_DIRECTION", "Wind Direction", 0, 360, 0, 360); addParameter("WEATHER_HUMIDITY", "Humidity %", 0, 100, 0, 100); addParameter("WEATHER_RAIN_RATE", "Rain (mm/h)", 0, 0, 0, 0); addParameter("WEATHER_SOLAR_RADIATION", "Solar Radiation (w/m^2)", 0, 10000, 0, 10000); setCriticalParameter("WEATHER_FORECAST"); setCriticalParameter("WEATHER_TEMPERATURE"); setCriticalParameter("WEATHER_WIND_SPEED"); setCriticalParameter("WEATHER_RAIN_RATE"); addDebugControl(); return true; }
bool WeatherSafetyProxy::initProperties() { INDI::Weather::initProperties(); IUFillText(&keywordT[0], "WEATHER_CONDITION", "Weather Condition", "condition"); IUFillTextVector(&keywordTP, keywordT, 1, getDeviceName(), "KEYWORD", "Keywords", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); IUFillText(&ScriptsT[WSP_SCRIPT], "WEATHER_SAFETY_SCRIPT", "Weather safety script", "/usr/local/share/indi/scripts/weather_status.py"); IUFillTextVector(&ScriptsTP, ScriptsT, WSP_SCRIPT_COUNT, getDefaultName(), "WEATHER_SAFETY_SCRIPTS", "Script", OPTIONS_TAB, IP_RW, 100, IPS_IDLE); IUFillText(&UrlT[WSP_URL], "WEATHER_SAFETY_URL", "Weather safety URL", "http://0.0.0.0:5000/weather/safety"); IUFillTextVector(&UrlTP, UrlT, WSP_URL_COUNT, getDefaultName(), "WEATHER_SAFETY_URLS", "Url", OPTIONS_TAB, IP_RW, 100, IPS_IDLE); IUFillSwitch(&ScriptOrCurlS[WSP_USE_SCRIPT], "Use script", "", ISS_ON); IUFillSwitch(&ScriptOrCurlS[WSP_USE_CURL], "Use url", "", ISS_OFF); IUFillSwitchVector(&ScriptOrCurlSP, ScriptOrCurlS, WSP_USE_COUNT, getDeviceName(), "SCRIPT_OR_CURL", "Script or url", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillNumber(&softErrorHysteresisN[WSP_SOFT_ERROR_MAX], "SOFT_ERROR_MAX", "Max soft errors", "%g", 0.0, 1000.0, 1.0, 30.0); IUFillNumber(&softErrorHysteresisN[WSP_SOFT_ERROR_RECOVERY], "SOFT_ERROR_RECOVERY", "Minumum soft error for recovery", "%g", 0.0, 1000.0, 1.0, 7.0); IUFillNumberVector(&softErrorHysteresisNP, softErrorHysteresisN, 2, getDeviceName(), "SOFT_ERROR_HYSTERESIS", "Soft error hysterese", OPTIONS_TAB, IP_RW, 0, IPS_IDLE); addParameter("WEATHER_SAFETY", "Weather Safety", 0.9, 1.1, 0); // 0 is unsafe, 1 is safe setCriticalParameter("WEATHER_SAFETY"); IUFillText(&reasonsT[0], "Reasons", "", nullptr); IUFillTextVector(&reasonsTP, reasonsT, 1, getDeviceName(), "WEATHER_SAFETY_REASONS", "Weather Safety Reasons", MAIN_CONTROL_TAB, IP_RO, 120, IPS_IDLE); addDebugControl(); return true; }
bool WunderGround::initProperties() { INDI::Weather::initProperties(); IUFillText(&wunderAPIKeyT[0], "API_KEY", "API Key", NULL); IUFillTextVector(&wunderAPIKeyTP, wunderAPIKeyT, 1, getDeviceName(), "WUNDER_API_KEY", "Wunder", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); addParameter("WEATHER_FORECAST", "Weather", 0, 0, 0, 1); addParameter("WEATHER_TEMPERATURE", "Temperature (C)", -10, 30, -20, 40); addParameter("WEATHER_WIND_SPEED", "Wind (kph)", 0, 20, 0, 40); addParameter("WEATHER_WIND_GUST", "Gust (kph)", 0, 20, 0, 50); addParameter("WEATHER_RAIN_HOUR", "Precip (mm)", 0, 0, 0, 0); setCriticalParameter("WEATHER_FORECAST"); setCriticalParameter("WEATHER_TEMPERATURE"); setCriticalParameter("WEATHER_WIND_SPEED"); setCriticalParameter("WEATHER_RAIN_HOUR"); addDebugControl(); return true; }
bool WeatherWatcher::createPropertiesFromMap() { // already parsed if (initialParse) return true; if (readWatchFile() == false) return false; double minOK = 0, maxOK = 0, percWarn = 15; for (auto const &x : weatherMap) { if (x.first == keywordT[1].text) { minOK = -10; maxOK = 30; percWarn = 15; IUGetConfigNumber(getDeviceName(), "WEATHER_TEMPERATURE", "MIN_OK", &minOK); IUGetConfigNumber(getDeviceName(), "WEATHER_TEMPERATURE", "MAX_OK", &maxOK); IUGetConfigNumber(getDeviceName(), "WEATHER_TEMPERATURE", "PERC_WARN", &percWarn); addParameter("WEATHER_TEMPERATURE", "Temperature (C)", minOK, maxOK, percWarn); setCriticalParameter("WEATHER_TEMPERATURE"); } else if (x.first == keywordT[2].text) { minOK = 0; maxOK = 20; percWarn = 15; IUGetConfigNumber(getDeviceName(), "WEATHER_WIND_SPEED", "MIN_OK", &minOK); IUGetConfigNumber(getDeviceName(), "WEATHER_WIND_SPEED", "MAX_OK", &maxOK); IUGetConfigNumber(getDeviceName(), "WEATHER_WIND_SPEED", "PERC_WARN", &percWarn); addParameter("WEATHER_WIND_SPEED", "Wind (kph)", minOK, maxOK, percWarn); setCriticalParameter("WEATHER_WIND_SPEED"); } else if (x.first == keywordT[3].text) { minOK = 0; maxOK = 20; percWarn = 15; IUGetConfigNumber(getDeviceName(), "WEATHER_WIND_GUST", "MIN_OK", &minOK); IUGetConfigNumber(getDeviceName(), "WEATHER_WIND_GUST", "MAX_OK", &maxOK); IUGetConfigNumber(getDeviceName(), "WEATHER_WIND_GUST", "PERC_WARN", &percWarn); addParameter("WEATHER_WIND_GUST", "Gust (kph)", minOK, maxOK, percWarn); } else if (x.first == keywordT[0].text) { minOK = 0; maxOK = 0; percWarn = 15; IUGetConfigNumber(getDeviceName(), "WEATHER_RAIN_HOUR", "MIN_OK", &minOK); IUGetConfigNumber(getDeviceName(), "WEATHER_RAIN_HOUR", "MAX_OK", &maxOK); IUGetConfigNumber(getDeviceName(), "WEATHER_RAIN_HOUR", "PERC_WARN", &percWarn); addParameter("WEATHER_RAIN_HOUR", "Rain (mm)", minOK, maxOK, percWarn); setCriticalParameter("WEATHER_RAIN_HOUR"); } else if (x.first == keywordT[4].text) { minOK = 0; maxOK = 0; percWarn = 15; IUGetConfigNumber(getDeviceName(), "WEATHER_FORECAST", "MIN_OK", &minOK); IUGetConfigNumber(getDeviceName(), "WEATHER_FORECAST", "MAX_OK", &maxOK); IUGetConfigNumber(getDeviceName(), "WEATHER_FORECAST", "PERC_WARN", &percWarn); addParameter("WEATHER_FORECAST", "Weather", minOK, maxOK, percWarn); setCriticalParameter("WEATHER_FORECAST"); } } initialParse = true; return true; }