mirror of
https://github.com/skoelle/m5stack-dashboard.git
synced 2026-09-18 09:00:24 +00:00
Compare commits
4
Commits
3640e2465c
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0d4b29040 | ||
|
|
43979c883d | ||
|
|
41089a5b17 | ||
|
|
9b4c956eb6 |
@@ -0,0 +1,6 @@
|
||||
title: "M5Stack Dashboard"
|
||||
emoji: "🌡️"
|
||||
category: code
|
||||
subcategory: "Maker Firmware"
|
||||
status: active
|
||||
stack: [C++, Arduino, ESP32, PlatformIO, ArduinoJson]
|
||||
@@ -5,3 +5,18 @@
|
||||
```sh
|
||||
.venv-platformio/bin/pio run
|
||||
```
|
||||
|
||||
## Lizenz
|
||||
|
||||
MIT License, Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de)
|
||||
|
||||
- `LICENSE` — vollständiger Lizenztext im Projektroot
|
||||
- Jede `.cpp`/`.h`-Datei beginnt mit:
|
||||
```
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
```
|
||||
- Jede `.sh`-Datei beginnt mit:
|
||||
```
|
||||
# Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
```
|
||||
- `README.md` — Copyright-Verweis am Ende der Datei
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,4 +1,4 @@
|
||||
# M5Stack Core Dashboard
|
||||
# 🌤️ M5Stack Core Dashboard
|
||||
|
||||
Wetter-, Kalender- und MVG-Abfahrten-Dashboard für den M5Stack Core (ESP32),
|
||||
gesteuert über die 3 eingebauten Buttons (A, B, C).
|
||||
@@ -8,7 +8,7 @@ gesteuert über die 3 eingebauten Buttons (A, B, C).
|
||||

|
||||

