Die Anwendung wird ueber data/config.json konfiguriert.
{
"app": {},
"api": {},
"admin": {},
"alerts": {
"webhooks": [],
"emails": []
},
"machines": []
}
appBeispiel:
{
"name": "Getraenkeautomat Monitor",
"timezone": "Europe/Berlin",
"dashboard_refresh_seconds": 15,
"default_from_email": "monitor@example.local"
}
Felder:
name
timezone
dashboard_refresh_seconds
default_from_email
mail()apiBeispiel:
{
"bearer_token": "demo-esp32-token"
}
Felder:
bearer_token
adminBeispiel:
{
"username": "admin",
"password_hash": "$2y$10$..."
}
Felder:
username
password_hash
alerts.webhooksBeispiel:
[
{
"id": "lager-webhook",
"name": "Lager Webhook",
"url": "https://example.com/hooks/lager",
"enabled": true,
"headers": {
"X-App-Token": "replace-me"
}
}
]
Felder:
id
name
url
enabled
headers
alerts.emailsBeispiel:
[
{
"id": "lager-team",
"name": "Lager Team",
"address": "lager@example.com",
"enabled": true
}
]
Felder:
id
name
address
enabled
machinesHier werden alle Automaten definiert.
Beispiel:
[
{
"id": "automat-lobby",
"name": "Lobby Automat",
"location": "Erdgeschoss",
"slots": []
}
]
Felder:
id
name
location
slots
machines[].slotsJedes Fach repraesentiert einen Sensor und eine zugeordnete Produktposition.
Beispiel:
{
"sensor_id": "fach-a1",
"label": "A1",
"product_name": "Cola 0,5l",
"full_distance_mm": 80,
"empty_distance_mm": 360,
"distance_per_unit": 40,
"alert_below_units": 2,
"webhook_ids": ["lager-webhook"],
"email_ids": ["lager-team"]
}
Felder:
sensor_id
label
product_name
full_distance_mm
empty_distance_mm
distance_per_unit
alert_below_units
webhook_ids
alerts.webhooksemail_ids
alerts.emailsFuer eine brauchbare Bestandschaetzung sollten pro Fach mindestens diese Werte sauber kalibriert werden:
full_distance_mm eintragen.empty_distance_mm eintragen.distance_per_unit eintragen.alert_below_units festlegen.Slots referenzieren Alarmziele nicht direkt ueber URLs oder Email-Adressen, sondern ueber IDs:
webhook_ids referenziert alerts.webhooks[].idemail_ids referenziert alerts.emails[].idDas macht die Konfiguration wartbarer, weil ein Alarmziel zentral geaendert werden kann.
machine_id und sensor_id niemals nachtraeglich leichtfertig aendern