johnsonsec
@brian-johnson · Membre depuis avril 2026
IT and security admin · software · 20 years in the field
- Sujets
- 1
- Réponses
- 24
- Points
- 0
Toutes mes réponses sur les forums
As far as I know Espressif has never officially said what WROOM stands for, so don’t trust the three answers you found. In practice it’s their name for a module family: the chip, flash, crystal and antenna on one shielded board you can solder on.
The suffixes:
- WROOM = module without PSRAM, WROVER = with PSRAM, MINI = smaller footprint.
- -E = ESP32 chip revision 3 (fixes several early silicon bugs). Buy E, not the old plain -32.
- U in the name (32UE) = u.FL connector for an external antenna instead of the PCB antenna.
- N4/N8/N16 = MB of flash, R8 = MB of PSRAM.
For your station: a DevKitC board with a WROOM-32E N4 to start, like Aisha has. 4 MB flash leaves room for two OTA partitions if you ever want to update it over the air. If the box ends up outdoors in a metal housing, switch to the 32UE as Grace said. Wake every 5 minutes, send one HTTPS POST to Hermetry’s device API, sleep: that keeps the board cool too, so it doesn’t heat the sensor.
Traduit de English par IA ·
Personnellement, je ne mettrais pas l’élément qui doit impérativement rester actif sur la puce la plus faible du bâtiment. Mais je suis curieux de savoir ce que les autres ont fait.
Personally I wouldn’t put the one piece that must stay up on the weakest chip in the building. But curious what others did.
Another Kiwi here. Cable already run to the workshop is a good start, plenty of people would love that. Buy two of whatever sensor you pick, one always turns out to be dodgy.
Traduit de English par IA ·
Un petit point pendant que vous y êtes : placez le jeton de l’appareil dans un fichier que seul votre utilisateur de service peut lire, et non dans le script. J’en ai vu trop dans des dépôts git.
One small thing while you’re in there: put the device token in a file only your service user can read, not in the script. Saw too many of those in git repos.
Traduit de English par IA ·
Ce sont des chaînes de caractères, et deux décimaux. Est-ce voulu ?
Those are strings, and two decimals. Is that on purpose?
Wireless power works over centimetres (phone chargers). Over metres you get microwatts and terrible efficiency. Your owner saw a demo.
Traduit de English par IA ·
Point distinct du côté CVC. Cette prise se trouve dans votre salle serveur et peut commuter une charge à cet endroit, donc traitez-la comme tout autre appareil ayant un accès. Gardez son profil en TLS uniquement, attribuez-lui un profil propre au lieu de partager celui du capteur, et placez la plage publique de votre bureau dans Réseaux autorisés afin qu’un jeton copié depuis cette prise soit inutilisable ailleurs. Les prises bon marché sont ouvertes et dumpées plus souvent qu’on ne le pense.
Separate point from the HVAC side. That plug sits in your server room and can switch a load there, so treat it like any other device with access. Keep its profile TLS only, give it its own profile instead of sharing the sensor one, and put your office’s public range under Allowed networks so a copied token from that plug is useless anywhere else. Cheap plugs get opened up and dumped more often than people think.
Traduit de English par IA ·
L’application mobile envoie des notifications sur les téléphones de toute personne qui l’installe. Pour les autres, il y a la cloche dans le navigateur, l’e-mail, les applications de messagerie qu’un administrateur a connectées, ou les SMS depuis un flow.
The mobile app brings notifications to phones, for whoever installs it. For the rest it’s the bell in the browser, e-mail, chat apps an admin has connected, or SMS from a flow.
Did my master’s on state estimation before I drifted into IT, so this one I can answer.
Rahul is right that you check rank, just locally. Linearise at the current estimate: F = df/dx, H = [1 0 0]. Build O = [H; HF; HF^2] and check its rank (or better its condition number) along the trajectory. With your model, the q_in and k columns of HF are dt/A and -dt/A*sqrt(h). They’re independent only if sqrt(h) changes over the window. When the level sits still, O drops to rank 2 and the filter can trade q_in against k forever, which is exactly what you see.
What I’d change:
Give the two states different time scales. k changes over months, q_in over minutes. Make the process noise of k tiny (orders of magnitude below q_in) so the filter only moves k when there is evidence.
Use the excitation you have. When the pump runs, Q_p is known and the level moves, which is when k becomes identifiable. Some people only update k during pump cycles and dry-weather periods where q_in is near zero.
Keep k positive: estimate log(k), or clamp it.
If budget allows, one outlet flow measurement once a week (a portable meter) pins k and the problem goes away.
For the ops board, send the diagnostics too, not just the estimates:
{"h_m": 2.41, "q_in_ls": 38.2, "k_est": 0.0164, "innov_m": 0.004, "obs_cond": 1.2e3}
A chart of the innovation and the condition number tells you when to trust k. An alarm rule on obs_cond above some limit with a duration debounce is a cheap way to flag « k estimate unreliable right now ».
QElectroTech is free and has IEC terminal symbols plus terminal plan generation, if you’re not on a paid CAD.
Traduit de English par IA ·
Stockez la clé dans un fichier accessible uniquement à root, et non dans le script que vous collerez un jour dans un ticket.
Store the key in a root-only file, not in the script you’ll paste into a ticket some day.
Traduit de English par IA ·
La passerelle plus chaque équipement enfant, donc 27 avec la station météo, davantage avec les sondes.
The gateway plus every child, so 27 with the weather station, more with the probes.
Traduit de English par IA ·
Hermetry accepte depuis les appareils MQTT 3.1.1 et HTTPS, plus LoRaWAN via son propre serveur réseau, ainsi que SNMP en interrogation et les caméras. Pas de MQTT-SN, pas de CoAP. Donc pour tout ce qui n’est pas IP, la solution est une passerelle sur site qui parle le côté terrain et remonte en MQTT. Deux façons que j’ai utilisées :Passerelle sous licence avec Hermetry Edge. Elle lit du Modbus RTU sur RS-485 et du Modbus TCP (selon le modèle), se connecte en sortie via TLS avec son propre certificat, tamponne les données pendant les coupures, et chaque onduleur apparaît comme un appareil enfant distinct. Vous la revendiquez avec le code affiché sur sa page Cloud locale, personne n’a besoin de saisir d’identifiants sur site.Votre propre passerelle. Un Pi ou un PC industriel lit les bus avec pymodbus, lit la radio série de la station météo et un récepteur 433 MHz, puis publie pour tous sur v1/gw/connect et v1/gw/telemetry :
{"INV-07": {"ts": 1793000000000, "values": {"p_ac_kw": 41.2, "e_day_kwh": 188.4}},
"WX-1": {"values": {"irradiance": 612, "t_amb": 9.8}}}
Cochez « This device is a gateway » lors de l’ajout de l’appareil, sinon chaque message v1/gw est refusé et la session est fermée au bout de trois. Si les onduleurs ont un jour besoin de commandes, vous les envoyez à l’appareil enfant et la passerelle les reçoit sur v1/gw/rpc. Votre propre passerelle doit ensuite les transmettre au bus ; une passerelle sous licence le fait à votre place.Pour un site probablement non surveillé pendant des semaines, je paierais pour le boîtier sous licence.
Hermetry takes MQTT 3.1.1 and HTTPS from devices, plus LoRaWAN through its own network server and polled SNMP and cameras. No MQTT-SN, no CoAP. So for anything non-IP the answer is a gateway on site that speaks the field side and talks MQTT up. Two ways I’ve done it:
Licensed gateway with Hermetry Edge. It reads Modbus RTU over RS-485 and Modbus TCP (depends on the model), dials out over TLS with its own certificate, buffers during outages, and each inverter appears as its own child device. You claim it with the code on its local Cloud page, nobody types credentials on site.
Your own gateway. A Pi or industrial PC reads the buses with pymodbus, reads the weather station’s serial radio and a 433 MHz receiver, and publishes for all of them on v1/gw/connect and v1/gw/telemetry:
{"INV-07": {"ts": 1793000000000, "values": {"p_ac_kw": 41.2, "e_day_kwh": 188.4}},
"WX-1": {"values": {"irradiance": 612, "t_amb": 9.8}}}
Mark the device « This device is a gateway » when you add it, or every v1/gw message is refused and the session gets closed after three. If the inverters ever need commands, you send them to the child device and the gateway receives them on v1/gw/rpc. Your own gateway has to pass them on to the bus, a licensed one does that for you.
For a site that is probably unattended for weeks, I’d pay for the licensed box.
Possible, but with the pin you’re using I’d bet on power first. The Uno’s 3.3 V comes from a small LDO (an LP2985 on most boards) rated about 150 mA. An ESP8266 pulls 70-80 mA idle with Wi-Fi on and spikes to 300+ mA during transmit and association. The rail sags, the ESP browns out mid-connect and resets. When it does survive, every busy moment risks the same, which fits your half-hourly drop-offs.
What I’d do:
- Feed the ESP from its own regulator off the Uno’s 5 V: an AP2112K-3.3 (600 mA) or an AMS1117-3.3 module, with 10 µF plus 100 nF right at the ESP’s VCC pin. A 470 µF electrolytic nearby helps with the transmit spikes.
- Level-shift Uno TX to ESP RX with a 1k/2k divider. The ESP isn’t 5 V tolerant, whatever forum posts claim.
- Keep the Uno’s 5 V source decent. USB from a laptop is fine for the bench, a cheap phone charger often isn’t.
Michael’s point is worth checking after that. rst cause 4 is the watchdog, and a brownout that half-crashes the code can also end in a watchdog reset, so fix power and see what’s left.
For the Hermetry side, once it’s stable, keep the MQTT keepalive around 60 s. A short keepalive plus a flaky supply gives you exactly that pattern of timeouts in the Log tab.
Traduit de English par IA ·
Concernant Safe : je n’ai trouvé aucune page de documentation sur ce qu’il apporte, donc je ne peux pas vous le dire. Les règles d’alarme du profil d’appareil couvrent la partie « prévenir quelqu’un », c’est ce que nous utilisons.
On Safe: I found no doc page on what it adds, so I can’t tell you. Alarm rules on the device profile cover the « tell someone » part, that’s what we use.

