OneVariable is working on a new product: Poststation.
the Poststation device interface
Poststation is not yet available for purchase. This page is currently a summary of planned features. Information subject to change before launch.
Want early access? Send us an email to contact@onevariable.com
We've been working on a project called "Poststation", which is the "pro tool toolkit" for postcard and postcard-rpc. Poststation serves as a reverse proxy for devices: the goal is to make it painless to work with multiple embedded devices, and allow you to control, observe, and manage them all from your desktop, a laptop, or embedded linux machines.
A block diagram of how user programs can talk to devices through Poststation
We want people to build systems where you can have small, simple, microcontrollers that have simple but important jobs: spinning motors, reading sensors, driving LEDs, speaking weird serial protocols. The kind of things that are easy to do in a microcontroller, but harder to do even on embedded linux, and even harder from a high power desktop or laptop.
Instead of trying to make a big computer do little computer things, or trying to shove 10 jobs inside a single microcontroller, where it gets complicated to keep all the plates spinning, you should be able to throw together a couple "so simple it can't go wrong" devices, and let the big computer, with real CPU power, networking, and user interfaces, orchestrate the whole thing.
Just like backend developers use reverse proxies, like NGINX or Apache, to make a fleet of microservices appear like one cohesive system, we want embedded developers to be able to use Poststation to be the glue that ties all of those independent pieces together.
This is going to sound a bit like "microservices for microcontrollers", and it kind of is that! It's easier to build and test a couple simple things, and make sure they work in isolation. But this only works if integrating and coordinating between them is just as easy, or easier, than doing it all in one place.
Poststation handles all of the communication with your embedded devices. Today, our main interface is USB, since it is fast, commonly available, and supported by relatively cheap embedded systems like the Raspberry Pi RP2xxx devices. Support for other interfaces is planned, like serial ports, SPI, I2C, and RS-485, for when you need something a little lighter or more robust than what USB gives you.
Poststation can enumerate all of the connected devices, and discover all of the capabilities that they offer. This is "Service Discovery". This means you get true "plug and play" capabilities, and if you ever update your devices, Poststation will automatically know what new capabilities you have added.
automatically discover devices and their endpoints
It also keeps a rolling history of every message sent to or from your devices, which means you can look back at historical data, decode old messages, or even get a full sequence of events, like looking at a Wireshark capture for ethernet.
All of the management is done by Poststation, which can then act as the "front desk" for the parts of your software that live on the big computer.
Poststation gives you a couple ways to look at and interact with your connected devices. You can use these for any connected device, and for different stages of your development process
view connected and disconnected devices
Today, you can use the TUI - a text user interface, to see an overview of connected devices, the kinds of interfaces they offer, and a live view of any logs or other messages they are sending or receiving. This is all presented in a human readable format - no need for hex editors to look at the binary data!
view live and historical logs
The CLI, a Command Line Interface, lets you enter data in JSON, and will automatically translate any messages from the device back into JSON, so you can work with it directly as a human, while the device still speaks a compact binary format.
list devices and their states
If you want to put together a quick script to check the hardware is working, or follow the logs, or just poke around, you can use the CLI. This lets you send one-off messages, follow streamed data, or tail the logs of your devices. This is great for quick experimentation!
send individual endpoint messages, or subscribe to a topic
We are also developing a GUI application - a graphical user interface, which will allow you to interactively fill out data to send to your device, as well as view graphs of data over time, and quickly see the status of all of your devices.
If you're building your system with Rust on the big computer too, Poststation has an SDK that allows you to programmatically talk with your devices, in a faster and more efficient way than just using command line calls. You can speak the same postcard binary format with the server over a socket, allowing you to send and receive messages from as many tasks, threads, or applications as you'd like, to better match what your system does.
inside of rust: use native types and a fully async api
Just like with the CLI and TUI, you can also query historical data, which means you don't need to manage buffering of data in every application, you can do things like view trend lines, or even debounce buttons and other events totally in software.
Not using Rust for your desktop application? That's fine too! Poststation offers a REST API for all of the functionality we've mentioned, which also supports WebSockets for streaming data to or from your devices.
use python (or any other language) with the REST api
You can use Python, NodeJS, Go, or any other language which can speak HTTP, and all messages are automatically translated to JSON, making it easy to bridge the gap between embedded systems and any ecosystem
run repeatable scripts using Poststation
Poststation is aimed at being useful for the entire development cycle, from prototyping to production. For individual developers, we'll be offering a single user version of Poststation as a one-time purchase. This will include all of the features shown above, and will ship with support for Windows, MacOS, and Linux.
Stay tuned for the launch of the single user version of Poststation!
We are now offering development previews of Poststation to companies interested in shipping the Poststation server as part of their products and embedded systems. This version includes all features above, and is designed to be shipped as a part of headless devices to manage device communication.
run the poststation server as a headless service
Contact us at contact@onevariable.com for pricing and early access details!