Flow-based programming for heterogeneous systems

Video thumbnail (Frame 0) Video thumbnail (Frame 1754) Video thumbnail (Frame 3017) Video thumbnail (Frame 3886) Video thumbnail (Frame 6271) Video thumbnail (Frame 9986) Video thumbnail (Frame 10543) Video thumbnail (Frame 13868) Video thumbnail (Frame 14543) Video thumbnail (Frame 19019) Video thumbnail (Frame 22883) Video thumbnail (Frame 23442) Video thumbnail (Frame 24031) Video thumbnail (Frame 25599) Video thumbnail (Frame 27163) Video thumbnail (Frame 28334) Video thumbnail (Frame 29023) Video thumbnail (Frame 30468) Video thumbnail (Frame 31433) Video thumbnail (Frame 31980) Video thumbnail (Frame 33833)
Video in TIB AV-Portal: Flow-based programming for heterogeneous systems

Formal Metadata

Flow-based programming for heterogeneous systems
with NoFlo and MicroFlo
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
Heterogeneous systems as found in the Internet of Things are made up of many devices of different types working together. Each device class is typically developed with separate tools using different paradigms. We propose that using NoFlo and MicroFlo one can develop heterogeneous systems consisting of micro-controllers, servers, and mobile devices using flow-based programming (FBP) as an unifying programming model. Systems qualifying for the label "Internet of Things" are often complex hetrogenous systems consisting of many nodes spanning over several device classes, working individually and together to realize the intended function: Microcontrollers w/peripherals are used as sensors and actuators, servers used for data-aggregation and analysis, desktops and mobile devices as user interfaces for monitoring and configuration. Typically each of these classes of device are programmed with separate tools, by different people using different paradigms: for example C/C++ for microcontrollers, Python for servers, JavaScript+HTML5 for user interfaces. This talks aim to introduce flow-based programming (FBP) as a programming paradigm that can be used across and between device classes, and to show how NoFlo and MicroFlo can be used to implement heterogeneous systems. About: NoFlo is a JavaScript-based FBP runtime by Henri Bergius, which runs on Node.js and in the browser. http://noflojs.org MicroFlo is a C++ based FBP runtime by Jon Nordby. It runs on AVR and Cortex-M microcontrollers, including Arduino. http://microflo.org NoFlo and MicroFlo can both be targeted by the NoFlo UI, an IDE for flow-based programming currently in development. Systems can be programmed visually, using a domain-specific language or the runtimes can be embedded and controlled programmatically
Injektivität Intuitionistische Logik Meeting/Interview System programming Internet der Dinge Mereology
Dataflow Component-based software engineering Computer animation Integrated development environment Functional programming Computer programming
Scripting language Run time (program lifecycle phase) Computer animation Code Microcontroller Computer programming
Dataflow Programming language Stapeldatei Graph (mathematics) State of matter Graphische Programmierung Parameter (computer programming) Instance (computer science) Mereology Field (computer science) Connected space Mathematics Component-based software engineering Computer animation Vertex (graph theory) Problemorientierte Programmiersprache Fundamental theorem of algebra
Programming language Server (computing) Standard deviation Game controller Matching (graph theory) Constraint (mathematics) Java applet Software developer Mathematical analysis Computer Element (mathematics) Type theory Component-based software engineering Process (computing) Computer animation Different (Kate Ryan album) Personal digital assistant System programming Object-oriented programming User interface
Computer animation Personal digital assistant
Metre Game controller Server (computing) Uniqueness quantification Combinational logic Mathematical analysis Volume (thermodynamics) Neuroinformatik Element (mathematics) Degree (graph theory) Web 2.0 Goodness of fit Uniform resource locator Message passing Computer animation Software Personal digital assistant PRINCE2
Computer animation Software Personal digital assistant
Time zone Server (computing) Digital electronics Matching (graph theory) Bit Client (computing) Mereology Connected space Web 2.0 Mathematics Message passing Database normalization Computer animation Different (Kate Ryan album) Telecommunication Object-oriented programming Nichtlineares Gleichungssystem Functional programming Sinc function
Game controller Server (computing) Graph (mathematics) Microcontroller Bit Function (mathematics) Mereology Thresholding (image processing) Computer programming Message passing Component-based software engineering Computer animation Personal digital assistant Term (mathematics) Telecommunication Descriptive statistics
Computer animation
Game controller Run time (program lifecycle phase) Computer animation Stress (mechanics) Function (mathematics) Computer programming Connected space
Web 2.0 Server (computing) Game controller Computer animation Client (computing) Computer programming
Server (computing) Computer animation Visualization (computer graphics) Demo (music) Personal digital assistant output Sound effect Right angle Instance (computer science)
Proof theory Computer animation
Server (computing) Component-based software engineering Computer animation System programming Cuboid Microcontroller Web browser Parameter (computer programming) Computer programming
Fluid statics Mathematics Component-based software engineering Computer animation Term (mathematics) Function (mathematics) Computer programming Wave packet
Computer animation
State observer Time zone Server (computing) Game controller Run time (program lifecycle phase) Serial port Multiplication sign Virtual machine Client (computing) Function (mathematics) Software maintenance Computer programming Category of being Computer animation Videoconferencing output System programming
Existential quantification Run time (program lifecycle phase) Serial port Code Multiplication sign Range (statistics) Computer programming Neuroinformatik Medical imaging Component-based software engineering Meeting/Interview Videoconferencing Software framework Bit Instance (computer science) Type theory Arithmetic mean Process (computing) Ring (mathematics) Configuration space Reading (process) Dataflow Server (computing) Game controller Virtual machine Control flow Microcontroller Graph coloring Code Twitter Power (physics) Gaussian elimination Internet forum Lecture/Conference System programming Energy level Software testing Computing platform Condition number Focus (optics) Cellular automaton Interactive television Total S.A. Computer animation Integrated development environment Visualization (computer graphics) Personal digital assistant Video game Communications protocol
Hey OK so those of you who joined us er in the last few minutes uh my name's peter be host for most the day uh this is the devil for Internet of Things thank you very much for coming thanks to the team for organizing this helping with everything uh our 1st speaker is the young not be from Norway who will talk about this and show this and we will have 25 minutes for every session um questions as part of that and if you have stuff you talk about think about much later this you suddenly we have an open session 2 hours will we can talk about these things so I'd like to give young the 1st speaker extra 2 minutes and we can start thank you very much at 1 big and applause for a long time and you're not thinking in the morning so I'm going try do them all the letter but let's start with the injections 1st names living and from knowing as a set and and you talk about phobias programming in intuitionist and systems for ancient systems Hey and
look it up so and for
selling to be useful risk programming does anyone have a concept the idea what for risk for me
is we heard about it for there are a few hands the nominee so ways programming is a data flow oriented way of programming where the key um these you have or components which are an isolated uh pieces of functionality that's perhaps stateless perhaps not uh that you connect with other components to ports so we can look something like this this is no flow Jekyll which is port of Umm Jekyll uh to uh for whisper environment and this is running them
on new jails stop script important thing to note with flawless programming at least the
no-fly microphone so there is no code finish this is not something that you put in something and you get out something else and got to maintain that something else and no way of going back and forth it is a proper runtime even on a microcontroller so you can suspect that there there's um API is for it you can do an adjusted stuff so analyzing it phobist
grow running is not necessarily visual programming it lends itself very nicely to visual programming but uh you can program in other ways this is a as the or about the the field which is a domain-specific language which basically describes the the once the and and yeah this so uh this describes the the graph of the nodes and connections are using the as language it's is quite when natural uh fairly humanly readable and there are 2 key things 0 the 1st to see in the corner we have uh any instance namely component names that instantiation of of a node and then the and Alps batch and trigger that is a connection and those are the 2 fundamental things there's also Lee trolls so sobald piece which are static have and that data is not very different from a connection she said doesn't change and you can for any of those also connect real data and the changes uh both uh microflow flow and the flow haven't betting against so you can use it for part of your parameters of choose um you have something that you feel is very would the state of flow very well Bill itself you don't think is necessarily so you can embed 1 of those and then use of the
so uh 0 what is come nationwide so we
nowadays we have a lot of different systems and in maybe especially Nina of things we have different types of computer systems that we want to integrate together
so the case here is very trivial and is just a heating system which as you have a you why for and has a server for doing logging in potentially analysis and so on and there's my control actually controlling they the heated air heating element and typically you would program the user interface it's native you would do you like Objective C + Java search she something maybe 3 different technologies already there and uh where you couldn't use dollars conditional which might give you an across-the-board solutions for the you bits and on the server side people use things like Python you are really which has different article languages that been told to do ladies and some of the ways of thinking about difference what and my control it's even more different we typically use usable spots you don't really have the opportunities jobs or for so long and probably never will on a really small like so how can we bridge uh and these things together if you wanna have small development team years 1 person whom which you as you will learn that that match and then also take care of all the have if a constraints in the fluent you I which is very nice and smoothly looks pretty other than you want to secure and service systems and you want uh maybe real-time sensitive on my control so and DATA here is useful was programming as a fairly universal metaphor because a components can be back by anything think gives a microphone which runs on the every house here and the components are equals plus In the case of stuff here in you the commands are judged it's no standard on questions but there is a common way of accessing and never sold the goal just jump into the demo and
hope thinking so still running so just
that the you i in this case use OK and what it and
and and that a broken them already here and added is I was just shows the temperature my insist that's just at most trivial but they you would never 1 and have so and try to heat the thing a sensing will change this they give it more of the meter turned off because while rarely 28 degrees is a good indoors temperature viewing the burden that um so and this is then a combination of the web UI and then there is a that terminal and minimal and yeah unique so you just public them so that the server in this case only does so logging so that the server could have which is on my computer in this case that maybe more be a rather or a raspy fire something in them a realistic so um that something them in it you can do the things in my control cannot like enjoyed easily control the heating elements and so on the prince's you want to the analysis of this stuff you like the you might want serve you just install the stuff monitor book so this URL just showing it as this is done then they had a lot of all those messages really trivial just to have all of these in volume I wanna have another in a more realistic case so now for the
software where things get interesting put
away the magic In case sold blue you software and so this is what makes the UI this is a full by squaring of this to build things you
saw that just lists the temperature so far it communicates to the server well that's OK so I'm just an specifying the euro to connect to that I can act and I listen for messages I don't really doing the semis because I just respond to attempt a James on a temperature change by use a half selected for getting the damn want to which I want to manipulate and I just right that so that is how the values of the so this is that the you I knew you can do crazy stuff B eta you see is written using the same tools and a simpler she can do quite and think thinks this is the server and the others about slows no I can but and so this 1 has a web circuit uh server I configured here so you see this is the port the matches what I have on the client side and then it just listens for connections these are 4 requests we don't do anything with should keep requests which is problem of 4 and the connections we again have listen to messages to you and this is just for the bug and we the same connection so decline connects I get that in here and then I pass that to send message so that I can send a message back using same connection and um here is up and the 5 things is owed Zone C C C appear that those are the are the same functionalities so they together they form the handling of WebSocket communication so um the server acts as edges server begets a confirmation from kick which is star stole thing and since confirmation on and then the server uh will you connections when 1 find comes on you get 1 connection that goes on to move to listen to messages I have constructed conservative using the yeah and equation was odd these 5 and uh he says uh like uh RDA webserver already ordered have I made it would serve with these things if I understand question so this they handle separate parts of the same problem princes if I want to do to handle different clients differently I would need to do something else than just
pass all the connections on I might want to say OK if you're on this hosts without host and I'll do something different with a connection object that gets passed along and this is uh just shooting everything the same that's why looks very uh lose a bit redundant because there's just a straight line and
the other part here is communication with a microcontroller and this is where things get a bit more interesting uh this component allows me to take a graph which is a description of the program my control this is what I have my control and neck but in here so the server actually programs to microcontroller as it should be In this case just the terms that and and then it will give me itself with here that's how I am achieving the temperature data from my control and that is then it says send to the ought to work so that uh just a minute to go out to the thermal and I'm opening it involves let's look so the last piece is what's actually running a microcontroller and it's the same principles again is is amended simple program to explain because it's very simple logically I have a timer component which fires a message every everywhere is set to in this case thousand was again on 2nd and when that happens or when that sends a message on the that triggers the next component decrease the temperature from this digital that in which sensor it goes through stresses latch so let I can't different threshold for went to I think to cooler than to drop it so that the temperature fluctuates around something and go on off on off on off like crazy and um because I wanted the output to be on when it's that too cold and I had to put in there just write that status to the output which is in this case the lady that would normally be the relay for clear so um fundamental and again SELCO's show us a brief thing and
the end of the of the of the
of the this is the so and this is the chromosome I controlling do you see the values change this is me observing the the values of the data that's going through the program inside my control so as a runtime can introspect that I can say OK what are the values of this connection between the
temperature and the latch so if I 1 know if if it's working correctly or not and these down here are the outputs that are here so I can determine cases um and that's a stress is working correctly or not and I can introspect is visually which is quite but a powerful tool Hey hey and arguing back to and send the
data from the web server to the client side after that and that is and
so you could have that the someone here that represents the my control program In the server and yet so the question is and if the amino resins are now right now there's a hack in and this I I I I knew the program and then using the introspection facilities that showed before to retrieve the value and it will work differently at quite soon so that and yes so what I did and
I would it's you and yet and there yes that is possible to do and sorry the question was um the visual right for instance and how it it has an input and it's has a side effect of being actually an triggering early B and then it passes Alpert put on in in this case In the server and looking into this value at the temperature of an so this'll work slightly differently soon this is just for the demo I'll talk about them now
and and
and so this is a this is very much a proof of concept right now it's very rough it's I'm
glad it worked on at all
and this concept of combining suffers running in the browser
on a server on a microcontroller and then thinking about systems include all of them together it is very much in in this in early stages for frivolous parameters and the son of so what we want to do now is a finish the microphone component so was a way of and getting microprogram that's run here and represented on the server the uh that should be done automatically right now says that was a hike and and then we will allow you to expose ports and smell BUY features so when you have this we have this program you should be able to say OK and I'll I'll draw a box all them and I 1 expose reference not temperature out to the outside world and well
maybe the the output here just to be able to do verified from a server-side and
the end of an there their components should unlikely reflect the
change that you make in the program that the that component represents that's training of handle all answers static and this term components they have it here this when I blow that up to be
that I should just be able to double click single there by now the see the the different tabs in my idea actually different there are 2 different ideas is the same idea that the princess's added should be more integrated Henry has made a public
promise that this award may switch and so and we also want to do the same kind of stuff for the uh the bridging between servers and clients so now I The goal was WebSocket handling myself with feelings of do not to care that this was a serial of use speed my control should be the same between client and the and and the service so just be say OK observer so on me given somehow and it has this program this program has certain inputs and some outputs and I just wanted to be able to look into lots and the division flat and and here this is very much a hard hierarchical system they you lies on top server and there's my control and uh 1 also think about having friends and say pikemen time just a runtime brings say machine collaborating as peers additive and that the more equals and not just 1 is a slave or the other and I'd also ties in with specialized maintenance video processing zone and 1 of the some properties that is not just so you so that's what I have open for
questions and there will be stickers for those who gets
that spoke asserting in how do you deal
with very slowly all of responding
sensors at time of value which you can catch and then the trial to whatever so right now there's no watched on functionality and like that but it's definitely and natural thing to making the framework we have a server which no system you can my controller and has even knowledge of this soffits was run on the it should verify that gets responding as it should and if not cheap Gilad started or whatever its service for like questions because could you tell me the footprint of the constructed and so on the termite control here is and are non a which is set at Nola may 3 2 8 the most common 1 and it's running it with the uh and bad bytes of trend and something like go and 16 K of program for the standard image as it can run on and a 80 tiny which has a a total of 700 that but some semester in that so it's it's it's pretty low wasn't so is there a so the critical you're using to help you out you know or the users just the little you're reading serial the so the condition with the odd renowned here is serial use being Abbott protocol that I have 1 it is like on several levels so that I consider just this to be just mean transport friends and I also have a similar runtime that's runs that can run my control programs on my computer and there I just have a transport which is just getting jobs without so I can I will and I also have transpose like get you to be and followers of makes sense we is a whole whole open is no focus over there was a Kickstarter for its soul is there a close component to it or so what always say 1 thing all the code that you saw here is opened its own it and now yeah so no flow no followers all MIT license both the server-side and client-side than you are and mainly the the license with what we talk about the Kickstarter's more for the convenience of not having to instances of yeah you look at the service but you if you want you can just install everything will machinery a service will be even thought which is so a more questions I want those because I have many can't look at the question to pose definitely worth color exploring the range of use cases you see this in the cool because of this is the life of the of the of the image and video audio processing so that's the thing was that there was a over all the to that I mean this was not my controller this is my controller an embedded Linux machine or what might on a Linux machine and the Quran rust by rather and as browser those are the 3 platforms that we enable right now so whatever you can do on a normal machine would no S we have no JS API for and you can without inductively had and places that would this would not be natural and use cases that I see and naive focus on our and whole moderation where the user might want to configure something's cell so that programming is not something that only the program at us but there is a fluent um kind uh you can move between looking at you to tweaking a bit to hacking system to really making that thing and that's elimination coding system that interactive art I'm working with some surmised that so things that the reaction environment visuals and I reacted physical sensors on that Masri nicely to data flow easily and and then there's more than traditional embedded type things we have a microcontroller the my control the power of the reveal embedded linux systems and and the I'm working there on trying to get much better automated test so the runtime ice said about my ring my computer that allows me to write tests what might control program adjusted using more about the book of job thank could actually have like universal thing also um we have 5 minute break melanin lover MacSpeech thank you very much