This commit is contained in:
traveler 2026-04-12 16:06:16 -05:00
parent bb997e2fa7
commit 0f82f39fdd
25 changed files with 577 additions and 123 deletions

View file

@ -0,0 +1,63 @@
---
title: Digital Signage Runbook
description: How to update price boards and manage the TV signage system
published: true
date: 2026-04-12T00:00:00.000Z
tags: pncfish, signage, runbook
editor: markdown
dateCreated: 2026-04-12T00:00:00.000Z
---
# Digital Signage Runbook
## Updating a Price
1. Open Google Sheets (master inventory)
2. Find the item row, edit price (col C), name (col B), or tank designator (col D)
3. Google Slides updates automatically
4. TVs pick up the change within 5 minutes — no further action needed
5. **Immediate update:** force-stop ScreenLite on that FireTV → relaunch
## Adding New Inventory
1. Add new row: SKU (A), display name (B), price (C), tank designator(s) (D)
2. Multiple tank designators are space-separated: `T4 T5`
3. Slides update automatically
4. Push to Square: currently manual via Square catalog CSV upload
## When an Item Sells — Manual Fallback
1. Remove the tank designator from col D of that item's row
2. Slides update automatically within a minute
3. TV picks it up within 5 minutes
## Google Sheets Column Reference
| Column | Field | Example |
|--------|-------|---------|
| A | SKU | `CLOWN-001` |
| B | Display name | `Ocellaris Clownfish` |
| C | Price | `29.99` |
| D | Tank designator(s) | `T4` or `T4 T5` |
## Troubleshooting
| Problem | Fix |
|---------|-----|
| TV showing stale price | Force-stop ScreenLite → relaunch |
| Image blurry/soft text | Add `?sz=s1920` to PNG export URL in HTML file |
| Slides not updating from Sheet | Check Apps Script in Extensions → Apps Script for errors |
| FireTV lost the URL | Re-enter Apache URL in ScreenLite settings |
## Square Webhook Automation (When Deployed)
Once live, the automation flow will be:
```
Square sale → Webhook POST → Google Apps Script Web App
→ Find item SKU in Sheet
→ Remove tank designator from col D
→ Slides auto-update → TV picks up within 5 min
```
**Status:** Designed, not yet deployed. Next step: configure Square developer dashboard webhook endpoint to the Apps Script URL and test with a real sale.

View file

@ -1,6 +1,6 @@
---
title: IT Overview
description: PNC Fish & More IT infrastructure
description: PNC Fish & More IT infrastructure — web server, digital signage, networking
published: true
date: 2026-04-12T00:00:00.000Z
tags: pncfish, it
@ -10,19 +10,61 @@ dateCreated: 2026-04-12T00:00:00.000Z
# IT Overview
## Website
## Infrastructure
Hosted on `pncfishandmore.com`. Static/PHP stack via the Netgrimoire `web.yaml` Apache/PHP service.
| Resource | Details |
|----------|---------|
| Domain | `pncfishandmore.com` — managed via ISPConfig |
| Web server | Apache on NetGrimoire (self-hosted Docker, `web.yaml`) |
| Email | MailCow + MXRoute relay |
| DNS | ISPConfig + internal Technitium |
| Accounting | Bigcapital (Docker on docker5, `accounts.netgrimoire.com`) |
## Email
---
Handled via MailCow + MXRoute. Domain configured as part of the 8-domain mail setup.
See [MailCow Domain Setup](/Keystone-Grimoire/Mail/Domain-Setup).
## Digital Signage System
## POS System
Three FireTV devices display live price board slides on in-store TVs. Each TV runs ScreenLite kiosk app loading an Apache HTML page, which fetches a Google Slides PNG export and refreshes it every 5 minutes via JavaScript.
*Document POS system here.*
### TV Pages on Apache
## Network
| File | Slide Deck | Purpose |
|------|-----------|---------|
| `left.html` | Saltwater fish | Main fish price board |
| `right.html` | Secondary | Freshwater or secondary display |
| `inverts.html` | Invertebrates | Inverts price board |
*Document store network here — router, AP, any on-site devices.*
### Google Slides Deck IDs
| Deck | Slide ID |
|------|---------|
| Left (saltwater fish) | `1S3j0K1QlWAtkjq73E73At3gz9vWp9vVr_yZswUHiyN8` |
| Right (secondary) | `1mWzgisxMQAFAhME9HXY_PEK0v_hIuQ4Md0PQS10ES8Q` |
| Inverts | `1nzunM4pQxqmW82_Ab0rrOsV4QuO8G5TVUDodplI_4tY` |
PNG export URL format: `https://docs.google.com/presentation/d/<ID>/export/png?sz=s1920`
Use `sz=s1920` for sharper text. If display looks soft, increase canvas size in Google Slides settings.
### Critical: ScreenLite Does Not Respond to Meta-Refresh
ScreenLite ignores `<meta http-equiv="refresh">`. All TV page refreshes use JavaScript `setInterval` image src swap only:
```javascript
setInterval(function() {
var img = document.getElementById('slide');
img.src = SLIDE_URL + '?t=' + Date.now();
}, 300000); // 300,000ms = 5 minutes
```
### Force Immediate Refresh
Force-stop ScreenLite on the FireTV and relaunch. It reloads the Apache URL and picks up the latest PNG immediately.
---
## Pending
- [ ] Square webhook → Apps Script → Google Sheets automation (designed, not deployed)
- [ ] "Push to Square" Apps Script button in Google Sheets
- [ ] Store network documentation (router, AP, FireTV connections)