aisha.maker
@aisha_r58 · Se unió el octubre 2025
Maker · home automation · Brisbane
- Temas
- 7
- Respuestas
- 40
- Puntos
- 0
Respuestas de foro creadas
Traducido del English por IA ·
Entonces la vía del dongle. Antena encima de la caja, Wi-Fi integrado desactivado, señal ahora en -61 dBm con la puerta cerrada. No hay desconexiones por keepalive en la pestaña Log desde el sábado, y dejé el soldador en el cajón. Primero tuve que instalar el controlador de mi dongle, era un RTL8812AU, así que comprueba que el tuyo sea compatible antes de comprarlo.
Dongle route it is. Antenna on top of the box, onboard Wi-Fi off, signal now -61 dBm with the door shut. No keepalive disconnects in the Log tab since Saturday, and I kept the soldering iron in the drawer. Had to install the driver for my dongle first, it was a RTL8812AU one, so check yours is supported before buying.
Traducido del English por IA ·
Según mi experiencia, los módulos HLK funcionan bien en casa; tengo varios funcionando desde hace años.
The HLK modules are fine at home in my experience, I have a few running for years.
Is the Pi’s ground tied to the 24 V supply’s 0 V somewhere? If so the opto isn’t isolating anything.
Tyler’s right in one line, here’s the longer version. PubSubClient only reads from the socket and sends pings inside client.loop(). Its default keepalive is 15 s. You sleep 30 s, so no ping goes out, the broker drops you for keepalive_timeout, and state -3 is «connection lost».
Never block in loop(), use a timer instead:
unsigned long last = 0;
void setup() {
...
client.setKeepAlive(60);
client.setBufferSize(512);
}
void loop() {
if (!client.connected()) reconnect(); // with a back-off, not a tight loop
client.loop(); // every pass
if (millis() - last >= 30000) {
last = millis();
snprintf(buf, sizeof buf, "{"temperature":%.2f}", bme.readTemperature());
client.publish("v1/telemetry", buf);
}
}
Keepalive between 30 and 300 s is what the docs recommend. And do what Niall said, the Log tab names the reason for every disconnect.
Down to one read every 100 ms and it has been connected for two days straight. Michael, delay(1) alone made it drop less, but it still dropped.
Traducido del English por IA ·
En un broker sencillo sí. Podrías ejecutar Mosquitto en una Pi en el depósito y hacer que los armarios publiquen también allí. Un poco desordenado, eso sí, dos destinos a los que enviar.
On a plain broker it is. You could run Mosquitto on a Pi in the depot and have the cabinets publish there as well. Bit messy though, two places to send to.
Traducido del English por IA ·
+1 a lo del Twin. Incluso en mi proyecto de casa, una vez que los dispositivos se colocaron bajo las habitaciones, las placas de repente tuvieron sentido para otras personas.
+1 to the Twin bit. Even in my house project, once devices sat under rooms the boards suddenly made sense to other people.
The single N-channel on the bottom is simpler, I’d just do that.
Traducido del English por IA ·
Un splitter 802.3af con salida micro-USB de 5 V funciona en una 3B, yo tengo uno en mi invernadero. Consigue uno de 2,4 A, los de 1 A se caen de tensión cuando el HAT RS-485 y el Wi-Fi están ocupados a la vez.
An 802.3af splitter with a micro-USB 5 V output works on a 3B, I run one in my greenhouse. Get one rated 2.4 A, the 1 A ones brown out when the RS-485 HAT and Wi-Fi are both busy.
Traducido del English por IA ·
No hacen falta topics por dispositivo. Los 300 publican en el mismo v1/telemetry. Hermetry sabe quién habla por la credencial con la que se conectó el dispositivo, así que el token funciona en la práctica como la dirección. La unidad 17 no puede escribir como la 18 porque no tiene la credencial de la 18, y un dispositivo solo puede suscribirse a sus propios topics de downlink (v1/attributes/set, v1/rpc/req/+ y similares), así que tampoco ve nunca los mensajes de otro dispositivo. No hay ningún archivo ACL que mantener.Kevin no se equivoca al decir que existen los topics Custom, pero están pensados para firmware que no se puede cambiar: el perfil toma entonces cualquier topic fuera de v1/ como telemetría de ese dispositivo. Los límites ahí son profundidad de topic 8, longitud 128 y 50 topics distintos por dispositivo, y con «Prefix keys with the topic», grid/s12/temp se convierte en una clave como grid.s12.temp. Como estás escribiendo firmware nuevo, olvídate de todo eso.Para el id del sitio, lo haría un atributo del dispositivo en lugar de parte del topic. No cambia cada minuto, así que no pertenece a la telemetría.Referencia con la tabla completa de topics: MQTT topics and payload reference. Una cosa práctica de cuando migré mis propios equipos: dale a cada unidad su propia credencial. Dos dispositivos que comparten un token se desconectan constantemente entre sí.
No per-device topics needed. All 300 publish to the same v1/telemetry. Hermetry knows who’s talking from the credential the device logged in with, so the token is effectively the address. Unit 17 can’t write as unit 18 because it doesn’t have 18’s credential, and a device can only subscribe to its own downlink topics (v1/attributes/set, v1/rpc/req/+ and so on), so it never sees another device’s messages either. No ACL file to keep.
Kevin’s not wrong that Custom topics exist, but they’re for firmware you can’t change: the profile then takes any topic outside v1/ as telemetry of that device. Limits there are topic depth 8, length 128 and 50 distinct topics per device, and with «Prefix keys with the topic» grid/s12/temp becomes a key like grid.s12.temp. Since you’re writing new firmware, skip all of that.
For the site id I’d make it an attribute of the device instead of part of the topic. It doesn’t change every minute so it doesn’t belong in telemetry.
Reference with the full topic table: MQTT topics and payload reference. One practical thing from when I moved my own stuff: give every unit its own credential. Two devices sharing one token keep kicking each other off.
The pop-up needs a DNS server on the ESP32 that answers every name with 192.168.4.1. The phone tries some known address, gets your page instead and decides it’s a portal.
Traducido del English por IA ·
Resuelto. Añadí el punto de acceso con nmcli como escribió tsmith, prioridades 20/10. El sábado se conectó al teléfono unos 40 s después del arranque. Las lecturas se guardaron en un archivo JSONL mientras el teléfono no tenía señal en los bancales del fondo, y luego se enviaron en lotes de 50 cuando volvió la señal. La primera semana, las horas estaban desfasadas una hora en las primeras lecturas, justo el tema del NTP, así que encargué un DS3231 como Michael. Mientras llega, el script comprueba NTPSynchronized antes de poner la marca de tiempo.
Sorted. Added the hotspot with nmcli as tsmith wrote, priorities 20/10. Saturday it joined the phone within about 40 s of boot. Readings went into a JSONL file while the phone had no signal at the far beds, then went up in batches of 50 when it came back. First week the times were off by an hour on the first few readings, the NTP thing exactly, so I’ve ordered a DS3231 like Michael. Until it comes the script checks NTPSynchronized before stamping.
Ordered 20 MDBT42Q modules to rework the board, and set up a Pi gateway at home with the v1/gw format. My five tags showed up as children named after their MAC addresses within a minute. The double-reporting point is real: two Pis in my house both reported the same tag, fixed it with a strongest-RSSI rule in the gateways.
Module cost me about 4 USD more than the bare chip at 500 pcs. Hotels are 3 buildings with maybe 20 rooms per floor.
Traducido del English por IA ·
Enviar telemetría con el token del dispositivo equivale a hacerse pasar por el dispositivo. Hermetry solo almacena lo que dice «el dispositivo». Lo que necesitas es un comando en sentido contrario.
Posting telemetry with the device token is you pretending to be the device. Hermetry just stores what «the device» says. You want a command going the other way.

