|
|
| (137 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| [[File:SENSBLUE-ATLAS-Gateway.png|center|frameless|360x360px]]
| | {{DISPLAYTITLE:Datasheet}} |
| | | <div class="buy-now-container"> |
| <div style="margin: 10px 0; display: inline-block;"> | | <span class="button-buy-now">[https://atronia.eu/product/sensblue-atlas/ Buy Now]</span> |
| {| style="background: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; font-size: 0.9em; border-spacing: 0;"
| |
| | [[SENSBLUE ATLAS/Technical Resources | <span class="custom-btn-link">Technical Resources & Updates</span>]]
| |
| |}
| |
| </div> | | </div> |
|
| |
|
| | [[File:SENSBLUE-ATLAS-Gateway.png|center|frameless|397x397px]] |
| == '''Datasheet''' == | | == '''Datasheet''' == |
|
| |
|
| === 2. Table of SENSBLUE ATLAS Reference ID Model Number === | | === 1. Table of SENSBLUE ATLAS Reference ID Model Number === |
| {| class="wikitable" | | {| class="wikitable" |
| | | | |'''Reference Number''' |
| | | | |'''Name''' |
| | | | |'''Version''' |
| | | | |'''RAM''' |
| | | | |'''Modem''' |
| | | | |- |
| | |PA000000102 |
| | |ATLAS IoT SBC V1 CM4. 2GB M2.0 M1 PB0 |
| | |V1 |
| | |2GB |
| | |Yes |
| |- | | |- |
| |Paxxxxxxxx | | |PA000000103 |
| |
| | |ATLAS IoT SBC V1 CM4. 2GB M2.0 M0 PB0 |
| | | | |V1 |
| | | | |2GB |
| | | | |Yes |
| | | |
| |- | | |- |
| |PAxxxxxxxx | | |PA000000104 |
| |
| | |ATLAS IoT SBC V1 CM4. 4GB M2.0 M1 PB0 |
| | | | |V1 |
| | | | |4GB |
| | | | |No |
| | | |
| |} | | |} |
|
| |
|
| === 3. General Description === | | === 2. General Description === |
| SENSBLUE ATLAS is a single board computer that connects sensors and assets, runs control logic and ships to production without platform changes. | | SENSBLUE ATLAS is a single board computer that connects sensors and assets, runs control logic and ships to production without platform changes. |
|
| |
|
| Designed for industrial teams who need one dependable path from experiments to operations. | | Designed for industrial teams who need one dependable path from experiments to operations. |
|
| |
|
| ==== 3.1 Key Features ==== | | ==== 2.1 Key Features ==== |
| '''Processor:''' | | '''Processor:''' |
|
| |
|
| Line 45: |
Line 46: |
| '''I/O:''' | | '''I/O:''' |
|
| |
|
| * 12 DO (Digital Outputs) | | * 12 DIO (8 Digital Outputs and 4 Digital Input) |
| * 6 AI (Analog Inputs) | | * 6 AIO (4 Analog Inputs and 2 Analog Outputs) |
| * 2 relays | | * 2 relays |
|
| |
|
| Line 69: |
Line 70: |
| * Other versions under request. | | * Other versions under request. |
|
| |
|
| === 4. Hardware Specifications === | | === 3. Hardware Specifications === |
| {| class="wikitable tech-table" style="width: 100%;" | | {| class="wikitable tech-table" style="width: 100%;" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 84: |
Line 85: |
| |- | | |- |
| |RAM | | |RAM |
| |4GB LPDDR4 | | |2GB, 4GB LPDDR4 |
| |- | | |- |
| |Storage | | |Storage |
| Line 102: |
Line 103: |
| |} | | |} |
|
| |
|
| === 5. Power === | | === 4. Power === |
| {| class="wikitable tech-table" style="width: 100%;" | | {| class="wikitable tech-table" style="width: 100%;" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 129: |
Line 130: |
| |} | | |} |
|
| |
|
| === 6. Digital Inputs === | | === 5. Digital Inputs === |
| {| class="wikitable tech-table" style="width: 100%;" | | {| class="wikitable tech-table" style="width: 100%;" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 168: |
Line 169: |
| |} | | |} |
|
| |
|
| === 7. Digital Outputs (Relay) === | | ==== 5.1 Wiring ==== |
| | [[File:DIG IN.svg|center|frameless|500x500px]] |
| | |
| | === 6. Digital Outputs (Relay) === |
| {| class="wikitable tech-table" style="width: 100%;" | | {| class="wikitable tech-table" style="width: 100%;" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 192: |
Line 196: |
| |} | | |} |
|
| |
|
| === 8. Digital Outputs (Transistor/ SSR) === | | ==== 6.1 Wiring ==== |
| | [[File:RELAY.svg|center|frameless|500x500px]] |
| | |
| | === 7. Digital Outputs (Transistor/ SSR) === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 216: |
Line 223: |
| |} | | |} |
|
| |
|
| === 9. Analog Inputs === | | ==== 7.1 Wiring ==== |
| | [[File:DIG OUT.svg|center|frameless|500x500px]] |
| | |
| | === 8. Analog Inputs === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 261: |
Line 271: |
| |} | | |} |
|
| |
|
| === 10. Analog Outputs === | | ==== 8.1 Wiring ==== |
| | [[File:ANL IN.svg|center|frameless|500x500px]] |
| | |
| | === 9. Analog Outputs === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 291: |
Line 304: |
| |} | | |} |
|
| |
|
| === 11. Communication Interfaces === | | ==== 9.1 Wiring ==== |
| | [[File:ANL OUT.svg|center|frameless|500x500px]] |
|
| |
|
| ==== 11.1 Ethernet ==== | | === 10. Communication Interfaces === |
| | |
| | ==== 10.1 Ethernet ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| ! style="width: 50%;" | '''Parameter''' | | ! style="width: 50%;" | '''Parameter''' |
| Line 311: |
Line 327: |
| |} | | |} |
|
| |
|
| ==== 11.2 RS-485 ==== | | ==== 10.2 RS-485 ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 329: |
Line 345: |
| |} | | |} |
|
| |
|
| ==== 11.3 USB ==== | | ===== 10.2.1 Wiring ===== |
| | [[File:RS485.svg|center|frameless|500x500px]] |
| | |
| | ==== 10.3 USB ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 350: |
Line 369: |
| |} | | |} |
|
| |
|
| ==== 11.4 HDMI ==== | | ==== 10.4 HDMI ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 365: |
Line 384: |
| |} | | |} |
|
| |
|
| === 12. RF Communications === | | === 11. RF Communications === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Technology''' | | !style="width: 50%;"|'''Technology''' |
| Line 383: |
Line 402: |
| |} | | |} |
|
| |
|
| ==== 12.1 Antenna Connectors ==== | | ==== 11.1 Antenna Connectors ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Connector''' | | !style="width: 50%;"|'''Connector''' |
| Line 395: |
Line 414: |
| |} | | |} |
|
| |
|
| === 13. Local Peripherals === | | === 12. Local Peripherals === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Peripheral''' | | !style="width: 50%;"|'''Peripheral''' |
| Line 413: |
Line 432: |
| |} | | |} |
|
| |
|
| === 14. HDMI === | | === 13. HDMI === |
|
| |
|
| ==== 14. 1 Display ==== | | ==== 13. 1 Display ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 439: |
Line 458: |
| |} | | |} |
|
| |
|
| ==== 14. 2 Joystick ==== | | ==== 13. 2 Joystick ==== |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 454: |
Line 473: |
| |} | | |} |
|
| |
|
| === 15. Mechanical === | | === 14. Mechanical === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 472: |
Line 491: |
| |} | | |} |
|
| |
|
| === 16. Environmental === | | === 15. Environmental === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !'''Parameter''' | | !'''Parameter''' |
| Line 493: |
Line 512: |
| |} | | |} |
|
| |
|
| === 17. Certifications === | | === 16. Certifications === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Certification''' | | !style="width: 50%;"|'''Certification''' |
| Line 511: |
Line 530: |
| |} | | |} |
|
| |
|
| === 18. Connectivity === | | === 17. Connectivity === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Parameter''' | | !style="width: 50%;"|'''Parameter''' |
| Line 535: |
Line 554: |
| |} | | |} |
|
| |
|
| === 19. Expansion === | | === 18. Expansion === |
| {| class="wikitable tech-table" | | {| class="wikitable tech-table" |
| !style="width: 50%;"|'''Feature''' | | !style="width: 50%;"|'''Feature''' |
| Line 559: |
Line 578: |
| |} | | |} |
|
| |
|
| === 20. Mechanical Drawings === | | === 19. External Interfaces === |
|
| |
|
| ==== Front View ==== | | ==== Front View ==== |
| Line 568: |
Line 587: |
| [[File:Atlas bottomview.png|center|frameless|590x590px]] | | [[File:Atlas bottomview.png|center|frameless|590x590px]] |
|
| |
|
| | |
| | |
| | === 20. Pinouts === |
|
| |
|
| ==== Top View ==== | | ==== Top View ==== |
| Line 575: |
Line 597: |
| '''Raspian''' | | '''Raspian''' |
|
| |
|
| Debian GNU/Linux 13 (trixie) Version 13.2 Linux atlas 6.12.47 +rpt-rpi-v8 #1 SMP PREEMPT | | Debian GNU/Linux 13 (trixie) Version 13.2 Linux atlas 6.12.47+rpt-rpi-v8 #1 SMP PREEMPT |
|
| |
|
| Debian 1 :6.12.47-1 +rpt1 (2025-09-16) aarch64 GNU/Linux. | | Debian 1:6.12.62-1+rpt1 (2025-09-16) aarch64 GNU/Linux. |
|
| |
|
| === 22. Network Information === | | === 22. Network Information === |
| There is three ways to connect to the device. IP and state of the connection be checked on the LCD Network Interface. | | There are three ways to connect to the device. The IP and connection status can be checked on the LCD by cycling to the Network screen. |
| | |
| | ==== 22.1 ETH1 ==== |
| | By default, the ETH1 port has the following configuration: |
| | |
| | * Network interface: eth0 |
| | * Connection type: DHCP client. |
| | * IP Address: Dynamic IP address provided by an external DHCP server. |
| | |
| | ==== 22.2 ETH2 ==== |
| | By default, the ETH2 port has the following configuration: |
|
| |
|
| ==== 22.1 Eth1 (ethO) ====
| | * Network interface: eth1 |
| Client dynamic IP obtained by DHCP server.
| | * Connection type: Static IP |
| | * IP Address: 93.48.86.253 |
|
| |
|
| ==== 22.2 Eth2 (eth1) ==== | | ==== 22.3 Access Point ==== |
| Static IP: '''93.48.86.253'''
| | By default, ATLAS provides an Access Point configured with the following settings: |
|
| |
|
| ==== 22.3 Access Point (wlanO) ====
| | * Network interface: wlan0 |
| IP: '''192.168.30.1'''
| | * SSID: '''atlas-<SERIAL_NUMBER>-AP''' |
| | * Password: atlas_2025! |
| | * Connection type: DHCP Server |
| | * IP Address: 192.168.30.1 |
|
| |
|
| === 23. Software Information === | | === 23. Software Information === |
| Line 597: |
Line 633: |
| |'''Grafana''' | | |'''Grafana''' |
| |'''lnfluxDB''' | | |'''lnfluxDB''' |
| | |'''Operating System''' |
| |- | | |- |
| |Version | | |'''Version''' |
| |4.1.4 | | |4.1.4 |
| |12.3.1 | | |12.3.1 |
| |2.8.0 | | |2.8.0 |
| | |13 (Trixie) |
| |- | | |- |
| |Port | | |'''Port''' |
| |1880 | | |1880 |
| |3000 | | |3000 |
| |8086 | | |8086 |
| | |22 |
| |- | | |- |
| |State | | |'''State''' |
| |Clean | | |Clean |
| |Clean | | |Clean |
| |Clean | | |Clean |
| | |N/A |
| |- | | |- |
| |Authentication | | |'''Authentication''' |
| |None | | |None |
| |User/Pass (admin/admin) | | |'''User:''' admin |
| |Not defined, configured on first time interface login. | | '''Pass:''' admin |
| | |Not defined, configured on first time interface login. |
| | |'''User:''' pi |
| | '''Pass:''' atlas2026 |
| |- | | |- |
| |GUI on | | |'''GUI''' |
| |http://<device-ip>:1880 | | |http://<device-ip>:1880 |
| |http://<device-ip>:3000 | | |http://<device-ip>:3000 |
| |http://<device-ip>:8086 | | |http://<device-ip>:8086 |
| | |N/A |
| |} | | |} |
|
| |
|
| === 24. MQTT Broker === | | === 24. Included Software Stack === |
| port: 1883
| | <br> |
| | | [[File:AtlasCode.svg|center|frameless|583x583px]] |
| address: AP-> 192.168.30.1
| |
| | |
| Eth1: '''93.48.86.253'''
| |
| | |
| user: < not needed>
| |
| | |
| login <not needed>
| |
| | |
| === 25. Relay Outputs Actor ===
| |
| | |
| ==== 25.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credentials.
| |
| | |
| ===== 25.1.1 Set/reset digital output pin/pins state =====
| |
| Both relays '''default''' state is '''open'''.
| |
| | |
| Req-Topic: relayOutputs/config/in
| |
| | |
| <syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "D01": {
| |
| "state": "open"
| |
| },
| |
| "D02": {
| |
| "state": "open"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>Reply-Topic: relayOutputs/config/out
| |
| | |
| <syntaxhighlight lang="json">{
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "D01": {
| |
| "success": true,
| |
| "state": "open"
| |
| },
| |
| "D02": {
| |
| "success": true,
| |
| "state": "open"
| |
| }
| |
| }
| |
| }
| |
| }</syntaxhighlight>
| |
| | |
| ===== 25.1.2 Get all relays state =====
| |
| Req-Topic: relayOutputs/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| </syntaxhighlight>Reply-Topic: relayOutputs/runtime/out <syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "D01": {
| |
| "success": true,
| |
| "state": "open"
| |
| },
| |
| "D02": {
| |
| "success": true,
| |
| "state": "close"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ===== 25.1.3 Set all relays state =====
| |
| Req-Topic: relayOutputs/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "SET",
| |
| "taskParams": {
| |
| "D01": {
| |
| "state": "open"
| |
| },
| |
| "D02": {
| |
| "state": "close"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>Reply-Topic: relayOutputs/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "D01": {
| |
| "success": true,
| |
| "state": "open"
| |
| },
| |
| "D02": {
| |
| "success": true,
| |
| "state": "close"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === 26. RTC Actor ===
| |
| | |
| ==== 26.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credencials.
| |
| | |
| ===== 26.1.1 Set timer/alarm interruption =====
| |
| '''mode:''' Timer, alarm or none.
| |
| | |
| '''alarmSet:''' Date and time for alarm interruption (No effect if mode is timer or none).
| |
| | |
| '''timerSetSeconds:''' Period in seconds for timer interruption (No effect if mode is alarm or none).
| |
| | |
| Req-Topic: clock/config/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "CLOCK_SET_MODE": {
| |
| "mode": "timer",
| |
| "alarmSet": "[timestamp epoch ms]",
| |
| "timerSetSeconds": "<INT>"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>Req-Topic: clock/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "CLOCK_SET_MODE": {
| |
| "mode": "timer",
| |
| "alarmSet": "[timestamp epoch ms]",
| |
| "timerSetSeconds": "<INT>"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ===== 26.1.2 Toggle RTC sync logic (described below) =====
| |
| '''tcState:''' State of the synchronization logic of the RTC, this value is '''non-persistent''' so every-time a reboot happens the value return to default (by default the value is '''ON''')
| |
| | |
| Req-Topic: clock/config/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "TOGGLE"
| |
| }
| |
| }
| |
| </syntaxhighlight>Req-Topic: clock/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "rtcState": "OFF"
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 26.1.3 Read clock configs =====
| |
| '''mode:''' Timer, alarm or none.
| |
| | |
| '''alarmSet:''' Date and time for alarm interruption (No effect if mode is timer or none).
| |
| | |
| '''timerSetSeconds:''' Period in seconds for timer interruption (No effect if mode is alarm or none).
| |
| | |
| '''rtcState:''' Current state of the synchronization logic of the RTC.
| |
| | |
| Req-Topic: clock/config/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: clock/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "CLOCK_CONFIGS": {
| |
| "mode": "timer",
| |
| "alarmSet": "[timestamp epoch ms]",
| |
| "timerSetSeconds": "<INT>",
| |
| "rtcState": "ON"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 26.1.4 Read clock =====
| |
| Req-Topic: clock/runtime/in <syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "timestamp": "[timestamp epoch ms]"
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ==== 26.2 Synchronization loop flowchart (every 30 seconds) ====
| |
| | |
| | |
| '''RTC Actor - Overview'''
| |
| [[File:RTCActor Overview.svg|center|frameless|774x774px]] | |
| | |
| === 27. Core System Health Actor ===
| |
| | |
| ==== 27.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker.
| |
| | |
| This interface allows any external App to receive system-level metrics such as CPU load, RAM usage, disk usage, temperature, core frequency, system throttle status and uptime. No credentials are required to subscribe to this topic. The System Health Actor does not receive commands. It is fully autonomous and publishes its metrics every 1 second.
| |
| | |
| ==== 27.2 Runtime Data ====
| |
| '''Topic: systemHea l th/runtime/ out'''
| |
| | |
| Publish rate: '''1 Hz''' (one message per second, clock-jump safe)
| |
|
| |
|
| ===== 27.2.1 Metrics Provided =====
| | <br> |
| {| class="wikitable tech-table"
| |
| !'''Key'''
| |
| !'''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 current frequency
| |
| |Hz
| |
| |-
| |
| |cpu2_freq
| |
| |CPU Core 2 current frequency
| |
| |Hz
| |
| |-
| |
| |cpu3_freq
| |
| |CPU Core 3 current frequency
| |
| |Hz
| |
| |-
| |
| |cpu0_throttle
| |
| |System throttle status register
| |
| |Hex
| |
| |-
| |
| |ram_percent
| |
| |RAM usage
| |
| |%
| |
| |-
| |
| |disk_percent
| |
| |Disk usage for filesystem root /
| |
| |%
| |
| |-
| |
| |uptime_sec
| |
| |Time since last reboot
| |
| |seconds
| |
| |}
| |
| Example Payload (systemHealth/runtime/out) <syntaxhighlight lang="json">
| |
| {
| |
| "id": 1736022028123,
| |
| "origin": "system-health",
| |
| "task": {
| |
| "taskResult": {
| |
| "cpu_percent": 7.1,
| |
| "cpu_tempC": 47.3,
| |
| "cpu0_freq": 1500000000,
| |
| "cpu1_freq": 1500000000,
| |
| "cpu2_freq": 1500000000,
| |
| "cpu3_freq": 1500000000,
| |
| "cpu0_throttle": "0x0",
| |
| "ram_percent": 32.9,
| |
| "disk_percent": 41.2,
| |
| "uptime_sec": 5321
| |
| }
| |
| }
| |
| }
| |
|
| |
|
| </syntaxhighlight> | | === 25. Software Stack and IPC Architecture === |
| | <br> |
| | [[File:Hardware Peripherals Library Architecture.svg|center|frameless|1934x1934px]] |
|
| |
|
| ==== 27.3 Peripherals health ==== | | === 26. Related Products === |
| In order get the peripherals health we had to implement a SystemHealth actor in each bus manager (busi2cO, busi2c-1, etc. ... ).
| |
| | |
| | |
| [[File:Peripherals health.svg|center|frameless|792x792px]]
| |
| | |
| ===== 27.3.1 Example =====
| |
| '''For busi2c-0:'''
| |
| | |
| Reply topic: '''systemHealth/busi2c-0/runtime/out'''
| |
| | |
| Payload:<syntaxhighlight lang="json">
| |
| {
| |
| "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
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| | |
| | |
| </syntaxhighlight>'''For busi2c-1:'''
| |
| | |
| Reply topic: '''systemHealth/busi2c-1/runtime/out'''
| |
| | |
| Payload:<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === 28. TempSensor Actor ===
| |
| | |
| ==== 28.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credencials.
| |
| | |
| ===== 28.1.1 Set temperature sensor configurations =====
| |
| Req-Topic: tempSensor/config/in
| |
| | |
| ALERT:
| |
| | |
| * activate: true(active)/false
| |
| * templow: alert temperature lower limit
| |
| * tempHigh: alert temperature upper limit
| |
| <syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "ALERT": {
| |
| "activate": true,
| |
| "tempLow": 0,
| |
| "tempHigh": 80
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>Reply-Topic: tempSensor/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "ALERT": {
| |
| "activate": true,
| |
| "tempLow": 0,
| |
| "tempHigh": 80
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 28.1.2 Read temperature sensor configurations =====
| |
| Req-Topic: tempSensor/config/in
| |
| | |
| ALERT:
| |
| | |
| * activate: true(active)/false
| |
| | |
| LIMITS:
| |
| | |
| * templow: alert temperature lower limit
| |
| * tempHigh: alert temperature upper limit
| |
| <syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: tempSensor/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "ALERT": {
| |
| "activate": true,
| |
| "tempLow": 0,
| |
| "tempHigh": 80
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 28.1.3 Read temperature and alert status =====
| |
| | |
| * unit: Temperature unit of measure
| |
| * alert: true (triggered) or false
| |
| | |
| Req-Topic: tempSensor/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: tempSensor/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "data": {
| |
| "temperature": <_FLOAT_>,
| |
| "unit": "C",
| |
| "alert": true
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 29. TFT Actor ===
| |
| | |
| ==== 29.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to control and interact with the TFT display, or frontal panel LCD screen. Connecting to the broker for this Area requires no credentials.
| |
| | |
| ==== 29.2 TFT Display Actor ====
| |
| The TFT Actor is responsible for:
| |
| | |
| * Rendering static and informative screens on the TFT display
| |
| * Reacting to joystick input (LEFT/ RIGHT/ CENTER/ UP/ DOWN)
| |
| * Managing screen navigation and user confirmation flows
| |
| * Providing feedback to the application via MQTT
| |
| | |
| ===== 29.2.1 Screen Carousel Concept =====
| |
| The TFT actor maintains an '''ordered list of screens''' (carousel).
| |
| | |
| * Screens are navigated using the joystick:
| |
| | |
| - LEFT --> Previous screen
| |
| | |
| - RIGHT --> Next screen
| |
| | |
| * The carousel wraps around:
| |
| | |
| - LEFT on first screen --> last screen
| |
| | |
| - RIGHT on last screen --> first screen
| |
| | |
| ===== 29.2.2 Screen Types =====
| |
| The TFT actor supports the following screen types:
| |
| | |
| '''a.) Image Screen'''
| |
| | |
| * Displays a static JPEG image
| |
| * Default screen shown at boot
| |
| * No user interaction required
| |
| | |
| '''b.) Network Information Screen'''
| |
| | |
| * Display a interface with information about the networks of the device
| |
| * Updated on load
| |
| * No user interaction required
| |
| | |
| ===== 29.2.3 Joystick Navigation Logic =====
| |
| '''Carousel Navigation:'''
| |
| {| class="wikitable"
| |
| |'''Joystick Input'''
| |
| |'''Action'''
| |
| |-
| |
| |LEFT
| |
| |Previous screen
| |
| |-
| |
| |RIGHT
| |
| |Next screen
| |
| |-
| |
| |DOWN
| |
| |Refresh current screen
| |
| |}
| |
| | |
| ===== 29.2.4 Boot Behavior =====
| |
| At system boot:
| |
| | |
| # TFT actor initializes the display
| |
| # Last available carousel is loaded
| |
| # First screen is rendered
| |
| # Joystick subscriptions are activated
| |
| # Actor waits for runtime commands
| |
| | |
| ===== 29.2.5 Design Notes & Constraints =====
| |
| | |
| * TFT actor does not expose joystick state
| |
| * Joystick actor remains independent
| |
| * TFT actor internally consumes joystick events
| |
| * Carousel state is local to the TFT actor
| |
| * Screen rendering is synchronous; input handling is asynchronous
| |
| * Confirmation screens always require explicit CENTER press
| |
| | |
| ==== 29.3 User interaction through MQTT ====
| |
| Enabling interaction with the carousel using the topic tft/runtime/in . Actions available will be public to the user.
| |
| | |
| '''Runtime commands'''
| |
| | |
| '''Go to screen'''
| |
| | |
| Req-Topic: tft/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "SET_CAROUSEL",
| |
| "params": {
| |
| "index": 2
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: tft/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "tft",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "index": 2
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>'''Set TFT Screen Carousel'''
| |
| | |
| Req-Topic: tft/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "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?"
| |
| }
| |
| ]
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>'''Parameters:'''
| |
| {| class="wikitable"
| |
| |'''Field'''
| |
| |'''Description'''
| |
| |-
| |
| |screens
| |
| |Ordered list of screens
| |
| |-
| |
| |Start lndex
| |
| |Initial active screen (optional, default = 0)
| |
| |}
| |
| '''Reply'''
| |
| | |
| Reply-Topic: '''tft/runtime/out''' <syntaxhighlight lang="json">
| |
| {
| |
| "id": "TIMESTAMP",
| |
| "origin": "tft",
| |
| "task": {
| |
| "taskResult": {
| |
| "success": true,
| |
| "activeIndex": 0,
| |
| "totalScreens": 3
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 30. Analoglnputs Actor ===
| |
| | |
| ==== 30.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credencials.
| |
| | |
| ===== 30.1.1 Configurations =====
| |
| ''' Topic: analoglnputs/config/in - Set ADC channels configurations'''
| |
| | |
| '''mode'''
| |
| | |
| * continuous
| |
| * single
| |
| | |
| '''type'''
| |
| | |
| * voltage
| |
| * current
| |
| <syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: analoglnputs/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "AI1": {
| |
| "success": true
| |
| },
| |
| "AI2": {
| |
| "success": true
| |
| },
| |
| "AI3": {
| |
| "success": true
| |
| },
| |
| "AI4": {
| |
| "success": true
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 30.1.2 Runtime Data =====
| |
| '''Topic: analoglnputs/runtime/in.'''
| |
| | |
| action:
| |
| | |
| * READ
| |
| * PAUSE (only applicable in continuous mode)
| |
| * RESUME (only applicable in continuous mode)
| |
| <syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "AI1": {
| |
| "action": "READ"
| |
| },
| |
| "AI2": {
| |
| "action": "READ"
| |
| },
| |
| "AI3": {
| |
| "action": "READ"
| |
| },
| |
| "AI4": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: analoglnputs/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "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_>
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 31. Analog Outputs Actor ===
| |
| | |
| ==== 31.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credencials.
| |
| | |
| ===== 31.1.1 Set analog outputs signal =====
| |
| Req-Topic: analogOutputs/config/in
| |
| | |
| '''Output:''' current within 0-20 mA
| |
| | |
| '''mode:''' on/off<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "mode": "on",
| |
| "AO1": {
| |
| "current": <_FLOAT_>
| |
| },
| |
| "AO2": {
| |
| "current": <_FLOAT_>
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: analogOutputs/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "mode": "on",
| |
| "AO1": {
| |
| "success": true,
| |
| "current": <_FLOAT_>
| |
| },
| |
| "AO2": {
| |
| "success": true,
| |
| "current": <_FLOAT_>
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 31.1.2 Set analog outputs =====
| |
| Req-Topic: analogOutputs/runtime/in
| |
| | |
| '''current:''' current within 0-20 mA<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "AO1": {
| |
| "action": "SET",
| |
| "current": <_FLOAT_>
| |
| },
| |
| "AO2": {
| |
| "action": "SET",
| |
| "current": <_FLOAT_>
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: analoigOutputs/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "AO1": {
| |
| "success": true,
| |
| "current": <_FLOAT_>
| |
| },
| |
| "AO2": {
| |
| "success": true,
| |
| "current": <_FLOAT_>
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ===== 31.1.3 Read analog outputs settings =====
| |
| Req-Topic: analogOutputs/runtime/in
| |
| | |
| '''current''': current within 0-20 mA<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "AO1": {
| |
| "action": "READ"
| |
| },
| |
| "AO2": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: analogOutputs/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskResult": {
| |
| "AO1": {
| |
| "success": true,
| |
| "current": <_FLOAT_>
| |
| },
| |
| "AO2": {
| |
| "success": true,
| |
| "current": <_FLOAT_>
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 32. Digital lnputs Actor ===
| |
| | |
| ==== 32.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credentials.
| |
| | |
| ===== 32.1.1 Set digital input pin/pins speed fast/slow =====
| |
| The '''fast''' speed setting supports edge detection speed up to 100 Hz and the '''slow''' speed settings supports up to 10 Hz.
| |
| | |
| '''Fast Mode''' generates a message on every I/O state change, which may result in a '''high message payload''' during operation. Fast Mode should therefore only be enabled when '''strictly required'''.
| |
| | |
| Req-Topic: digitallnputs/config/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "taskParams": {
| |
| "DI1": {
| |
| "speed": "fast"
| |
| },
| |
| "DI2": {
| |
| "speed": "slow"
| |
| },
| |
| "DI3": {
| |
| "speed": "fast"
| |
| },
| |
| "DI4": {
| |
| "speed": "fast"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>Reply-Topic: digitallnputs/config/out<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ===== 32.1.2 Get all digital input pins state =====
| |
| Req-Topic: digitallnputs/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: digitallnputs/runtime/out
| |
| | |
| state: high/low<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 33. Digital Outputs Actor ===
| |
| | |
| ==== 33.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this area requires no credencials.
| |
| | |
| ===== 33.1.1 Get all digital output pins state =====
| |
| Req-Topic: digitalOutputs/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: digitalOutputs/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ===== 33.1.2 Set all digital output pins state =====
| |
| Req-Topic: digitalOutputs/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>Reply-Topic: digitalOutputs/runtime/out<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ==== 33.2 Notes ====
| |
| If the busi2c-3 is not powered, we will get this:
| |
| | |
| Topic: '''digit a lOutputs/runtime/ out''' <syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 34. Joystick Actor ===
| |
| | |
| ==== 34.1 App Interfacing ====
| |
| User App interface and functionalities exposed to the open part of the MQTT broker. Simplified interface to configure and obtain peripherals data. Connecting to the broker for this Area requires no credencials.
| |
| | |
| ===== 34.1.1 Get all joystick pins state =====
| |
| Req-Topic: joystick/runtime/in<syntaxhighlight lang="json">
| |
| {
| |
| "id": "<TIMESTAMP>",
| |
| "origin": "APP",
| |
| "task": {
| |
| "action": "READ"
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>Reply-Topic: joystick//runtime/out
| |
| | |
| state: pressed/released<syntaxhighlight lang="json">
| |
| {
| |
| "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"
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| === 35. Included Software Stack ===
| |
| | |
| | |
| [[File:AtlasCode.svg|center|frameless|583x583px]]
| |
| | |
| === 36. Hardware Libraries ===
| |
| [IMAGE PLACEHOLDER]
| |
| | |
| === 37. Related Products ===
| |
| {| class="wikitable" | | {| class="wikitable" |
| |'''PA''' | | |'''PA''' |
| Line 2,046: |
Line 684: |
| |'''Requirements''' | | |'''Requirements''' |
| |- | | |- |
| | | | |PA000000074 |
| | | | |[[SENSBLUE MONARCH|'''<u>SENSBLUE MONARCH Gateway</u>''']] |
| | | | | |
| |- | | |- |
| |
| |
| |
| |
| |
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |} | | |} |
| | {{SimilarProductsTable}} |
|
| |
|
| === 38. Accessories === | | === 27. Accessories === |
| {| class="wikitable" | | {| class="wikitable" |
| |'''PA''' | | |'''PA''' |
| Line 2,098: |
Line 718: |
| |} | | |} |
|
| |
|
| === 39. Document History === | | === 28. Document History === |
| {| class="wikitable" | | {| class="wikitable" |
| |'''Version''' | | |'''Version''' |
| Line 2,117: |
Line 737: |
| |} | | |} |
|
| |
|
| === 40. SENSBLUE ATLAS in-the-field === | | === 29. SENSBLUE ATLAS in-the-field === |
| [IMAGE PLACEHOLDER] | | [IMAGE PLACEHOLDER] |