This integration enables monitoring and control of ePOS-capable receipt printers via the ePOS-Print XML interface.
ePOS (Epson POS) is a printer interface developed by Epson based on XML and Web Services (HTTP/SOAP).
| Feature | ESC/POS | ePOS-Print XML |
|---|---|---|
| Transmission | Binary (Byte-Stream) | XML (Text-based) |
| Platform | Platform independent | Platform independent (HTTP/SOAP) |
| Complexity | High (Hex/Binary codes) | Medium (XML structures) |
| Status Query | Manual (via commands) | Automatic (in Response) |
| Readability | Hard (Hex codes) | Easy (Plain text XML) |
| Debugging | Difficult (Hex dumps) | Easy (XML logs) |
| Future-proof | Limited (older technology) | High (Web standards) |
- ✅ No driver installation required (HTTP/SOAP)
- ✅ Platform independent (Windows, Linux, macOS, iOS, Android)
- ✅ Automatic status query in the response
- ✅ Easy debugging through readable XML logs
- ✅ Remote management via HTTP
- ✅ Future-proof through standard technologies
💡 The key advantage: ePOS requires no drivers and works platform independently via HTTP.
- Copy the
eposfolder into thecustom_componentsdirectory of your Home Assistant installation. - Restart Home Assistant.
- Go to
Settings → Devices & Services → Add Integration. - Search for
ePOS Printerand follow the setup.
- Open HACS in Home Assistant.
- Click on "Integrations" and then on the three dots (⋮) in the top right corner.
- Select "Add Custom Repository".
- Add the repository URL:
https://github.com/binaery82/epos - Select "Integration" as the category and click "Add".
- Search for "ePOS Printer" and click "Install".
- Restart Home Assistant.
- Go to
Settings → Devices & Services → Add Integration. - Search for
ePOS Printerand follow the setup.
The integration supports 50+ Epson printer models:
- TM-H Series (Hybrid): H6000IV, H6000V, H6000VI
- TM-L Series (Label): L90, L90-i, L100
- TM-m Series (mPOS/Wireless): m10, m30, m30II, m30III, m50, m50II
- TM-P Series (Portable): P20, P20II, P60II, P80, P80II
- TM-T Series (Thermal Receipt): T20, T20II, T20III, T20IV, T70, T70II, T82II, T82III, T82IV, T83II, T88IV, T88V, T88VI, T88VII, T90
- TM-U Series (Impact): U220, U220II, U330
📖 Full list of supported printers → PRINTERS.md
Configuration is done via the Home Assistant UI.
- Name: A freely selectable name for the printer
- Model: The exact printer model
- IP Address: The IP address of the printer on the network
- Cash Drawer: Contact pin and trigger time
- Buzzer/Sound Module: Patterns and repetitions
- Paper Width: Selection of paper width
📖 Detailed configuration guide → CONFIGURATION.md
After setup, the following entities are available:
| Entity | Description | Availability | Enabled by default? |
|---|---|---|---|
sensor.NAME |
Status sensor (online/offline/error) | ✅ Always | ✅ Yes |
sensor.NAME_battery_level |
Battery level in % | ✅ On supported models | ✅ Yes |
binary_sensor.NAME_battery_charging |
Battery charging status | ✅ On supported models | ✅ Yes |
binary_sensor.NAME_drawer_open |
Drawer status (open/closed) | ✅ When drawer is enabled | ✅ Yes |
button.NAME_recovery |
Printer recovery | ✅ On supported models | ✅ Yes |
button.NAME_reset |
Printer restart | ✅ Always | ✅ Yes |
button.NAME_buzzer |
Trigger buzzer | ✅ When buzzer is enabled/supported | ✅ Yes |
button.NAME_drawer |
Open drawer | ✅ When drawer is enabled | ✅ Yes |
button.NAME_command_send |
Send hex command | ✅ On supported models | ❌ No (enable manually) |
select.NAME_paper_width |
Set paper width | ✅ Always | ✅ Yes |
select.NAME_drawer_pin |
Set drawer pin | ✅ When drawer is enabled | ✅ Yes |
select.NAME_drawer_pulse |
Set drawer pulse time | ✅ When drawer is enabled | ✅ Yes |
select.NAME_buzzer_pattern |
Select buzzer pattern | ✅ When buzzer is enabled/supported | ✅ Yes |
number.NAME_buzzer_repeat |
Set buzzer repetitions | ✅ When buzzer is enabled/supported | ✅ Yes |
text.NAME_command |
Enter hex command | ✅ On supported models | ❌ No (enable manually) |
switch.NAME_drawer_inverted |
Invert drawer sensor | ✅ When drawer is enabled | ❌ No (enable manually) |
- Reset: Restarts the printer
- Recovery: Starts printer recovery
- Buzzer: Sends patterns and repetitions to the printer
- Drawer: Sends contact pin and trigger time to the printer
- Command: Sends a hexadecimal code to the printer*
- Invert: Inverts the drawer open message*
*Note: Must be manually enabled after installation
Sends an XML print job to the ePOS printer.
Parameters:
entity_id: The entity ID of the printer (e.g.,sensor.epos_printer)xml: The ePOS-Print XML command
Example:
service: epos.print
data:
entity_id: sensor.epos_printer
xml: "<text>Hello, World! </text><cut />"- Make sure the printer has a static IP address.
- Check if the printer is reachable on the network (ping).
- Make sure ePOS-Print is enabled on the printer.
- Check the network connection.
- Restart the printer.
- Check the IP address in the configuration.
- Check the printer settings.
- Make sure the XML is correct.
- Check if paper is loaded.
- Check if the cover is closed.
Version: 0.1.0
- Initial release
- Support for 50+ Epson printer models
- Status monitoring
- Printing via ePOS-Print XML
- Drawer/Buzzer support
- UI configuration
Contributions are welcome! Please create an issue or pull request on GitHub.
📖 How you can help → CONTRIBUTING.md
MIT License
- GitHub Repository
- Issue Tracker
- Documentation
- Epson ePOS-Print XML Documentation & Tool → Download the "ePOS-Print XML User's Manual and Sample Program" for your printer model: Epson Download Center