{"id":51011986,"url":"https://github.com/evtivity/evtivity-iot-panel","last_synced_at":"2026-06-21T04:01:32.752Z","repository":{"id":364582218,"uuid":"1267954404","full_name":"EVtivity/evtivity-iot-panel","owner":"EVtivity","description":"A WiFi touch-screen control panel for the EVtivity CSMS, built on the Waveshare ESP32-S3-Touch-LCD-7B (7-inch, 1024x600).","archived":false,"fork":false,"pushed_at":"2026-06-13T15:08:38.000Z","size":60615,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T17:11:50.560Z","etag":null,"topics":["esp32","esp32-s3","evcharging","iot","waveshare"],"latest_commit_sha":null,"homepage":"https://evtivity.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EVtivity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-13T02:24:32.000Z","updated_at":"2026-06-13T15:08:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/EVtivity/evtivity-iot-panel","commit_stats":null,"previous_names":["evtivity/evtivity-iot-panel"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/EVtivity/evtivity-iot-panel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EVtivity%2Fevtivity-iot-panel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EVtivity%2Fevtivity-iot-panel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EVtivity%2Fevtivity-iot-panel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EVtivity%2Fevtivity-iot-panel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EVtivity","download_url":"https://codeload.github.com/EVtivity/evtivity-iot-panel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EVtivity%2Fevtivity-iot-panel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34593129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"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":["esp32","esp32-s3","evcharging","iot","waveshare"],"created_at":"2026-06-21T04:01:27.461Z","updated_at":"2026-06-21T04:01:32.729Z","avatar_url":"https://github.com/EVtivity.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"docs/images/evtivity-logo.svg\" width=\"84\" alt=\"EVtivity\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\"\u003e\n  \u003cimg alt=\"Platform: ESP32-S3\" src=\"https://img.shields.io/badge/platform-ESP32--S3-E7352C\"\u003e\n  \u003cimg alt=\"Framework: Arduino\" src=\"https://img.shields.io/badge/framework-Arduino-00979D\"\u003e\n  \u003cimg alt=\"UI: LVGL 8.4\" src=\"https://img.shields.io/badge/UI-LVGL%208.4-7C3AED\"\u003e\n  \u003cimg alt=\"Display: 1024x600\" src=\"https://img.shields.io/badge/display-1024%C3%97600-555\"\u003e\n\u003c/p\u003e\n\n# EVtivity CSMS IoT Panel\n\nA WiFi touch-screen control panel for the [EVtivity CSMS](https://evtivity.com), built on the Waveshare ESP32-S3-Touch-LCD-7B (7-inch, 1024x600). The panel provisions itself over a self-hosted WiFi access point, connects to a CSMS deployment with an operator API key, and gives on-site staff a clean touch interface to monitor and control the charging stations at one site.\n\nThis repository holds the portable LVGL UI, the Arduino firmware, and a host simulator that renders the UI to pixel-true PNGs. The 7B panel is driven with Waveshare's own 7B drivers; it is not supported by `ESP32_Display_Panel`.\n\n## Screenshots\n\n![Dashboard](docs/images/screenshot-dashboard.png)\n\n| Charging | Settings |\n| --- | --- |\n| ![Charging view](docs/images/screenshot-charging.png) | ![Settings view](docs/images/screenshot-settings.png) |\n\n## What it does\n\n- Exposes a setup access point on first boot. A phone or laptop joins it and opens a captive portal to enter the WiFi credentials plus the CSMS base URL, operator API key, and site ID.\n- Opens to a **Dashboard** with at-a-glance site health (online, charging, available, needs-attention), today's energy / sessions / revenue, and a connector-status bar.\n- After provisioning, it connects to the WiFi network and the CSMS REST API.\n- Shows three on-screen views:\n  - **Dashboard** opens to site health at a glance: online / charging / available / needs-attention counts, today's energy, sessions, and revenue, and a connector-status bar.\n  - **Charging** lists every station at the configured site with live status, and lets the operator start and stop charging, clear faults, and drive the built-in simulator.\n  - **Settings** shows the connection details and runs maintenance actions, including a Reboot button.\n\n### Start charging requires free vend\n\nStart uses the guest charging flow (`POST /v1/portal/guest/start/{stationId}/{evseId}`), the same endpoint the driver portal uses. The CSMS opens a guest session with a unique token and sends RequestStartTransaction, so the session passes the payment gate and there is no concurrent-token conflict.\n\nThis currently works only on a site with **free vend enabled**. On a paid tariff the endpoint returns `PAYMENT_METHOD_REQUIRED` (a guest needs a card the panel cannot supply), and the panel shows that error. Enable free vend on the site (CSMS: Site Detail \u003e Free Vend) before starting from the panel.\n\n## Setup (AP mode)\n\nThe panel provisions over its own WiFi access point, so no cable or app is needed.\n\n1. Power on the panel. While unprovisioned it brings up an open access point named `EVtivity-Panel-XXXX` (the suffix is unique per device and shown on the provisioning screen).\n2. Join that network from a phone or laptop. The captive portal opens automatically; if it does not, browse to `http://192.168.4.1`.\n3. Sign in to the setup portal (default `admin` / `admin123`) and enter the WiFi credentials, CSMS base URL, operator API key, and site ID.\n4. Save. The panel reboots, connects to your WiFi and the CSMS, and switches to the Charging view.\n\nThe access point stays up alongside the WiFi connection, so `http://192.168.4.1` remains reachable to change settings later. You can also edit the connection from the on-screen Settings view.\n\n## Hardware\n\nWaveshare ESP32-S3-Touch-LCD-7B: ESP32-S3 (16 MB flash, 8 MB PSRAM), 1024x600 IPS RGB panel, GT911 5-point capacitive touch, a register-based I2C IO expander at 0x24 (not a CH422G), 2.4 GHz WiFi.\n\n- Buy: https://www.amazon.com/dp/B0FDQXKFJ5\n- Board repo (7B): https://github.com/waveshareteam/ESP32-S3-Touch-LCD-7B\n- Wiki: https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-7B\n\nThe 7B is a different board from the non-B \"7\" (1024x600 vs 800x480, and a different IO expander), so it is not covered by `ESP32_Display_Panel`. The full, verified pinout, timing, and the display bring-up are in [docs/HARDWARE-7B.md](docs/HARDWARE-7B.md). Board build settings are in [docs/BUILD.md](docs/BUILD.md).\n\n## License\n\nMIT. No credentials are stored in this repository. The panel keeps its WiFi password, API key, and site ID only in the device NVS, entered through the provisioning portal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevtivity%2Fevtivity-iot-panel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevtivity%2Fevtivity-iot-panel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevtivity%2Fevtivity-iot-panel/lists"}