Skip to content

Softwarespezifikationen

igus® smart plastics

Software and code specifications i.Cee²

Software Information

Node-Red Grafana lnfluxDB
Version 4.1.4 12.3.1 2.8.0
Port 1880 3000 8086
Condition Clean Clean Clean
Authentication None User/Pass (Admin/Admin) Undefined, configured the first time the interface is logged in.
GUI on http://:1880 http://:3000 http://:8086

MQTT Broker

Port: 1883

Address: AP-> 192.168.30.1

Eth1: 93.48.86.253

User: < not necessary>

Login

Relay outputs actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require any access data.

Setting/resetting the digital output pin/pin status

Both relays default status is open.

Question topic: relayOutputs/config/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "D01": {
        "state": "open"
      },
      "D02": {
        "state": "open"
      }
    }
  }
}
Answer topic: relayOutputs/config/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "D01": {
        "success": true,
        "state": "open"
      },
      "D02": {
        "success": true,
        "state": "open"
      }
    }
  }
}

Activate all relays

Request topic: relayOutputs/runtime/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "READ"
  }
}

Reply-Topic: relayOutputs/runtime/out

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "D01": {
        "success": true,
        "state": "open"
      },
      "D02": {
        "success": true,
        "state": "close"
      }
    }
  }
}

Set the state of all relays

Request topic: relayOutputs/runtime/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "SET",
    "taskParams": {
      "D01": {
        "state": "open"
      },
      "D02": {
        "state": "close"
      }
    }
  }
}
Answer topic: relayOutputs/runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "D01": {
        "success": true,
        "state": "open"
      },
      "D02": {
        "success": true,
        "state": "close"
      }
    }
  }
}

RTC Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require a vote of confidence.

Set timer/alarm clock interruption

Mode: Timer, alarm or not.

alarmSet: Date and time for alarm interruption (No effect whether the mode is timer or not).

timerSetSeconds: Period in seconds for timer interruption (no effect whether the mode is alarm or not).

Desired topic: Clock/Configuration/Setting

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "CLOCK\_SET\_MODE": {
        "mode": "timer",
        "alarmSet": "\[timestamp epoch ms\]",
        "timerSetSeconds": "<INT>"
      }
    }
  }
}
Desired topic: Clock/Configuration/Failure
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "success": true,
      "CLOCK\_SET\_MODE": {
        "mode": "timer",
        "alarmSet": "\[timestamp epoch ms\]",
        "timerSetSeconds": "<INT>"
      }
    }
  }
}

Toggle RTC synchronization logic (described below)

tcState: State of the synchronization logic of the RTC, this value is non-persistent, so on each reboot the value reverts to the default (by default, the value is ON)

Desired topic: Clock/Configuration/Setting

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "TOGGLE"
  }
}

Req-Topic: clock/config/out

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "success": true,
      "rtcState": "OFF"
    }
  }
}

read-clock configurations

Mode: Timer, alarm or not.

alarmSet: Date and time for alarm interruption (No effect whether the mode is timer or not).

timerSetSeconds: Period in seconds for timer interruption (no effect whether the mode is alarm or not).

rtcState: Current state of the RTC's synchronization logic.

Desired topic: Clock/Configuration/Setting

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "READ"
  }
}
Answer Topic: Clock/Configuration/Off
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "success": true,
      "CLOCK\_CONFIGS": {
        "mode": "timer",
        "alarmSet": "\[timestamp epoch ms\]",
        "timerSetSeconds": "<INT>",
        "rtcState": "ON"
      }
    }
  }
}

Reading Clock

Demand Topic: Clock/Runtime/In-Phase

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "success": true,
      "timestamp": "\[timestamp epoch ms\]"
    }
  }
}

Synchronization loop flowchart (every 30 seconds)

RTC Actor – Overview

RTCActor_Overview.svg

Core System Health Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker.

This interface allows any external app to receive system metrics such as CPU load, RAM usage, disk usage, temperature, core frequency, system throttling status, and availability. No qualifications are required to subscribe to this topic. The System Health Actor does not receive any commands. It is completely autonomous and publishes its metrics every 1 second.

Runtime data

Topic: SystemHea l th/Runtime/ off

Release rate: 1 Hz (one message per second, clock jump for sure)

