Skip to content

IPEM Integration with MQTT

Dave Williams | DitroniX | G8PUO edited this page May 26, 2023 · 4 revisions

The IPEM IPEM_1_Test_Code_ATM90E32_ATM90E36 (230526 onwards), includes direct publishing of MQTT messages.

Example Messages

IPEM PlatformIO - MQTT Example

IPEM PlatformIO - MQTT Example in MQTT Explorer

Examples of Available Variables

  • LineVoltage1, LineVoltage2, LineVoltage3, LineVoltageTotal, LineVoltageAverage
  • LineCurrentCT1, LineCurrentCT2, LineCurrentCT3, LineCurrentCT4, LineCurrentCTN, LineCurrentTotal
  • CalculatedPowerCT1, CalculatedPowerCT2, CalculatedPowerCT3, CalculatedPowerCT4, CalculatedPowerCTN, CalculatedTotalPower
  • ActivePowerCT1, ActivePowerCT2, ActivePowerCT3, TotalActivePower, CalculatedTotalActivePower
  • ActivePowerImportCT1, ActivePowerImportCT2, ActivePowerImportCT3, TotalActivePowerImport
  • ActivePowerExportCT1, ActivePowerExportCT2, ActivePowerExportCT3, TotalActivePowerExport
  • ReactivePowerCT1, ReactivePowerCT2, ReactivePowerCT3, TotalReactivePower, CalculatedTotalReactivePower
  • ApparentPowerCT1, ApparentPowerCT2, ApparentPowerCT3, TotalApparentPower, CalculatedTotalApparentPower
  • TotalActiveFundPower, TotalActiveHarPower
  • PowerFactorCT1, PowerFactorCT2, PowerFactorCT3, TotalPowerFactor
  • PhaseAngleCT1, PhaseAngleCT2, PhaseAngleCT3
  • ChipTemperature, LineFrequency

Value Formatting

PublishMQTTMessage(String SensorName, float SensorValue, int dPlaces = 1, int dWidth = 5, int dQOS = 0)

  • Default options are provided for dPlaces (typically 0,1,2 etc.), _dWidth _(typically 5), and **dQOS **(typically 0 or 1)

  • The sensor name forms part of the MQTT Topic. For example: ipem/'SensorName'

The MQTT Payload includes formatting options within the message, as highlighted above. This typically is the number of decimal places to display and publish.

`// Test Message Example.`

`PublishMQTTMessage("LineVoltage1", LineVoltage1);`

`PublishMQTTMessage("ActivePowerCT1", ActivePowerCT1, 0);`

`PublishMQTTMessage("ActivePowerCT2", ActivePowerCT2, 0);`

`PublishMQTTMessage("ActivePowerCT3", ActivePowerCT3, 0);`

`PublishMQTTMessage("LineFrequency", LineFrequency, 2);`

Enabling MQTT

Within MQTT.h, the below user options are provided:

// MQTT Server info. Setup with your MQTT Configration

const char *MQTTServer = "192.168.1.12"; // MQTT Server IP Address (Typically a Fixed Local Address)

int MQTTPort = 1883; // MQTT Network Port (Default 1883)

boolean EnableMQTT = true; // Change to true to enable read Loop and sending data to MQTT. Default false.

const char *MQTTUser = ""; // MQTT User - if applicable

const char *MQTTPassword = ""; // MQTT Password - if applicable

String MQTTTopicMain = "ipem"; // MQTT Default Topic. Exclude the trailing /