|
||||
|
||||
## Voraussetzungen
|
||||
## ⚙️ Voraussetzungen
|
||||
|
||||
- Python 3 (für das lokale venv, in dem PlatformIO installiert wird)
|
||||
- Kein globales `pip install platformio` nötig, alle Skripte legen sich ihr
|
||||
@@ -18,7 +18,7 @@ gesteuert über die 3 eingebauten Buttons (A, B, C).
|
||||
die Windows-Skripte automatisch den `py`-Launcher (`py -3`), der zuverlässig
|
||||
Python 3 findet. Prüfen mit: `py -3 --version`
|
||||
|
||||
## Setup
|
||||
## 🔧 Setup
|
||||
|
||||
1. WLAN-Zugangsdaten eintragen:
|
||||
```
|
||||
@@ -30,12 +30,12 @@ Python 3 findet. Prüfen mit: `py -3 --version`
|
||||
2. Beim ersten Aufruf eines Skripts wird automatisch ein lokales venv unter
|
||||
`.venv-platformio/` angelegt.
|
||||
|
||||
## Nur bauen (Test ohne Gerät)
|
||||
## 🔨 Nur bauen (Test ohne Gerät)
|
||||
|
||||
Linux/macOS: `./scripts/build.sh`
|
||||
Windows: `scripts\build.cmd`
|
||||
|
||||
## Bauen + Flashen
|
||||
## ⚡ Bauen + Flashen
|
||||
|
||||
Linux/macOS: `./scripts/deploy.sh [/dev/ttyUSB0]`
|
||||
Windows: `scripts\deploy.cmd [COM4]`
|
||||
@@ -43,7 +43,7 @@ Windows: `scripts\deploy.cmd [COM4]`
|
||||
**Wichtig**: Vor dem Flashen sicherstellen, dass keine andere Anwendung
|
||||
(z.B. Arduino IDE mit offenem Monitor) den COM-Port belegt.
|
||||
|
||||
## Bedienung
|
||||
## 🎮 Bedienung
|
||||
|
||||
| Button | Funktion |
|
||||
|---|---|
|
||||
@@ -54,33 +54,32 @@ Windows: `scripts\deploy.cmd [COM4]`
|
||||
Nach 5 Minuten ohne Tastendruck springt das Gerät automatisch zurück zur
|
||||
Hauptseite. Hauptseite: Refresh alle 10 Minuten. MVG: jede Minute.
|
||||
|
||||
## Textdarstellung (Umlaute)
|
||||
## 🔤 Textdarstellung (Umlaute)
|
||||
|
||||
`include/text_utils.h` wandelt UTF-8-Umlaute automatisch in ASCII um
|
||||
(ö -> oe, ä -> ae, ü -> ue, ß -> ss), da der Standardfont sie nicht
|
||||
korrekt darstellt.
|
||||
|
||||
## Datumsformat im Kalender
|
||||
## 📅 Datumsformat im Kalender
|
||||
|
||||
Kurzformat `Wochentag Tag.Monat. Stunde:Minute`, z.B. `Mo 3.8. 14:00`.
|
||||
Ganztägige Termine ohne Uhrzeit, z.B. `Mo 3.8.`. Der Wochentag wird rein
|
||||
rechnerisch ermittelt (`include/date_utils.h`), keine NTP-Sync nötig.
|
||||
|
||||
## Icons
|
||||
## 🎨 Icons
|
||||
|
||||
Alle Icons werden prozedural gezeichnet (`src/icons/icons.h`), um Flash zu
|
||||
sparen. "Gewitter" wird durch Wolke+Blitz optisch von reiner Bewölkung
|
||||
unterschieden. Das Kalender-Icon ist ein echtes Kalenderblatt-Symbol statt
|
||||
einer Checkbox.
|
||||
|
||||
## GitHub Actions Build-Check
|
||||
## 🔄 GitHub Actions Build-Check
|
||||
|
||||
`.github/workflows/build.yml` kompiliert das Projekt bei jedem Push, ohne
|
||||
echte Zugangsdaten zu benötigen. Es wird dort automatisch eine
|
||||
Wegwerf-`secrets.h` aus `secrets.h.example` erzeugt, die nie ins Repo
|
||||
gelangt.
|
||||
|
||||
## Git
|
||||
---
|
||||
|
||||
Noch nicht initialisiert. Bei Bedarf: `git init && git add . && git commit -m "Initial"`.
|
||||
`include/secrets.h` und `.venv-platformio/` sind bereits in `.gitignore`.
|
||||
Licensed under the [MIT License](LICENSE) - Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <M5Stack.h>
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
VENV_DIR=".venv-platformio"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
VENV_DIR=".venv-platformio"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "calendar_api.h"
|
||||
#include "http_client.h"
|
||||
#include "../../include/secrets.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include <vector>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "departures_api.h"
|
||||
#include "http_client.h"
|
||||
#include "../../include/secrets.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include <vector>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "http_client.h"
|
||||
#include <HTTPClient.h>
|
||||
#include <WiFi.h>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "weather_api.h"
|
||||
#include "http_client.h"
|
||||
#include "../../include/secrets.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include <vector>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
#include <M5Stack.h>
|
||||
#include "theme.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include <M5Stack.h>
|
||||
#include <WiFi.h>
|
||||
#include "../include/secrets.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "calendar_detail_screen.h"
|
||||
#include <M5Stack.h>
|
||||
#include "../../include/theme.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
|
||||
void renderCalendarDetailScreen(bool forceRefresh = false);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "home_screen.h"
|
||||
#include <M5Stack.h>
|
||||
#include "../../include/theme.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
|
||||
void renderHomeScreen(bool forceRefresh = false);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "mvg_screen.h"
|
||||
#include <M5Stack.h>
|
||||
#include "../../include/theme.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
|
||||
void renderMvgScreen(bool forceRefresh = false);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
|
||||
enum class ScreenId {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#include "weather_detail_screen.h"
|
||||
#include <M5Stack.h>
|
||||
#include "../../include/theme.h"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de) - MIT License
|
||||
#pragma once
|
||||
|
||||
void renderWeatherDetailScreen(bool forceRefresh = false);
|
||||
|
||||
Reference in New Issue
Block a user