{"id":46171839,"url":"https://github.com/nodestark/mdb-esp32-cashless","last_synced_at":"2026-06-05T21:00:50.007Z","repository":{"id":240126226,"uuid":"798902208","full_name":"nodestark/mdb-esp32-cashless","owner":"nodestark","description":"ESP32-based MDB cashless device for vending machines, supporting EVA DTS DEX/DDCMP telemetry and payments over the MDB protocol via Bluetooth and MQTT","archived":false,"fork":false,"pushed_at":"2026-05-30T15:26:10.000Z","size":87986,"stargazers_count":136,"open_issues_count":3,"forks_count":45,"subscribers_count":16,"default_branch":"main","last_synced_at":"2026-05-30T17:12:58.465Z","etag":null,"topics":["esp32","iot","nuttx","protocol-mdb","vending-machine"],"latest_commit_sha":null,"homepage":"https://vmflow.xyz","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nodestark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"nodestark"}},"created_at":"2024-05-10T18:07:56.000Z","updated_at":"2026-05-30T15:30:52.000Z","dependencies_parsed_at":"2024-06-25T13:44:55.845Z","dependency_job_id":"08c57298-e3f5-4e50-a737-b3a30760d0d0","html_url":"https://github.com/nodestark/mdb-esp32-cashless","commit_stats":null,"previous_names":["nodestark/open-mdb-cashless","nodestark/mdb-esp32-cashless"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/nodestark/mdb-esp32-cashless","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodestark%2Fmdb-esp32-cashless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodestark%2Fmdb-esp32-cashless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodestark%2Fmdb-esp32-cashless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodestark%2Fmdb-esp32-cashless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodestark","download_url":"https://codeload.github.com/nodestark/mdb-esp32-cashless/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodestark%2Fmdb-esp32-cashless/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33959537,"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-05T02:00:06.157Z","response_time":120,"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","iot","nuttx","protocol-mdb","vending-machine"],"created_at":"2026-03-02T16:02:13.298Z","updated_at":"2026-06-05T21:00:50.002Z","avatar_url":"https://github.com/nodestark.png","language":"Vue","funding_links":["https://github.com/sponsors/nodestark"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![PCBWay Award](https://img.shields.io/badge/%F0%9F%8F%86%20PCBWay-Popular%20Prize%202026-orange?style=for-the-badge)](pcbway-award-2026.jpg)\n[![VMflow Dashboard](https://img.shields.io/badge/VMflow-Web%20Dashboard-0f172a?style=for-the-badge\u0026logo=grafana\u0026logoColor=white)](https://vmflow.xyz/dashboard)\n[![Discord](https://img.shields.io/badge/Discord-Community-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.gg/YgnusQaDHM)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE)\n[![ESP-IDF](https://img.shields.io/badge/ESP--IDF-v5.5.1-E7352C?style=for-the-badge\u0026logo=espressif\u0026logoColor=white)](https://docs.espressif.com/projects/esp-idf/en/v5.5.1/)\n\n# VMflow — Open-Source Vending Machine IoT Platform\n\n**The first open-source vending platform designed for AI agents.**\n\u003c/div\u003e\n\n---\n\nThe project aims to provide a modern, open, and extensible platform for vending machine connectivity. Based on the ESP32 platform, it enables machines to communicate via Bluetooth and cloud services, receive remote credits, report telemetry, and integrate with mobile applications and web dashboards.\n\n![MDB Cashless](1411051686640.png)\n\n# 🤖 Manage It With Your AI Agent\n\nVMflow is built to be driven by AI agents. Paste this into your agent and it picks up the whole project — MQTT RPC control, the device commands, and the Supabase data API:\n\n```\nread https://raw.githubusercontent.com/nodestark/mdb-esp32-cashless/main/AGENTS.md\n```\n\n# Features\n- ESP32-based vending machine controller implementing MDB telemetry, cashless payments, and IoT connectivity;\n- PCB design done in **KiCad**, facilitating production and customization of the hardware;\n- Support for **EVA DTS DEX/DDCMP** (European Vending Association Data Transfer Standard), allowing remote monitoring and control of machines;\n- **Web Dashboard**: [📊 Open Dashboard](https://vmflow.xyz/dashboard) – Centralized interface to monitor the vending machine network in real time, including device status, telemetry, sales data, inventory control, product catalog management, and real-time stock alerts. Features AI-powered diagnostics (via OpenAI) for operation-wide analysis, per-machine insights, and product catalog recommendations;\n- **PAX Counter**: detects nearby mobile devices and periodically reports anonymized presence metrics to estimate foot traffic around the vending machine. This enables heatmaps, peak-hour analysis, and location performance insights;\n\n# Getting Started\n\n### 1. Flash the Firmware\n\n👉 Install firmware via Web Installer (no setup required): **https://install.vmflow.xyz**\n\n👉 Advanced (for development): ESP-IDF\n\n```bash\n# Clone the repository (with submodules — pulls in the VMC project)\ngit clone --recurse-submodules https://github.com/nodestark/mdb-esp32-cashless\ncd mdb-esp32-cashless/mdb-slave-esp32s3\n\nidf.py flash monitor\n```\n### 2. Register and Configure the Device — VMflow [Android App](./android)\n\nUse the **VMflow Android app** to register the board and link it to your operator account. The app allows you to:\n\n- **Device Registration**: register telemetry boards and bind them to your operator account\n- **Wi-Fi Configuration**: remotely configure the Wi-Fi network of your devices via Bluetooth\n- **Send Credits**: interact with devices in real time via Bluetooth and MQTT\n\n[![Google Play](https://img.shields.io/badge/Google%20Play-Download-green?logo=google-play)](https://play.google.com/store/apps/details?id=xyz.vmflow.target)\n\n## Hardware\n\n![MDB Cashless](mdb-slave-esp32s3/mdb-slave-esp32s3-sim7080g_pcb_v2.jpg)\n![MDB Cashless](mdb-slave-esp32s3/mdb-slave-esp32s3_pcb_v4.jpg)\n\n[![PCBWay](https://www.pcbway.com/project/img/images/frompcbway-1220.png)](https://www.pcbway.com/project/member/?bmbno=1B3B95CB-4E28-4D)\n\n---\n\n[![Made with Supabase](https://supabase.com/badge-made-with-supabase-dark.svg)](https://supabase.com)\n\n### 1️⃣ Get a Bearer Token\n\n```bash\ncurl -X POST 'https://supabase.vmflow.xyz/auth/v1/token?grant_type=password' \\\n-H \"apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLWRlbW8iLCJpYXQiOjE2NDE3NjkyMDAsImV4cCI6MTc5OTUzNTYwMH0.VGEEIztVo-do9cy_Qw2-2sF8bSONckhX71Nvtwj15X4\" \\\n-H \"Content-Type: application/json\" \\\n-d '{ \"email\": \"your_email@domain.xyz\", \"password\": \"your_password\"}'\n```\n\n### 2️⃣ Send Credit to the Machine over MQTT\n\n```bash\ncurl -X POST 'https://supabase.vmflow.xyz/functions/v1/send-credit' \\\n-H \"apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLWRlbW8iLCJpYXQiOjE2NDE3NjkyMDAsImV4cCI6MTc5OTUzNTYwMH0.VGEEIztVo-do9cy_Qw2-2sF8bSONckhX71Nvtwj15X4\" \\\n-H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n-H \"Content-Type: application/json\" \\\n-d '{ \"subdomain\":51,\"amount\":1.50 }'\n```\n\n### 3️⃣ View Sales\n\n```bash\ncurl -X GET 'https://supabase.vmflow.xyz/rest/v1/sales' \\\n-H \"apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLWRlbW8iLCJpYXQiOjE2NDE3NjkyMDAsImV4cCI6MTc5OTUzNTYwMH0.VGEEIztVo-do9cy_Qw2-2sF8bSONckhX71Nvtwj15X4\" \\\n-H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n### 4️⃣ View Devices\n\n```bash\ncurl -X GET 'https://supabase.vmflow.xyz/rest/v1/embedded' \\\n-H \"apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLWRlbW8iLCJpYXQiOjE2NDE3NjkyMDAsImV4cCI6MTc5OTUzNTYwMH0.VGEEIztVo-do9cy_Qw2-2sF8bSONckhX71Nvtwj15X4\" \\\n-H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n### 5️⃣ View Paxcounter\n\n![PAX Counter](pax-counter-heatmap.png)\n\n```bash\ncurl -X GET 'https://supabase.vmflow.xyz/rest/v1/metrics?name=eq.paxcounter' \\\n-H \"apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLWRlbW8iLCJpYXQiOjE2NDE3NjkyMDAsImV4cCI6MTc5OTUzNTYwMH0.VGEEIztVo-do9cy_Qw2-2sF8bSONckhX71Nvtwj15X4\" \\\n-H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n# How to Contribute:\n- Contributions are welcome! Feel free to open issues, send pull requests, or propose new features\n- Before submitting a pull request, make sure the code complies with the style and quality guidelines defined in the project\n- Help us improve documentation by adding usage examples, installation instructions, and any other relevant information\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodestark%2Fmdb-esp32-cashless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodestark%2Fmdb-esp32-cashless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodestark%2Fmdb-esp32-cashless/lists"}