This is a Go library for the Smart Message Language (SML) protocol, which is used by electricity meters in Germany. An optical interface on the meter repeatedly transmits SML messages containing current meter readings.
The main purpose of this library is to extract the meter readings from these messages.
If you consider using this library for another purpose, keep in mind that it only supports reading, and that many SML types are not implemented. However, it should still be able to parse any well-formed SML data. For unimplemented types, only the raw TLV (tag-length-value) items are reported.
For reference, a small example application is included. It supports reading SML data from a file or from a Tibber Pulse Bridge.