Skip to content

Commercial laundry #

Exploratory project - not a finished or qualified installation. This is an early reference build and discussion about controlling a laundromat with readily available components and Dataplicity workflows. Parts of the software have been developed and exercised in simulation, but an integrated physical controller, real-machine operation and unattended payments have not been end-to-end tested. Hardware, Stripe and architecture selections are pragmatic starting points, not recommendations proven suitable for a laundromat. The documentation below describes intended contracts, code paths and qualification requirements; it is not a certified design or an installation guide for live equipment.

Why we're exploring this #

For fun, we're seeing how far we can get towards a laundromat control system using accessible industrial hardware and software we already have. We want to learn from people who own, install and maintain laundromats: machine and installation costs, cycle volumes, utilities, failures, servicing, payments and what matters day to day. The goal is to share decisions and lessons as the project develops - not announce a commercial laundry product or promise an open-source end-to-end system. Dataplicity workflows use the Dataplicity platform; individual gateway components and examples may have separate source licences.

Our current prototype architecture uses Product Applications, Device Classes, Product Processes, authorised actions and the Customer Portal. Its equipment gateway runs as managed Software on Dataplicity-OS or another qualified Linux image, using the existing agent for credentials, command transport and event delivery.

The current software work includes machine simulators, a LaundryMachine capability contract, generic read-only Modbus instrumentation, and an owner portal with Today, Sites, Machines, machine detail, Transactions and Settings. Owner controls run authorised durable Product Processes only when the mapped class and reported capabilities support them. Physical manufacturer qualification and actual Stripe reader commissioning remain separate verification steps. No production machine compatibility or supported wiring is claimed by the simulator package.

Provisional application architecture #

Model operators, sites, machines, vends, prices and exceptions with existing Product Records and relationships. Reusable payment orders and allocation ledgers belong to the same customer Product Instance. Processes compose payment and service delivery. Normal owner navigation should use Today, Sites, Machines, Transactions and Settings, with business impact before technical cause. Manufacturer protocols, raw registers and framework objects belong in the integrator's setup and engineering surfaces.

Each command and business event retains immutable order, payment reference where present, vend, Process, Operation and machine-command identifiers. Payment failed means never vend. Definitely failed service after confirmed payment permits compensation; an unknown service outcome requires reconciliation and must never trigger a blind duplicate vend. Preserve successful vends in a multi-machine order and compensate only the confirmed failed service.

Payment choices and remaining questions #

Initial attended reader testing is planned in Australia/AUD; the Android reader application is deferred. See Payments for the backend settlement foundation, current boundaries and questions for Stripe.

The operator must be the merchant through its vendor's Stripe Connect account. Vendors supply their own keys and region through Integrations; the laundry reference uses a normal Dataplicity-owned vendor tenant. A Site maps to a Terminal Location. UK/GBP and Spain/EUR are target validation combinations, not claims of approved unattended deployment. UX700 requires Stripe programme access and confirmation of country, connected-account charge behaviour, provisioning, unattended approval and the supported reader/POS experience. The gateway does not hold Stripe credentials or implement a separate payment service.