On 2020-04-23 12:21, Florian Forster wrote:
Hi Denys,
right now, the network plugin treats a zero time as an error and won't
pass the metric on to the daemon. The "collectd.org/network" Go
package doesn't appear to do this check.
How does sleeping work on the ESP8266? Could you keep track of the
time spent sleeping and increment the time accordingly, only
synchronizing with an external time source every once in a while?
Unfortunately there is no reliable RTC onboard, the one exist doesn't
work
well with deep sleep (it resets on wake up, probably chipset or SDK
bug),
and even without deep_sleep it have a lot of problems with timekeeping,
it is drifting on cheap modules.
So only solution for timekeeping is NTP.
While not an issue on "mains" powered modules, on battery setup extra
NTP
packets exchange causes significant drain in power budget.
And honestly, collectd protocol already looks way better for IP enabled
sensors
than overhyped MQTT/CoAP, as they require not only time sync (for TLS),
but also TCP handshake, then TLS handshake, their own auth handshake and
etc. etc.
While on collectd its easy to do "fire and forget" and it saves a lot of
battery energy.
I would in principle be open to changing (and documenting) the
semantics so that "time == 0" means "fill in time when receiving". We
might make this behavior a config option of the network plugin,
though, as it may create consistency problems when using multiple
servers.
I can try to write patch, for example:
Extending sockent_t by adding there uint8_t (or int) "options"
parameter,
where certain optional bits can be set.
So, for example bit 0 will be "ZERO_AS_CURRENT_TIME"
Then, maybe, it can be set in config as optional, third parameter for
"Listen" socket.
Like:
Listen "ff18::efc0:4a42" "ZeroAsCurrentTime"
Best regards,
—octo
On 2020-04-19 13:19, Denys Fedoryshchenko wrote:
Hi!
I wrote minimal collectd binary protocol implementation for
microcontroller ESP8266,
https://github.com/nuclearcat/collectd-embedded .
Whole point is to collect data from multiple battery sensors, and
collectd can save a lot of time, as it is udp and works as "fire and
forget".
But one problem remains, chip don't have RTC, so i have to NTP each
"wake up" to send "time" tag with timestamp.
Is there any hack to not send time, or send as zero or something, so
it will be marked by collectd automatically as N/NOW(), as in
plaintext protocol ?
I read wiki for binary protocol, checked sources, but quick search
didn't hinted me at anything.
Any help appreciated.
_______________________________________________
collectd mailing list
[email protected]
https://mailman.verplant.org/listinfo/collectd
_______________________________________________
collectd mailing list
[email protected]
https://mailman.verplant.org/listinfo/collectd