brooksdata
@megan_b40 · Se unió el septiembre 2025
Data analyst · water and wastewater
- Temas
- 2
- Respuestas
- 45
- Puntos
- 0
Respuestas de foro creadas
Traducido del English por IA ·
Si más adelante se libera una ranura compartida, ¿puedo compartir un tablero que se creó como personal debido al límite?
If a shared slot frees up later, can I share a board that came out personal because of the limit?
Traducido del English por IA ·
¿Puedo copiar el perfil «Cold room controller» para un segundo sitio con límites más estrictos, sin tocar el primero?
Can I copy the Cold room controller profile for a second site with tighter limits, without touching the first?
Traducido del English por IA ·
Ja, me equivoqué. Yo también he aprendido algo.
Ha, I stand corrected. Learned something too.
Traducido del English por IA ·
¿Creo que hay que elegir una de las dos opciones? Yo siempre desconecto el USB cuando uso un adaptador.
I think you have to choose one or the other? I always unplug the USB when I use an adapter.
Traducido del English por IA ·
¿Cómo conseguiste las insignias verdes en la columna de estado? La mía muestra texto simple.
How did you get the green badges in the status column? Mine shows plain text.
We had the same with tank level boxes in a pump yard and our network guy walked me through it.
Mechanism: with distance the signal-to-noise ratio drops. Wi-Fi then picks a slower, safer modulation and coding rate (rate adaptation), each symbol carries fewer bits, so the data rate falls from tens of Mbps to 1-6 Mbps. On top of that, weaker frames fail more often and get retried, and each retry costs airtime and backs off. So «weaker» turns into «slower», and twilson’s point is real: at 1 Mbps your sensors use far more of the channel per byte than a laptop.
What helped us, in order of effect:
Fewer, bigger messages. Batch 2-4 readings into one telemetry array with their ts and send every couple of minutes. Same data, a fraction of the frames. Each message also counts once against the monthly quota whatever it holds.
Keepalive at 60-120 s, not 15. The docs recommend something between 30 and 300 s, and a short keepalive on a slow link is what gives you the odd keepalive_timeout.
Wait for PUBACK before deleting a buffered reading. Hermetry acks only after the message is safely queued, and a device can only have a limited number of unacknowledged QoS 1 messages in flight (20 by default), so on a slow link don’t fire them off blindly.
Fix the radio path properly: a point-to-point bridge to a small AP in the yard, or one gateway in the yard collecting the boxes over RS-485 or a short-range radio and sending on its own link. We did the bridge, the boxes now connect at 65 Mbps.
MQTT has the keepalive and in-flight numbers.
For the water network we use battery loggers that last years on a few readings a day. That is what «no wires» looks like in practice.
Traducido del English por IA ·
James tiene bien el cableado. Dos buses, 2.2k cada uno, y te irá bien. Nosotros usamos 14 sondas por bus en una casa de bombas de esa forma.85.0 es el valor de encendido del DS18B20; significa que la lectura se hizo antes de terminar una conversión, normalmente una caída de tensión en el bus. Descártalo en el código, nunca lo envíes.En cuanto a las claves, cámbialo ahora, antes de tener historial. Las claves cuentan como nombres distintos en toda la organización (Starter limita a 250), así que los ID ROM por sensor consumirán ese límite muy rápido en cuanto montes una segunda bodega. Nómbralas por posición, guarda un mapa de ID ROM a posición en un archivo en la Pi y envía los 20 en un solo mensaje. Un mensaje con 20 puntos cuesta la misma cuota que uno con un solo punto.
import glob, json, paho.mqtt.client as mqtt
MAP = {"28-0316a2794bff": "rack1.top", "28-0316a27a11ff": "rack1.mid"} # etc
vals = {}
for p in glob.glob("/sys/bus/w1/devices/28-*/temperature"):
rom = p.split("/")[-2]
t = int(open(p).read()) / 1000
if rom in MAP and t != 85.0:
vals["cellar." + MAP[rom]] = round(t, 2)
c.publish("v1/telemetry", json.dumps(vals), qos=1)
Las reglas de las claves están en Telemetry keys.
James has the wiring right. Two buses, 2.2k each, and you’ll be fine. We run 14 probes per bus in a pump house that way.
85.0 is the power-on value of the DS18B20, it means the read happened before a conversion finished, usually a brown-out on the bus. Drop it in code, never send it.
On the keys, change it now before you have history. Keys count as distinct names across the whole organisation (Starter caps you at 250), so ROM ids per sensor will eat that fast once you build a second cellar. Name them by position, keep a map from ROM id to position in a file on the Pi, and send all 20 in one message. One message with 20 points costs the same quota as one with one.
import glob, json, paho.mqtt.client as mqtt
MAP = {"28-0316a2794bff": "rack1.top", "28-0316a27a11ff": "rack1.mid"} # etc
vals = {}
for p in glob.glob("/sys/bus/w1/devices/28-*/temperature"):
rom = p.split("/")[-2]
t = int(open(p).read()) / 1000
if rom in MAP and t != 85.0:
vals["cellar." + MAP[rom]] = round(t, 2)
c.publish("v1/telemetry", json.dumps(vals), qos=1)
Key rules are on Telemetry keys.
Traducido del English por IA ·
¿Con qué frecuencia necesitas las lecturas? Si es lento, muchos parches se vuelven aceptables.
How often do you need readings? If it’s slow, a lot of hacks become acceptable.
Traducido del English por IA ·
Mira el host en la línea de tu log. Ese es el host del broker del firmware de EE. UU.Hermetry funciona con despliegues independientes por región (EU, US, TR) y cada organización vive en una única región de origen. Los dispositivos tienen que conectarse al host de dispositivos de la región de su propia organización, el que aparece en la tarjeta Connection details de cada dispositivo. Apuesto a que la organización de la planta de EE. UU. está en la región US y la tuya, creada por vuestro departamento de TI desde el Reino Unido, está en la región EU. Tus dispositivos del Reino Unido llaman al broker de EE. UU. con tokens que solo existen en la región de tu organización. Para ese broker son tokens desconocidos, por eso recibes un 4. Nada llega a tu pestaña Log porque nunca se le preguntó a tu organización.Me pasó exactamente esto cuando clonamos un proyecto entre dos de nuestras empresas de servicios públicos, una en cada región. Solución:
- Abre cualquiera de tus dispositivos, pestaña Credentials, Connection details. Anota el host del broker MQTT.
- Sustituye el host en el firmware (y el host HTTPS si lo usan).
- Sigue conectando por nombre de host. SNI es obligatorio, así que no fijes una IP obtenida de una consulta DNS.
Los propietarios y administradores también pueden ver la región de origen en la configuración de la organización, Residency. La página es Regions and data residency.Y como te aparecen 4s: el firmware espera 5 minutos, bien. Mantenlo así. Los inicios de sesión fallidos repetidos desde una misma dirección bloquean esa dirección durante un tiempo, y toda la planta está detrás de un único NAT.
Look at the host in your log line. That’s the broker host from the US firmware.
Hermetry runs as separate deployments per region (EU, US, TR) and every organisation lives in one home region. Devices have to connect to the device host of their own organisation’s region, the one on each device’s Connection details card. I’d bet the US plant’s organisation is in the US region and yours, created by your IT from the UK, is in the EU. Your UK devices are knocking on the US broker with tokens that only exist in your organisation’s region. To that broker they’re unknown tokens, so you get a 4. Nothing reaches your Log tab because your org was never asked.
I hit exactly this when we cloned a project between two of our utilities, one in each region. Fix:
- Open any of your devices, Credentials tab, Connection details. Note the MQTT broker host.
- Replace the host in the firmware (and the HTTPS host if they use it).
- Keep connecting by host name. SNI is required, so don’t hardcode an IP from a DNS lookup.
Owners and admins can also see the home region under the organisation settings, Residency. The page is Regions and data residency.
And since you’re getting 4s: the firmware backs off 5 minutes, good. Keep that. Repeated failed logins from one address block that address for a while, and the whole plant is behind one NAT.
Traducido del English por IA ·
Trabajo en agua y aguas residuales, y hace dos años pasamos por lo mismo.Sobre City: no hay página de documentación para ello, así que no puedo decirte qué aporta para los contadores. Lo que sí puedo decirte es cómo se integran los propios contadores, que es el lado IoT habitual con el servidor de red LoRaWAN propio de Hermetry. El plan de frecuencias sigue a tu gateway, así que equipos EU868 en Europa, con OTAA o ABP y clase A o C. Hay una biblioteca de codecs (106 codecs la última vez que miré), de modo que muchos contadores se decodifican sin que escribas nada, y el modo de emparejamiento ayuda cuando añades cientos del mismo modelo.Lo que configuramos para los contadores:
- Uplinks no confirmados. Cada ack consume el duty cycle del gateway, y en las subbandas del 1 % se agota rápido.
- El volumen del contador como contador. En los gráficos y en la API de historial, el agregado increase te da el consumo por hora o por día, incluso cuando un contador da la vuelta.
- Una regla Device offline para que aparezcan los contadores silenciosos, con un tiempo mayor que el intervalo de reporte.
Si el cliente insiste alguna vez en la radio de espacios en blanco, su propio gateway tendría que reportar los contadores como dispositivos hijos por MQTT en los topics v1/gw. Es posible, pero tendríais que escribir ese software de gateway vosotros mismos.La lista de codecs está aquí: The codec library
I work in water and wastewater and we went through the same thing two years ago.
On City: there’s no doc page for it, so I can’t tell you what it adds for meters. What I can tell you is how the meters themselves go in, which is the regular IoT side with Hermetry’s own LoRaWAN network server. The frequency plan follows your gateway, so EU868 gear in Europe, with OTAA or ABP and Class A or C. There’s a codec library (106 codecs last time I looked) so many meters decode without you writing anything, and pairing mode helps when you’re adding hundreds of the same model.
Things we set up for meters:
- Unconfirmed uplinks. Every ack costs gateway duty cycle, and on 1 % sub-bands that runs out fast.
- The meter’s volume as a counter. On charts and the history API the increase aggregate gives you consumption per hour or day, including when a meter rolls over.
- A Device offline rule so silent meters show up, set longer than the reporting interval.
If the client ever insists on the white space radio, its own gateway would have to report the meters as child devices over MQTT on the v1/gw topics. Possible, but you’d be writing that gateway software yourselves.
The codec list is here: The codec library
Traducido del English por IA ·
Para la parte de visualizarlo: pon las cuatro claves en un solo gráfico de líneas, rh y los porcentajes en el eje derecho. La relación de fase salta a la vista en cuanto comparten un eje de tiempo.
For the seeing part: put all four keys on one line chart, rh and the percentages on the right axis. The phase relationship jumps out once they share a time axis.
How often do you need the position? Once a second per cart is very different from once a minute, both for the radio and for what you store.
The Log tab saves so much guessing. +1
Same experience, two of my backpacks from the same seller were 0x3F.