metrics provided
Keys Description Unit
CPU_percent Current CPU Load %
CPU_tempC CPU temperature read from Linux thermal zones ºC
cpu0_freq CPU Core O Current Frequency Hz
cpul_freq CPU Core 1 Power Frequency Hz
cpu2_freq CPU Core 2 Power Frequency Hz
CPU3_freq CPU Core 3 Power Frequency Hz
CPU0_throttle System Throttle Status Registry Hex
Ram_percent RAM Usage %
disk_percent Disk Usage for File System Root / %
Uptime_sec\ Time since the last restart Seconds

Example Payload (systemHealth/runtime/out)

{ "id": 1736022028123, "Origin": "System Health", "Task": { "taskResult": { "cpu_percent": 7.1, "CPU_tempC": 47.3, "CPU0_freq": 15000000000, "CPU1_freq": 15000000000, "CPU2_freq": 15000000000, "CPU3_freq": 1500000000, "cpu0_throttle": "0x0", "Ram_percent": 32.9, "disk_percent\": 41.2, "Uptime_sec": 5321 } } }

Peripheral Device Health

To maintain the health of the peripherals, we had to implement a SystemHealth actor in each bus manager (busi2cO, busi2c-1, etc.).

Peripherals_health.svg

example

For busi2c-0:

Answer topic: systemHealth/busi2c-0/runtime/out

Payload:

{
  "id": 1770378753024,
  "origin": "system-health-busi2c-0",
  "task": {
    "taskResult": {
      "ADC": {
        "status": "ERROR",
        "description": "IRQ Retrying",
        "last\_report": 1770378753006,
        "stats": {
          "AI1": {
            "samples": 563154,
            "retries": 760548,
            "discards": 253313
          },
          "AI2": {
            "samples": 563154,
            "retries": 760475,
            "discards": 253314
          },
          "AI3": {
            "samples": 563154,
            "retries": 760528,
            "discards": 253313
          },
          "AI4": {
            "samples": 563154,
            "retries": 760549,
            "discards": 253312
          }
        }
      },
      "DAC": {
        "status": "OK",
        "description": "Running....",
        "last\_report": 1770378752576,
        "stats": {
          "AO1": {
            "samples": 240755,
            "retries": 0,
            "discards": 0
          },
          "AO2": {
            "samples": 240755,
            "retries": 0,
            "discards": 0
          }
        }
      },
      "RTC": {
        "status": "OK",
        "description": "",
        "last\_report": 1770378752094,
        "stats": {
          "samples": 248710,
          "retries": 0,
          "discards": 0
        }
      },
      "TEMP": {
        "status": "OK",
        "description": "",
        "last\_report": 1770378752579,
        "stats": {
          "samples": 240754,
          "retries": 0,
          "discards": 0
        }
      }
    }
  }
}
For busi2c-1:

Answer topic: systemHealth/busi2c-1/runtime/out

Payload:

{
  "id": 1770382405107,
  "origin": "system-health-busi2c-1",
  "task": {
    "taskResult": {
      "JOYSTICK": {
        "status": "OK",
        "description": "Running....",
        "last\_report": 1770382405050,
        "stats": {
          "read\_all": {
            "samples": 410154,
            "retries": 0,
            "discards": 0
          },
          "read\_raw": {
            "samples": 0,
            "retries": 0,
            "discards": 0
          },
          "buttons": {
            "JDOWN": {
              "reads": 410154,
              "last\_state": "pressed"
            },
            "JRIGHT": {
              "reads": 410154,
              "last\_state": "pressed"
            },
            "JUP": {
              "reads": 410154,
              "last\_state": "pressed"
            },
            "JLEFT": {
              "reads": 410154,
              "last\_state": "pressed"
            },
            "JCENTER": {
              "reads": 410154,
              "last\_state": "pressed"
            }
          }
        }
      },
      "RELAYS": {
        "status": "OK",
        "description": "Relay Output MQTT connected",
        "last\_report": 1770298859099,
        "stats": {
          "read\_all": {
            "samples": 0,
            "retries": 0,
            "discards": 0
          },
          "set": {
            "samples": 0,
            "retries": 0,
            "discards": 0
          },
          "set\_many": {
            "samples": 0,
            "retries": 0,
            "discards": 0
          },
          "raw\_read\_all": {
            "samples": 0,
            "retries": 0,
            "discards": 0
          }
        },
        "outputs": {
          "DO1": {
            "writes": 0,
            "last\_state": "unknown"
          },
          "DO2": {
            "writes": 0,
            "last\_state": "unknown"
          }
        }
      },
      "DI": {
        "status": "OK",
        "description": "Running",
        "last\_report": 1770382404832,
        "stats": {
          "read\_all": {
            "samples": 181758,
            "retries": 0,
            "discards": 0
          },
          "read\_raw": {
            "samples": 0,
            "retries": 0,
            "discards": 0
          },
          "inputs": {
            "DI1": {
              "reads": 181758,
              "last\_state": "low"
            },
            "DI2": {
              "reads": 181758,
              "last\_state": "low"
            },
            "DI3": {
              "reads": 181758,
              "last\_state": "low"
            },
            "DI4": {
              "reads": 181758,
              "last\_state": "low"
            }
          }
        }
      }
    }
  }
}

TempSensor Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require a vote of confidence.

Temperature sensor settings

Required Topic: tempSensor/config/in

ALARM:

  • Activate: true(active)/false
  • Temperature: Alarm temperature lower limit
  • TemperatureHigh: Alarm temperature upper limit
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskParams": {
          "ALERT": {
            "activate": true,
            "tempLow": 0,
            "tempHigh": 80
          }
        }
      }
    }
    
    Answer topic: tempSensor/konfiguration/out
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskResult": {
          "success": true,
          "ALERT": {
            "activate": true,
            "tempLow": 0,
            "tempHigh": 80
          }
        }
      }
    }
    
    Read ##### Temperature Sensor Configurations

Required Topic: tempSensor/config/in

ALARM:

  • Activate: true(active)/false

LIMITS:

  • Temperature: Alarm temperature lower limit
  • TemperatureHigh: Alarm temperature upper limit
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "action": "READ"
      }
    }
    
    Answer topic: tempSensor/konfiguration/out
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskResult": {
          "success": true,
          "ALERT": {
            "activate": true,
            "tempLow": 0,
            "tempHigh": 80
          }
        }
      }
    }
    
View temperature and alarm status
  • Unit: Temperature Unit
  • Warning: true (triggered) or false

Required topic: tempSensor/Runtime

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "READ"
  }
}
Answer topic: tempSensor/runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "success": true,
      "data": {
        "temperature": <\_FLOAT\_>,
        "unit": "C",
        "alert": true
      }
    }
  }
}

TFT Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified user interface for controlling and interacting with the TFT display or LCD front panel. The connection to the broker for this area does not require any access data.

TFT Display Actor

The TFT actor is responsible for:

  • Rendering static and informative screens on the TFT display
  • Reagent on joystick input (LEFT/ RIGHT/ CENTER/ UP/ DOWN)
  • Manage screen navigation and user confirmation flows
  • Provide feedback to the application via MQTT

The TFT actor keeps an ordered list of screens (carousel).

  • The screens are navigated with the joystick:

- LEFT --> Previous Screen

- CORRECT --> Next Screen

  • The carousel wraps around:

- LEFT on the first screen --> last screen

- EXACTLY on the last screen --> first screen

screen types

The TFT actor supports the following screen types:

a.) Picture screen

  • Displays a static JPEG image
  • Default screen is displayed at startup
  • No user interaction required

b.) Network Information Screen

  • Display an interface with information about the device's networks
  • Updated on load
  • No user interaction required
joystick navigation logic

Carousel navigation:

Joystick Input Action
LINKS Previous Screen
TRUE Next Screen
DOWN Update Current Screen
boot behavior

For system boots:

  1. The TFT actuator initializes the display
  2. The last available carousel is loaded
  3. The first screen is rendered
  4. Joystick subscriptions will be activated
  5. The Actor Waits for Runtime Commands
Design Notes and Limitations
  • TFT actor does not show joystick state freely
  • Joystick actor remains independent
  • TFT actor consumes joystick events internally
  • Carousel State is local to the TFT actor
  • Screen rendering is synchronous; Incoming treatment is carried out asynchronously
  • Confirmation screens always require explicit CENTER printing

Interaction via MQTT

Enabling interaction with the carousel via the topic tft/runtime/in . Available actions are public to the user.

Runtime Commands

Go to the screen

Required topic: tft/runtime/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "SET\_CAROUSEL",
    "params": {
      "index": 2
    }
  }
}
Answer topic: tft/runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "tft",
  "task": {
    "taskResult": {
      "success": true,
      "index": 2
    }
  }
}
Set TFT Screen Carousel Desired topic: tft/runtime/in
{
  "id": "TIMESTAMP",
  "origin": "APP",
  "task": {
    "action": "SET\_CAROUSEL",
    "params": {
      "startIndex": 0,
      "screens": \[
        {
          "type": "image",
          "image": "default.jpg"
        },
        {
          "type": "image",
          "image": "status.jpg"
        },
        {
          "type": "confirm",
          "question": "Do you want to continue?"
        }
      \]
    }
  }
}
Parameters:

