/** * Handle one weatherstation consist of one wind- and climate sensor * All data will be send by signal/slot connection in case of data change. * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-09-22 */ #pragma once #include #include "logger.h" namespace MeteoDataManagement { class TcpClimate; class TcpWind; class TcpWeatherStation : public QObject { Q_OBJECT public: /** * Class constructor * @param[in] id weatherstatiopn id * @param[in] converterIp IP address of the RS232-LAN Converter * @param[in] climatePort Port number of climate sensor on the RS232-LAN Converter * @param[in] windPort Port number of wind sensor on the RS232-LAN Converter * A port number of 0 indicates this sensor is not available */ TcpWeatherStation(int id, const QString &converterIp, quint16 climatePort, quint16 windPort, QObject *parent = nullptr); Q_SIGNALS: /** * Emits signal if data were changed * @param[in] id weatherstation id * @param[in] pressure pressure in hPa * @param[in] temperature temperature in °C * @param[in] humidity humidity in % relative humidity * @param[in] direction wind FROM direction in degree (north=0°, east=90°, south= 180°, west=270°) * @param[in] speed speed in m/s */ void sigWeatherDataChanged(int id, float pressure, float temperature, float humidity, float direction, float speed, bool climateOk, bool weatherOk); protected Q_SLOTS: /** * Signaled from tcpclimate class if data were changed * @param[in] pressure pressure in hPa * @param[in] temperature temperature in °C * @param[in] humidity humidity in % relative humidity */ void onClimateDataChanged(float pressure, float temperature, float humidity, bool climateOk); /** * Signaled from tcpwind class if data were changed * @param[in] direction wind FROM direction in degree (north=0°, east=90°, south= 180°, west=270°) * @param[in] speed speed in m/s */ void onWindDataChanged(float direction, float speed, bool windOk); protected: int m_id; ///< weatherstation id QString m_converterIp; ///< IP address of the RS232-LAN Converter quint16 m_climatePort; ///< Access port number of climate sensor on the RS232-LAN Converter quint16 m_windPort; ///< Access port number of wind sensor on the RS232-LAN Converter TcpClimate *m_tcpClimate; ///< pointer to climate sensor object TcpWind *m_tcpWind; ///< pointer to wind sensor object float m_pressure; ///< last pressure value from climate sensor float m_temperature; ///< last temperature value from climate sensor float m_humidity; ///< last humidity value from climate sensor float m_direction; ///< last direction value from wind sensor float m_speed; ///< last speed value from wind sensor bool m_climateOk; ///< last statecheck climate bool m_windOk; ///< last statecheck weather NGL::INGLLogger &m_logger; }; } // namespace MeteoDataManagement