
topocare x IOTA — Status Report 04
1) Review and focus of this article
In the first article of this series we presented the objectives of this PoC. Our aim is to create a true Pay-on-Production model (PoP), where IOTA payments are made for every production step. Every time a production step is achieved a payment should directly be executed.
A production step can be a spot weld, a bending operation or in our case “a meter of tube” produced by our machine. There are plenty of other examples beyond production processes as in e.g. laundry or carsharing operations.
To realize our goals, we developed a technology demonstration platform. The developed platform contains an electrical drive system, a control PC, as well as different types of sensors and actuators. The hardware is described in our second status report.
The software realization is the center piece of our proof of concept and described in our third report. We explained the relevant characteristics of the IOTA tangle, as well as the software architecture and logic of implementation.
In this report we will focus on the final results of the realization.
2) Process Demonstration
We did an external test with the technology demonstration platform. The results are shown below.

A small distance of approximately 7 meters was driven. The machine which is equipped with different sensors was tracking the production path. Each meter we pulled the textile roll in order to simulate a production step and therefor trigger a payment.

To get a direct feedback regarding the wallet status we implemented a signal light system. The sequence of lights used is: green, orange, red.
public void checkMachineUnlock(IotaMachineWallet.WalletState state){
if(state== WalletState.allFundingInConfirmation){
setLEDs(true, true, true);
ros.setMachineUnlocked(false);
}
elseif(state== WalletState.available){
setLEDs(true, false, false);
ros.setMachineUnlocked(true);
}
elseif(state== WalletState.availableAndTransactionOngoing){
setLEDs(true, true, false);
ros.setMachineUnlocked(true);
}
elseif(state== WalletState.noFunding){
setLEDs(false, false, true);
ros.setMachineUnlocked(false);
}
elseif(state== WalletState.noFundingAndTransactionOngoing){
setLEDs(false, true, true);
ros.setMachineUnlocked(false);
}
elseif(state== WalletState.preparingRefunding){
setLEDs(false, true, false);
ros.setMachineUnlocked(false);
}
elseif(state== WalletState.refunding){
setLEDs(false, true, false);
ros.setMachineUnlocked(false);
}
}
The following figure 3 shows the status of no funding (red), available funding/ ready for production (green) and available funding and a transaction ongoing (green and orange).

