Skip to content

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Epson ePOS Printer Integration for Home Assistant

This integration enables monitoring and control of ePOS-capable receipt printers via the ePOS-Print XML interface.

🤔 What is ePOS?

ePOS (Epson POS) is a printer interface developed by Epson based on XML and Web Services (HTTP/SOAP).

ePOS vs. ESC/POS

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)

Advantages of ePOS-Print XML

  • ✅ 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.


📦 Installation

Manual Installation

  1. Copy the epos folder into the custom_components directory of your Home Assistant installation.
  2. Restart Home Assistant.
  3. Go to Settings → Devices & Services → Add Integration.
  4. Search for ePOS Printer and follow the setup.

HACS Installation (recommended)

  1. Open HACS in Home Assistant.
  2. Click on "Integrations" and then on the three dots (⋮) in the top right corner.
  3. Select "Add Custom Repository".
  4. Add the repository URL: https://github.com/binaery82/epos
  5. Select "Integration" as the category and click "Add".
  6. Search for "ePOS Printer" and click "Install".
  7. Restart Home Assistant.
  8. Go to Settings → Devices & Services → Add Integration.
  9. Search for ePOS Printer and 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

Configuration is done via the Home Assistant UI.

Required Information

  • Name: A freely selectable name for the printer
  • Model: The exact printer model
  • IP Address: The IP address of the printer on the network

Optional Hardware

  • Cash Drawer: Contact pin and trigger time
  • Buzzer/Sound Module: Patterns and repetitions
  • Paper Width: Selection of paper width

📖 Detailed configuration guide → CONFIGURATION.md


🎮 Entities

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)

Functions

  • 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


📝 Service

epos.print

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!&#10;</text><cut />"

🐛 Troubleshooting

Printer not found

  1. Make sure the printer has a static IP address.
  2. Check if the printer is reachable on the network (ping).
  3. Make sure ePOS-Print is enabled on the printer.

Status remains "offline"

  1. Check the network connection.
  2. Restart the printer.
  3. Check the IP address in the configuration.
  4. Check the printer settings.

Printing does not work

  1. Make sure the XML is correct.
  2. Check if paper is loaded.
  3. Check if the cover is closed.

📄 Changelog

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

Contributions are welcome! Please create an issue or pull request on GitHub.

📖 How you can help → CONTRIBUTING.md


📜 License

MIT License


🔗 Links