- Support multiple
microflo generate. Can be useful to separate config from secrets, or common config from device-specific.
microflo runtimecan connect to device via MQTT instead of USB/serial, useful in Internet-of-Things scenarios. Pass option
linux-mqtttarget supports MQTT host transport. Run with
MSGFLO_BROKER=mqtt://mqtt.example.net ./thing prefix/mything
- Fixed invalid exported port declarations if using
--enable-mapsand having multiple exported ports
--prepend-file FILEoption for
microflo generate, includes contents of FILE in generated output. Useful for configuration data, like Arduino library includes, defines for MicroFlo settings etc.
There is now basic support for components coming from multiple sources, including libraries. Components provided by MicroFlo project are now split into 3:
- microflo-core: Generally useful, non-platform-specific components
- microflo-arduino: Ardunio-specific components
- microflo-contrib: Everything else
- ./components: Application-specific components
- Filenames output by
microflo generate graph.fbp OUTPUThas changed. All output files now have the prefix
OUTPUT, for instance
OUTPUT.component.ports.h. Uses of
microflo runtime --componentmapshould now be
OUTPUT.component.map.json. Build system that only use the main.cpp/ino file should not need to change. Code embedding MicroFlo and including the intermediate outputs must change, see
- "Setup" packets are no longer sent on network start. All components must wait for a regular packet/IIP before sending outputs.
- Default baudrate is now
9600. Code that relies on the old default should specify
microflo generatehas been replaced with
--components, which specify directories/files to search for components. Users must update to the new method. Also provided are
--ignore-component-file, to exclude components. All these options can be specified multiple times. Default is to automatically include components under
microflo graphsubcommands from the CLI. These were experimental possible replacements for
generate, that did not quite work out. Instead
microflo generatehas been improved, for instance via the
microflo uploadsubcommand from the CLI. Should instead use
- Fixed initial graph not loading on AVR-based Arduinos when using
--target arduinoinstead of
- Network no longer stops executing when Flowhub goes from live mode to edit/project mode.
- microflo-core 0.6.0: Components no longer resets state on network:start (thanks to removal of Setup messages).
Affected components included
#includeto gather together the different parts, instead of inlining
ResetFBCS message has been renamed to
ClearNodes, and no longer affects network state. The response
MicroFlo 0.5.1 / 0.5.2
microflo runtimecrashing when sending/receiving 'bang' packets (
Was supposed to be released on 17.11.2017, but the NPM package was never published.
- Requires ES6 support, meaning Node.js 6+ or a modern browser. Older environments are not supported.
- AVR: Remove dedicated backend. Users should either use Arduino, or ship their own backend.
- Linux-MQTT: Send Msgflo discovery messages periodically
- Now uses CoffeeScript 2
- Avoid exception and crash if on protocol errors
- microflo generate
--mainfile file.hpp, allows chosing which file to include to the firmware entrypoint (
main()or similar). Defaults value is based on the existing
- microflo generate
--enable-mapsoption, allows enabling arrays used with component/node/port/command name strings.
- ESP8266: Experimental support for MQTT/Msgflo, by automatically exposing exported in/outports of the graph
- Fix exception after removing node/edge
- ESP32: Avoid using unimplemented
analogWritein Arduino backend on ESP32 devices
--wait-connect 3option for
microflo runtime, needed devices like Arduino Uno that reset upon serial connection.
- Bumped most NPM dependencies to latest version
- New Arduino tutorial available at microflo-example-arduino
- Updated README and CHANGES to reflect progress in 2015-2016
- ESP8266: Dedicated backend removed in favor of the Arduino, with the ESP8266 Arduino core
- No longer include Arduino libraries under
thirdparty/. These are not used, since the components have moved out to
microflo-core. Users of such components are now responsible for including the libraries themselves.
microflo flash. Never worked well, and uploading/flashing device is out-of-scope. Instead users should use the upload tools included with their platform (Arduino etc).
- No longer produces Arduino library .zip. Instead users should install microflo via NPM,
microflo generateto create the Arduino sketch to open/upload.
microflo runtime: No longer hangs if engine does not reply on serialport, instead times out and exits.
microflo runtime: Fix live url missing host/port defaults
- component.json file for component.io package manager.
NPM, which supports both browser and Node.js.
microflo runtimeoutputs a Flowhub live URL for opening IDE
- Opt-in support in
microflo runtimefor signalling aliveness to Flowhub registry. Specify a runtime id using
MICROFLO_RUNTIME_IDenvvar), and enable using
microflo register. Instead Flowhub IDE will do registration when opening live URL, or one can use the
flowhub-registry-registerCLI tool from flowhub-registry.
- Arduino: Baudrate used is configurable via
- Tiva/Stellaris: Dedicated backend removed in favor of using Arduino, with Tiva core from Energia project
- Arduino: Implement
TimerMicros(), used by
- Added a
ErrorPacket type, with a set of pre-defined errors:
Other. Used to signal errors in components, and for error handling components.
- Fix crash if attempting to remove non-existing node
- Fix exception when used with NoFlo
RemoteSubgraphdue to unsupported
- Added a
PointerPacket type, a tagged boxed pointer. Used when embedding MicroFlo and wishing to pass non-trivial datastructures through graph. Not copyable, so packet lifetime must be (carefully!) handled by the embedding code. Not serialize/deserializable either.
- MQTT: Support de/serializing
- Linux: Serial transport working, creates a device which
microflo runtime --serialcan connect to
- Added C++ unit test setup for engine, and new packet types
- Tests now run against the native Linux backend (with serial) instead of microflo-emscripten
- Tests now have their own components under
test/componentsinstead of depending on microflo-core
- Fixed edge data subscriptions. Would crash with newer Flowhub version which started sending these messages again.
- Live programming now default. Changes in Flowhub applies immediately, no need to hit start/stop to activate the new graph.
microflo generatecan output
.inosketch which can be opened and uploaded using the standard Arduino IDE.
- Removed separate
componentlibbuild, was unused.
microflo generateoutputs absolute file paths for includes, makes resolving them work regardless of build setup.
- Opt-in support for live programming, graph changes applied automatically when made
- Protocol commands now stored in a dispatch object
- Support start/stop command separately from network reset
- Support removing/deleting individual nodes
- Fix wrong format in MsgFlo discovery message. Now compatible with
- Use Arduino IDE 1.8+ with official
arduino-builderinstead of third-party
- Reworked protocol handling to map FBP/FBCS messages more 1-1. Needed for future live programming support.
- More shorthand syntax in
.fbpDSL, see fbp 1.4 changelog
- Updated to
- Emscripten/browser support moved to microflo-emscripten
- Added tests for roundtripping data to microcontroller and back (using fbp-spec)
- Run Msgflo testa against MQTT Linux support
- MQTT on Linux supports send/receive on exported ports
- Support define
MICROFLO_MESSAGE_LIMITfor specifying max number of messages.
MessageQueueAPI, allows to customize how messages are stored.
- Fix exporting of outports which are not connected to an inport. Previously needed to workaround by sending to a
- Initial Linux backend for MQTT with Msgflo discovery protocol.
Experimental support for ESP8266, using a custom backend.
All host-side code converted to CoffeeScript.
Released: January 4, 2015
Initial support for Texas Instruments Stellaris/Tiva
Released: December 16, 2014
Project moved to MicroFlo Github organization
Released: October 12, 2014
Serial support has now been integrated in Flowhub Chrome app, starting with version 0.1.12. Download
Several program size optimations have been made, which lets MicroFlo fit in devices with 16kB memory.
One can now specify which component set to include using
make build LIBRARY=arduino-minimal.
PureFunctionComponent2 component base-class simplifies implementation of components which
are pure functions with 2 arguments.
Released: July 5, 2014
Removed MicroFlo Chrome app in favor of integrated MicroFlo serial support in NoFlo UI. A release of NoFlo UI is bundled with this release.
Released: June 30, 2014
MicroFlo 0.3.0: "Node in a Node, to infinity"
Released: May 8, 2014
The IDE used is now the officially supported app.flowhub.io, and there is basic support for several non-Arduino platforms. A Chrome app can act as the communications adapter between IDE and runtime on device, making running node.js in the terminal no longer neccesary.
- One can now introspect data flowing along edges in NoFlo UI
- Upload output is now shown in NoFlo UI
- Experimental Atmel AVR8 backend, without any Arduino dependencies. Tested on AT90USB1287 w/ AT90USBKEY
- Basic mbed backed, tested on mbed LPC 1768
- Basic Tiva/Stellaris backed, tested on Tiva-C TM4C123G
- Experimental Embedded Linux backend, using standard sysfs GPIO interface.
- Makefile now has additional variables for overriding: ARDUINO, SERIALPORT
- Host/simulator API has been extended to also cover HostCommunication/commandstream
- LedMatrixMax, LedChainWS, LedChainNeoPixel, PseudoPwmWrite, NumberEquals, BooleanAnd
Released: December 21, 2013
Installing on Mac OSX and Windows no longer requires a C++ compiler, as node-serialport binaries for those platforms are included.
- Documentation extended to cover persisting graphs on device, and creating custom components.
- Message and node capacity is now configurable at compiletime, to adapt to different devices Example: -DMICROFLO_NODE_LIMIT=10 -DMICROFLO_MESSAGE_LIMIT=10 reduces SRAM usage to ~350 bytes
MicroFlo 0.2.0: "The start of something visual"
Released: November 27, 2013
Visually programmmable. When using NoFlo UI, one can create MicroFlo graphs visually and upload to an Arduino while running.
- Releases now contains both an pre-made Arduino library and a customized NoFlo UI IDE.
- Added support for running on Mac OSX and Windows, in addition to GNU/Linux.
- Added a tutorial documenting how to get started with MicroFlo on Arduino devices.
- Added commandline options for configuring debug levels, serial port and WebSocket port
In addition many improvements were made to host<->microcontroller communication and runtime scalability. Basic Node.JS bindings were added to be able to run MicroFlo programs and tests also in the host (temporarily disabled for release).
- AnalogRead, MonitorPin, PwmWrite, MapLinear, Split, Gate, Route, BooleanOr
- ToggleBoolean (added reset port), Timer (added reset port)
- ToString (being replaced by graph introspection/debug tools)
- Upload command fails on Windows
- No good way to communicate with host on devices with only one serial
MicroFlo 0.1.0: "The Fridge"
Released: September 22, 2013
Minimally useful. Can write a .fbp program implementing the thermostat and cooler control for a fridge, without any hardcoding or hacks. Link
- Added IIP support in .fbp for configuring pins, timer intervals etc.
- DigitalRead, InvertBoolean, ReadDallasTemperature, HysteresisLatch, BreakBeforeMake, ArduinoUno, ToString, Delimit
MicroFlo 0.0.2: "A blink, an echo"
Released: September 9, 2013
Proof-of-concept working on an Arduino Uno. Can write .fbp program which echos back communication on the serial port, or blinks an LED at a hardcoded interval and pin.
- SerialIn, SerialOut, DigitalWrite, Timer, Forward