Released: 25.02.2018
Additions
- Support multiple
--prepend-fileformicroflo generate. Can be useful to separate config from secrets, or common config from device-specific.
Released: 24.02.2018
New features
microflo runtimecan 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-mqtttarget supports MQTT host transport. Run withMSGFLO_BROKER=mqtt://mqtt.example.net ./thing prefix/mything
Bugfixes
- Fixed invalid exported port declarations if using
--enable-mapsand having multiple exported ports
Released: 05.01.2018
Additions
--prepend-file FILEoption 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 OUTPUThas changed. All output files now have the prefixOUTPUT, for instanceOUTPUT.graph.horOUTPUT.component.ports.h. Uses ofmicroflo runtime --componentmapshould 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.cppfor 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
115200instead of9600. Code that relies on the old default should specify--baudrateand/or defineMICROFLO_ARDUINO_BAUDRATEaccordingly. - The
--libraryoption formicroflo generatehas been replaced with--components, which specify directories/files to search for components. Users must update to the new method. Also provided are--ignore-componentand--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 graphsubcommands from the CLI. These were experimental possible replacements forgenerate, that did not quite work out. Insteadmicroflo generatehas been improved, for instance via the--mainfileoption. - Removed
microflo uploadsubcommand from the CLI. Should instead usemicroflo runtimeand - Removed
MsgSetupandPacket::isSetup()
Bugfixes
- Fixed initial graph not loading on AVR-based Arduinos when using
--target arduinoinstead 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,AnalogWriteetc
Internal changes
generateoutput uses#includeto gather together the different parts, instead of inlining- The
ResetFBCS message has been renamed toClearNodes, and no longer affects network state. The responseNetworkResetis nowNodesCleared.
Released: 30.12.2017
Bugfixes
- Fix
microflo runtimecrashing 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--targetoption. - microflo generate
--enable-mapsoption, 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
analogWritein Arduino backend on ESP32 devices
Released: 24.07.207
Bugfixes
- Support
--wait-connect 3option 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 generateto 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
microflopackage fromNPM, which supports both browser and Node.js.
Released: 16.05.2017
New features
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--id UUID(orMICROFLO_RUNTIME_IDenvvar), 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-registerCLI 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
ErrorPacket type, with a set of pre-defined errors:ComponentBug,UnsupportedType,UnsupportedValue,InvalidInput,OperationFailed,OperationTimeoutandOther. 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
RemoteSubgraphdue to unsupportedconnectevent
Released: 17.03.2017
New features
- 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.
Platform support
- MQTT: Support de/serializing
floatandbytepackets - Linux: Serial transport working, creates a device which
microflo runtime --serialcan 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/componentsinstead 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 generatecan output.inosketch which can be opened and uploaded using the standard Arduino IDE.
Internal changes
- Removed separate
componentlibbuild, was unused. microflo generateoutputs 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-builderinstead of third-partyinotool - 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
.fbpDSL, 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_LIMITfor specifying max number of messages. - Added
MessageQueueAPI, 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