{"id":31133156,"url":"https://github.com/mictronics/digital-io-server","last_synced_at":"2026-04-16T11:02:31.512Z","repository":{"id":310520334,"uuid":"1033711954","full_name":"Mictronics/digital-io-server","owner":"Mictronics","description":"Digital IO Server is a simple SCPI server for Arduino boards that allows to control digital input and output pins over Ethernet.  Works with boards like Keyestudio 5500 or Arduino Uno with Ethernet shield.","archived":false,"fork":false,"pushed_at":"2025-08-18T15:37:46.000Z","size":127,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-18T06:02:55.356Z","etag":null,"topics":["5500","arduino","ethernet","keyestudio","scpi","server","uno"],"latest_commit_sha":null,"homepage":"http://www.mictronics.de","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mictronics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-07T08:27:27.000Z","updated_at":"2025-08-18T15:37:49.000Z","dependencies_parsed_at":"2025-08-18T17:36:31.250Z","dependency_job_id":"1d5ecec5-0967-4617-a947-e7ecbab1b044","html_url":"https://github.com/Mictronics/digital-io-server","commit_stats":null,"previous_names":["mictronics/digital-io-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mictronics/digital-io-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fdigital-io-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fdigital-io-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fdigital-io-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fdigital-io-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mictronics","download_url":"https://codeload.github.com/Mictronics/digital-io-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mictronics%2Fdigital-io-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001323,"owners_count":26083040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["5500","arduino","ethernet","keyestudio","scpi","server","uno"],"created_at":"2025-09-18T06:00:22.756Z","updated_at":"2025-10-09T10:12:22.130Z","avatar_url":"https://github.com/Mictronics.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Digital IO Server\n\nDigital IO Server is a simple SCPI server for Arduino Uno based devices that allows to control digital input and output pins over Ethernet.\nIt uses the Vrekrer SCPI parser library to parse SCPI commands.\n\nIt is designed to be used with the [Keyestudio 5500](https://www.keyestudio.com/keyestudio-w5500-ethernet-development-board-for-arduino-diy-project-without-poe-p0368.html) board or [Arduino Uno](https://docs.arduino.cc/hardware/uno-rev3-smd/) with [Ethernet shield](https://docs.arduino.cc/hardware/ethernet-shield-rev2/).\n\n## Features\n\n- control and query of digital inputs and outputs via Ethernet\n- Configuration of networks settings (IP, gateway, subnet, port) via SCPI command\n- Error handling and return via SCPI\n- Non-volatile storage of network settings in EEPROM\n- GPIO reset and device reboot via SCPI command\n\n## Hardware\n\n- Arduino Uno with Ethernet Shield (W5100/W5200/W5500)\n- Keyestudio 5500 board\n\n## Pin assignment\n\n**Digital inputs:**  \nDIn0 = Pin 14  \nDIn1 = Pin 15  \nDIn2 = Pin 16  \nDIn3 = Pin 17  \nDIn4 = Pin 18  \nDIn5 = Pin 19\n\n**Digital outputs:**  \nDOut0 = Pin 0  \nDOut1 = Pin 1  \nDOut2 = Pin 2  \nDOut3 = Pin 3  \nDOut4 = Pin 4  \nDOut5 = Pin 5  \nDOut6 = Pin 6  \nDOut7 = Pin 7\n\n## SCPI commands\n\n| Command              | Description                                           |\n| -------------------- | ----------------------------------------------------- |\n| `*IDN?`              | Query device identification string                    |\n| `*RST`               | Resets and initializes all digital IOs                |\n| `SYSTem:ERRor?`      | Queries and returns last device error                 |\n| `SYSTem:REBoot`      | Reboots the device                                    |\n| `SYSTem:LAN:CONFig?` | Queries and return actual netwirk configuration       |\n| `SYSTem:LAN:CONFig`  | Set network configuration (IP, gateway, subnet, port) |\n| `DigitalIn#?`        | Queries and returns status of digital input pin       |\n| `DigitalOut#`        | Set digital output pin                                |\n| `DigitalOut#?`       | Queries and returns status of digital output pin      |\n\n**Examples:**\n\n- `DigitalIn0?` – Request status from digital input 0, pin 14\n- `DigitalOut3 HIGH` – Set digital output DOut3 to HIGH, pin 3\n- `SYSTem:LAN:CONFig 192.168.1.100,192.168.1.1,255.255.255.0,5025` – Set network configuration\n\n```\nDigitalIn\u003cindex\u003e?\n  Queries the logic state of DigitalIn[index] pin\n  Return values are \"HIGH\" or \"LOW\"\n  Examples:\n  DigitalIn0?     (Queries the state of digital input 0 pin)\n  DigitalIn5?     (Queries the state of digital input 5 pin)\n\nDigitalOut\u003cindex\u003e?\n  Queries the logic state of DigitalOut[index] pin\n  Return values are \"HIGH\" or \"LOW\"\n  Examples:\n  DigitalOut4?    (Queries the state of digital output 4 pin)\n  DigitalOut6?    (This does nothing as digital output 6 does not exists)\n\nDigitalOut\u003cindex\u003e state\n  Sets the logic state of DigitalOut[index] pin\n  Valid states are : \"HIGH\", \"LOW\", \"ON\", \"OFF\", \"1\" and \"0\"\n  and any lowercase/uppercase combinations\n  Examples:\n  DigitalOut4 HIGH  (Sets digital output 4 pin to HIGH)\n  DigitalOut2 Off   (Sets digital output 2 pin to LOW)\n  DigitalOut0 1     (Sets digital output 0 pin to HIGH)\n```\n\n## Error codes\n\n- 0: SCPI_Parser::ErrorCode::NoError\n- 1: SCPI_Parser::ErrorCode::UnknownCommand\n- 2: SCPI_Parser::ErrorCode::Timeout\n- 3: SCPI_Parser::ErrorCode::BufferOverflow\n- 4: SCPI_Parser::ErrorCode::InvalidParameter\n\n## Linux usage\n\nThe digital IO server can be controlled under Linux using netcat (nc).\n\nExample:\n\n```bash\n~$ echo \"SYST:LAN:CONF?\" | nc 192.168.178.232 5025\n192.168.178.232,192.168.178.1,255.255.255.0,5025\n\n~$ echo \"DigitalOut0?\" | nc 192.168.178.232 5025\nHIGH\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmictronics%2Fdigital-io-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmictronics%2Fdigital-io-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmictronics%2Fdigital-io-server/lists"}