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

Berichtsintervall und Totband bei 300 Steuerungen im Feld ändern: Attribute oder Befehle?

Berichtsintervall und Totband bei 300 Steuerungen im Feld ändern: Attribute oder Befehle?

Gelöst 4 5

Von English mit KI übersetzt ·

Integrator hier. Ein Kunde hat etwa 300 Pumpensteuerungen im Feld, ESP32-S3-Boards mit unserer eigenen Firmware, alle per MQTT an Hermetry angebunden. Wir müssen einige Einstellungen remote pro Standort ändern: das Berichtsintervall, ein Totband beim Druckwert und den NTP-Server (manche Standorte blockieren die öffentlichen Pools).Intern stehen zwei Ansätze zur Diskussion:

  • ein Befehl, etwa cfg.set, mit den Einstellungen als JSON-Parameter, beantwortet mit ok/error
  • gemeinsame Attribute, die das Gerät übernimmt

Wichtig ist uns, sicher zu wissen, dass ein bestimmtes Gerät einen Wert übernommen hat, und Änderungen für Geräte, die offline sind, nicht zu verlieren. Manche ländlichen Standorte fallen für zwei oder drei Tage am Stück aus.Die Firmware liest beim Start bereits eine JSON-Konfiguration aus dem Flash, das Übernehmen der Werte ist also nicht das Schwierige. Die Geräte melden alle 60 s und sitzen hinter einem Mix aus LTE-Routern und WLAN am Standort. Für welchen Ansatz ist Hermetry gebaut, und gibt es so etwas wie eine Soll-Ist-Ansicht?

♥ 0

Von English mit KI übersetzt ·

Ich bin Student und neugierig: Warum sollte das eine Rolle spielen? Ein Befehl mit den Einstellungen darin klingt für mich einfacher.

♥ 0

Von English mit KI übersetzt ·

Befehle an ein offline stehendes Gerät warten nur, wenn Sie sie als persistent senden, und das gibt nach höchstens 7 Tagen auf. Attribute sind Zustand, Befehle sind Aktionen. Ich würde Attribute nehmen.

♥ 1

Von English mit KI übersetzt ·

Wir haben das bei einer kleineren Flotte mit Befehlen gemacht, und jedes Mal, wenn ein Gerät einen Befehl verpasst hat, war es ein Chaos. Niemand konnte sagen, welche Geräte welches Intervall hatten.

Ground loops are my cardio.
♥ 2

Von English mit KI übersetzt ·

Verwenden Sie cfg.*-Shared-Attribute, dafür sind sie genau gedacht, und Sie erhalten die Ansicht Soll- vs. Ist-Wert gratis dazu.Deklarieren Sie die Schlüssel auf dem Tab Configuration keys des Profils (Typ, Bezeichnung, Grenzwerte) und setzen Sie sie dann als Shared-Attribute: cfg.telemetry.interval_s, cfg.pressure.deadband_bar, cfg.ntp.server. Das Gerät erhält Änderungen über v1/attributes/set, wendet sie an und meldet den übernommenen Wert als Client-Attribut mit demselben Schlüssel zurück. Hermetry vergleicht beide Werte und zeigt pro Schlüssel auf dem Tab Attributes den Status In sync, Pending, Rejected oder Drifted an.Geräteseitig nach jeder Verbindung:

SUBSCRIBE v1/attributes/set
PUBLISH   v1/attributes/req/1   {"sharedKeys": "cfg.*"}
# Antwort auf v1/attributes/res/1 -> alles anwenden -> zurückmelden:
PUBLISH   v1/attributes   {"cfg.telemetry.interval_s": 300, "cfg.pressure.deadband_bar": 0.05}

Die Anfrage nach dem Verbinden deckt Ihre ländlichen Standorte ab: Ein Gerät, das drei Tage offline war, fragt bei der Rückkehr alle cfg.*-Schlüssel an und holt den Rückstand auf. Kann ein Gerät etwas nicht anwenden, meldet es das in cfg_rejected, z. B. {"cfg_rejected": {"cfg.ntp.server": "apply_failed"}}, und die Zeile zeigt Rejected mit dem Grund. Wenden Sie Änderungen idempotent an, da eine Nachricht zweimal eintreffen kann.Für 300 Geräte schreiben Sie die Werte mit der API (POST …/attributes/shared, bis zu 100 Schlüssel pro Aufruf) in einer Schleife über die Geräteliste. Die Screens Baseline und Bulk-Jobs sind für Geräte gedacht, die ein Einstellungsmanifest veröffentlichen (lizenzierte Geräte). Mit eigener Firmware ist cfg.* daher der richtige Weg. Die Seite Attributes enthält die Statustabelle.

Timestamps in UTC or it didn't happen.
Akzeptierte Lösung♥ 7
Ansicht von 5 Beiträgen – 1 bis 5 (von insgesamt 5)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen