63 lines
2.1 KiB
Markdown
63 lines
2.1 KiB
Markdown
# morningedition
|
|
|
|
A daily morning receipt printer for the Epson TM-T88V thermal printer.
|
|
Prints a personalized "newspaper" every morning at 6:30am via cron.
|
|
|
|
## What it prints
|
|
|
|
- **Header** — date, time, location (Bridgeland, Cypress TX)
|
|
- **On This Day** — historical fact for today's date (when available)
|
|
- **Weather** — current conditions, hi/lo, humidity, UV, wind, sunrise/sunset via wttr.in
|
|
- **Houston News** — 5 live headlines from ABC13 RSS
|
|
- **World News** — 5 live headlines from BBC RSS
|
|
- **Thought for the Day** — rotating daily quote
|
|
- **Morning Chuckle** — rotating daily joke
|
|
- **Did You Know?** — rotating daily fun fact
|
|
- **Local Tip** — rotating Bridgeland/Houston tips
|
|
|
|
## Requirements
|
|
|
|
- Python 3 (stdlib only, no pip installs needed)
|
|
- Epson TM-T88V connected via USB, configured in CUPS as printer name `receipt`
|
|
- Internet connection at print time (weather + news)
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# Print to printer
|
|
python3 morningedition.py
|
|
|
|
# Preview in terminal (no printing)
|
|
python3 morningedition.py --preview
|
|
```
|
|
|
|
## Cron setup
|
|
|
|
Already configured at 6:30am Central Time:
|
|
|
|
```
|
|
CRON_TZ=America/Chicago
|
|
30 6 * * * /usr/bin/python3 /home/rich/Devel/morningedition/morningedition.py
|
|
```
|
|
|
|
## Printer notes
|
|
|
|
- Prints in **raw ESC/POS mode** (`lpr -P receipt -o raw`) — faster and more reliable than CUPS rendering
|
|
- Paper cut is handled via `GS V 0x00` in the ESC/POS byte stream
|
|
- ASCII only — no emoji or unicode
|
|
- `WIDTH = 30` currently because the printer NV memory is locked to 58mm paper mode
|
|
(even though 80mm rolls are loaded). To fix: use Epson TM Utility on Windows to set
|
|
Memory Switch → Paper Width → 80mm, then change `WIDTH = 30` → `WIDTH = 42` in
|
|
`morningedition.py` line 23.
|
|
|
|
## Files
|
|
|
|
| File | Purpose |
|
|
|---|---|
|
|
| `morningedition.py` | Main script |
|
|
| `diagnose.py` | ESC/POS font/width diagnostic prints |
|
|
| `diagnose2.py` | Print area and character spacing diagnostics |
|
|
| `fixwidth.py` | NV paper-width fix attempts (v1) |
|
|
| `fixwidth2.py` | NV memory switch sweep (v2) |
|
|
| `readmsw.py` | Attempted memory switch readback via USB |
|