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

Megan Brooks

brooksdata

@megan_b40 · Mitglied seit September 2025

Neuling

Data analyst · water and wastewater

Themen
2
Antworten
45
Punkte
0
Neuling10 Punkte an Mitglied

Erstellte Forenantworten

Ansicht von 15 Beiträgen – 16 bis 30 (von insgesamt 45)

Same physics as David’s speaker, yes. The RF burst gets rectified by the input stage of the ADC (or any semiconductor junction on the line), and that shows up as a DC offset for the length of the burst. 2G-style bursts at 217 Hz are the worst, but LTE uplink bursts do it too. A cabinet I look after at work had exactly your picture, spikes during uploads only.

What fixed ours, cheapest first:

  • Get the antenna out of the cabinet. A short-cable antenna on the cabinet roof. Inside a steel box the router is shouting at your wiring from 30 cm.
  • Shielded twisted pair for the 4-20 mA run, shield grounded at the controller end only.
  • An RC filter right at the ADC pin, 1 k and 100 nF, plus a 100 pF cap close to the pin for the RF itself. Your level doesn’t change in milliseconds, you can afford it.
  • A clip-on ferrite on the signal pair where it enters the controller.
  • If the router has a setting to lock it to LTE and not fall back to 2G, use it.

After the first two the spikes were gone for us. Old spikes stay in your history, so if anyone set an alarm on that level, check whether they were tripping it. A readings-in-a-row debounce of 2 or 3 on the high-level rule hides any single leftover.

QoS 1 and a lot of patience.
Akzeptierte Lösung♥ 9

Von English mit KI übersetzt ·

Ist dafür nicht das Custom topics im Profil gedacht? Ich erinnere mich an eine Einstellung, die jedes Topic außerhalb von v1/ akzeptiert.

QoS 1 and a lot of patience.
♥ 0

Von English mit KI übersetzt ·

Der eigentliche erste Schritt ist also ein Datensatz. Du hast in Hermetry bereits wochenlange Messwerte, es fehlen nur die Labels: Die Ein- und Auscheckzeiten der Housekeeping würden genügen.

QoS 1 and a lot of patience.
♥ 0

Von English mit KI übersetzt ·

Genau das ist das Problem, ich habe bei meinem ersten Aufbau exakt dasselbe gemacht. Die I2C-Pins sind physischer Pin 3 (das ist BCM GPIO2, SDA) und physischer Pin 5 (BCM GPIO3, SCL). Du hast SDA an GPIO3 angeschlossen, das in Wirklichkeit SCL ist, und SCL an GPIO5, das physischer Pin 29 ist und überhaupt nicht I2C. Deshalb antwortet auf dem Bus kein Gerät und du bekommst das leere Raster. Die Sensoren sind mit ziemlicher Sicherheit in Ordnung.Verschiebe SDA auf physischen Pin 3 und SCL auf physischen Pin 5, dann solltest du 0x77 (oder 0x76, je nach SDO-Jumper) für den BME280 und 0x10 für den VEML7700 sehen. Der Pi hat an diesen beiden Pins bereits 1,8 kΩ Pull-up-Widerstände, und die Breakouts bringen ihre eigenen mit, also keine weiteren hinzufügen.Das Auslesen und Senden ist dann kurz. Ich verwende die Adafruit-CircuitPython-Treiber plus paho:

import json, time, board, adafruit_bme280.basic as bme, adafruit_veml7700
import paho.mqtt.client as mqtt

i2c = board.I2C()
env = bme.Adafruit_BME280_I2C(i2c, address=0x77)
lux = adafruit_veml7700.VEML7700(i2c)

c = mqtt.Client(client_id="lab-env-01")
c.username_pw_set(TOKEN)              # token as username, no password
c.tls_set()
c.connect(BROKER_HOST, 8883, 60)
c.loop_start()
while True:
    msg = {"temp_c": round(env.temperature, 2), "rh": round(env.humidity, 1),
           "pressure_hpa": round(env.pressure, 1), "lux": round(lux.lux, 1)}
    c.publish("v1/telemetry", json.dumps(msg), qos=1)
    time.sleep(30)

Flaches Objekt, daher stempelt Hermetry es mit der Empfangszeit, was für 30-s-Messwerte passt. Die Payload-Regeln findest du hier, falls du später Zeitstempel ergänzen willst: MQTT topics and payload reference.

QoS 1 and a lot of patience.
Akzeptierte Lösung♥ 4

WiFiManager falls back to the portal again if it can’t join, that part’s handled.

