Frequently Asked Questions

What sensors and devices are supported?

The first release of macchina.io 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?

macchina.io currently supports Linux (ARM and Intel) and OS X. 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 macchina.io different from node.js/io.js?

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

  • macchina.io supports multiple concurrent, but independent scripts, each one running in its own thread.
  • The macchina.io 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.
  • macchina.io is entirely implemented in C++.
  • macchina.io 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.
  • macchina.io has module system (somewhat inspired by OSGi) that can be used for both C++ and JavaScript code.

What does macchina.io stand for?

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