Rename Package to packet and fix connections
parent
c8bf9dd471
commit
b6e9d7a1a1
|
|
@ -257,11 +257,11 @@ void IntegrationPluginSma::setupThing(ThingSetupInfo *info)
|
|||
return;
|
||||
}
|
||||
|
||||
connect(meter, &SpeedwireMeter::reachableChanged, this, [=](bool reachable){
|
||||
connect(meter, &SpeedwireMeter::reachableChanged, thing, [=](bool reachable){
|
||||
thing->setStateValue(speedwireMeterConnectedStateTypeId, reachable);
|
||||
});
|
||||
|
||||
connect(meter, &SpeedwireMeter::valuesUpdated, this, [=](){
|
||||
connect(meter, &SpeedwireMeter::valuesUpdated, thing, [=](){
|
||||
thing->setStateValue(speedwireMeterConnectedStateTypeId, true);
|
||||
thing->setStateValue(speedwireMeterCurrentPowerStateTypeId, meter->currentPower());
|
||||
thing->setStateValue(speedwireMeterCurrentPowerPhaseAStateTypeId, meter->currentPowerPhaseA());
|
||||
|
|
@ -331,11 +331,11 @@ void IntegrationPluginSma::setupThing(ThingSetupInfo *info)
|
|||
|
||||
|
||||
// Runtime connections
|
||||
connect(inverter, &SpeedwireInverter::reachableChanged, this, [=](bool reachable){
|
||||
connect(inverter, &SpeedwireInverter::reachableChanged, thing, [=](bool reachable){
|
||||
thing->setStateValue(speedwireInverterConnectedStateTypeId, reachable);
|
||||
});
|
||||
|
||||
connect(inverter, &SpeedwireInverter::valuesUpdated, this, [=](){
|
||||
connect(inverter, &SpeedwireInverter::valuesUpdated, thing, [=](){
|
||||
thing->setStateValue(speedwireInverterTotalEnergyProducedStateTypeId, inverter->totalEnergyProduced());
|
||||
thing->setStateValue(speedwireInverterEnergyProducedTodayStateTypeId, inverter->todayEnergyProduced());
|
||||
thing->setStateValue(speedwireInverterCurrentPowerStateTypeId, -inverter->totalAcPower());
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
typedef struct InverterPackage {
|
||||
typedef struct InverterPacket {
|
||||
quint8 wordCount = 0;
|
||||
quint8 control = 0;
|
||||
quint16 destinationModelId = 0;
|
||||
|
|
@ -108,7 +108,7 @@ public:
|
|||
quint16 fragmentId = 0;
|
||||
quint16 packetId = 0;
|
||||
quint32 command = 0;
|
||||
} InverterPackage;
|
||||
} InverterPacket;
|
||||
|
||||
Speedwire() = default;
|
||||
|
||||
|
|
@ -259,23 +259,23 @@ public:
|
|||
return header;
|
||||
};
|
||||
|
||||
static Speedwire::InverterPackage parseInverterPackage(QDataStream &stream) {
|
||||
static Speedwire::InverterPacket parseInverterPacket(QDataStream &stream) {
|
||||
// Make sure the data stream is little endian
|
||||
stream.setByteOrder(QDataStream::LittleEndian);
|
||||
InverterPackage package;
|
||||
stream >> package.wordCount;
|
||||
stream >> package.control;
|
||||
stream >> package.destinationModelId;
|
||||
stream >> package.destinationSerialNumber;
|
||||
stream >> package.destinationControl;
|
||||
stream >> package.sourceModelId;
|
||||
stream >> package.sourceSerialNumber;
|
||||
stream >> package.sourceControl;
|
||||
stream >> package.errorCode;
|
||||
stream >> package.fragmentId;
|
||||
stream >> package.packetId;
|
||||
stream >> package.command;
|
||||
return package;
|
||||
InverterPacket packet;
|
||||
stream >> packet.wordCount;
|
||||
stream >> packet.control;
|
||||
stream >> packet.destinationModelId;
|
||||
stream >> packet.destinationSerialNumber;
|
||||
stream >> packet.destinationControl;
|
||||
stream >> packet.sourceModelId;
|
||||
stream >> packet.sourceSerialNumber;
|
||||
stream >> packet.sourceControl;
|
||||
stream >> packet.errorCode;
|
||||
stream >> packet.fragmentId;
|
||||
stream >> packet.packetId;
|
||||
stream >> packet.command;
|
||||
return packet;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -285,14 +285,14 @@ inline QDebug operator<<(QDebug debug, const Speedwire::Header &header)
|
|||
return debug.maybeSpace();
|
||||
}
|
||||
|
||||
inline QDebug operator<<(QDebug debug, const Speedwire::InverterPackage &package)
|
||||
inline QDebug operator<<(QDebug debug, const Speedwire::InverterPacket &packet)
|
||||
{
|
||||
debug.nospace() << "InverterPackage(" << package.sourceSerialNumber;
|
||||
debug.nospace() << ", Model ID: " << package.sourceModelId;
|
||||
debug.nospace() << ", command: " << package.command;
|
||||
debug.nospace() << ", error: " << package.errorCode;
|
||||
debug.nospace() << ", fragment: " << package.fragmentId;
|
||||
debug.nospace() << ", package ID: " << package.fragmentId;
|
||||
debug.nospace() << "InverterPacket(" << packet.sourceSerialNumber;
|
||||
debug.nospace() << ", Model ID: " << packet.sourceModelId;
|
||||
debug.nospace() << ", command: " << packet.command;
|
||||
debug.nospace() << ", error: " << packet.errorCode;
|
||||
debug.nospace() << ", fragment: " << packet.fragmentId;
|
||||
debug.nospace() << ", packet ID: " << packet.fragmentId;
|
||||
debug.nospace() << ")";
|
||||
return debug.maybeSpace();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,9 +294,9 @@ void SpeedwireDiscovery::processDatagram(const QHostAddress &senderAddress, quin
|
|||
m_results[senderAddress].modelId = modelId;
|
||||
m_results[senderAddress].serialNumber = serialNumber;
|
||||
} else if (header.protocolId == Speedwire::ProtocolIdInverter) {
|
||||
Speedwire::InverterPackage inverterPackage = Speedwire::parseInverterPackage(stream);
|
||||
Speedwire::InverterPacket inverterPacket = Speedwire::parseInverterPacket(stream);
|
||||
// Response from inverter 534d4100 0004 02a0 0000 0001 004e 0010 6065 1390 7d00 52be283a 0000 b500 c2c12e12 0000 0000 00000 1800102000000000000000000000003000000ff0000ecd5ff1f0100b500c2c12e1200000a000c00000000000000030000000101000000000000
|
||||
qCDebug(dcSma()) << "SpeedwireDiscovery:" << inverterPackage;
|
||||
qCDebug(dcSma()) << "SpeedwireDiscovery:" << inverterPacket;
|
||||
|
||||
if (!m_results.contains(senderAddress)) {
|
||||
SpeedwireDiscoveryResult result;
|
||||
|
|
@ -309,8 +309,8 @@ void SpeedwireDiscovery::processDatagram(const QHostAddress &senderAddress, quin
|
|||
m_results[senderAddress].networkDeviceInfo = m_networkDeviceInfos.get(senderAddress);
|
||||
}
|
||||
|
||||
m_results[senderAddress].modelId = inverterPackage.sourceModelId;
|
||||
m_results[senderAddress].serialNumber = inverterPackage.sourceSerialNumber;
|
||||
m_results[senderAddress].modelId = inverterPacket.sourceModelId;
|
||||
m_results[senderAddress].serialNumber = inverterPacket.sourceSerialNumber;
|
||||
} else {
|
||||
qCWarning(dcSma()) << "SpeedwireDiscovery: Unhandled data received" << datagram.toHex();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendLoginRequest(const QString &passw
|
|||
Speedwire::Command command = Speedwire::CommandLogin;
|
||||
|
||||
// The payload is little endian encoded
|
||||
buildPackage(stream, command, packetId);
|
||||
buildPacket(stream, command, packetId);
|
||||
|
||||
// User type: 7 = user, a = installer
|
||||
stream << (loginAsUser ? static_cast<quint32>(0x00000007) : static_cast<quint32>(0x0000000a));
|
||||
|
|
@ -279,7 +279,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendSoftwareVersionRequest()
|
|||
Speedwire::Command command = Speedwire::CommandQueryDevice;
|
||||
|
||||
// The payload is little endian encoded
|
||||
buildPackage(stream, command, packetId);
|
||||
buildPacket(stream, command, packetId);
|
||||
|
||||
// First and last word
|
||||
stream << static_cast<quint32>(0x00823400);
|
||||
|
|
@ -309,7 +309,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendDeviceTypeRequest()
|
|||
Speedwire::Command command = Speedwire::CommandQueryDevice;
|
||||
|
||||
// The payload is little endian encoded
|
||||
buildPackage(stream, command, packetId);
|
||||
buildPacket(stream, command, packetId);
|
||||
|
||||
// 2 words
|
||||
stream << static_cast<quint32>(0x00821e00);
|
||||
|
|
@ -354,7 +354,7 @@ void SpeedwireInverter::sendNextReply()
|
|||
|
||||
// Pick the next reply and send request
|
||||
m_currentReply = m_replyQueue.dequeue();
|
||||
qCDebug(dcSma()) << "Inverter: --> Sending" << m_currentReply->request().command() << "package ID:" << m_currentReply->request().packetId();
|
||||
qCDebug(dcSma()) << "Inverter: --> Sending" << m_currentReply->request().command() << "packet ID:" << m_currentReply->request().packetId();
|
||||
m_interface->sendData(m_currentReply->request().requestData());
|
||||
m_currentReply->startWaiting();
|
||||
}
|
||||
|
|
@ -403,9 +403,9 @@ void SpeedwireInverter::buildDefaultHeader(QDataStream &stream, quint16 payloadS
|
|||
stream << control;
|
||||
}
|
||||
|
||||
void SpeedwireInverter::buildPackage(QDataStream &stream, quint32 command, quint16 packetId)
|
||||
void SpeedwireInverter::buildPacket(QDataStream &stream, quint32 command, quint16 packetId)
|
||||
{
|
||||
// ========= package header (little endian)
|
||||
// ========= packet header (little endian)
|
||||
// == 7a01842a71b30001
|
||||
|
||||
// 7a01 : destination model id
|
||||
|
|
@ -492,7 +492,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendQueryRequest(Speedwire::Command c
|
|||
quint16 packetId = m_packetId++ | 0x8000;
|
||||
|
||||
// The payload is little endian encoded
|
||||
buildPackage(stream, command, packetId);
|
||||
buildPacket(stream, command, packetId);
|
||||
|
||||
// First and second word
|
||||
stream << firstWord;
|
||||
|
|
@ -995,19 +995,19 @@ void SpeedwireInverter::processData(const QByteArray &data)
|
|||
return;
|
||||
}
|
||||
|
||||
Speedwire::InverterPackage package = Speedwire::parseInverterPackage(stream);
|
||||
if (package.sourceModelId != m_modelId || package.sourceSerialNumber != m_serialNumber) {
|
||||
qCWarning(dcSma()) << "Inverter: Received datagram from different inverter" << package.sourceSerialNumber << "Ignoring data...";
|
||||
Speedwire::InverterPacket packet = Speedwire::parseInverterPacket(stream);
|
||||
if (packet.sourceModelId != m_modelId || packet.sourceSerialNumber != m_serialNumber) {
|
||||
qCWarning(dcSma()) << "Inverter: Received datagram from different inverter" << packet.sourceSerialNumber << "Ignoring data...";
|
||||
return;
|
||||
}
|
||||
|
||||
qCDebug(dcSma()) << "Inverter: <-- Received" << static_cast<Speedwire::Command>(package.command) << "Packet ID:" << package.packetId;
|
||||
qCDebug(dcSma()) << "Inverter: <-- Received" << static_cast<Speedwire::Command>(packet.command) << "Packet ID:" << packet.packetId;
|
||||
//qCDebug(dcSma()) << "Inverter:" << data.toHex();
|
||||
if (m_currentReply && m_currentReply->request().packetId() == package.packetId) {
|
||||
if (m_currentReply && m_currentReply->request().packetId() == packet.packetId) {
|
||||
qCDebug(dcSma()) << "Inverter: Received response for current reply" << static_cast<Speedwire::Command>(m_currentReply->request().command()) << "Packet ID:" << m_currentReply->request().packetId();
|
||||
m_currentReply->m_responseData = data;
|
||||
m_currentReply->m_responseHeader = header;
|
||||
m_currentReply->m_responsePackage = package;
|
||||
m_currentReply->m_responsePacket = packet;
|
||||
// Set the payload
|
||||
while (!stream.atEnd()) {
|
||||
quint8 byte;
|
||||
|
|
@ -1015,7 +1015,7 @@ void SpeedwireInverter::processData(const QByteArray &data)
|
|||
m_currentReply->m_responsePayload.append(byte);
|
||||
}
|
||||
|
||||
if (package.errorCode != 0) {
|
||||
if (packet.errorCode != 0) {
|
||||
m_currentReply->finishReply(SpeedwireInverterReply::ErrorInverterError);
|
||||
} else {
|
||||
m_currentReply->finishReply(SpeedwireInverterReply::ErrorNoError);
|
||||
|
|
@ -1027,7 +1027,7 @@ void SpeedwireInverter::processData(const QByteArray &data)
|
|||
qCWarning(dcSma()) << "Inverter: Received unexpected data: not waiting for any response.";
|
||||
}
|
||||
qCWarning(dcSma()) << "Inverter:" << header;
|
||||
qCWarning(dcSma()) << "Inverter:" << package;
|
||||
qCWarning(dcSma()) << "Inverter:" << packet;
|
||||
qCWarning(dcSma()) << "Inverter:" << data.toHex();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ private:
|
|||
|
||||
// Request builder function
|
||||
void buildDefaultHeader(QDataStream &stream, quint16 payloadSize = 38, quint8 control = 0xa0);
|
||||
void buildPackage(QDataStream &stream, quint32 command, quint16 packetId);
|
||||
void buildPacket(QDataStream &stream, quint32 command, quint16 packetId);
|
||||
|
||||
// Send generic request for internal use
|
||||
SpeedwireInverterReply *sendQueryRequest(Speedwire::Command command, quint32 firstWord, quint32 secondWord);
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ Speedwire::Header SpeedwireInverterReply::responseHeader() const
|
|||
return m_responseHeader;
|
||||
}
|
||||
|
||||
Speedwire::InverterPackage SpeedwireInverterReply::responsePackage() const
|
||||
Speedwire::InverterPacket SpeedwireInverterReply::responsePacket() const
|
||||
{
|
||||
return m_responsePackage;
|
||||
return m_responsePacket;
|
||||
}
|
||||
|
||||
QByteArray SpeedwireInverterReply::responsePayload() const
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public:
|
|||
// Response
|
||||
QByteArray responseData() const;
|
||||
Speedwire::Header responseHeader() const;
|
||||
Speedwire::InverterPackage responsePackage() const;
|
||||
Speedwire::InverterPacket responsePacket() const;
|
||||
QByteArray responsePayload() const;
|
||||
|
||||
signals:
|
||||
|
|
@ -77,7 +77,7 @@ private:
|
|||
|
||||
QByteArray m_responseData;
|
||||
Speedwire::Header m_responseHeader;
|
||||
Speedwire::InverterPackage m_responsePackage;
|
||||
Speedwire::InverterPacket m_responsePacket;
|
||||
QByteArray m_responsePayload;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue