BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
Public Types | Public Member Functions | Protected Member Functions
BeeeOn::FHEMClient Class Reference

The class communicates with FHEM server. It allows to search HomeMatic devices, gather data from HomeMatic devices and send commands to change state of a device. More...

#include <FHEMClient.h>

Inheritance diagram for BeeeOn::FHEMClient:
BeeeOn::Loggable BeeeOn::StoppableRunnable

Public Types

typedef Poco::SharedPtr
< FHEMClient
Ptr
 
- Public Types inherited from BeeeOn::StoppableRunnable
typedef Poco::SharedPtr
< StoppableRunnable
Ptr
 

Public Member Functions

void setRefreshTime (const Poco::Timespan &time)
 
void setReceiveTimeout (const Poco::Timespan &timeout)
 
void setReconnectTime (const Poco::Timespan &time)
 
void setFHEMAddress (const std::string &address)
 
void run () override
 It starts with creation of telnet connection with FHEM server and then it periodicly ask FHEM server about new events.
 
void stop () override
 
void sendRequest (const std::string &request)
 Sends a request over a telnet connection to FHEM server.
 
Poco::JSON::Object::Ptr receive (const Poco::Timespan &timeout)
 Waiting for a new event according to given timeout. Returns event, if some event is in queue, otherwise waiting for a new event or timeout exception. More...
 

Protected Member Functions

void initConnection ()
 Creates DialogSocket and connect it to a defined socket address m_fhemAddress.
 
void cycle ()
 Retrieves all HomeMatic devices known to FHEM server and processes each device. Processing of device The processing of a device consists of a detection and creation of an event.
 
Poco::JSON::Object::Ptr nextEvent ()
 Returns message from queue. If the queue is empty it returns null.
 
void retrieveHomeMaticDevices (std::vector< std::string > &devices)
 Retrieves all HomeMatic devices known to FHEM server.
 
void processDevice (const std::string &device)
 Retrieves information about given device and detects changes connected to this device. If some change is detected then an event is created and is appended to the queue. More...
 
FHEMDeviceInfo assembleDeviceInfo (const std::string &device, const Poco::JSON::Object::Ptr internals) const
 Creates DeviceInfo for a given device and part of message.
 
void retrieveChannelsState (Poco::JSON::Object::Ptr internals, std::map< std::string, std::string > &channels)
 For a given device it retrieves all channels and their states.
 
std::string retrieveChannelState (const std::string &channel)
 Retrieves a state of a given channel.
 
void createNewDeviceEvent (const std::string &device, const std::string &model, const std::string &type, const std::string &serialNumber)
 
void createStatEvent (const std::string &event, const std::string &device)
 
void createMessageEvent (const std::string &device, const std::string &model, const std::string &type, const std::string &serialNumber, const std::string &rawMsg, const double rssi, const std::map< std::string, std::string > &channels)
 
void appendEventToQueue (const Poco::JSON::Object::Ptr event)
 
Poco::JSON::Object::Ptr sendCommand (const std::string &command)
 Sends a command over telnet connection and returns a response. More...
 

Detailed Description

The class communicates with FHEM server. It allows to search HomeMatic devices, gather data from HomeMatic devices and send commands to change state of a device.

Member Function Documentation

void FHEMClient::processDevice ( const std::string &  device)
protected

Retrieves information about given device and detects changes connected to this device. If some change is detected then an event is created and is appended to the queue.

Events: new_device, message, rcv_cnt, snd_cnt

Object::Ptr FHEMClient::receive ( const Poco::Timespan &  timeout)

Waiting for a new event according to given timeout. Returns event, if some event is in queue, otherwise waiting for a new event or timeout exception.

This method should not be called by multiple threads, received message could be given to only one thread.

Timeout:

  • 0 - non-blocking
  • negative - blocking
  • positive blocking with timeout
Object::Ptr FHEMClient::sendCommand ( const std::string &  command)
protected

Sends a command over telnet connection and returns a response.

Exceptions
TimeoutExceptionin case of expiration of receive timeout.
SyntaxExceptionin case of wrong response.
void FHEMClient::stop ( )
overridevirtual

Stop the runnable. The call should not block.

Implements BeeeOn::StoppableRunnable.


The documentation for this class was generated from the following files: