Interface Ispindel + dev ChaletInterface

This commit is contained in:
2021-12-12 12:21:21 -05:00
parent 1dadad4b09
commit 8aafc96dbd
23 changed files with 849 additions and 30 deletions
+11
View File
@@ -8,6 +8,7 @@ CChaletInterface::CChaletInterface(int Address, CAbstractNetworkCommIF *NetworkI
mChaletDataLogger = mChaletLoraDevice->GetDataLoggerHandle();
connect(mChaletLoraDevice,SIGNAL(DeviceWifiStoredParamsReceived()),this,SLOT(DeviceWiFiDataReceived()));
connect(mChaletLoraDevice,SIGNAL(DeviceFirmwareVersionReceived()),this,SLOT(DeviceFirmwareVersionReceived()));
}
@@ -106,6 +107,10 @@ int CChaletInterface::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, in
mChaletLoraDevice->SendSetWifiParams(Data);
break;
}
case CHALET_INTERFACE_GET_FIRMWARE_VERSION_REQUEST:
{
mChaletLoraDevice->SendGetFirmwareVersion();
}
case CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE:
case CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_RESPONSE:
case CHALET_INTERFACE_GET_DATA_LOG_RESPONSE:
@@ -140,3 +145,9 @@ void CChaletInterface::DeviceWiFiDataReceived()
QByteArray Data = mChaletLoraDevice->GetDeviceWiFiStoredParams();
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE,Data.size(),&Data);
}
void CChaletInterface::DeviceFirmwareVersionReceived()
{
QByteArray Data = mChaletLoraDevice->GetDeviceFirmwareVersion();
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_GET_FIRMWARE_VERSION_RESPONSE,Data.size(),&Data);
}
+1
View File
@@ -20,6 +20,7 @@ private:
public slots:
void DeviceWiFiDataReceived();
void DeviceFirmwareVersionReceived();
};
+34 -21
View File
@@ -22,6 +22,7 @@ CChaletLoraDevice::CChaletLoraDevice(int Address, CAbstractNetworkCommIF *Networ
mChaletModbusServer = new CChaletModbusServer(&mChaletModbusRepo,512,1);
mDeviceWiFiParameters.fill(0xFF);
mDeviceFirmwareVersion.fill(0xFF);
ResetCommStats();
}
@@ -56,7 +57,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
{
float temp;
qint16 temp2;
qDebug("Chalet Status RX");
// qDebug("Chalet Status RX");
char VoltageArray[4];
char TemperatureArray[4];
char SolarPanelCurrentArray[2];
@@ -94,10 +95,10 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
mChaletMainStatus.mLastLoraStatus = QDateTime::currentDateTime();
CmdResponseReceived(CHALET_GENERAL_STATUS_REQUEST);
qDebug("voltage: %f",mChaletMainStatus.mBatteryVoltage);
// qDebug("voltage: %f",mChaletMainStatus.mBatteryVoltage);
// qDebug("Current: %d",mChaletMainStatus.mBatteryCurrent);
// qDebug("SOC: %d",mChaletMainStatus.mBatterySOC);
qDebug("Inverter: %d",mChaletMainStatus.mInverterRelayStatus);
// qDebug("Inverter: %d",mChaletMainStatus.mInverterRelayStatus);
mChaletDataLogger.LogChaletLORAData(&mChaletMainStatus);
@@ -114,22 +115,22 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
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);
// 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);
// 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);
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_CURRENT_REG_1,mChaletMainStatus.mBatteryCurrent);
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_SOC_REG,mChaletMainStatus.mBatterySOC);
break;
}
@@ -141,7 +142,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
}
case CHALET_AC_POWER_SET_STATE_RESPONSE:
{
qDebug("Lora set Inverter Power response : 0x%d",(int)Data[0]);
// qDebug("Lora set Inverter Power response : 0x%d",(int)Data[0]);
mChaletMainStatus.mInverterRelayStatus = Data[0];
CmdResponseReceived(CHALET_AC_POWER_SET_STATE_REQUEST);
break;
@@ -164,7 +165,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
}
case CHALET_WIFI_SET_STATE_RESPONSE:
{
qDebug("Lora set WiFi response : 0x%d",(int)Data[0]);
// qDebug("Lora set WiFi response : 0x%d",(int)Data[0]);
mChaletMainStatus.mWiFiModuleStatus = Data[0];
CmdResponseReceived(CHALET_WIFI_SET_STATE_REQUEST);
break;
@@ -210,6 +211,13 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
emit DeviceWifiSetParamsResult(Data[0]);
break;
}
case CHALET_GET_FIRMWARE_VERSION_RESPONSE:
{
CmdResponseReceived(CHALET_GET_FIRMWARE_VERSION_REQUEST);
mDeviceFirmwareVersion = Data.left(15);
emit DeviceFirmwareVersionReceived();
break;
}
default:
{
@@ -252,7 +260,7 @@ void CChaletLoraDevice::CommTimerExpired()
ComputeCommStats();
}
qDebug("Sending chalet request 0x%x",mPendingNetworkMsgList.at(0).mMessageID);
// qDebug("Sending chalet request 0x%x",mPendingNetworkMsgList.at(0).mMessageID);
mPendingNetworkMsgList[0].PendingResponse = true;
SendChaletCommand(mPendingNetworkMsgList.at(0).mMessageID,mPendingNetworkMsgList.at(0).mData.size(),mPendingNetworkMsgList.at(0).mData);
@@ -334,6 +342,11 @@ int CChaletLoraDevice::SendSetWifiParams(QByteArray Data)
return ScheduleChaletCommand(CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,Data);
}
int CChaletLoraDevice::SendGetFirmwareVersion()
{
return ScheduleChaletCommand(CHALET_GET_FIRMWARE_VERSION_REQUEST,QByteArray());
}
int CChaletLoraDevice::SendChaletCommand(int CmdID, int DataSize, QByteArray Data)
{
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_DEVICE,mDeviceAddress,CmdID,DataSize,&Data);
@@ -352,7 +365,7 @@ int CChaletLoraDevice::CmdResponseReceived(int CmdID)
qDebug("Chalet is ONLINE!");
}
qDebug("Chalet response received from cmd: 0x%x",CmdID);
//qDebug("Chalet response received from cmd: 0x%x",CmdID);
if(mPendingNetworkMsgList.size() == 0)
{
qDebug("Cmd ack received but list is empty!!!");
+6
View File
@@ -41,6 +41,7 @@ public:
CChaletMainStatus GetChaletMainStatus() {return mChaletMainStatus;}
QByteArray GetDeviceWiFiStoredParams() {return mDeviceWiFiParameters;}
QByteArray GetDeviceFirmwareVersion() {return mDeviceFirmwareVersion;}
CBlynkCloudClient mBlynkInterface;
CThingsBoardInterface mThingsBoardInterface;
CChaletModbusServer *mChaletModbusServer;
@@ -57,6 +58,7 @@ public:
CChaletDataLogger *GetDataLoggerHandle() {return &mChaletDataLogger;} //for Interface use...
QByteArray mDeviceWiFiParameters;
QByteArray mDeviceFirmwareVersion;
@@ -69,15 +71,19 @@ public:
int ComputeCommStats();
int SendGetWifiParams();
int SendSetWifiParams(QByteArray Data);
int SendGetFirmwareVersion();
int CmdResponseReceived(int CmdID);
int ScheduleChaletStatusRequest();
int ScheduleChaletCommand(int CmdID, int DataSize, QByteArray Data);
int ScheduleChaletCommand(int CmdID,QByteArray Data);
bool IsInverterON(){return mChaletMainStatus.mInverterRelayStatus == 1;}
signals:
void DeviceWifiStoredParamsReceived();
void DeviceWifiSetParamsResult(char);
void DeviceFirmwareVersionReceived();
public slots:
void CommTimerExpired();
+27 -5
View File
@@ -119,7 +119,7 @@ void CThingsBoardInterface::UpdateChaletData(CChaletMainStatus *Data)
JsonByteArray.append("\"Inverter_State\":");
JsonByteArray.append((QString("%1, ").arg(Data->mInverterRelayStatus)).toUtf8().data());
JsonByteArray = "{\"Temperature_Sensor\":";
JsonByteArray.append("\"Temperature_Sensor\":");
JsonByteArray.append((QString("%1}").arg(Data->mChaletTemperature)).toUtf8().data());
QNetworkRequest Req;
@@ -173,7 +173,7 @@ void CThingsBoardInterface::ThingsBoardRPCFinished(QNetworkReply *NetworkReply)
{
if(mThingsBoardRPCReply->error() != QNetworkReply::NoError)
{
qDebug("Network error (ThingsBoardRPC)... %d", mThingsBoardRPCReply->error());
// qDebug("Network error (ThingsBoardRPC)... %d", mThingsBoardRPCReply->error());
RegisterThingsboardRPC();
return;
}
@@ -204,17 +204,17 @@ void CThingsBoardInterface::ThingsBoardRPCFinished(QNetworkReply *NetworkReply)
if(RequestedState == true)
{
qDebug("Server Inverter TURN ON request received.");
mChaletLoraDevice->SendInverterPowerRelayState(true);
// mChaletLoraDevice->SendInverterPowerRelayState(true);
}
if(RequestedState == false)
{
qDebug("Server Inverter TURN OFF request received.");
mChaletLoraDevice->SendInverterPowerRelayState(false);
// mChaletLoraDevice->SendInverterPowerRelayState(false);
}
}
else if(RequestedCmd.toString().contains("setWiFiState"))
else if(RequestedCmd.toString().contains("setChaletWiFiState"))
{
//Fetch the required state.
QString RequestedState = RPCCmd.value("params").toString();
@@ -227,6 +227,28 @@ void CThingsBoardInterface::ThingsBoardRPCFinished(QNetworkReply *NetworkReply)
qDebug("Server WiFi TURN OFF request received.");
}
}
else if(RequestedCmd.toString().contains("getChaletInverterState"))
{
qDebug("Inverter state request received");
QByteArray JsonByteArray;
int ReqID = RPCCmd.value("id").toInt();
if(mChaletLoraDevice->IsInverterON())
{
JsonByteArray = "{\"InverterSwitchState\":\"1\"}";
}
else
{
JsonByteArray = "{\"InverterSwitchState\":\"0\"}";
}
QNetworkRequest Req;
// QString URL = QString("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/rpc/%1").arg(ReqID);
QString URL = QString("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/attributes");
Req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
Req.setUrl(QUrl(URL));
mThingsBoardSocket->post(Req,JsonByteArray);
}
else
{
qDebug("Received an unknown RPC call from ThingsBoard server");