GithubHelp home page GithubHelp logo

paulcollinsiii / iot-boards Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 392 KB

Software for my iot projects

License: BSD 3-Clause "New" or "Revised" License

C 91.64% CMake 1.37% Dockerfile 0.02% Smarty 1.22% Shell 0.41% Makefile 0.16% Python 5.19%

iot-boards's People

Contributors

dependabot[bot] avatar paulcollinsiii avatar

Watchers

 avatar  avatar

iot-boards's Issues

MQTT Logging Channel

Local logging is extremely helpful for direct local debugging, but remote logging is needed

  • StructLog like writing
  • to the MQTT logging channel
  • Logging capture on the Kube side, prometheus like support?
  • Initial testing would be via a PING command on the command handler to dump the PONG message out on the response as well as to the log channel

SensorMgr Location Names

Metadata needs to be able to have a friendly location name set on the sensor so that we can track which sensor is which from it's reported data a bit more easily

  • Location is stored in NVS
  • Location is pushed as part of the metadata field of measurement data, so as to not show up in every single measurement but rather once per batch sent
  • telegraf is configured to include that metadata for each row that's being added (is this possible?)
  • grafana dashboads updated so that labeled lines show up with the location name (as opposed to the device UUID)

Refactoring of WiFi Provision and setup options

  • S2 will be wifi only
  • Will need extra configuration options
  • Local console provision script for testing setup?
  • How to add a reset firmware button press
  • Some kind of user feedback via LED's for status and resetting firmware

Mqtt simple setup

  • Basic publish of a message to some test server from board
  • Hardcoded authentication for now is fine, no TLS
  • simple docker container for running mqtt broker, set QoS 0? Quick client to show message published

Alarm Features

  • Oneshot should actually be supported
  • There's a long running crash, potentially timing related interaction between senor read, wifi beacon, and alarm firing? Any extra heap corruption detection that can be done?
  • If the device reboots, alarms are gone. That's not okay. NVS and wear-leveling though is also going to be really annoying, so store it in cloud and pull on reboot?

Device Support E-Ink display

This will likely be a huge effort to add as getting the device on there is moderate complexity but getting the graphics libraries setup is probably high complexity.

Lvgl did most of the graphic library, translate driver for support and the are utter examples of ppl using it for eink displays

Simple Alarm clock (blinky-light!)

  • Alarms configured via crontab style entry
  • Alarms simply flash LED (GPIO #13) for 5 seconds for now
  • Can CRUD alarms via MQTT
    • Need hooks to register commands with the MQTT command channel handler
    • Python test util to send in alarm commands from CLI

Kube startup dependencies

Pods need inter-pod dependencies before they report as ready

e.g. Almost everything depends on the infuxdb being up before other traffic should be accepted

LiFi based proof of ownership extension

This would allow the device to send a long string securely to a mobile device and prove that you physically possess the device. There are some example apps out there for working with LiFi on Android and there is a couple Arduino libraries for sending data but they seem simplistic at the moment. Further digging is needed but this is very much a case of over engineering

MQTT Encryption / Authentication

MQTT is completely unauthenticated and sent in the clear. This isn't high-security stuff, but at the same time it should at least be authenticated. Get a hardcoded example of TLS or equiv authentication working on the board. Self-signed certs are fine for now, later maybe a real signed cert would be good.

https://github.com/fhessel/esp32_https_server

Little Mella feature set

This alarm feature is based on the idea that the kid alarm clock is missing features. Duplicating things like the

  • light colors
  • increasing brightness over time
  • nap timer
  • Cutsy Face animations

Capacitive Button Support

Need a couple buttons on the board:

  • Immediate attempt to connect to WiFi button
  • Immediate dump ring buffer to disk and send system to power off state (deepsleep it?)
  • Each button should have some kind of feedback via the led or neopixel

Sensor Telemetry Reporting

Battery Data

  • Battery levels sent via sensormgr
  • Low battery sets a light to flashing on the board (NeoPixel on S2, GPIO13 on ESP32)

Filesystem Data

  • Disk freespace reported via sensormgr (very low datarate needed for this)

CPU Temp

  • Same idea, report via sensormgr

OTA Update support

DevOps stuff needed:

  • Some way to serve static files from Kubernetes
  • SSL certificate setup and signing. This will probably need some extra details from cert-manager to get that signing chain and verify the certificates it's currently creating for the Pods
  • Some way of uploading the static files to the Kube so that we don't have to redeploy ever time we compile

IOT stuff needed:

  • Build version should not just be the datestring of the compilation. I mean it can be the timestamp, but it should only be rebuilding when there are changes. That'll be a dig into the toolchain because it currently rebuilds every time it's requested to when it doesn't need to
    - [ ] OTA build output needs to be signed somehow and uploaded to the Kube for serving
  • How do we name builds for the hardware to know what it's suppose to download?

Capacitive button for refresh

Hook up a GPIO to a conductive strip and see if that's enough to make a refresh button out of. If so then it's worth adding that as a button for refreshing the display and putting it on a timer to refresh it again after a couple minutes. Guard against pushing it too often to prevent breaking the e-ink

SHT4X Sensor Support

Can probably copy most of the SHTC3 sensor code over, but update this to support the 4x sensor

  • Update the command channel to support similar settings
  • Update the protobuf test script to test commands sent to this sensor

SensorMgr Command Handlers

Features needed:

  • Set polling interval
  • Start / Stop Polling
  • Set sensor metadata? (e.g. location, friendly name)

Metadata needs to be able to have a friendly location name set on the sensor so that we can track which sensor is which from it's reported data a bit more easily

  • Location is stored in NVS
  • Location is pushed as part of the metadata field of measurement data, so as to not show up in every single measurement but rather once per batch sent
  • telegraf is configured to include that metadata for each row that's being added (is this possible?)
  • grafana dashboads updated so that labeled lines show up with the location name (as opposed to the device UUID)

Connect shtc3 to huzzah32

  • Be able to read data off it at configurable rate
  • Be able to echo that data over the serial line if a command is received over serial to do so
  • Add a serial command library

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.