cryptaliagy / pixy Goto Github PK
View Code? Open in Web Editor NEWA multi-target sensor proxy service for secure, efficient IoT. Built for use with Pimoroni Enviro boards
Home Page: https://crates.io/crates/pixy
License: MIT License
A multi-target sensor proxy service for secure, efficient IoT. Built for use with Pimoroni Enviro boards
Home Page: https://crates.io/crates/pixy
License: MIT License
The Pixy server is stateless beyond configuration, so deploying to kubernetes would be an easy way to scale out the service with multiple replicas.
In a multi-target scenario, not every sensor might make sense to be used for every target. If the sensor also outputs a list of tags, Pixy could match against an include/exclude list to more granularly control where messages go
Currently, I have not been able to successfully build an arm64 container in the pipeline. Some more work is required to investigate how to properly build for both amd64 & arm64 targets with a single Dockerfile
Output to InfluxDB should follow a similar pattern to the existing [pimoroni enviro[(https://github.com/pimoroni/enviro) output target to maintain compatibility for existing users
The Enviro Grow board has sensors that might not be available in the current Pixy implementation of a sensor reading. These sensor outputs and their types should be incorporated, and any sensors that are not universally shared should have their types set to an Option<T>
so the models are compatible with all existing boards
Using something like minijinja
, Pixy could have support for pulling environment variables into values for the targets. This would be most useful for adding things like authentication mechanisms (basic auth/bearer auth) for webhooks, as well as for credential access for future targets
After closing #11, basic auth & bearer auth can now be more safely implemented, as there is an alternative to explicitly setting this information in the configuration file.
These should be provided under an auth
key for the webhook, which should support either option depending on which subkeys are used (username/password for basic auth, bearer for bearer auth).
I think it would also be a good idea to emit a warning if basic auth is used to discourage the use of it.
The Enviro Weather board has sensors that might not be available in the current Pixy implementation of a sensor reading. These sensor outputs and their types should be incorporated, and any sensors that are not universally shared should have their types set to an Option<T>
so the models are compatible with all existing boards
The Enviro Urban board has sensors that might not be available in the current Pixy implementation of a sensor reading. These sensor outputs and their types should be incorporated, and any sensors that are not universally shared should have their types set to an Option<T>
so the models are compatible with all existing boards
Some targets might be reserved for abnormal readings (i.e. post to Discord only if temperature > 40°C), and there should be a way to support that.
Minijinja has support for this type of feature. This should probably be integrated into the "enabled" field of each target so that an expression could be used instead
Investigation will be done for what is required for compatibility with this target, but this should (ideally) be compatible with the existing pimoroni enviro target
Support for MQTT targets should also involve some level of templating, possibly with something like minijinja to allow similar functionality to the existing one-topic-per-enviro setup that is used in the pimoroni enviro
Using MQTT is likely to provide better network performance than HTTP, which would directly translate to better battery life for devices that are being powered off of external batteries. By adding an MQTT client data source,
This could be done in 2 ways:
Since the Pixy server has a small memory footprint, I am more inclined to use the second option. This comes with the additional benefit that it allows the existing publish process to continue without having to add any variants or multiple Docker tags per version
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.