needed-libraries icon indicating copy to clipboard operation
needed-libraries copied to clipboard

IoT common libraries

Open cocoaway opened this issue 6 years ago • 11 comments

Pure nim MQTT client

cocoaway avatar Nov 26 '17 09:11 cocoaway

+1

majj avatar Jul 28 '18 05:07 majj

Definitely +1 for MQTT. Would be awesome to have MQTTv5

pigmej avatar Aug 16 '18 07:08 pigmej

https://github.com/zevv/nmqtt

zevv avatar Mar 14 '20 08:03 zevv

IoT also requires portable binary serialization with very dense encoding and fragmentation+retry support:

  • LoRaWAN works with packages not more than 50 bytes (in a worst-case), and sensor nodes can be built on dead-end low-profile microcontrollers such as ATtiny/ATmega8/STM32F030.
  • CAN bus: 8 bytes packages

ponyatov avatar Jun 22 '20 04:06 ponyatov

Generic binary parser generator/library required for arbitrary protocol description. The symmetrical parser must have: generate both data decoder and encoder from single declarative grammar specification.

  • http://kaitai.io
  • https://github.com/zeek/binpac

Option for procedural switch/automata code generation (not tables) required for debugging.

ponyatov avatar Jun 22 '20 04:06 ponyatov

Full cross-compiler support at least for STM32F0/L0 series, Arduino and Raspberry Pi.

  • STM32L0 mostly used in IoT modems, some vendors provide user code integration

ponyatov avatar Jun 22 '20 04:06 ponyatov

For IoT applications Nim requires integration with newlib+FreeRTOS+FAT32+lwip for all embedded devices, and bare metal i386 (IoT platform over unikernel): threading, realtime task switching, lwip, minimal file system (maybe RAM-only stub, but SD cards require at least FAT32 support).

  • http://elm-chan.org/fsw/ff/00index_e.html
  • https://www.silabs.com/documents/public/application-notes/AN0030.pdf
  • https://www.nongnu.org/lwip/2_1_x/index.html

ponyatov avatar Jun 22 '20 07:06 ponyatov

For IoT server: embedded Linux or unikernel, message-passing distributed computing including load balancing and on-demand scalability, async Web server/interface with process control widgets, and math&ML plugins interface (for custom user data analysis).

ponyatov avatar Jun 22 '20 07:06 ponyatov

End nodes require a DSP library for measurement processing and signal filtering.

ponyatov avatar Jun 22 '20 07:06 ponyatov

Bindings on littelvGLl for embedded GUI would be useful

Clonkk avatar Jun 22 '20 08:06 Clonkk

Use c2nim to create the bindings you need

teroz avatar Jun 22 '20 11:06 teroz