bool CDummy::StartHardware() { Init(); m_bIsStarted=true; sOnConnected(this); return true; }
bool CurrentCostMeterTCP::ConnectInternal() { m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (m_socket == INVALID_SOCKET) { _log.Log(LOG_ERROR,"CurrentCost Smart Meter: could not create a TCP/IP socket!"); return false; } // connect to the server int nRet; nRet = connect(m_socket,(const sockaddr*)&m_addr, sizeof(m_addr)); if (nRet == SOCKET_ERROR) { closesocket(m_socket); m_socket=INVALID_SOCKET; _log.Log(LOG_ERROR,"CurrentCost Smart Meter: could not connect to: %s:%ld",m_szIPAddress.c_str(),m_usIPPort); return false; } _log.Log(LOG_STATUS,"CurrentCost Smart Meter: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); Init(); sOnConnected(this); return true; }
bool OTGWSerial::OpenSerialDevice() { //Try to open the Serial Port try { _log.Log(LOG_STATUS,"OTGW: Using serial port: %s", m_szSerialPort.c_str()); open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8) ); } catch (boost::exception & e) { _log.Log(LOG_ERROR,"OTGW:Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR,"-----------------\n%s\n-----------------",boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch ( ... ) { _log.Log(LOG_ERROR,"OTGW:Error opening serial port!!!"); return false; } m_bIsStarted=true; m_bufferpos=0; setReadCallback(boost::bind(&OTGWSerial::readCallback, this, _1, _2)); sOnConnected(this); m_bRequestVersion = true; return true; }
bool SolarMaxTCP::ConnectInternal() { m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (m_socket == INVALID_SOCKET) { _log.Log(LOG_ERROR, "SolarMax: TCP could not create a TCP/IP socket!"); return false; } /* //Set socket timeout to 2 minutes #if !defined WIN32 struct timeval tv; tv.tv_sec = 120; setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO,(struct timeval *)&tv,sizeof(struct timeval)); #else unsigned long nTimeout = 120*1000; setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&nTimeout, sizeof(DWORD)); #endif */ // connect to the server int nRet; nRet = connect(m_socket, (const sockaddr*)&m_addr, sizeof(m_addr)); if (nRet == SOCKET_ERROR) { closesocket(m_socket); m_socket = INVALID_SOCKET; _log.Log(LOG_ERROR, "SolarMax: TCP could not connect to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); return false; } _log.Log(LOG_STATUS, "SolarMax: TCP connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); sOnConnected(this); return true; }
bool Teleinfo::StartHardware() { StartHeartbeatThread(); //Try to open the Serial Port try { _log.Log(LOG_STATUS, "Teleinfo: Using serial port: %s", m_szSerialPort.c_str()); open( m_szSerialPort, m_iBaudRate, m_iOptParity, m_iOptCsize ); } catch (boost::exception & e) { _log.Log(LOG_ERROR, "Teleinfo: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR, "-----------------\n%s\n-----------------", boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch (...) { _log.Log(LOG_ERROR, "Teleinfo: Error opening serial port!!!"); return false; } setReadCallback(boost::bind(&Teleinfo::readCallback, this, _1, _2)); m_bIsStarted = true; sOnConnected(this); return true; }
bool CDavisLoggerSerial::OpenSerialDevice() { //Try to open the Serial Port try { open(m_szSerialPort,m_iBaudRate); _log.Log(LOG_STATUS,"Davis: Using serial port: %s", m_szSerialPort.c_str()); m_statecounter=0; m_state=DSTATE_WAKEUP; } catch (boost::exception & e) { _log.Log(LOG_ERROR,"Davis: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR,"-----------------\n%s\n----------------", boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch ( ... ) { _log.Log(LOG_ERROR,"Davis: Error opening serial port!!!"); return false; } m_bIsStarted=true; setReadCallback(boost::bind(&CDavisLoggerSerial::readCallback, this, _1, _2)); sOnConnected(this); return true; }
void ZWaveBase::Do_Work() { #ifdef WIN32 //prevent OpenZWave locale from taking over _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); #endif while (!m_stoprequested) { sleep_milliseconds(500); if (m_stoprequested) return; if (m_bInitState) { if (GetInitialDevices()) { m_bInitState=false; sOnConnected(this); } } else { GetUpdates(); if (m_bControllerCommandInProgress==true) { time_t atime=mytime(NULL); time_t tdiff=atime-m_ControllerCommandStartTime; if (tdiff>=CONTROLLER_COMMAND_TIMEOUT) { _log.Log(LOG_ERROR,"ZWave: Stopping Controller command (Timeout!)"); CancelControllerCommand(); } } } } }
void MQTT::on_connect(int rc) { /* rc= ** 0 - success ** 1 - connection refused(unacceptable protocol version) ** 2 - connection refused(identifier rejected) ** 3 - connection refused(broker unavailable) */ if (rc == 0){ if (m_IsConnected) { _log.Log(LOG_STATUS, "MQTT: re-connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); } else { _log.Log(LOG_STATUS, "MQTT: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); m_IsConnected = true; sOnConnected(this); m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&MQTT::SendDeviceInfo, this, _1, _2, _3, _4)); } subscribe(NULL, TOPIC_IN); } else { _log.Log(LOG_ERROR, "MQTT: Connection failed!, restarting (rc=%d)",rc); m_bDoReconnect = true; } }
void CHardwareMonitor::Init() { #ifdef __APPLE__ //sorry apple not supported for now m_bEnabled=false; return; #endif // Check if there is already a hardware devices for our class, if no add it. m_lastquerytime=0; m_HwdID = 0; std::vector<std::vector<std::string> > result; result = m_sql.safe_query("SELECT ID,Enabled FROM Hardware WHERE (Type==%d) AND (Name=='Motherboard') LIMIT 1", HTYPE_System); if (result.size()<1) { m_sql.safe_query("INSERT INTO Hardware (Name, Enabled, Type, Address, Port, Username, Password, Mode1, Mode2, Mode3, Mode4, Mode5, Mode6) VALUES ('Motherboard',1, %d,'',1,'','',0,0,0,0,0,0)", HTYPE_System); result=m_sql.safe_query("SELECT MAX(ID) FROM Hardware"); if (result.size()>0) { std::vector<std::string> sd=result[0]; m_HwdID=atoi(sd[0].c_str()); } result = m_sql.safe_query("SELECT ID,Enabled FROM Hardware WHERE (Type==%d) AND (Name=='Motherboard') LIMIT 1", HTYPE_System); } if (result.size()>0) { std::vector<std::string> sd=result[0]; m_HwdID=atoi(sd[0].c_str()); m_bEnabled=atoi(sd[1].c_str())!=0; } sOnConnected(this); }
bool P1MeterSerial::StartHardware() { #ifdef DEBUG_FROM_FILE FILE *fIn=fopen("E:\\meter.txt","rb+"); BYTE buffer[1000]; int ret=fread((BYTE*)&buffer,1,sizeof(buffer),fIn); fclose(fIn); ParseData((const BYTE*)&buffer,ret); #endif m_stoprequested = false; m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&P1MeterSerial::Do_Work, this))); //Try to open the Serial Port try { _log.Log(LOG_STATUS,"P1 Smart Meter: Using serial port: %s", m_szSerialPort.c_str()); if (m_iBaudRate==9600) { open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity( boost::asio::serial_port_base::parity::even), boost::asio::serial_port_base::character_size(7) ); } else { //DSMRv4 open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity( boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8) ); } } catch (boost::exception & e) { _log.Log(LOG_ERROR,"P1 Smart Meter: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR,"-----------------\n%s\n-----------------",boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch ( ... ) { _log.Log(LOG_ERROR,"P1 Smart Meter: Error opening serial port!!!"); return false; } m_bIsStarted=true; m_linecount=0; m_exclmarkfound=0; setReadCallback(boost::bind(&P1MeterSerial::readCallback, this, _1, _2)); sOnConnected(this); return true; }
void MochadTCP::OnConnect() { _log.Log(LOG_STATUS, "Mochad: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); m_bIsStarted = true; sOnConnected(this); }
bool CRFLink::OpenSerialDevice() { //Try to open the Serial Port try { open(m_szSerialPort, 57600); _log.Log(LOG_STATUS,"RFLink: Using serial port: %s", m_szSerialPort.c_str()); } catch (boost::exception & e) { _log.Log(LOG_ERROR,"RFLink: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR,"-----------------\n%s\n----------------", boost::diagnostic_information(e).c_str()); #endif return false; } catch ( ... ) { _log.Log(LOG_ERROR,"RFLink: Error opening serial port!!!"); return false; } m_bIsStarted=true; m_LastReceivedTime = mytime(NULL); setReadCallback(boost::bind(&CRFLink::readCallback, this, _1, _2)); sOnConnected(this); return true; }
bool C1Wire::StartHardware() { // Start worker thread m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&C1Wire::Do_Work, this))); m_bIsStarted=true; sOnConnected(this); return (m_thread!=NULL); }
bool CTellstick::StartHardware() { Init(); m_bIsStarted=true; sOnConnected(this); _log.Log(LOG_NORM, "Tellstick: StartHardware"); return true; }
void S0MeterTCP::OnConnect() { _log.Log(LOG_STATUS,"S0 Meter: connected to: %s:%d", m_szIPAddress.c_str(), m_usIPPort); m_bDoRestart=false; m_bIsStarted=true; m_bufferpos = 0; sOnConnected(this); }
void OTGWTCP::OnConnect() { _log.Log(LOG_STATUS,"OTGW: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); m_bDoRestart=false; m_bIsStarted=true; m_bufferpos=0; sOnConnected(this); m_bRequestVersion = true; }
void CRFLinkTCP::OnConnect() { _log.Log(LOG_STATUS,"RFLink: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); m_bDoRestart=false; m_bIsStarted=true; m_rfbufferpos = 0; m_LastReceivedTime = mytime(NULL); sOnConnected(this); write("10;PING;\n"); }
bool CSterbox::StartHardware() { Init(); //Start worker thread m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CSterbox::Do_Work, this))); m_bIsStarted=true; sOnConnected(this); _log.Log(LOG_STATUS, "Sterbox: Started"); return (m_thread!=NULL); }
bool CThermosmart::StartHardware() { Init(); m_LastMinute = -1; //Start worker thread m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CThermosmart::Do_Work, this))); m_bIsStarted=true; sOnConnected(this); return (m_thread!=NULL); }
bool CWunderground::StartHardware() { Init(); //Start worker thread m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CWunderground::Do_Work, this))); if (!m_thread) return false; m_bIsStarted=true; sOnConnected(this); return true; }
bool BleBox::StartHardware() { if (LoadNodes()) { m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&BleBox::Do_Work, this))); m_bIsStarted = true; sOnConnected(this); return (m_thread != NULL); } return false; }
void Comm5TCP::OnConnect() { _log.Log(LOG_STATUS, "Comm5 MA-5XXX: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); m_bIsStarted = true; notificationEnabled = false; sOnConnected(this); queryRelayState(); querySensorState(); enableNotifications(); }
bool MochadTCP::ConnectInternal() { // connect to the server connect((const std::string &)m_addr, sizeof(m_addr)); _log.Log(LOG_STATUS,"Mochad: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); // Init(); sOnConnected(this); return true; }
bool S0MeterSerial::StartHardware() { StartHeartbeatThread(); //Try to open the Serial Port try { _log.Log(LOG_STATUS,"S0 Meter: Using serial port: %s", m_szSerialPort.c_str()); #ifndef WIN32 openOnlyBaud( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::even), boost::asio::serial_port_base::character_size(7) ); #else open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::even), boost::asio::serial_port_base::character_size(7) ); #endif } catch (boost::exception & e) { _log.Log(LOG_ERROR,"S0 Meter: Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR,"-----------------\n%s\n-----------------",boost::diagnostic_information(e).c_str()); #endif return false; } catch ( ... ) { _log.Log(LOG_ERROR,"S0 Meter: Error opening serial port!!!"); return false; } m_bIsStarted=true; m_bufferpos=0; ReloadLastTotals(); setReadCallback(boost::bind(&S0MeterSerial::readCallback, this, _1, _2)); sOnConnected(this); #ifdef DEBUG_S0 int ii = 0; for (ii = 0; ii < TOT_DEBUG_LINES; ii++) { std::string dline = szDebugDataP2[ii]; ParseData((const unsigned char*)dline.c_str(), dline.size()); } #endif return true; }
void MySensorsTCP::OnConnect() { _log.Log(LOG_STATUS,"MySensors: connected to: %s:%ld", m_szIPAddress.c_str(), m_usIPPort); m_bDoRestart=false; m_bIsStarted=true; m_bufferpos=0; sOnConnected(this); //Request gateway version std::string sRequest = "0;0;3;0;2;\n"; WriteInt(sRequest); }
bool CPanasonic::StartHardware() { StopHardware(); m_bIsStarted = true; sOnConnected(this); StartHeartbeatThread(); //Start worker thread m_stoprequested = false; m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CPanasonic::Do_Work, this))); _log.Log(LOG_STATUS, "Panasonic Plugin: Started"); return true; }
bool C1Wire::StartHardware() { // Start worker thread if (0 != m_sensorThreadPeriod) { m_threadSensors = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&C1Wire::SensorThread, this))); } if (0 != m_switchThreadPeriod) { m_threadSwitches = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&C1Wire::SwitchThread, this))); } m_bIsStarted=true; sOnConnected(this); StartHeartbeatThread(); return (m_threadSensors!=NULL && m_threadSwitches!=NULL); }
bool CLogitechMediaServer::StartHardware() { StopHardware(); m_bIsStarted = true; sOnConnected(this); m_iThreadsRunning = 0; m_bShowedStartupMessage = false; StartHeartbeatThread(); //Start worker thread m_stoprequested = false; m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CLogitechMediaServer::Do_Work, this))); return (m_thread != NULL); }
bool CGpio::StartHardware() { m_stoprequested=false; // _log.Log(LOG_NORM,"GPIO: Starting hardware (debounce: %d ms, period: %d ms, poll interval: %d sec)", m_debounce, m_period, m_pollinterval); if (InitPins()) { /* Disabled for now, devices should be added manually (this was the old behaviour, which we'll follow for now). Keep code for possible future usage. if (!CreateDomoticzDevices()) { _log.Log(LOG_NORM, "GPIO: Error creating pins in DB, aborting..."); m_stoprequested=true; }*/ if (!m_stoprequested) { // Read all exported GPIO ports and set the device status accordingly. // No need for delayed startup and force update when no masters are able to connect. std::vector<std::vector<std::string> > result; result = m_sql.safe_query("SELECT ID FROM Users WHERE (RemoteSharing==1) AND (Active==1)"); if (result.size() > 0) { for (int i = 0; i < DELAYED_STARTUP_SEC; ++i) { sleep_milliseconds(1000); if (m_stoprequested) break; } _log.Log(LOG_NORM, "GPIO: Optional connected Master Domoticz now updates its status"); UpdateDeviceStates(true); } else UpdateDeviceStates(false); if (m_pollinterval > 0) m_thread_poller = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CGpio::Poller, this))); } } else { _log.Log(LOG_NORM, "GPIO: No exported pins found, aborting..."); m_stoprequested=true; } m_bIsStarted=true; sOnConnected(this); StartHeartbeatThread(); return (m_thread != NULL); }
bool Meteostick::OpenSerialDevice() { //Try to open the Serial Port try { _log.Log(LOG_STATUS, "Meteostick: Using serial port: %s", m_szSerialPort.c_str()); open( m_szSerialPort, m_iBaudRate, boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none), boost::asio::serial_port_base::character_size(8) ); } catch (boost::exception & e) { _log.Log(LOG_ERROR, "Meteostick:Error opening serial port!"); #ifdef _DEBUG _log.Log(LOG_ERROR, "-----------------\n%s\n-----------------", boost::diagnostic_information(e).c_str()); #else (void)e; #endif return false; } catch (...) { _log.Log(LOG_ERROR, "Meteostick:Error opening serial port!!!"); return false; } m_state = MSTATE_INIT; m_bIsStarted = true; m_bufferpos = 0; int ii; for (ii = 0; ii < MAX_IDS; ii++) { m_LastOutsideTemp[ii] = 12345; m_LastOutsideHum[ii] = 0; m_ActRainCounter[ii] = -1; m_LastRainValue[ii] = -1; } setReadCallback(boost::bind(&Meteostick::readCallback, this, _1, _2)); sOnConnected(this); return true; }