void CToonThermostat::Do_Work() { _log.Log(LOG_STATUS,"ToonThermostat: Worker started..."); int sec_counter = 1; while (!m_stoprequested) { sleep_seconds(1); m_poll_counter--; sec_counter++; if (sec_counter % 12 == 0) { mytime(&m_LastHeartbeat); } if (m_poll_counter<=0) { m_poll_counter = TOON_POLL_INTERVAL; GetMeterDetails(); if (m_retry_counter >= 3) { m_bDoLogin = true; m_retry_counter = 0; _log.Log(LOG_ERROR, "ToonThermostat: retrieveToonState request not successful, restarting..!"); } } } _log.Log(LOG_STATUS,"ToonThermostat: Worker stopped..."); }
CAnnaThermostat::CAnnaThermostat(const int ID, const std::string &IPAddress, const unsigned short usIPPort, const std::string &Username, const std::string &Password) : m_IPAddress(IPAddress), m_IPPort(usIPPort), m_UserName(CURLEncode::URLEncode(Username)), m_Password(CURLEncode::URLEncode(Password)) { m_HwdID=ID; m_ThermostatID = ""; Init(); GetMeterDetails(); }
void CWunderground::Do_Work() { while (!m_stoprequested) { sleep_seconds(1); time_t atime=mytime(NULL); struct tm ltime; localtime_r(&atime,<ime); if ((ltime.tm_min/10!=m_LastMinute)) { GetMeterDetails(); m_LastMinute=ltime.tm_min/10; } } _log.Log(LOG_NORM,"Wunderground Worker stopped..."); }
void CWunderground::Do_Work() { int sec_counter = 590; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 10 == 0) { m_LastHeartbeat=mytime(NULL); } if (sec_counter % 600 == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"Wunderground: Worker stopped..."); }
void CNest::SetSetpoint(const int idx, const float temp) { if (m_UserName.size() == 0) return; if (m_Password.size() == 0) return; if (m_bDoLogin == true) { if (!Login()) return; } size_t iThermostat = (idx - 1) / 3; if (iThermostat > m_thermostats.size()) return; std::vector<std::string> ExtraHeaders; ExtraHeaders.push_back("user-agent:Nest/1.1.0.10 CFNetwork/548.0.4"); ExtraHeaders.push_back("Authorization:Basic " + m_AccessToken); ExtraHeaders.push_back("X-nl-protocol-version:1"); float tempDest = temp; unsigned char tSign = m_sql.m_tempsign[0]; if (tSign == 'F') { //Maybe this should be done in the main app, so all other devices will also do this //Convert to Celsius tempDest = (tempDest - 32.0f) / 1.8f; } Json::Value root; root["target_change_pending"] = true; root["target_temperature"] = tempDest; std::string sResult; std::string sURL = m_TransportURL + NEST_SET_SHARED + m_thermostats[iThermostat].Serial; if (!HTTPClient::POST(sURL, root.toStyledString(), ExtraHeaders, sResult)) { _log.Log(LOG_ERROR, "Nest: Error setting setpoint!"); m_bDoLogin = true; return; } GetMeterDetails(); }
void CAnnaThermostat::SetSetpoint(const int idx, const float temp) { if (m_UserName.size() == 0) return; if (m_Password.size() == 0) return; if (m_ThermostatID.size() == 0) GetMeterDetails(); std::stringstream szURL; if (m_Password.empty()) { szURL << "http://" << m_IPAddress << ":" << m_IPPort; } else { szURL << "http://" << m_UserName << ":" << m_Password << "@" << m_IPAddress << ":" << m_IPPort; } szURL << ANNA_GET_STATUS; szURL << ";id="; szURL << m_ThermostatID; szURL << "/thermostat"; std::stringstream sPostData; std::vector<std::string> ExtraHeaders; std::string sResult; char szTemp[10]; sprintf(szTemp, "%.1f", temp); sPostData << "<thermostat>"; sPostData << "<setpoint>"; sPostData << szTemp; sPostData << "</setpoint>"; sPostData << "</thermostat>"; if (!HTTPClient::PUT(szURL.str(), sPostData.str(), ExtraHeaders, sResult)) { _log.Log(LOG_ERROR, "AnnaThermostat: Error getting current state!"); return; } }
void CEcoDevices::Do_Work() { int sec_counter = 0; _log.Log(LOG_STATUS,"EcoDevices: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { mytime(&m_LastHeartbeat); } if (sec_counter%ECODEVICES_POLL_INTERVAL == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"EcoDevices: Worker stopped..."); }
void CToonThermostat::Do_Work() { int sec_counter = TOON_POLL_INTERVAL-5; _log.Log(LOG_STATUS,"ToonThermostat: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { mytime(&m_LastHeartbeat); } if (sec_counter % TOON_POLL_INTERVAL == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"ToonThermostat: Worker stopped..."); }
void CThermosmart::Do_Work() { _log.Log(LOG_STATUS,"Thermosmart: Worker started..."); int sec_counter = THERMOSMART_POLL_INTERVAL-5; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat=mytime(NULL); } if (sec_counter % THERMOSMART_POLL_INTERVAL == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"Thermosmart: Worker stopped..."); }
void CYouLess::Do_Work() { int sec_counter = YOULESS_POLL_INTERVAL - 2; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat=mytime(NULL); } if (sec_counter % YOULESS_POLL_INTERVAL == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"YouLess: Worker stopped..."); }
void CDarkSky::Do_Work() { _log.Log(LOG_STATUS, "DarkSky: Started..."); int sec_counter = 290; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat = mytime(NULL); } if (sec_counter % 300 == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"DarkSky: Worker stopped..."); }
void KMTronicUDP::Do_Work() { int sec_counter = KMTRONIC_POLL_INTERVAL - 2; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat=mytime(NULL); } if (sec_counter % KMTRONIC_POLL_INTERVAL == 0) { GetMeterDetails(); } } _log.Log(LOG_STATUS, "KMTronic: UDP Worker stopped..."); }
void CICYThermostat::Do_Work() { int sec_counter = 0; _log.Log(LOG_STATUS,"ICYThermostat: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat = mytime(NULL); } if (sec_counter % ICY_POLL_INTERVAL ==0) { GetMeterDetails(); } } _log.Log(LOG_STATUS,"ICYThermostat: Worker stopped..."); }
void CEcoDevices::Do_Work() { int LastMinute=-1; _log.Log(LOG_STATUS,"EcoDevices: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); time_t atime=mytime(NULL); if (atime%ECODEVICES_POLL_INTERVAL == 0) { GetMeterDetails(); } if (atime % 12 == 0) { mytime(&m_LastHeartbeat); } } _log.Log(LOG_STATUS,"EcoDevices: Worker stopped..."); }
void CNestThermostat::Do_Work() { _log.Log(LOG_STATUS,"NestThermostat: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); time_t atime=mytime(NULL); struct tm ltime; localtime_r(&atime,<ime); if (ltime.tm_min/NEST_POLL_INTERVAL!=m_LastMinute) { m_LastMinute=ltime.tm_min/NEST_POLL_INTERVAL; GetMeterDetails(); } if (ltime.tm_sec % 12 == 0) { mytime(&m_LastHeartbeat); } } _log.Log(LOG_STATUS,"NestThermostat: Worker stopped..."); }
void CFitbit::Do_Work() { int sec_counter = 600 - 5; bool bFirstTimeWS = true; _log.Log(LOG_STATUS, "Fitbit: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); if (m_stoprequested) break; sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat = mytime(NULL); } if (!m_isLogged) { if (sec_counter % 30 == 0) { Login(); } } if (m_isLogged) { if (RefreshToken()) { if ((sec_counter % 600 == 0) || (bFirstTimeWS)) { //Weather station data is updated every 10 minutes bFirstTimeWS = false; if (sec_counter % 1200 == 0) { GetMeterDetails(); } } } } } _log.Log(LOG_STATUS,"Fitbit: Worker stopped..."); }
void CSBFSpot::Do_Work() { int LastMinute=-1; _log.Log(LOG_STATUS,"SBFSpot: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); time_t atime=mytime(NULL); struct tm ltime; localtime_r(&atime,<ime); if (((ltime.tm_min/SMA_POLL_INTERVAL!=LastMinute))&&(ltime.tm_sec>20)) { LastMinute=ltime.tm_min/SMA_POLL_INTERVAL; GetMeterDetails(); } if (ltime.tm_sec % 12 == 0) { mytime(&m_LastHeartbeat); } } _log.Log(LOG_STATUS,"SBFSpot: Worker stopped..."); }
bool CNestThermostat::SetAway(const bool bIsAway) { if (m_UserName.size() == 0) return false; if (m_Password.size() == 0) return false; if (m_bDoLogin == true) { if (!Login()) return false; } if (m_StructureID.size() == 0) GetMeterDetails(); std::vector<std::string> ExtraHeaders; ExtraHeaders.push_back("user-agent:Nest/1.1.0.10 CFNetwork/548.0.4"); ExtraHeaders.push_back("Authorization:Basic " + m_AccessToken); ExtraHeaders.push_back("X-nl-protocol-version:1"); std::stringstream sstr; Json::Value root; root["away"] = bIsAway; root["away_timestamp"] = (int)mytime(NULL); root["away_setter"] = 0; std::string sResult; std::string sURL = m_TransportURL + NEST_SET_STRUCTURE + m_StructureID; if (!HTTPClient::POST(sURL, root.toStyledString(), ExtraHeaders, sResult)) { _log.Log(LOG_ERROR, "NestThermostat: Error setting away mode!"); m_bDoLogin = true; return false; } m_LastMinute = -1; return true; }
void CPVOutputInput::Do_Work() { int LastMinute=-1; int sec_counter = 0; _log.Log(LOG_STATUS,"PVOutput (Input): Worker started..."); while (!m_stoprequested) { sleep_seconds(1); sec_counter++; time_t atime=mytime(NULL); m_LastHeartbeat = atime; struct tm ltime; localtime_r(&atime,<ime); if (((ltime.tm_min/PVOUTPUT_POLL_INTERVAL!=LastMinute))&&(ltime.tm_sec>20)) { LastMinute=ltime.tm_min/PVOUTPUT_POLL_INTERVAL; GetMeterDetails(); } } _log.Log(LOG_STATUS,"PVOutput (Input): Worker stopped..."); }
void CAccuWeather::Do_Work() { int sec_counter = 595; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat = mytime(NULL); } if (sec_counter % 600 == 0) { if (m_LocationKey.empty()) { m_LocationKey = GetLocationKey(); if (m_LocationKey.empty()) continue; } GetMeterDetails(); } } _log.Log(LOG_STATUS,"AccuWeather Worker stopped..."); }
void CWunderground::Do_Work() { int sec_counter = 590; _log.Log(LOG_STATUS, "Wunderground: Worker started..."); while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 10 == 0) { m_LastHeartbeat=mytime(NULL); } #ifdef DEBUG_WUNDERGROUND if (sec_counter % 10 == 0) #else if (sec_counter % 600 == 0) #endif { GetMeterDetails(); } } _log.Log(LOG_STATUS,"Wunderground: Worker stopped..."); }
void CNestThermostat::SetSetpoint(const int idx, const float temp) { if (m_UserName.size() == 0) return; if (m_Password.size() == 0) return; if (m_bDoLogin == true) { if (!Login()) return; } if (m_Serial.size() == 0) GetMeterDetails(); std::vector<std::string> ExtraHeaders; ExtraHeaders.push_back("user-agent:Nest/1.1.0.10 CFNetwork/548.0.4"); ExtraHeaders.push_back("Authorization:Basic " + m_AccessToken); ExtraHeaders.push_back("X-nl-protocol-version:1"); std::stringstream sstr; Json::Value root; root["target_change_pending"] = true; root["target_temperature"] = temp; std::string sResult; std::string sURL = m_TransportURL + NEST_SET_SHARED + m_Serial; if (!HTTPClient::POST(sURL, root.toStyledString(), ExtraHeaders, sResult)) { _log.Log(LOG_ERROR, "NestThermostat: Error setting setpoint!"); m_bDoLogin = true; return; } m_LastMinute = -1; }
void CYouLess::Do_Work() { while (!m_stoprequested) { sleep_seconds(1); time_t atime = mytime(NULL); struct tm ltime; localtime_r(&atime, <ime); if (ltime.tm_sec % 12 == 0) { mytime(&m_LastHeartbeat); } m_PollCounter++; if (m_PollCounter>=YOULESS_POLL_INTERVAL) { GetMeterDetails(); m_PollCounter=0; } } _log.Log(LOG_STATUS,"YouLess: Worker stopped..."); }
void CAnnaThermostat::Do_Work() { bool bFirstTime = true; _log.Log(LOG_STATUS,"AnnaThermostat: Worker started..."); int sec_counter = ANNA_POLL_INTERVAL-5; while (!m_stoprequested) { sleep_seconds(1); sec_counter++; if (sec_counter % 12 == 0) { m_LastHeartbeat = mytime(NULL); } if ((sec_counter % ANNA_POLL_INTERVAL == 0) || (bFirstTime)) { sec_counter = 0; bFirstTime = false; GetMeterDetails(); } } _log.Log(LOG_STATUS,"AnnaThermostat: Worker stopped..."); }