brooksdata
@megan_b40 · Membre depuis septembre 2025
Data analyst · water and wastewater
- Sujets
- 2
- Réponses
- 45
- Points
- 0
Toutes mes réponses sur les forums
Traduit de English par IA ·
Si un emplacement partagé se libère plus tard, puis-je partager un tableau qui a été créé comme personnel à cause de la limite ?
If a shared slot frees up later, can I share a board that came out personal because of the limit?
Traduit de English par IA ·
Puis-je copier le profil « Cold room controller » pour un second site avec des limites plus strictes, sans toucher au premier ?
Can I copy the Cold room controller profile for a second site with tighter limits, without touching the first?
Traduit de English par IA ·
Ha, je reconnais mon erreur. J’ai appris quelque chose moi aussi.
Ha, I stand corrected. Learned something too.
Traduit de English par IA ·
Je pense qu’il faut choisir l’un ou l’autre ? Je débranche toujours l’USB quand j’utilise un adaptateur.
I think you have to choose one or the other? I always unplug the USB when I use an adapter.
Traduit de English par IA ·
Comment as-tu obtenu les badges verts dans la colonne d’état ? Le mien affiche simplement du texte.
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.
Traduit de English par IA ·
James a le bon câblage. Deux bus, 2.2k chacun, et ça ira. Nous faisons tourner 14 sondes par bus dans un local de pompage de cette façon.85.0 est la valeur à la mise sous tension du DS18B20 : cela signifie que la lecture a eu lieu avant la fin d’une conversion, généralement une chute de tension sur le bus. Écartez-la dans le code, ne l’envoyez jamais.Pour les clés, changez-les maintenant, avant d’avoir un historique. Les clés sont des noms distincts à l’échelle de toute l’organisation (Starter est limité à 250), donc les ID ROM par capteur vont épuiser ce quota rapidement dès que vous construirez une deuxième cave. Nommez-les par position, gardez dans un fichier sur le Pi une correspondance entre l’ID ROM et la position, et envoyez les 20 dans un seul message. Un message contenant 20 points coûte le même quota qu’un message avec un seul point.
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)
Les règles relatives aux clés figurent dans 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.
Traduit de English par IA ·
À quelle fréquence avez-vous besoin des relevés ? Si la cadence est lente, beaucoup de solutions de contournement deviennent acceptables.
How often do you need readings? If it’s slow, a lot of hacks become acceptable.
Traduit de English par IA ·
Regarde l’hôte dans ta ligne de journal. C’est l’hôte du broker issu du firmware américain.Hermetry fonctionne avec des déploiements séparés par région (EU, US, TR) et chaque organisation appartient à une seule région d’origine. Les appareils doivent se connecter à l’hôte de appareils de la région de leur propre organisation, celui qui figure sur la carte Connection details de chaque appareil. Je parie que l’organisation de l’usine américaine est dans la région US et que la tienne, créée par ton service informatique depuis le Royaume-Uni, est dans la région EU. Tes appareils britanniques frappent à la porte du broker américain avec des jetons qui n’existent que dans la région de ton organisation. Pour ce broker, ce sont des jetons inconnus, d’où le code 4. Rien n’atteint ton onglet Log parce que ton organisation n’a jamais été sollicitée.J’ai vécu exactement ça lorsque nous avons cloné un projet entre deux de nos fournisseurs d’énergie, un dans chaque région. Correctif :
- Ouvre n’importe lequel de tes appareils, onglet Credentials, Connection details. Note l’hôte du broker MQTT.
- Remplace l’hôte dans le firmware (et l’hôte HTTPS s’ils l’utilisent).
- Continue à te connecter par nom d’hôte. SNI est obligatoire, donc ne code pas en dur une IP obtenue par une recherche DNS.
Les propriétaires et administrateurs peuvent aussi voir la région d’origine dans les paramètres de l’organisation, Residency. La page est Regions and data residency.Et puisque tu reçois des 4 : le firmware attend 5 minutes, c’est bien. Garde ça. Des échecs de connexion répétés depuis une même adresse bloquent cette adresse pendant un certain temps, et toute l’usine est derrière un seul 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.
Traduit de English par IA ·
Je travaille dans l’eau et l’assainissement, et nous avons vécu la même chose il y a deux ans.Concernant City : il n’existe pas de page de documentation pour cela, donc je ne peux pas vous dire ce qu’il apporte pour les compteurs. Ce que je peux vous dire, c’est comment les compteurs eux-mêmes s’intègrent, c’est-à-dire le côté IoT classique avec le serveur réseau LoRaWAN propre à Hermetry. Le plan de fréquences suit votre passerelle, donc du matériel EU868 en Europe, avec OTAA ou ABP et les classes A ou C. Il existe une bibliothèque de codecs (106 codecs la dernière fois que j’ai regardé), si bien que de nombreux compteurs se décodent sans que vous ayez à écrire quoi que ce soit, et le mode d’appairage aide lorsque vous ajoutez des centaines d’appareils du même modèle.Ce que nous avons mis en place pour les compteurs :
- Uplinks non confirmés. Chaque acquittement consomme le duty cycle de la passerelle, et sur les sous-bandes à 1 % il s’épuise vite.
- Le volume du compteur comme compteur. Sur les graphiques et via l’API d’historique, l’agrégat increase donne la consommation par heure ou par jour, y compris lorsqu’un compteur repasse à zéro.
- Une règle Device offline pour faire apparaître les compteurs silencieux, avec un délai supérieur à l’intervalle de remontée.
Si le client insiste un jour sur la radio en espaces blancs, sa propre passerelle devrait remonter les compteurs comme des périphériques enfants via MQTT sur les topics v1/gw. C’est possible, mais vous devriez écrire vous-mêmes ce logiciel de passerelle.La liste des codecs est ici : 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
Traduit de English par IA ·
Pour la partie visualisation : place les quatre clés sur un seul graphique en courbes, rh et les pourcentages sur l’axe de droite. La relation de phase saute aux yeux dès qu’elles partagent un axe temporel.
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.

