Publish blind position to MQTT when packet is received

This commit is contained in:
2023-12-13 20:59:03 +11:00
parent 80ea823fae
commit cffae2bfe5
2 changed files with 22 additions and 1 deletions

View File

@@ -29,3 +29,5 @@ lib_deps =
PacketCRC=symlink://..\PowerViewSniffer\lib\PacketCRC PacketCRC=symlink://..\PowerViewSniffer\lib\PacketCRC
PacketBuilder PacketBuilder
PacketParser=symlink://..\PowerViewSniffer\lib\PacketParser

View File

@@ -7,6 +7,7 @@
#include <EspMQTTClient.h> #include <EspMQTTClient.h>
#include <PacketReceiver.h> #include <PacketReceiver.h>
#include <PacketBuilder.h> #include <PacketBuilder.h>
#include <PacketParser.h>
#include "secrets.h" #include "secrets.h"
#define SER_BAUDRATE (115200) #define SER_BAUDRATE (115200)
@@ -22,6 +23,7 @@ static const uint8_t rfID[2] = { 0xC8, 0x2E }; // 0x2EC8
PacketReceiver packetReceiver(&radio); PacketReceiver packetReceiver(&radio);
PacketBuilder remotePacketBuilder(0x369E, 0xAC, 0x82, 0x06); PacketBuilder remotePacketBuilder(0x369E, 0xAC, 0x82, 0x06);
PacketBuilder hubPacketBuilder(0x0000, 0x3D, 0x96, 0x05); PacketBuilder hubPacketBuilder(0x0000, 0x3D, 0x96, 0x05);
PacketParser packetParser;
EspMQTTClient client( EspMQTTClient client(
SECRET_WIFI_SSID, // Wifi SSID SECRET_WIFI_SSID, // Wifi SSID
@@ -115,7 +117,24 @@ void radioTransmitSetup() {
} }
void processPacket(const uint8_t *buffer) { void processPacket(const uint8_t *buffer) {
Serial.println("Got packet"); Message message;
bool result = packetParser.parsePacket(buffer, message);
if (result) {
if (message.type == PacketType::PUBLISH_FIELDS) {
PublishFieldsParameters parameters = std::get<PublishFieldsParameters>(message.parameters);
for (size_t i = 0; i < parameters.fields.size(); i++) {
Field field = parameters.fields[i];
if (field.identifier == 0x50) {
if (message.source == 0x4EF1) {
uint16_t value = std::get<uint16_t>(field.value);
uint8_t position = (uint8_t)std::round(((float)value / 0xFFFF) * 100);
String payload = String(position);
client.publish("hotdog/test_mqtt_blind/position", payload, true);
}
}
}
}
}
} }
void sendCommand(uint8_t *buffer) //transmit a command void sendCommand(uint8_t *buffer) //transmit a command