Field Description
Screens Ordered List of Screens
Home lndex Initial Active Screen (Optional, Default = 0)

Answer

Answer topic: tft/runtime/out

{
  "id": "TIMESTAMP",
  "origin": "tft",
  "task": {
    "taskResult": {
      "success": true,
      "activeIndex": 0,
      "totalScreens": 3
    }
  }
}

Analoglnputs Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require a vote of confidence.

configurations

Topic: analoglnputs/konfiguration/in – Setting ADC channel configurations

Mode

  • continuous
  • Single

Type

  • Voltage
  • current
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskParams": {
          "AI1": {
            "mode": "single",
            "type": "voltage"
          },
          "AI2": {
            "mode": "single",
            "type": "voltage"
          },
          "AI3": {
            "mode": "single",
            "type": "current"
          },
          "AI4": {
            "mode": "single",
            "type": "current"
          }
        }
      }
    }
    
    Answer topic: analoglnputs/config/out
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskResult": {
          "AI1": {
            "success": true
          },
          "AI2": {
            "success": true
          },
          "AI3": {
            "success": true
          },
          "AI4": {
            "success": true
          }
        }
      }
    }
    
Runtime Data

Topic: Analog Inputs/Runtime/In.

Action:

  • READ
  • PAUSE (only applicable in continuous mode)
  • RESUME (only applicable in continuous mode)
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskParams": {
          "AI1": {
            "action": "READ"
          },
          "AI2": {
            "action": "READ"
          },
          "AI3": {
            "action": "READ"
          },
          "AI4": {
            "action": "READ"
          }
        }
      }
    }
    
    Answer Topic: Analog Inserts/Runtime/Off
    {
      "id": "<TIMESTAMP>",
      "origin": "APP",
      "task": {
        "taskResult": {
          "AI1": {
            "success": true,
            "value": <\_FLOAT\_>
          },
          "AI2": {
            "success": true,
            "value": <\_FLOAT\_>
          },
          "AI3": {
            "success": true,
            "value": <\_FLOAT\_>
          },
          "AI4": {
            "success": true,
            "value": <\_FLOAT\_>
          }
        }
      }
    }
    

Analog Output Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require a vote of confidence.

Setting Analog Output Signal

Desired topic: analogOutputs/config/in

Output: Current within 0-20 mA

Mode: On/Off

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "mode": "on",
      "AO1": {
        "current": <\_FLOAT\_>
      },
      "AO2": {
        "current": <\_FLOAT\_>
      }
    }
  }
}
Answer topic: analogOutputs/config/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "mode": "on",
      "AO1": {
        "success": true,
        "current": <\_FLOAT\_>
      },
      "AO2": {
        "success": true,
        "current": <\_FLOAT\_>
      }
    }
  }
}

Setting Analog Outputs

Requirement Topic: Analog Expenditure/Duration

Current: Current within 0-20 mA

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "AO1": {
        "action": "SET",
        "current": <\_FLOAT\_>
      },
      "AO2": {
        "action": "SET",
        "current": <\_FLOAT\_>
      }
    }
  }
}
Answer topic: analoigOutputs/runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "AO1": {
        "success": true,
        "current": <\_FLOAT\_>
      },
      "AO2": {
        "success": true,
        "current": <\_FLOAT\_>
      }
    }
  }
}

Reading Analog Output Settings

Requirement Topic: Analog Expenditure/Duration

Current: Current within 0–20 mA

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "AO1": {
        "action": "READ"
      },
      "AO2": {
        "action": "READ"
      }
    }
  }
}
Answer topic: analogOutputs/Runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "AO1": {
        "success": true,
        "current": <\_FLOAT\_>
      },
      "AO2": {
        "success": true,
        "current": <\_FLOAT\_>
      }
    }
  }
}

Digital Input Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require any access data.

Adjust the speed of the digital input pins/pins quickly/slowly

The fast speed setting supports edge detection up to 100 Hz and the slow speed setting up to 10 Hz.

Quick Mode generates a message every time the I/O state changes, which can result in a high message payload during operation. Therefore, Quick Mode should only be enabled if absolutely necessary is required.

