m_count określa ilość pomiarów w tablicy m[].
Nie może być większe od EM_MEASUREMENT_COUNT
period określa przybliżony czas pomiędzy pomiarami w m[].
measured_values - każdy bit określa jakie dane przesyłasz EM_VAR_*
Funkcja srpc_evtool_v1_emextended2extended służy do "upchnięcia" TElectricityMeter_ExtendedValue w TSuplaChannelExtendedValue
W nagłówku swojej płytki musisz dodać poniższą definicję
Następnie
Kod: Zaznacz cały
void ICACHE_FLASH_ATTR supla_esp_board_set_channels(
TDS_SuplaDeviceChannel_C *channels, unsigned char *channel_count) {
*channel_count = 1;
channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_ELECTRICITY_METER;
supla_esp_em_get_value(0, channels[0].value);
}
Następnie dodajesz implementację funkcji
Kod: Zaznacz cały
char ICACHE_FLASH_ATTR supla_esp_board_get_measurements(
unsigned char channel_number, TElectricityMeter_ExtendedValue *value) {
};
W niej podstawiasz odpowiednie wartości do value i zwracasz 1 jeśli od ostatniego wywołania nastąpiły jakieś zmiany w odczycie lub jest to pierwsze wywołanie od czasu restartu układu. W każdym innym przypadku zwracasz 0.
Nie musisz nic konwertować. Wszystko sprowadza się do kilku linijek jak powyżej.