Top 23 C IoT Projects
Real-time performance monitoring, done right! https://www.netdata.cloudProject mention: What software with web interface do you use? What can you recommend? (Gimmicky or useful software) | reddit.com/r/linux | 2021-09-20
Kinda surprised no one has mentioned netdata
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation atProject mention: How to add LED brightness control to this code - Project Guidance | reddit.com/r/arduino | 2021-09-21
It's why most of us cheat and use a WS281x chip to provide one wire control with the FastLED or NeoPixel libraries. That said, I think the Tasmota project used to have code for brightness control on discrete RGB LEDs.
Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
An open-source big data platform designed and optimized for the Internet of Things (IoT).Project mention: What’s TAOS Data? | reddit.com/r/u_TDengine | 2021-06-03
Join us on GitHub：https://github.com/taosdata/TDengine
An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.Project mention: SQL Database Design | reddit.com/r/algotrading | 2021-09-21
What database are you using? You might be able to use an extension or plugin. For example, TimeScaleDB is an extension for PostgreSQL.
A simple and easy-to-use library to enjoy videogames programmingProject mention: Making a 3d game from scratch with a code editor vs something like Unreal Engine. | reddit.com/r/gamedev | 2021-09-20
Alternatively, I think a good compromise for people who want more control over the inner workings of their game but don't want to use a full game engine is using a game framework like Monogame or Raylib. In our salad analogy, this is like buying a a good bag of lettuce, but growing your own toppings, dressings, etc.
RT-Thread is an open source IoT operating system.Project mention: Rust for Embedded Development | dev.to | 2021-08-17
Now, let's get it on the Open Source RT-Thread operating system to demonstrate how rust can be used for embedded development.
There are subsets of JS for embedded device e.g. Espruino https://github.com/espruino/Espruino for BangleJS https://shop.espruino.com/banglejs also with 4MB or JerryScript https://jerryscript.net
Run Linux Software Faster and Safer than Linux with Unikernels.
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.Project mention: How to contribute to open source or Linux kernel? | reddit.com/r/linux | 2021-09-15
Microcontrollers are a good start. Boards are cheap and sensors are plentiful. You could get a yet unsupported board and port RIOT, Zephyr or NuttX.
🚀 The fastest WebAssembly interpreter, and the most universal runtimeProject mention: Does it make sense to write an interpreter in a non-GC programming language (like Rust or C)? | reddit.com/r/ProgrammingLanguages | 2021-08-11
I wondered if some interpreter for non garbage collected languages existed. I found one for Web assembly https://github.com/wasm3/wasm3 (written in C) There are apparently several C interpreters too.
RIOT - The friendly OS for IoT (by RIOT-OS)Project mention: Is writing an RTOS (for fun) for the Sipeed's Longan Nano practical? | reddit.com/r/RISCV | 2021-09-19
e.g. RIOT only has partial support for the peripherals (just UART, timers and simple GPIO access), you could implement drivers for SPI, I2C or even UART.
WebAssembly Micro Runtime (WAMR)Project mention: How to debug C/C++ compiled to WebAssembly - That One Game Dev | reddit.com/r/programming | 2021-08-29
This is realated to a project I will be probably working on in the future that needs plugins. I want to use wasm/ and https://github.com/bytecodealliance/wasm-micro-runtime to call the plugins. An ABI/platform stable plugin system where whatever compiles to wasm is A-OK. A small loss in perf, but in the use case I am ok with that. Should be interesting. Worst case, I back out and use dlload or whatever.
Cesanta Software mongooses – Update available
Xiaomi Smart Home Device Reverse Engineering and HackingProject mention: Our fridge just emailed us to say we opened its door too many times | news.ycombinator.com | 2021-09-10
A few of the Xaiomi's and Viomi's are rootable. I have a Gen1 Xaiomi and it's brilliant. I got ssh access to the ubuntu install and installed https://github.com/Hypfer/Valetudo and run it 100% local via my home-assistant install.
dgiese is a proficient vacuum security researcher and has most of that stuff available here: https://github.com/dgiese/dustcloud
Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.Project mention: A 1 hour interview for an embedded engineering position | reddit.com/r/C_Programming | 2021-08-24
There are many good and tiny printf's fir embedded on GitHub. https://github.com/mpaland/printf eg Better than the bsd printf mostly
Kamailio - The Open Source SIP Server for large VoIP and real-time communication platforms -
FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.Project mention: UDM Pro listening on undocumented TCP port 2856 with cert valid for 100 years - what is this and how do I turn it off? | reddit.com/r/Ubiquiti | 2021-04-01
FreeSwitch is a telecom stack similar to Asterisk. See here: freeswitch. It would be to support VoIP on the UDMP.
The wolfSSL library is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!Project mention: 5 horrific techniques that will make your co-developers really hate your code | reddit.com/r/programming | 2021-07-01
Ugh. No kidding.
A fast and lightweight fully featured OCI runtime and C library for running containersProject mention: Is Docker Dead in the Water? | reddit.com/r/programming | 2021-05-07
The docker utility isn't the only way to build and run containers. There's also cri-o, podman, and crun among others for running containers. For building there is podman again, Jib for Java applications, and bazel plus many others. The docker approach of using a client to connect to a daemon required to run as root has turned out to be slow and insecure.
Watchy - An Open Source E-Ink SmartwatchProject mention: Watch not keeping time? | reddit.com/r/watchy | 2021-08-12
Also see https://github.com/sqfmi/Watchy/issues/40
Lua RTOS for ESP32Project mention: Lua-RTOS: a real-time operating system for ESP32 | reddit.com/r/hackernews | 2021-06-09
MQTT library for ArduinoProject mention: WIFI BUS CONTOL NOOB QUESTION | reddit.com/r/esp32 | 2021-04-27
Pycopy - a minimalist and memory-efficient Python dialect. Good for desktop, cloud, constrained systems, microcontrollers, and just everything.Project mention: Pycopy 3.5.4 - a minimalist and memory-efficient Python dialect | reddit.com/r/Python | 2021-03-21
Oh, so you're interested to get 100 tomes of technical drawings for SpaceX? You may be out of luck with it, but with any open-source project you're in luck - source to answer all of your questions is right there ;-). https://github.com/pfalcon/pycopy in this case. There's also the testsuite which formally specifies everything Pycopy can do (coverage 97%): https://github.com/pfalcon/pycopy/tree/master/tests . Finally, the docs include the section on specific differences with CPython3.4: https://pycopy.readthedocs.io/en/latest/differences/index.html (but that's human-written, so definitely not complete). By the way, docs are 381 pages rendered as a PDF: https://pycopy.readthedocs.io/_/downloads/en/latest/pdf/ .
WebRTC Library for IoT/Embedded Device using C (by sepfy)Project mention: A simple C implementation to stream H.264 to browser using WebRTC | news.ycombinator.com | 2021-04-07
I think there's some truth in what as-j is saying. Rust binaries (and C++ ones) tend to be larger than C ones. I think the major reasons are (a) Rust dependencies being statically linked due to a lack of ABI stability, (b) inclusion of portions of the (statically linked, see a) Rust standard library used by the program where C code uses libc, (c) code bloat due to monomorphization, (d) the ease of just using a full-featured library where someone writing in C might cheat a little bit. As an example of what I mean by the last point, see sdp_attribute_get_answer in this codebase.  It's writing JSON, but it doesn't use a JSON library that actually escapes the included string. It just assumes the included string doesn't have a quote character in it. Is that assumption valid? Will it always be valid? I'm not sure on quick inspection.
There are ways around all of these:
* a. Static vs dynamic linkage: in an embedded system, it'd be reasonable to just produce a single userspace binary that does everything. It can change its behavior based on argv. I think this is not too unusual for constrained systems even with C binaries. Eg busybox does it. If you only have one binary, you don't need dynamic linking. Also, I think it's not strictly true that Rust doesn't support dynamic linking. I think you can dynamically link everything if you ensure the whole system is built with the same compiler version.
* b. Standard library. You don't have to use it at all, or you can use it sparingly, paying only for what you use.
* c. Monomorphization. You could write (for example) a Go-like map  rather than relying so heavily on monomorphization. I'd love to see someone take this idea as far as possible; it might be a good idea for a lot of non-inner-loop code in general, not just on tight embedded systems.
* d. Using full-featured libraries. Obviously no one is making you do this; the same cheats available in C are available in Rust.
but in fairness, the further you go down this path, the further you are from just being able to just take advantage of the whole Rust ecosystem.
Personally, I'd still rather develop or use a #![no_std] Rust codebase than a C one. Memory safety is important to me. IOT devices are no exception to that. Their security is historically horrible but I'd like to change that.
What are some of the best open-source IoT projects in C? This list will help you:
Are you hiring? Post a new remote job listing for free.