For the credential, one shared token is worse than wrong. Hermetry allows one session per device, so 30 boards on one token keep throwing each other off. Use the profile’s provisioning instead. You flash the same firmware with the profile’s provisioning key and secret, and each board asks for its own credential on first start:

// first boot only, after Wi-Fi is up
// MQTT connect: username "provision", empty password, TLS
subscribe("v1/provision/res");
publish("v1/provision/req",
  "{"deviceName":"logger-" + chipId + "","
  ""provisionDeviceKey":"pk_...","provisionDeviceSecret":"ps_..."}");
// answer: {"status":"SUCCESS","credentialsType":"ACCESS_TOKEN","credentialsValue":"..."}
// store credentialsValue in NVS, reconnect with it, never provision again

On the profile’s Provisioning tab you pick a strategy. With Allow creating new devices, each new board lands in quarantine and its data is dropped until an admin activates it. With Only pre-provisioned devices you create logger-<chipId> names beforehand from your 30 boards, and a leaked key can’t add strangers. For 30 units I’d pre-create them. Hermetry never re-issues a credential for an existing name, so keep the token safe in NVS. Details on Adding and claiming devices.

QoS 1 and a lot of patience.
Akzeptierte Lösung♥ 8

Von English mit KI übersetzt ·

Daniel hat recht. Ich hatte genau dieses Problem letztes Jahr auf einem Pi in einer Pumpstation. Zwei Dinge konfigurieren eth0: dhcpcd startet beim Booten, findet keinen DHCP-Server, weist dem Port eine Link-Local-Adresse 169.254.x.x sowie Routen zu, und dann versucht ifup, seine eigene Adresse und Standardroute hinzuzufügen. Die Route existiert bereits, daher antwortet der Kernel mit „File exists“ und ifup gibt auf. Je nachdem, welcher Prozess beim Booten das Rennen gewinnt, kommt das Gateway hinaus oder nicht.Entscheiden Sie sich für eines. Unter Bullseye heißt das dhcpcd. Entfernen Sie den eth0-Block aus /etc/network/interfaces (die Datei enthält dann nur noch die Zeile source) und legen Sie das statische Setup in /etc/dhcpcd.conf ab:

interface eth0
static ip_address=10.40.2.20/24
static routers=10.40.2.1
static domain_name_servers=10.40.2.1
noipv4ll

Anschließend ohne Neustart aufräumen:

sudo ip addr flush dev eth0
sudo systemctl restart dhcpcd
ip addr show eth0

noipv4ll verhindert die 169.254-Adresse. Wenn Sie später auf Bookworm umsteigen, ist dhcpcd entfernt, und Sie machen dasselbe mit nmcli. Notieren Sie sich das deshalb.

QoS 1 and a lot of patience.
Akzeptierte Lösung♥ 6

Both of those are your problems, I had the same pair on battery water meter tags last year.

Current: the UART peripheral being enabled keeps the HF clock up, that alone is hundreds of uA when active and tens when idle. Set CONFIG_SERIAL=n and CONFIG_LOG=n in the release build (or CONFIG_PM_DEVICE and suspend the UART). Also enable the DC/DC (CONFIG_BOARD_ENABLE_DCDC=y, needs the inductor fitted on your board), and make sure unused GPIOs aren’t floating. That got us from about 35 uA to 3.

Online status: for child devices Hermetry takes the online state from the gateway’s v1/gw/connect and v1/gw/disconnect messages, so your gateway is telling it the tags are gone. With 60 s advertising and a 60 s timeout, one missed advert means a disconnect. Make the gateway wait for 5 missed adverts before sending disconnect.

For the alarm, set the Device offline rule’s Open after to something like 900 seconds so a short gap doesn’t page anyone. More on how child status works: Gateways and devices behind a gateway.

QoS 1 and a lot of patience.
Akzeptierte Lösung♥ 1

Von English mit KI übersetzt ·

Und halte die Batches vernünftig klein: Der Standardwert liegt bei 10 Nachrichten pro Sekunde und Gerät. Ein großer Rückstau auf einmal wird verworfen.

QoS 1 and a lot of patience.
♥ 0

Von English mit KI übersetzt ·

MOSI und MISO sind die beiden Datenleitungen von SPI. Ich glaube, bei deiner Platine ist DO das MOSI? Also Datenausgang.

QoS 1 and a lot of patience.
♥ 0
Ansicht von 15 Beiträgen – 16 bis 30 (von insgesamt 45)