Prerequisite topic: digitallnputs/config/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "DI1": {
        "speed": "fast"
      },
      "DI2": {
        "speed": "slow"
      },
      "DI3": {
        "speed": "fast"
      },
      "DI4": {
        "speed": "fast"
      }
    }
  }
}
Answer topic: digitallnputs/config/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "DI1": {
        "success": true,
        "speed": "fast"
      },
      "DI2": {
        "success": true,
        "speed": "slow"
      },
      "DI3": {
        "success": true,
        "speed": "fast"
      },
      "DI4": {
        "success": true,
        "speed": "fast"
      }
    }
  }
}

Get the status of all digital input pins.

Desired topic: digital entries/runtime

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "READ"
  }
}
Answer Topic: digitalinputs/runtime/out state: high/low
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "DI1": {
        "success": true,
        "state": "high"
      },
      "DI2": {
        "success": true,
        "state": "low"
      },
      "DI3": {
        "success": true,
        "state": "high"
      },
      "DI4": {
        "success": true,
        "state": "low"
      }
    }
  }
}

Digital Source Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require any declarations of faith.

Get the state of all digital output pins

Requirement topic: digitalOutputs/Runtime/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "READ"
  }
}
Answer topic: digitalOutputs/Runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "DO1": {
        "success": true,
        "state": "low"
      },
      "DO2": {
        "success": true,
        "state": "high"
      },
      "DO3": {
        "success": true,
        "state": "high"
      },
      "DO4": {
        "success": true,
        "state": "low"
      },
      "DO5": {
        "success": true,
        "state": "low"
      },
      "DO6": {
        "success": true,
        "state": "low"
      },
      "DO7": {
        "success": true,
        "state": "low"
      },
      "DO8": {
        "success": true,
        "state": "low"
      }
    }
  }
}

Set the state of all digital output pins

Requirement topic: digitalOutputs/Runtime/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskParams": {
      "DO1": {
        "action": "SET",
        "state": "low"
      },
      "DO2": {
        "action": "SET",
        "state": "high"
      },
      "DO3": {
        "action": "SET",
        "state": "high"
      },
      "DO4": {
        "action": "SET",
        "state": "low"
      },
      "DO5": {
        "action": "SET",
        "state": "low"
      },
      "DO6": {
        "action": "SET",
        "state": "low"
      },
      "DO7": {
        "action": "SET",
        "state": "low"
      },
      "DO8": {
        "action": "SET",
        "state": "low"
      }
    }
  }
}
Answer topic: digitalOutputs/Runtime/out
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "D01": {
        "success": true,
        "state": "low"
      },
      "D02": {
        "success": true,
        "state": "high"
      },
      "D03": {
        "success": true,
        "state": "high"
      },
      "D04": {
        "success": true,
        "state": "high"
      },
      "D05": {
        "success": true,
        "state": "high"
      },
      "D06": {
        "success": true,
        "state": "low"
      },
      "D07": {
        "success": true,
        "state": "low"
      },
      "D08": {
        "success": true,
        "state": "low"
      }
    }
  }
}

Notes

If the Busi2c-3 is not powered, we will get the following:

Subject: Paragraph a lExpenditure/Duration/from

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "DO1": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO2": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO3": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO4": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO5": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO6": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO7": {
        "success": false,
        "state": "DO\_not\_powered"
      },
      "DO8": {
        "success": false,
        "state": "DO\_not\_powered"
      }
    }
  }
}

Joystick Actor

App Interface

User app interface and functionalities available to the open part of the MQTT broker. Simplified interface for configuring and receiving peripheral data. The connection to the broker for this area does not require a vote of confidence.

Get all joystick pins into state

Req-Topic: joystick/runtime/in

{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "action": "READ"
  }
}
Response Topic: Joystick//Runtime/Off State: Pressed/Released
{
  "id": "<TIMESTAMP>",
  "origin": "APP",
  "task": {
    "taskResult": {
      "JLEFT": {
        "success": true,
        "state": "pressed"
      },
      "JRIGHT": {
        "success": true,
        "state": "released"
      },
      "JUP": {
        "success": true,
        "state": "released"
      },
      "JDOWN": {
        "success": true,
        "state": "released"
      },
      "JCENTER": {
        "success": true,
        "state": "released"
      }
    }
  }
}

Included Software Stack

AtlasCode.svg

Hardware Libraries

[IMAGE PLACEHOLDER]

PA Name Requirements

Accessories

PA Name Requirements

Document history

Version Description Date
SBADATAv0.1 First version of the i.Cee² datasheet Nov 03, 2026

i.Cee² in the field

[IMAGE PLACEHOLDER]