Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

si_tyler

si_tyler

@twilson · Mitglied seit März 2026

Neuling

System integrator · energy · 15 years in the field

Themen
3
Antworten
20
Punkte
0
Neuling10 Punkte an Mitglied

Erstellte Forenantworten

Ansicht von 5 Beiträgen – 16 bis 20 (von insgesamt 20)

Von English mit KI übersetzt ·

Eine Erfahrung aus dem Feld: Gestalten Sie den Befehlssatz als Zustand, niemals als Umschalten. Ein Befehl, bei dem ein Timeout auftritt, bedeutet nur, dass keine Antwort zurückkam; er könnte trotzdem ausgeführt worden sein. Drückt der Supervisor erneut, ist fan.set on zweimal unschädlich, fan.toggle zweimal schaltet den Lüfter wieder aus.

If it isn't logged, it didn't happen.
♥ 2

Von English mit KI übersetzt ·

Ich betreibe etwa dreißig dieser kleinen Gateways in Umspannwerken, nach demselben Muster.Overlay für das Root-Dateisystem ist aktiv, ja. Nimm deine RaspAP-Änderungen mit ausgeschaltetem Overlay vor, starte neu und schalte es danach wieder ein. Lästig, aber selten.Der Puffer braucht einen Ort, der Neustarts und Stromausfälle übersteht: eine zweite Partition auf der Karte (oder ein USB-Stick), mit ext4 und Journal schreibend eingebunden, außerhalb des Overlays. Richte SQLite dorthin, mit PRAGMA journal_mode=WAL und synchronous=NORMAL. Ein Abbruch kostet dann höchstens die letzten Schreibvorgänge, nicht die Datenbank. Verschiebe auch die Persistenz von mosquitto dorthin oder schalte sie ab, da dein Forwarder ohnehin puffert.Zu Rachels Frage: Ja, wenn du jeden Messwert beim Senden durch den ESP mit ts in UTC-Millisekunden versiehst (nur wenn die Uhr des Pi synchronisiert ist, was sie nach dem Start von 4G ist, und behalte eine fake-hwclock bei, damit es nach einem Stromausfall nicht 1970 ist). Sende den Rückstau gebündelt pro Child:

{"esp-bed3": [{"ts": 1767254400000, "values": {"soil_pct": 41}},
{"ts": 1767254460000, "values": {"soil_pct": 41}}]}

Die Datensätze landen zu ihrer eigenen Zeit in der Historie. Eine Nachricht, deren Datensätze alle älter als eine Minute sind, gilt als Replay und muss zur Replay-Rate des Profils passen, daher wird ein langer Rückstau über einige Zeit abgebaut. Keine Panik, wenn nicht alles in einer Sekunde erscheint. Und warte auf das PUBACK, bevor du Zeilen löschst. Siehe Devices behind a gateway.

If it isn't logged, it didn't happen.
Akzeptierte Lösung♥ 6

Von English mit KI übersetzt ·

Dann ist es das. Ein Pi 3 hat keine echte Echtzeituhr. Beim Booten stellt er die Zeit wieder her, die er beim letzten sauberen Herunterfahren gespeichert hat (fake-hwclock), und wartet dann auf NTP. Dein Lab-Netzwerk blockiert NTP (UDP 123), also bleibt die Uhr in der Vergangenheit, und für die TLS-Bibliothek ist das Serverzertifikat noch nicht gültig. Das habe ich bei der Inbetriebnahme schon auf der Hälfte der Feld-Pis hinter abgeschotteten Firewalls gesehen.Lösungen, wähle eine:

# 1. die interne NTP-Adresse bei der IT erfragen und verwenden
sudo nano /etc/systemd/timesyncd.conf
  [Time]
  NTP=ntp.your-lab.example
sudo systemctl restart systemd-timesyncd
timedatectl   # "System clock synchronized: yes"

# 2. falls nur 443 offen ist: Synchronisation über HTTPS-Header
sudo apt install htpdate
sudo htpdate -s https://www.example.org

Die fest eingetragene IP entfernen. Der Broker benötigt SNI, also über den Hostnamen verbinden; das Zertifikat wird ohnehin gegen diesen Namen geprüft, deshalb kam die Abweichung zustande. Einfaches client.tls_set() mit dem System-CA-Bundle reicht aus; Tyler, für Token-Logins wird kein Client-Zertifikat benötigt, der Server fordert eines an, verlangt es aber nicht.Außerdem sollte das Skript vor dem Verbinden auf eine synchronisierte Uhr warten, sonst bricht ein Neustart im Lab die Verbindung erneut ab. Eine kurze Schleife über timedatectl show -p NTPSynchronized funktioniert. Siehe den TLS-Abschnitt von MQTT.

If it isn't logged, it didn't happen.
Akzeptierte Lösung♥ 5
Ansicht von 5 Beiträgen – 16 bis 20 (von insgesamt 20)