We a better architecture... everythin is a block. Every block contains a sensor, actor, interface or logic as hardware-object. Blocks don't need to know their output, they only need to now their inputs. An input for a LD35 sensor is a arudino board for example. To access the output of a block there will be a socket.io Api. via the Uid (unit id) that is stored in the input array, every block can get the relevant data. The path will be like that: /block/:uid/:outputPort (output will be the kind of data you want, e.g.: LD35 has three outputs: voltage, celsius and fahrenheit. It has one input: the arduino board. In this case it doesn't need to subscribe for a datastream. It only needs the boardId to be initilized with the right board.).