No description
  • TypeScript 93.3%
  • JavaScript 5.8%
  • CSS 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-17 15:42:42 +02:00
.openai sTART @hintergasse 2026-08-17 18:59:39 +02:00
app Benzer: Klima entfernt 2026-09-17 15:42:42 +02:00
db sTART @hintergasse 2026-08-17 18:59:39 +02:00
docs/screenshots Improve wall display contrast and add screenshots 2026-08-20 17:56:58 +02:00
drizzle/meta sTART @hintergasse 2026-08-17 18:59:39 +02:00
examples/d1 sTART @hintergasse 2026-08-17 18:59:39 +02:00
lib Benzer: Klima entfernt 2026-09-17 15:42:42 +02:00
public Screensaver+Kalender 2026-09-06 17:49:46 +02:00
tests sTART @hintergasse 2026-08-17 18:59:39 +02:00
tools Kalenderselektion 2026-09-06 17:28:04 +02:00
worker sTART @hintergasse 2026-08-17 18:59:39 +02:00
.env.example Authenticate energy dashboard requests 2026-08-26 17:55:55 +02:00
.gitignore Add device-specific dashboard profiles 2026-08-31 17:46:59 +02:00
drizzle.config.ts sTART @hintergasse 2026-08-17 18:59:39 +02:00
eslint.config.mjs sTART @hintergasse 2026-08-17 18:59:39 +02:00
LICENSE Initial commit 2026-08-17 18:45:26 +02:00
next-env.d.ts sTART @hintergasse 2026-08-17 18:59:39 +02:00
next.config.ts sTART @hintergasse 2026-08-17 18:59:39 +02:00
package-lock.json sTART @hintergasse 2026-08-17 18:59:39 +02:00
package.json Benzer: Klima entfernt 2026-09-17 15:42:42 +02:00
pnpm-lock.yaml sTART @hintergasse 2026-08-17 18:59:39 +02:00
pnpm-workspace.yaml sTART @hintergasse 2026-08-17 18:59:39 +02:00
postcss.config.mjs sTART @hintergasse 2026-08-17 18:59:39 +02:00
README.md Kalenderselektion 2026-09-06 17:28:04 +02:00
tsconfig.json sTART @hintergasse 2026-08-17 18:59:39 +02:00
vite.config.ts sTART @hintergasse 2026-08-17 18:59:39 +02:00

Shelly Wall Display Dashboard

Touch-Dashboard für ShellyElevate ohne Home Assistant.

  • Produktionsserver: 10.0.1.125
  • Dashboard: http://10.0.1.125:3000/
  • ShellyElevate-Verwaltung: http://10.0.1.125:3000/admin
  • Displayprofile: http://10.0.1.125:3000/admin/displays
  • Projektverzeichnis: /home/hubobel/shelly_test

Dashboard

Speedtest

Speedtest-Dashboard

System

System-Dashboard

Energie

Energie-Dashboard

Installation

Voraussetzungen: Node.js ab Version 22.13.0, Corepack und Git.

sudo corepack enable
corepack prepare pnpm@11.19.0 --activate

cd ~
git clone https://git.hintergasse.de/hubobel/shelly_test.git
cd shelly_test
pnpm install --frozen-lockfile

Die nicht versionierte .env.local mit den Zugangsdaten in das Projektverzeichnis kopieren und schützen:

chmod 600 /home/hubobel/shelly_test/.env.local
pnpm build

Für die durch Authentik geschützte Energie-API muss in .env.local dasselbe Service-Token wie im Energie-Projekt hinterlegt sein:

ENERGY_API_URL=http://10.0.1.125:8321/api/data
ENERGY_API_TOKEN=replace-with-the-same-random-token

Für die Kalenderseite werden URL und derselbe interne API-Schlüssel des gcalendar-gateway ergänzt:

CALENDAR_GATEWAY_URL=http://127.0.0.1:8340
CALENDAR_GATEWAY_API_KEY=replace-with-the-same-random-key

systemd-Dienst einrichten

sudo tee /etc/systemd/system/shelly-dashboard.service >/dev/null <<'EOF'
[Unit]
Description=Shelly Wall Display Dashboard
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=hubobel
Group=hubobel
WorkingDirectory=/home/hubobel/shelly_test
Environment=NODE_ENV=production
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/usr/bin/pnpm start:lan
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now shelly-dashboard
sudo systemctl status shelly-dashboard --no-pager

In ShellyElevate diese Dashboard-URL eintragen:

http://10.0.1.125:3000/

Mehrere Displays konfigurieren

Unter http://10.0.1.125:3000/admin/displays lassen sich beliebig viele Wall Displays verwalten. Pro Display werden Geräte-IP, verfügbare Seiten, deren Reihenfolge und die Startseite festgelegt. Die Verwaltung erzeugt eine eindeutige URL wie http://10.0.1.125:3000/?display=EG und kann sie direkt an ShellyElevate übertragen.

Ist die Kalenderseite aktiv, lässt sich zusätzlich pro Display auswählen, welche eigenen und abonnierten Google-Kalender berücksichtigt werden.

Die Profile liegen ausschließlich auf dem Dashboardserver in data/display-profiles.json. Die Datei bleibt bei git pull erhalten und wird nicht in Git eingecheckt. Der mit pnpm start:lan gestartete lokale Konfigurationsdienst ist nur über 127.0.0.1 erreichbar.

Update-Script einmalig erstellen

sudo tee /usr/local/bin/shelly-update >/dev/null <<'EOF'
#!/usr/bin/env bash
set -Eeuo pipefail

PROJECT_DIR="/home/hubobel/shelly_test"

echo "Shelly-Dashboard wird aktualisiert …"
sudo -v
cd "$PROJECT_DIR"

/usr/bin/git pull --ff-only origin main
/usr/bin/pnpm install --frozen-lockfile
/usr/bin/pnpm build

sudo /usr/bin/systemctl restart shelly-dashboard
sudo /usr/bin/systemctl status shelly-dashboard --no-pager

echo "Shelly-Dashboard erfolgreich aktualisiert."
EOF

sudo chmod 755 /usr/local/bin/shelly-update

Update

Auf dem Produktionsserver genügt anschließend:

shelly-update

Danach die Versionsnummer unten rechts auf dem Shelly etwa 1,2 Sekunden gedrückt halten. Das Dashboard lädt den aktuellen Stand neu.