Accordion Developer Documentation
Purpose: Everything a developer using the Accordion hardware platform needs to know. This is the single entry point. Every topic below links to a focused sub-document. Links marked
[source]point to the original file in its repository location.
What is Accordion?
Accordion is a modular hardware test and control platform developed by E-Sharp AB. A physical Accordion device (running on a Raspberry Pi / ARM Linux) hosts a set of pluggable hardware modules (ESH1* series) and exposes all their signals through a unified channel-based API over the network.
Clients connect over HTTP or a proprietary protocol and interact with the hardware without any knowledge of the underlying bus topology.
Table of Contents
1 — System Overview
- Architecture & Core Concepts
- What Accordion is, the three-layer model, channel model, protocol ports
2 — Hardware Modules
- Module Index
- All ESH1* modules: type, channel count, key features
- Chip Datasheets
- LTC2992 (power monitor), TPS23881 (PoE controller)
3 — Connectivity & Network
- Network Configuration & Service Discovery
- mDNS/Bonjour discovery, dual-connection fallback, static vs DHCP, diagnostic tools
4 — Client Tools
- Accordion Pilot (GUI)
- Windows desktop application — channels, bus transactions, power supplies, audio/video, firmware
- AccordionShell (CLI)
- .NET global tool — all verbs with options and examples
5 — Programmatic API
.NET (C#)
Python
6 — Internals & Development
- C# Coding Standards
- Null handling, async patterns, logging, naming, anti-patterns
- Performance Notes
- TCP_NODELAY, buffer sizes, GetValues latency, protocol tuning
Quick-Reference: How to Connect
| Client | Connect |
|---|---|
| AccordionShell (CLI) | accordionshell init --host <ip-or-hostname> |
| Accordion Pilot (GUI) | Launch app → toolbar host field → Connect |
| .NET API | new AccordionQ2Client("http://<host>:5000") |
| Python API | AccordionQ2Client("http://<host>:5000") |
Default WebApi port: 5000 — Hardware manager port: 10000
Quick-Reference: Service Discovery
Accordion devices advertise themselves via mDNS (_accordion._tcp.local).
On a LAN with mDNS support you can connect by hostname (e.g. http://agent64.local:5000) without knowing the IP address.
See Network Configuration for details.
Source Locations
| Content | Source path |
|---|---|
| Hardware module specs | Documentation/ESH10000*.md |
| Internal architecture notes | Documentation/source/ |
| .NET client docs | submodules/webapiclient/docs/ |
| Python client docs | submodules/webapiclient-python/docs/ |
| AccordionPilot GUI docs | accordionpilot/AccordionPilot/docs/ (separate repo) |
| AccordionShell CLI docs | accordionpilot/submodules/shell/docs/ (separate repo) |
| Device chip references | submodules/devicelibrary/Devices/ |