Released: 25.02.2018
Additions
- Support multiple
--prepend-file
formicroflo generate
. Can be useful to separate config from secrets, or common config from device-specific.
Released: 24.02.2018
New features
microflo runtime
can connect to device via MQTT instead of USB/serial, useful in Internet-of-Things scenarios. Pass option--serial mqtt://mqtt.example.net/prefix/mything/microflo/
linux-mqtt
target supports MQTT host transport. Run withMSGFLO_BROKER=mqtt://mqtt.example.net ./thing prefix/mything
Bugfixes
- Fixed invalid exported port declarations if using
--enable-maps
and having multiple exported ports
Released: 05.01.2018
Additions
--prepend-file FILE
option formicroflo generate
, includes contents of FILE in generated output. Useful for configuration data, like Arduino library includes, defines for MicroFlo settings etc.
Released: 31.12.2017
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
Breaking changes
- Filenames output by
microflo generate graph.fbp OUTPUT
has changed. All output files now have the prefixOUTPUT
, for instanceOUTPUT.graph.h
orOUTPUT.component.ports.h
. Uses ofmicroflo runtime --componentmap
should now beOUTPUT.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, seeexamples/embedding.cpp
for details. - "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
115200
instead of9600
. Code that relies on the old default should specify--baudrate
and/or defineMICROFLO_ARDUINO_BAUDRATE
accordingly. - The
--library
option formicroflo generate
has been replaced with--components
, which specify directories/files to search for components. Users must update to the new method. Also provided are--ignore-component
and--ignore-component-file
, to exclude components. All these options can be specified multiple times. Default is to automatically include components under./components
.
Removals
- Removed
microflo main
,microflo component
,microflo graph
subcommands from the CLI. These were experimental possible replacements forgenerate
, that did not quite work out. Insteadmicroflo generate
has been improved, for instance via the--mainfile
option. - Removed
microflo upload
subcommand from the CLI. Should instead usemicroflo runtime
and - Removed
MsgSetup
andPacket::isSetup()
Bugfixes
- Fixed initial graph not loading on AVR-based Arduinos when using
--target arduino
instead of--target arduino:avr
- 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
Timer
,DigitalWrite
,AnalogWrite
etc
Internal changes
generate
output uses#include
to gather together the different parts, instead of inlining- The
Reset
FBCS message has been renamed toClearNodes
, and no longer affects network state. The responseNetworkReset
is nowNodesCleared
.
Released: 30.12.2017
Bugfixes
- Fix
microflo runtime
crashing when sending/receiving 'bang' packets (null
)
Was supposed to be released on 17.11.2017, but the NPM package was never published.
Released: 08.11.2017
Breaking changes
- 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.
Platform support
- Linux-MQTT: Send Msgflo discovery messages periodically
Internal changes
- Now uses CoffeeScript 2
Released: 12.10.2017
Bugfixes
- Avoid exception and crash if on protocol errors
Added
- 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--target
option. - microflo generate
--enable-maps
option, allows enabling arrays used with component/node/port/command name strings.
Platform support
- ESP8266: Experimental support for MQTT/Msgflo, by automatically exposing exported in/outports of the graph
Released: 02.08.207
Bugfixes
- Fix exception after removing node/edge
Platform support
- ESP32: Avoid using unimplemented
analogWrite
in Arduino backend on ESP32 devices
Released: 24.07.207
Bugfixes
- Support
--wait-connect 3
option formicroflo runtime
, needed devices like Arduino Uno that reset upon serial connection.
Internal changes
- Bumped most NPM dependencies to latest version
Released: 11.07.2017
Documentation
- New Arduino tutorial available at microflo-example-arduino
- Updated README and CHANGES to reflect progress in 2015-2016
Platform support
- ESP8266: Dedicated backend removed in favor of the Arduino, with the ESP8266 Arduino core
Released: 02.06.2017
Removed
- No longer include Arduino libraries under
thirdparty/
. These are not used, since the components have moved out tomicroflo-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,
and use
microflo generate
to create the Arduino sketch to open/upload.
Released: 01.06.2017
Bugfixes
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
Removed
- component.json file for component.io package manager.
Instead use
microflo
package fromNPM
, which supports both browser and Node.js.
Released: 16.05.2017
New features
microflo runtime
outputs a Flowhub live URL for opening IDE- Opt-in support in
microflo runtime
for signalling aliveness to Flowhub registry. Specify a runtime id using--id UUID
(orMICROFLO_RUNTIME_ID
envvar), and enable using--ping-interval SECONDS
.
Removed
microflo register
. Instead Flowhub IDE will do registration when opening live URL, or one can use theflowhub-registry-register
CLI tool from flowhub-registry.
Released: 07.05.2017
Platform support
- Arduino: Baudrate used is configurable via
MICROFLO_ARDUINO_BAUDRATE
- Tiva/Stellaris: Dedicated backend removed in favor of using Arduino, with Tiva core from Energia project
- Arduino: Implement
TimerMicros()
, used bycore/PseudoPWM
Released: 10.05.2017
New features
- Added a
Error
Packet type, with a set of pre-defined errors:ComponentBug
,UnsupportedType
,UnsupportedValue
,InvalidInput
,OperationFailed
,OperationTimeout
andOther
. Used to signal errors in components, and for error handling components.
Bugfixes
- Fix crash if attempting to remove non-existing node
- Fix exception when used with NoFlo
RemoteSubgraph
due to unsupportedconnect
event
Released: 17.03.2017
New features
- Added a
Pointer
Packet 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.
Platform support
- MQTT: Support de/serializing
float
andbyte
packets - Linux: Serial transport working, creates a device which
microflo runtime --serial
can connect to
Testing
- 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/components
instead of depending on microflo-core
Released: 17.03.2017
Bugfixes
- Fixed edge data subscriptions. Would crash with newer Flowhub version which started sending these messages again.
Released: 16.03.2017
New features
- Live programming now default. Changes in Flowhub applies immediately, no need to hit start/stop to activate the new graph.
microflo generate
can output.ino
sketch which can be opened and uploaded using the standard Arduino IDE.
Internal changes
- Removed separate
componentlib
build, was unused. microflo generate
outputs absolute file paths for includes, makes resolving them work regardless of build setup.
Released: 16.01.2017
New features
- Opt-in support for live programming, graph changes applied automatically when made
Internal changes
- Protocol commands now stored in a dispatch object
- Support start/stop command separately from network reset
- Support removing/deleting individual nodes
Platform support
- Linux
Released: 09.01.2017
Bugfixes
- Fix wrong format in MsgFlo discovery message. Now compatible with
msgflo 0.7+
Internal changes
- Use Arduino IDE 1.8+ with official
arduino-builder
instead of third-partyino
tool - Reworked protocol handling to map FBP/FBCS messages more 1-1. Needed for future live programming support.
Released: 18.12.2016
New features
- More shorthand syntax in
.fbp
DSL, see fbp 1.4 changelog
Internal changes
- Updated to
serialport 4.x.x
Released: 10.06.2016
Platform support:
- Emscripten/browser support moved to microflo-emscripten
Released: 19.04.2016
Testing
- Added tests for roundtripping data to microcontroller and back (using fbp-spec)
- Run Msgflo testa against MQTT Linux support
Released: 19.04.2016
Platform support
- MQTT on Linux supports send/receive on exported ports
Released: 17.04.2016
New features
- Support define
MICROFLO_MESSAGE_LIMIT
for specifying max number of messages. - Added
MessageQueue
API, allows to customize how messages are stored.
Bugfixes
- Fix exporting of outports which are not connected to an inport. Previously needed to workaround by sending to a
Forward
.
Platform support
- Initial Linux backend for MQTT with Msgflo discovery protocol.
Released: 12.05.2015
Experimental support for ESP8266, using a custom backend.
Released: 03.03.2015
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
The simulator and automated tests are now using Emscripten to compile to JavaScript instead of the node.js C++ addon, and can run also in web browser.
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
.
A new 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
TODO: document
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.
New:
- 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
- Programs can be automatically tested when running in simulator, driven from JavaScript/CoffeeScript
Added components:
- 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.
New:
- 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
Added components:
- ReadCapacitivePin
Released: November 27, 2013
Visually programmmable. When using NoFlo UI, one can create MicroFlo graphs visually and upload to an Arduino while running.
New features
- 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).
Added components:
- AnalogRead, MonitorPin, PwmWrite, MapLinear, Split, Gate, Route, BooleanOr
Modified components:
- ToggleBoolean (added reset port), Timer (added reset port)
Removed components:
- ToString (being replaced by graph introspection/debug tools)
Known issues:
- Upload command fails on Windows
- No good way to communicate with host on devices with only one serial
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
New features:
- Added IIP support in .fbp for configuring pins, timer intervals etc.
Added components:
- DigitalRead, InvertBoolean, ReadDallasTemperature, HysteresisLatch, BreakBeforeMake, ArduinoUno, ToString, Delimit
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.
Added components:
- SerialIn, SerialOut, DigitalWrite, Timer, Forward