Over the last weeks, I've been working with a nice little device that is very useful for prototyping professional IoT.
One of the challenges in this area is talking to field bus systems. There are many field busses out there and all of them have their individual reason of existence, either coming from a specific group of hardware vendors (e.g. Profibus and Profinet coming from the Siemens PLC ecosystem) or being adopted in specific application domains (CAN in vehicles). But luckily, there are companies that have implemented hardware and software to talk to many of these busses and Hilscher is one of those partners. They have implemented their own silicon in form of their NetX chip which is able to speak many of these protocols.
Now enter the NetPI. Hilscher has built an industrial gateway hardware that combines the standard Raspberry Pi 3 Broadcom SOC with a NetX chip. In addition, they took some ideas from the RPi 3 compute module and added an eMMC to replace the ever-failing SD-cards and added a standard 24V industrial grade power supply circuit.
On the software side, the NetPI runs a hardened Linux, Docker and a web-based UI. Via this UI, one can run Docker containers. See here for a list of images provided by Hilscher.
Getting the device up and running is rather straightforward:
Attach Ethernet and 24V (my device is drawing 150 mA, so about 3.6W). The NetPI will do dhcp on its Ethernet port and acquire an IP address. It will also register a hostname which is simply "NT" plus its Ethernet address, that's all printed on its side. Now you can access your device via http://NTxxxxxxxxxxxx or via its IP address http://x.x.x.x that you can find in your router. It will redirect you to https:// and then you will see a certificate warning. Ignore the warning and connect anyway. (In Edge on Windows 10, you need to click on "Details", then "go on to the website". You can upload a certificate to the device, then this error goes away.) Then you will see this:
Here, you can configure the device via the "control panel" or manage Docker. The initial login information is printed on the side as well. (No big secret here: username "admin", password "admin", the device will force you to change the password immediately.) To make things work, you should first check if the clock is set right in the control panel, otherwise you will get a number of strange errors, but their root cause is that the NetPI does not accept any TLS certificates because it thinks they are outside their validity period. So click on control panel, (accept the certificate warnings again) then log in and head to system/time. Now add an NTP server of your preference (I'm using ptbtime1.ptb.de which is the official master clock in Germany) and press "save changes". Now the clock should update and under "status", the display should read "Synchronized to time server ..." If you don't do this step, there is a high chance that you won't be able to run any Docker images since the TLS-based download of the images will fail!
Now click on the Services/Service List in the menu, then select Docker. Start Docker and set the Docker service to autostart, then click "Apply".
Now head back to the main portal and this time, click on Docker. The quickest way I found is simply to edit the URL and remove anything behind the host name. If you have successfully started Docker, then you will get to the Docker management interface when clicking on the item. If not, then head back to the Service menu and check if Docker is running (the icon next to Docker should be green.) Now you should see the portainer.io Docker management portal. To check if the internet connection is working, go to the "image" section and enter "hilschernetpi/netpi-raspbian:latest" in the Name field under "Pull Image" and click "Pull". Now the image should show up in the image list below. Other useful images to pull are "hilschernetpi/netpi-nodered-fieldbus:latest" and "hilschernetpi/netpi-netx-programming-examples:latest".
To get started, run the Node-RED fieldbus container on your device. The instructions are here. If you want to write code that interacts with the fieldbus directly, look here. This environment can also be used to run the Azure IoT SDK on the NetPi. I will write up more instructions on this in my next post.
Hope this helps,