From 1dadad4b09009f079c51523c6b92618849227c14 Mon Sep 17 00:00:00 2001 From: jfmartel Date: Tue, 12 Oct 2021 11:27:15 -0400 Subject: [PATCH] Dev pour retour du LoRa au chalet --- MasterCtrl.pro | 25 +-------- Sources/Chalet/ChaletData.cpp | 2 + Sources/Chalet/ChaletData.h | 28 ++++++++++ Sources/Chalet/ChaletInterface.cpp | 20 +++++++ Sources/Chalet/ChaletInterface.h | 3 ++ Sources/Chalet/ChaletLoraDevice.cpp | 71 +++++++++++++++++++++---- Sources/Chalet/ChaletLoraDevice.h | 13 ++++- Sources/Chalet/ChaletModbusServer.cpp | 16 ++++++ Sources/Chalet/ChaletModbusServer.h | 2 + Sources/Chalet/ThingsBoardInterface.cpp | 39 ++++++++++++-- Sources/Chalet/ThingsBoardInterface.h | 2 + Sources/LoraNetworkCommIF.cpp | 1 + Sources/MasterCtrl.cpp | 2 +- Sources/NetworkProtocol.cpp | 2 +- Sources/ProtocolDefs.h | 9 ++++ 15 files changed, 196 insertions(+), 39 deletions(-) diff --git a/MasterCtrl.pro b/MasterCtrl.pro index c48263c..3ec32f8 100644 --- a/MasterCtrl.pro +++ b/MasterCtrl.pro @@ -44,29 +44,6 @@ HEADERS += \ Sources/Chalet/ChaletDataLogger.h \ Sources/Chalet/ChaletUbidotsInterface.h \ Sources/Chalet/ThingsBoardInterface.h \ - Lib/QtHTTPServer/include/QtHttpServer/qabstracthttpserver.h \ - Lib/QtHTTPServer/include/QtHttpServer/qabstracthttpserver_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserver.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserver_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverfutureresponse.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverliterals_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrequest.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrequest_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverresponder.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverresponder_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverresponse.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverresponse_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrouter.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrouter_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrouterrule.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrouterrule_p.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverrouterviewtraits.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverviewtraits.h \ - Lib/QtHTTPServer/include/QtHttpServer/qhttpserverviewtraits_impl.h \ - Lib/QtHTTPServer/include/QtHttpServer/qthttpserverglobal.h \ - Lib/QtHTTPServer/include/QtSslServer/qsslserver.h \ - Lib/QtHTTPServer/include/QtSslServer/qsslserver_p.h \ - Lib/QtHTTPServer/include/QtSslServer/qtsslserverglobal.h \ Sources/ImageCropper/imagecropper.h \ Sources/ImageCropper/imagecropper_e.h \ Sources/ImageCropper/imagecropper_p.h \ @@ -134,6 +111,6 @@ INCLUDEPATH += $$PWD/ \ $$PWD/Sources/HttpServer \ $$PWD/blynk-library-master/src/ \ $$PWD/Sources/Modbus \ - # $$PWD/Lib/QtHTTPServer/include/ \ +# $$PWD/Lib/QtHTTPServer/include/ \ LIBS += -L$$PWD/Lib/QtHTTPServer/ -lQt5HttpServer diff --git a/Sources/Chalet/ChaletData.cpp b/Sources/Chalet/ChaletData.cpp index e16fab0..087ffe3 100644 --- a/Sources/Chalet/ChaletData.cpp +++ b/Sources/Chalet/ChaletData.cpp @@ -12,6 +12,7 @@ CChaletMainStatus::CChaletMainStatus() mHarakiriDone = false; mStatusToggleBit = 0; mLostRequestPercentage = 0; + mChaletTemperature = -100; } @@ -57,6 +58,7 @@ QByteArray CChaletMainStatus::ToByteArray() Strm << mThisStatusDateTime; Strm << mLastLoraStatus; Strm << mStatusToggleBit; + Strm << mChaletTemperature; return Data; } diff --git a/Sources/Chalet/ChaletData.h b/Sources/Chalet/ChaletData.h index 9376b25..7525290 100644 --- a/Sources/Chalet/ChaletData.h +++ b/Sources/Chalet/ChaletData.h @@ -6,6 +6,32 @@ #include +//Read registers +#define CHALET_MODBUS_ONLINE_STATE_REG 2000 +#define CHALET_MODBUS_WIFI_STATE_REG 2001 +#define CHALET_MODBUS_CURRENT_SENSOR_STATE_REG 2002 +#define CHALET_MODBUS_HARAKIRI_DONE_REG 2003 +#define CHALET_MODBUS_STATUS_TOGGLE_REG 2004 +#define CHALET_MODBUS_WATCHDOG_STATUS_REG 2005 +#define CHALET_MODBUS_INVERTER_REG 2006 + +#define CHALET_MODBUS_BATTERY_VOLTAGE_REG_1 2010 +#define CHALET_MODBUS_BATTERY_VOLTAGE_REG_2 2011 +#define CHALET_MODBUS_BATTERY_CURRENT_REG_1 2012 +#define CHALET_MODBUS_BATTERY_CURRENT_REG_2 2013 +#define CHALET_MODBUS_BATTERY_SOC_REG 2014 +#define CHALET_MODBUS_LOST_REQUESTS_REG_1 2015 +#define CHALET_MODBUS_LOST_REQUESTS_REG_2 2016 +#define CHALET_MODBUS_TEMPERATURE_VAL_REG_1 2017 +#define CHALET_MODBUS_TEMPERATURE_VAL_REG_2 2018 + + +//Write registers +#define CHALET_MODBUS_SET_INVERTER_STATE_REG 3000 +#define CHALET_MODBUS_SET_WIFI_STATE_REG 3001 +#define CHALET_MODBUS_REBOOT_CPU_REQUEST_REG 3002 + + class CChaletMainStatus { @@ -34,6 +60,8 @@ public: float mLostRequestPercentage; + float mChaletTemperature; + }; diff --git a/Sources/Chalet/ChaletInterface.cpp b/Sources/Chalet/ChaletInterface.cpp index 6d3cc82..720bc2b 100644 --- a/Sources/Chalet/ChaletInterface.cpp +++ b/Sources/Chalet/ChaletInterface.cpp @@ -7,6 +7,8 @@ CChaletInterface::CChaletInterface(int Address, CAbstractNetworkCommIF *NetworkI mChaletLoraDevice = DevicePtr; mChaletDataLogger = mChaletLoraDevice->GetDataLoggerHandle(); + connect(mChaletLoraDevice,SIGNAL(DeviceWifiStoredParamsReceived()),this,SLOT(DeviceWiFiDataReceived())); + } @@ -94,6 +96,18 @@ int CChaletInterface::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, in delete data; break; } + case CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_REQUEST: + { + mChaletLoraDevice->SendGetWifiParams(); + break; + } + case CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_REQUEST: + { + mChaletLoraDevice->SendSetWifiParams(Data); + break; + } + case CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE: + case CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_RESPONSE: case CHALET_INTERFACE_GET_DATA_LOG_RESPONSE: case CHALET_INTERFACE_GET_TODAYS_DATA_LOG_RESPONSE: case CHALET_INTERFACE_GENERAL_STATUS_RESPONSE: @@ -120,3 +134,9 @@ void CChaletInterface::SendChaletCommActivityBeacon() { mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_CHALET_ACTIVITY_RESPONSE,0,0); } + +void CChaletInterface::DeviceWiFiDataReceived() +{ + QByteArray Data = mChaletLoraDevice->GetDeviceWiFiStoredParams(); + mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE,Data.size(),&Data); +} diff --git a/Sources/Chalet/ChaletInterface.h b/Sources/Chalet/ChaletInterface.h index fcc4ae9..cad7551 100644 --- a/Sources/Chalet/ChaletInterface.h +++ b/Sources/Chalet/ChaletInterface.h @@ -18,6 +18,9 @@ private: CChaletLoraDevice *mChaletLoraDevice; CChaletDataLogger *mChaletDataLogger; +public slots: + void DeviceWiFiDataReceived(); + }; #endif // CCHALETINTERFACE_H diff --git a/Sources/Chalet/ChaletLoraDevice.cpp b/Sources/Chalet/ChaletLoraDevice.cpp index 171854c..dd6f32d 100644 --- a/Sources/Chalet/ChaletLoraDevice.cpp +++ b/Sources/Chalet/ChaletLoraDevice.cpp @@ -1,7 +1,5 @@ #include "ChaletLoraDevice.h" #include "GlobalDefine.h" -#include "ChaletInterface.h" - CChaletLoraDevice::CChaletLoraDevice(int Address, CAbstractNetworkCommIF *NetworkInterface): @@ -16,10 +14,15 @@ CChaletLoraDevice::CChaletLoraDevice(int Address, CAbstractNetworkCommIF *Networ mChaletStatusTimer->setSingleShot(true); connect(mChaletStatusTimer,SIGNAL(timeout()),this,SLOT(CommTimerExpired())); - mJFUbidotsInterface = new CChaletJFUbidotsInterface("BBFF-tEq4lGAegEyP1H4EaYckNQ7ZHdZYzI"); + // mJFUbidotsInterface = new CChaletJFUbidotsInterface("BBFF-tEq4lGAegEyP1H4EaYckNQ7ZHdZYzI"); mThingsBoardInterface.mChaletLoraDevice = this; + mChaletModbusRepo.AddHRDataMap(0x2000,50); + mChaletModbusServer = new CChaletModbusServer(&mChaletModbusRepo,512,1); + + mDeviceWiFiParameters.fill(0xFF); + ResetCommStats(); } @@ -55,6 +58,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i qint16 temp2; qDebug("Chalet Status RX"); char VoltageArray[4]; + char TemperatureArray[4]; char SolarPanelCurrentArray[2]; char BatterySOCArray[2]; @@ -79,6 +83,13 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i memcpy(&temp2,BatterySOCArray,2); mChaletMainStatus.mBatterySOC = temp2; + TemperatureArray[0] = Data[10]; + TemperatureArray[1] = Data[11]; + TemperatureArray[2] = Data[12]; + TemperatureArray[3] = Data[13]; + memcpy(&temp,TemperatureArray,4); + mChaletMainStatus.mChaletTemperature = temp; + mChaletMainStatus.mStatusToggleBit = !mChaletMainStatus.mStatusToggleBit; mChaletMainStatus.mLastLoraStatus = QDateTime::currentDateTime(); @@ -90,18 +101,36 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i mChaletDataLogger.LogChaletLORAData(&mChaletMainStatus); - mJFUbidotsInterface->LogUbidotsChaletData(&mChaletMainStatus); + // mJFUbidotsInterface->LogUbidotsChaletData(&mChaletMainStatus); - mBlynkInterface.UpdateChaletCurrent(mChaletMainStatus.mBatteryCurrent); - mBlynkInterface.UpdateChaletVoltage(mChaletMainStatus.mBatteryVoltage); + // mBlynkInterface.UpdateChaletCurrent(mChaletMainStatus.mBatteryCurrent); + // mBlynkInterface.UpdateChaletVoltage(mChaletMainStatus.mBatteryVoltage); // mBlynkInterface.UpdateChaletWifiStatus((int)mChaletMainStatus.mInverterRelayStatus); - mBlynkInterface.UpdateChaletInverterStatus((int)mChaletMainStatus.mInverterRelayStatus); - mBlynkInterface.UpdateChaletStatusLed(((int)mChaletMainStatus.mStatusToggleBit)*255); + // mBlynkInterface.UpdateChaletInverterStatus((int)mChaletMainStatus.mInverterRelayStatus); + // mBlynkInterface.UpdateChaletStatusLed(((int)mChaletMainStatus.mStatusToggleBit)*255); // mThingsBoardInterface.UpdateChaletVoltage(mChaletMainStatus.mBatteryVoltage); - mThingsBoardInterface.UpdateChaletData(mChaletMainStatus.mInverterRelayStatus,mChaletMainStatus.mWiFiModuleStatus,mChaletMainStatus.mCurrentSensorStatus,mChaletMainStatus.mBatteryVoltage,mChaletMainStatus.mBatteryCurrent,mChaletMainStatus.mBatterySOC,mChaletMainStatus.mIsOnline); + //mThingsBoardInterface.UpdateChaletData(mChaletMainStatus.mInverterRelayStatus,mChaletMainStatus.mWiFiModuleStatus,mChaletMainStatus.mCurrentSensorStatus,mChaletMainStatus.mBatteryVoltage,mChaletMainStatus.mBatteryCurrent,mChaletMainStatus.mBatterySOC,mChaletMainStatus.mIsOnline); + mThingsBoardInterface.UpdateChaletData(&mChaletMainStatus); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_ONLINE_STATE_REG,(quint16)mChaletMainStatus.mIsOnline); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_WIFI_STATE_REG,(quint16)mChaletMainStatus.mWiFiModuleStatus); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_CURRENT_SENSOR_STATE_REG,(quint16)mChaletMainStatus.mCurrentSensorStatus); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_HARAKIRI_DONE_REG,(quint16)mChaletMainStatus.mHarakiriDone); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_STATUS_TOGGLE_REG,(quint16)mChaletMainStatus.mStatusToggleBit); + //mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_WATCHDOG_STATUS_REG,(quint16),mChaletMainStatus.m) + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_INVERTER_REG,(quint16)mChaletMainStatus.mInverterRelayStatus); + + quint16 TempInt16; + memcpy(&TempInt16,&VoltageArray[0],2); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_VOLTAGE_REG_1,TempInt16); + memcpy(&TempInt16,&VoltageArray[2],2); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_VOLTAGE_REG_2,TempInt16); + + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_CURRENT_REG_1,mChaletMainStatus.mBatteryCurrent); + mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_SOC_REG,mChaletMainStatus.mBatterySOC); + break; } case CHALET_AC_POWER_STATE_STATUS_RESPONSE: @@ -167,6 +196,21 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i CmdResponseReceived(CHALET_DO_HARAKIRI_REQUEST); break; } + case CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE: + { + + CmdResponseReceived(CHALET_GET_STORED_WIFI_SETTINGS_REQUEST); + mDeviceWiFiParameters = Data.left(8); + emit DeviceWifiStoredParamsReceived(); + break; + } + case CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE: + { + CmdResponseReceived(CHALET_SET_STORED_WIFI_SETTINGS_REQUEST); + emit DeviceWifiSetParamsResult(Data[0]); + break; + } + default: { return RET_ERROR; @@ -280,6 +324,15 @@ int CChaletLoraDevice::SendRebootCmd() return ScheduleChaletCommand(CHALET_REBOOT_CPU_REQUEST,Data); } +int CChaletLoraDevice::SendGetWifiParams() +{ + return ScheduleChaletCommand(CHALET_GET_STORED_WIFI_SETTINGS_REQUEST,QByteArray()); +} + +int CChaletLoraDevice::SendSetWifiParams(QByteArray Data) +{ + return ScheduleChaletCommand(CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,Data); +} int CChaletLoraDevice::SendChaletCommand(int CmdID, int DataSize, QByteArray Data) { diff --git a/Sources/Chalet/ChaletLoraDevice.h b/Sources/Chalet/ChaletLoraDevice.h index db9a023..792d4e8 100644 --- a/Sources/Chalet/ChaletLoraDevice.h +++ b/Sources/Chalet/ChaletLoraDevice.h @@ -13,6 +13,8 @@ #include "ChaletDataLogger.h" #include "ChaletUbidotsInterface.h" #include "ThingsBoardInterface.h" +#include "ChaletModbusServer.h" +#include "ModbusRepository.h" #define LORA_MAGIC_WORD 0xBAADCAFE @@ -24,7 +26,6 @@ #define LORA_CHALET_STATUS_POWER_RELAY_MASK 0x01 #define LORA_CHALET_STATUS_CUR_SENSOR_MASK 0x02 - class CChaletLoraDevice : public QObject, public CNetworkDevice { Q_OBJECT @@ -39,8 +40,11 @@ public: int Start(); CChaletMainStatus GetChaletMainStatus() {return mChaletMainStatus;} + QByteArray GetDeviceWiFiStoredParams() {return mDeviceWiFiParameters;} CBlynkCloudClient mBlynkInterface; CThingsBoardInterface mThingsBoardInterface; + CChaletModbusServer *mChaletModbusServer; + CModbusRepository mChaletModbusRepo; CChaletMainStatus mChaletMainStatus; QList mPendingNetworkMsgList; @@ -52,6 +56,8 @@ public: CChaletDataLogger *GetDataLoggerHandle() {return &mChaletDataLogger;} //for Interface use... + QByteArray mDeviceWiFiParameters; + int SendWiFiModuleSetState(bool State); @@ -61,12 +67,17 @@ public: int SendChaletCommand(int CmdID,int DataSize, QByteArray Data); int ResetCommStats(); int ComputeCommStats(); + int SendGetWifiParams(); + int SendSetWifiParams(QByteArray Data); int CmdResponseReceived(int CmdID); int ScheduleChaletStatusRequest(); int ScheduleChaletCommand(int CmdID, int DataSize, QByteArray Data); int ScheduleChaletCommand(int CmdID,QByteArray Data); +signals: + void DeviceWifiStoredParamsReceived(); + void DeviceWifiSetParamsResult(char); public slots: void CommTimerExpired(); diff --git a/Sources/Chalet/ChaletModbusServer.cpp b/Sources/Chalet/ChaletModbusServer.cpp index 02ae62d..1ef70f3 100644 --- a/Sources/Chalet/ChaletModbusServer.cpp +++ b/Sources/Chalet/ChaletModbusServer.cpp @@ -5,3 +5,19 @@ CChaletModbusServer::CChaletModbusServer(CModbusRepository *Repo, int ModbusPort { } + +CChaletModbusServer::~CChaletModbusServer() +{ + +} + + +void CChaletModbusServer::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length) +{ + +} + +void CChaletModbusServer::ModbusRequestException(quint8 ExceptionCode, quint8 FctCode) +{ + +} diff --git a/Sources/Chalet/ChaletModbusServer.h b/Sources/Chalet/ChaletModbusServer.h index 56ac060..f168dd8 100644 --- a/Sources/Chalet/ChaletModbusServer.h +++ b/Sources/Chalet/ChaletModbusServer.h @@ -4,6 +4,8 @@ #include #include +class CChaletLoraDevice; + class CChaletModbusServer : public CModbusBackend { Q_OBJECT diff --git a/Sources/Chalet/ThingsBoardInterface.cpp b/Sources/Chalet/ThingsBoardInterface.cpp index 2a7789d..2abb0bd 100644 --- a/Sources/Chalet/ThingsBoardInterface.cpp +++ b/Sources/Chalet/ThingsBoardInterface.cpp @@ -30,7 +30,7 @@ int CThingsBoardInterface::RegisterThingsboardRPC() { QNetworkRequest Req; - Req.setUrl(QUrl("http://192.168.50.100:8085/api/v1/aQIocLkJM2ECSqVT2VRx/rpc")); + Req.setUrl(QUrl("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/rpc")); mThingsBoardRPCReply = mThingsBoardRPCSocket->get(Req); // connect(mThingsBoardRPCReply,SIGNAL(readyRead()),this,SLOT(RPCData())); @@ -49,7 +49,7 @@ void CThingsBoardInterface::UpdateChaletVoltage(float Voltage) QNetworkRequest Req; Req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json"); - Req.setUrl(QUrl("http://192.168.50.100:8085/api/v1/aQIocLkJM2ECSqVT2VRx/telemetry")); + Req.setUrl(QUrl("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/telemetry")); mThingsBoardSocket->post(Req,JsonByteArray); @@ -82,7 +82,7 @@ void CThingsBoardInterface::UpdateChaletData(quint8 mInverterRelayStatus, quint8 QNetworkRequest Req; Req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json"); - Req.setUrl(QUrl("http://192.168.50.100:8085/api/v1/aQIocLkJM2ECSqVT2VRx/telemetry")); + Req.setUrl(QUrl("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/telemetry")); mThingsBoardSocket->post(Req,JsonByteArray); @@ -96,6 +96,39 @@ void CThingsBoardInterface::UpdateChaletData(quint8 mInverterRelayStatus, quint8 // } } +void CThingsBoardInterface::UpdateChaletData(CChaletMainStatus *Data) +{ + QByteArray JsonByteArray = "{\"Bat_Voltage\":"; + JsonByteArray.append((QString("%1, ").arg(Data->mBatteryVoltage)).toUtf8().data()); + + JsonByteArray.append("\"Bat_SOC\":"); + JsonByteArray.append((QString("%1, ").arg(Data->mBatterySOC)).toUtf8().data()); + + JsonByteArray.append("\"WiFi_State\":"); + JsonByteArray.append((QString("%1, ").arg(Data->mWiFiModuleStatus)).toUtf8().data()); + + JsonByteArray.append("\"CurrentSensor_State\":"); + JsonByteArray.append((QString("%1, ").arg(Data->mCurrentSensorStatus)).toUtf8().data()); + + JsonByteArray.append("\"Bat_Current\":"); + JsonByteArray.append((QString("%1, ").arg(Data->mBatteryCurrent)).toUtf8().data()); + + JsonByteArray.append("\"LoRa_State\":"); + JsonByteArray.append((QString("%1, ").arg(Data->mIsOnline)).toUtf8().data()); + + JsonByteArray.append("\"Inverter_State\":"); + JsonByteArray.append((QString("%1, ").arg(Data->mInverterRelayStatus)).toUtf8().data()); + + JsonByteArray = "{\"Temperature_Sensor\":"; + JsonByteArray.append((QString("%1}").arg(Data->mChaletTemperature)).toUtf8().data()); + + QNetworkRequest Req; + Req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json"); + Req.setUrl(QUrl("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/telemetry")); + + mThingsBoardSocket->post(Req,JsonByteArray); +} + void CThingsBoardInterface::ThingsBoardServerFinished(QNetworkReply *NetworkReply) { if(NetworkReply->isFinished() == false) diff --git a/Sources/Chalet/ThingsBoardInterface.h b/Sources/Chalet/ThingsBoardInterface.h index 67f94a7..de94c3f 100644 --- a/Sources/Chalet/ThingsBoardInterface.h +++ b/Sources/Chalet/ThingsBoardInterface.h @@ -5,6 +5,7 @@ class CChaletLoraDevice; #include #include +#include "ChaletData.h" class CThingsBoardInterface : public QObject { @@ -18,6 +19,7 @@ public: int RegisterThingsboardRPC(); void UpdateChaletVoltage(float Voltage); void UpdateChaletData(quint8 mInverterRelayStatus, quint8 mWiFiModuleStatus, qint8 mCurrentSensorStatus, float mBatteryVoltage, qint16 mBatteryCurrent, qint16 mBatterySOC, qint8 LoraState); + void UpdateChaletData(CChaletMainStatus *Data); private: QNetworkAccessManager *mThingsBoardSocket, *mThingsBoardRPCSocket; diff --git a/Sources/LoraNetworkCommIF.cpp b/Sources/LoraNetworkCommIF.cpp index f6e6f5d..d73ead7 100644 --- a/Sources/LoraNetworkCommIF.cpp +++ b/Sources/LoraNetworkCommIF.cpp @@ -61,6 +61,7 @@ int CLoraNetworkCommIF::SetLoraSerialPortSettings(QString PortName, qint32 BaudR int CLoraNetworkCommIF::SendLoraFrame(unsigned short DestAddress, unsigned char DestChannel, QByteArray Payload) { + mLoraDeviceSerialPort.write(GetLoraFrame(DestAddress,DestChannel,Payload)); mLoraDeviceSerialPort.waitForBytesWritten(500); return RET_OK; diff --git a/Sources/MasterCtrl.cpp b/Sources/MasterCtrl.cpp index c7a319c..b936fa4 100644 --- a/Sources/MasterCtrl.cpp +++ b/Sources/MasterCtrl.cpp @@ -92,7 +92,7 @@ void CMasterCtrl::Start() mAVReceiverDevice->Start(); mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings("COM3",QSerialPort::Baud9600); -// mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings("COM5",QSerialPort::Baud9600); +// mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings("COM5",QSerialPort::Baud9600); mChaletLoraDevice->Start(); diff --git a/Sources/NetworkProtocol.cpp b/Sources/NetworkProtocol.cpp index 6c9a517..cc7b2b9 100644 --- a/Sources/NetworkProtocol.cpp +++ b/Sources/NetworkProtocol.cpp @@ -351,7 +351,7 @@ void CNetworkProtocol::PrepareForNewPacket() int CNetworkProtocol::AnalyzeRxBuffer(QByteArray Buffer) { int ret = PROTOCOL_RET_ERROR_EMPTY_BUFFER; -// qDebug("Rx %d bytes",Buffer.size()); + // qDebug("Rx %d bytes",Buffer.size()); for(int i = 0; i < Buffer.size(); i++) { ret = RxStateMachine(Buffer.at(i)); diff --git a/Sources/ProtocolDefs.h b/Sources/ProtocolDefs.h index d38bfa0..31993e0 100644 --- a/Sources/ProtocolDefs.h +++ b/Sources/ProtocolDefs.h @@ -270,6 +270,11 @@ enum CHALET_INTERFACE_CMDS CHALET_INTERFACE_CHALET_ACTIVITY_RESPONSE, CHALET_INTERFACE_GET_DATA_LOG_REQUEST, CHALET_INTERFACE_GET_DATA_LOG_RESPONSE, + CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_REQUEST, + CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE, + CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_REQUEST, + CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_RESPONSE, + MAX_CHALET_INTERFACE_CMD }; @@ -295,6 +300,10 @@ enum CHALET_CMDS CHALET_DO_HARAKIRI_CONFIRMATION, CHALET_REBOOT_CPU_REQUEST, //12 CHALET_REBOOT_CPU_RESPONSE, + CHALET_GET_STORED_WIFI_SETTINGS_REQUEST, //14 + CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE, + CHALET_SET_STORED_WIFI_SETTINGS_REQUEST, + CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE, MAX_CHALET_CMD