Frequently Asked Questions

What sensors and devices are supported?

The first release of will support the following sensors and devices:

  • Tinkerforge bricklets: Ambient Light, Barometer, Dual Button, GPS, Humidity, IO-4, Motion Detector, Rotary Encoder, Temperature.
  • XBee® ZB Sensors (combined temperature, humidity and light).
  • GPS/GNSS receivers via serial port NMEA 0183 protocol.
  • Devices connected via UART/RS-232 ports.
  • GPIO ports (via Linux sysfs interface).
  • 3-Axis Accelerometers (via Linux /dev/input/event).

More devices and sensors will be supported over time. We will soon support industrial protocols like Modbus and CANopen. We also welcome contributions!

What OS platforms are supported? currently supports Linux (ARM and Intel) and macOS. Most of the code is platform independent and compiles on all platforms supported by the POCO C++ Libraries (including Windows and Windows Embedded Compact). However, the build system currently only supports Linux and OS X, specifically when it comes to building the V8 engine. Android should work as well, but is currently untested.

How is different from node.js/io.js?

While both and node.js/io.js use the same underlying JavaScript engine (V8), there are significant differences:

  • supports multiple concurrent, but independent scripts, each one running in its own thread.
  • The JavaScript programming model is not strictly asynchronous. To keep things simple (and avoid callback spaghetti), many calls are blocking, although for lengthier I/O operations callback/event-based interfaces are also available. IoT devices don't have to deal with thousands of concurrent requests, so the focus has been on easy of use rather than ultimate scalability.
  • is entirely implemented in C++.
  • has a generic C++-to-JavaScript bridging mechanism (based on a code generator) that makes it very easy to make C++ objects available to JavaScript.
  • has module system (somewhat inspired by OSGi) that can be used for both C++ and JavaScript code.

What does stand for?

Macchina is the italian word for machine (it's pronounced 'makkina). therefore means machines that input/output information, or machines/devices that communicate.