johnsonsec
@brian-johnson · Mitglied seit April 2026
IT and security admin · software · 20 years in the field
- Themen
- 1
- Antworten
- 24
- Punkte
- 0
Erstellte Forenantworten
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.
Von English mit KI übersetzt ·
Persönlich würde ich das eine Teil, das unbedingt laufen muss, nicht auf dem schwächsten Chip im Gebäude platzieren. Aber ich bin neugierig, was andere gemacht haben.
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.
Von English mit KI übersetzt ·
Eine kleine Sache, wenn Sie schon dabei sind: Legen Sie das Geräte-Token in eine Datei, die nur Ihr Dienstbenutzer lesen kann, und nicht in das Skript. Ich habe zu viele davon in Git-Repositories gesehen.
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.
Von English mit KI übersetzt ·
Das sind Strings, und zwei Dezimalzahlen. Ist das so gewollt?
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.
Von English mit KI übersetzt ·
Ein separater Punkt zur Klimatechnik. Diese Steckdose steht in Ihrem Serverraum und kann dort eine Last schalten, also behandeln Sie sie wie jedes andere Gerät mit Zugriff. Belassen Sie ihr Profil bei nur TLS, geben Sie ihr ein eigenes Profil statt das Sensorprofil zu teilen, und tragen Sie den öffentlichen Bereich Ihres Büros unter Erlaubte Netzwerke ein, damit ein von dieser Steckdose kopiertes Token überall sonst nutzlos ist. Billige Steckdosen werden häufiger geöffnet und ausgelesen, als man denkt.
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.
Von English mit KI übersetzt ·
Die mobile App bringt Benachrichtigungen auf die Telefone all derer, die sie installieren. Für alle anderen gibt es die Glocke im Browser, E-Mail, Chat-Apps, die ein Administrator verbunden hat, oder SMS aus einem 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.
Von English mit KI übersetzt ·
Speichern Sie den Schlüssel in einer nur für root zugänglichen Datei, nicht in dem Skript, das Sie irgendwann in ein Ticket einfügen.
Store the key in a root-only file, not in the script you’ll paste into a ticket some day.
Von English mit KI übersetzt ·
Das Gateway plus alle untergeordneten Geräte, also 27 mit der Wetterstation, mehr mit den Sonden.
The gateway plus every child, so 27 with the weather station, more with the probes.
Von English mit KI übersetzt ·
Hermetry nimmt von Geräten MQTT 3.1.1 und HTTPS entgegen, außerdem LoRaWAN über den eigenen Network Server sowie abgefragtes SNMP und Kameras. Kein MQTT-SN, kein CoAP. Für alles, was kein IP spricht, braucht man also ein Gateway vor Ort, das die Feldseite bedient und per MQTT nach oben spricht. Zwei Wege, wie ich es gemacht habe:Lizenziertes Gateway mit Hermetry Edge. Es liest Modbus RTU über RS-485 und Modbus TCP (je nach Modell), baut eine ausgehende TLS-Verbindung mit eigenem Zertifikat auf, puffert bei Ausfällen und jeder Wechselrichter erscheint als eigenes untergeordnetes Gerät. Sie beanspruchen es mit dem Code auf seiner lokalen Cloud-Seite, vor Ort muss niemand Zugangsdaten eintippen.Eigenes Gateway. Ein Pi oder industrieller PC liest die Busse mit pymodbus, liest den seriellen Funkempfänger der Wetterstation und einen 433-MHz-Empfänger aus und veröffentlicht für alle auf v1/gw/connect und 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}}}
Markieren Sie das Gerät beim Anlegen als „This device is a gateway“, sonst werden alle v1/gw-Nachrichten abgelehnt und die Sitzung nach dreimal geschlossen. Falls die Wechselrichter jemals Befehle brauchen, senden Sie sie an das untergeordnete Gerät, und das Gateway empfängt sie auf v1/gw/rpc. Ihr eigenes Gateway muss sie dann an den Bus weiterreichen, ein lizenziertes erledigt das für Sie.Für einen Standort, der wahrscheinlich wochenlang unbeaufsichtigt läuft, würde ich die lizenzierte Box kaufen.
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.
Von English mit KI übersetzt ·
Zu Safe: Ich habe keine Dokumentationsseite dazu gefunden, was es hinzufügt, daher kann ich Ihnen dazu nichts sagen. Die Alarmregeln im Geräteprofil übernehmen den Teil „jemanden benachrichtigen“, das verwenden wir.
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.

