Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Megan Brooks

brooksdata

@megan_b40 · Se unió el septiembre 2025

Recién llegado

Data analyst · water and wastewater

Temas
2
Respuestas
45
Puntos
0
Recién llegado10 puntos para Miembro

Respuestas de foro creadas

Viendo 15 entradas – de la 16 a la 30 (de un total de 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.
Solución aceptada♥ 9

Traducido del English por IA ·

¿No es para eso la opción Custom topics del perfil? Recuerdo un ajuste que acepta cualquier topic fuera de v1/.

QoS 1 and a lot of patience.
♥ 0

Traducido del English por IA ·

Así que el verdadero primer paso es un conjunto de datos. Ya tienes semanas de lecturas en Hermetry, solo te faltan las etiquetas: los horarios de entrada y salida que registra limpieza bastarían.

QoS 1 and a lot of patience.
♥ 0

Traducido del English por IA ·

Ese es el problema, yo hice exactamente lo mismo en mi primer montaje. Los pines I2C son el pin físico 3 (es el BCM GPIO2, SDA) y el pin físico 5 (BCM GPIO3, SCL). Tú tienes SDA en GPIO3, que en realidad es SCL, y SCL en GPIO5, que es el pin físico 29 y no es I2C en absoluto. Por eso el bus no tiene ningún dispositivo respondiendo y obtienes la cuadrícula vacía. Casi con toda seguridad los sensores están bien.Mueve SDA al pin físico 3 y SCL al pin físico 5; entonces deberías ver 0x77 (o 0x76, según el jumper SDO) para el BME280 y 0x10 para el VEML7700. La Pi ya tiene resistencias pull-up de 1,8 kΩ en esos dos pines, y las placas breakout añaden las suyas, así que no añadas más.Luego la lectura y el envío son breves. Uso los drivers de CircuitPython de Adafruit más 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)

Objeto plano, así que Hermetry le asigna la hora de recepción, lo cual sirve para lecturas de 30 s. Las reglas del payload están aquí si más adelante quieres añadir marcas de tiempo: MQTT topics and payload reference.

QoS 1 and a lot of patience.
Solución aceptada♥ 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.
Solución aceptada♥ 8

Traducido del English por IA ·

Daniel tiene razón. Me pasó exactamente esto en una Pi de una estación de bombeo el año pasado. Hay dos cosas configurando eth0: dhcpcd arranca con el sistema, no encuentra ningún servidor DHCP, asigna al puerto una dirección link-local 169.254 y rutas, y luego ifup intenta añadir su propia dirección y ruta por defecto. La ruta ya existe, así que el kernel responde «File exists» y ifup se rinde. Según cuál gane la carrera al arrancar, tu gateway sale o no.Elige uno. En Bullseye eso significa dhcpcd. Quita el bloque de eth0 de /etc/network/interfaces (el archivo debe quedar solo con la línea source) y pon la configuración estática en /etc/dhcpcd.conf:

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

Luego limpia sin reiniciar:

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

noipv4ll evita la dirección 169.254. Si más adelante pasas a Bookworm, dhcpcd ya no está y haces lo mismo con nmcli, así que anótalo.

QoS 1 and a lot of patience.
Solución aceptada♥ 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.
Solución aceptada♥ 1

Traducido del English por IA ·

Y mantén los lotes en un tamaño razonable: el valor por defecto es de 10 mensajes por segundo y por dispositivo. Una acumulación grande enviada de una vez se descarta.

QoS 1 and a lot of patience.
♥ 0

Traducido del English por IA ·

MOSI y MISO son las dos líneas de datos de SPI. Creo que en la tuya DO es MOSI, ¿no? Data out, es decir, salida de datos.

QoS 1 and a lot of patience.
♥ 0
Viendo 15 entradas – de la 16 a la 30 (de un total de 45)