james56
@james_p56 · Se unió el agosto 2026
Automation engineer · manufacturing
- Temas
- 2
- Respuestas
- 14
- Puntos
- 0
Respuestas de foro creadas
Traducido del English por IA ·
Lo hicimos con comandos en una flota más pequeña y era un caos cada vez que una unidad se perdía uno. Nadie podía saber qué unidades tenían qué intervalo.
We did it with commands on a smaller fleet and it was a mess every time a unit missed one. Nobody could tell which units had which interval.
Traducido del English por IA ·
Reconstruimos nuestra pantalla de paletizado con los anchos de cinta ajustados para coincidir con las cintas reales. Nos funciona.
Rebuilt our palletising screen with the belt widths set to match the real belts. Works for us.
Traducido del English por IA ·
No, la Uno aguanta ambos. Pero ¿cómo se alimenta el relé y dónde se unen las masas? Las lecturas que saltan y el puerto que desaparece parecen cosa de la válvula, no de la alimentación.
No, the Uno handles both. But how is the relay powered, and where do the grounds meet? The jumping readings and the disappearing port sound like the valve, not the supply.
Traducido del English por IA ·
DTR es una de las antiguas líneas de control de módem. En el Uno pasa por un condensador de 100 nF hasta el pin de reset, para que el IDE pueda reiniciar la placa antes de cargar un programa. Cualquier programa que abra el puerto cambia DTR, y la placa se reinicia. Yo me peleé con esto en un contador de líneas en el trabajo el año pasado.Por el lado del software, dos cosas juntas:
stty -F /dev/ttyUSB0 -hupcl # don't drop DTR when the port closes
ser = serial.Serial()
ser.port = '/dev/ttyUSB0'
ser.baudrate = 9600
ser.timeout = 2
ser.dtr = False
ser.open()
Ojo: en Linux, el controlador puede seguir activando DTR un momento en la primera apertura tras el arranque, así que esto reduce los reinicios, pero no siempre los elimina.La solución segura es el hardware: un condensador de 10 µF entre RESET y GND en el Uno, con el negativo a GND. Eso absorbe el pulso de reset. Después tienes que quitarlo (o pulsar reset a mano en el momento adecuado) cuando subas un nuevo firmware.Y para las caídas en tu total: guarda también el conteo en la EEPROM cada pocos minutos, o haz que el Uno envíe un total acumulado desde que se flasheó en lugar de desde el arranque. Así, un reinicio te costará unos pocos pulsos, no todo el total.
DTR is one of the old modem control lines. On the Uno it goes through a 100 nF capacitor to the reset pin, so the IDE can reset the board before an upload. Any program that opens the port toggles DTR, so the board resets. I fought this on a line counter at work last year.
Software side, two things together:
stty -F /dev/ttyUSB0 -hupcl # don't drop DTR when the port closes
ser = serial.Serial()
ser.port = '/dev/ttyUSB0'
ser.baudrate = 9600
ser.timeout = 2
ser.dtr = False
ser.open()
Be warned that on Linux the driver may still raise DTR for a moment on the very first open after boot, so this reduces resets, it doesn’t always kill them.
The sure fix is hardware: a 10 µF capacitor between RESET and GND on the Uno, minus to GND. That swamps the reset pulse. You then have to pull it out (or press reset by hand at the right moment) when you upload new firmware.
And for the drops in your total: also keep the count in EEPROM every few minutes, or have the Uno send a running total since it was flashed instead of since boot. A reset then costs you a few pulses, not the whole total.
Did this for a roof inspection drone, so here’s what I ended up with.
On the Pi, pymavlink reads the MAVLink stream from TELEM2. You only need two messages: GLOBAL_POSITION_INT (lat/lon in 1e7 degrees, relative altitude in mm) and SYS_STATUS (battery voltage in mV). Once a second, publish a flat object over MQTT with TLS:
from pymavlink import mavutil
m = mavutil.mavlink_connection("/dev/serial0", baud=921600)
state = {}
while True:
msg = m.recv_match(type=["GLOBAL_POSITION_INT", "SYS_STATUS"], blocking=True)
if msg.get_type() == "GLOBAL_POSITION_INT":
state.update(lat=msg.lat / 1e7, lng=msg.lon / 1e7, alt_m=msg.relative_alt / 1000)
else:
state["batt_v"] = msg.voltage_battery / 1000
if time.time() - last >= 1:
client.publish("v1/telemetry", json.dumps(state), qos=1); last = time.time()
Name the keys lat and lng, that’s what the Map card looks for by default.
On the board, a Map card. Bind Points to the drone’s latest values (lat, lng), and that’s your live marker. Bind Routes to Device readings over time with the keys lat,lng, and turn on Replay controls. The client can play the flight back at 1x to 10x and scrub. Add a value card for battery and altitude next to it. Satellite map style helps them see the panel rows.
1 message a second is far inside the default per-device limits. And keep it read-only: no commands from the board to the drone, the pilot flies it.
Traducido del English por IA ·
¿No existe una función de relé? Estoy seguro de haber visto un estado de gateway llamado ‘Pending’ en algún lugar de la lista de gateways.
Isn’t there a relay feature? I’m sure I saw a gateway status called Pending somewhere in the gateway list.
Traducido del English por IA ·
La topología en estrella es el origen de tu problema de caídas. 1-wire no tolera los stubs, cada derivación refleja la señal. O bien pasas una sola línea junto a cada sonda con stubs muy cortos, o la divides: puedes cargar el overlay dos veces en dos pines y tener dos buses más cortos. Con tanto cable, yo también probaría 2.2k en lugar de 4.7k.
The star is your dropout problem. 1-wire hates stubs, every leg reflects. Either run one line past every probe with tiny stubs, or split it: you can load the overlay twice on two pins and have two shorter buses. I’d also try 2.2k instead of 4.7k with that much cable.
Traducido del English por IA ·
disable-bt más quitar la consola lo solucionó. 600 consultas durante la noche, cero errores CRC, cero timeouts. Estaba usando ttyAMA0 y aparentemente hablaba con… nada útil, y el script recurría a reintentos que a veces funcionaban. Lo cambié a serial0. Kevin, ttyAMA es la nomenclatura ARM PL011, no USB.
disable-bt plus removing the console did it. 600 polls overnight, zero CRC errors, zero timeouts. I was on ttyAMA0 talking to… nothing useful apparently, and the script fell back to retries that sometimes hit. Changed it to serial0. Kevin, ttyAMA is the ARM PL011 naming, not USB.
Traducido del English por IA ·
Apuesto a que no hay VPN en esos sitios, y justo para eso sirve la función de panel.Router A: no puedes cambiar eso desde Hermetry, es por diseño. «Permitir el acceso al panel desde mi cuenta en la nube» es el consentimiento local del propietario del router y solo existe en la página Cloud del propio router. Alguien in situ tiene que activarlo una vez. Lo hicimos con un agricultor por teléfono, tardó cinco minutos: iniciar sesión en el panel local del router desde un portátil en la LAN, ir a la página Cloud y marcar el interruptor. A partir de ahí, Abrir panel funciona desde cualquier lugar.Router B: el firmware es demasiado antiguo para las sesiones de panel. Actualízalo desde la página de firmware de Hermetry. En un router tan lejano, lo haría por separado y primero, no como parte de una oleada, y revisaría en la pestaña Firmware la opción Actualizaciones por LTE si está en el enlace móvil. Los dispositivos con licencia tienen reglas de aprobación local y de enlace medido, así que puede quedarse en Esperando hasta que las permitan.Un par de cosas para cuando funcione. Si el router está en LTE, aparece una confirmación de que la sesión puede usar hasta 50 MB y después se cierra. Las sesiones terminan tras 30 minutos sin uso o 4 horas en total. Solo la persona que abrió una sesión puede entrar en ella, así que un colega abre la suya. Y lo que cambies dentro del panel depende de ti; abrirlo no cambia nada.Todos los mensajes de rechazo están listados en Remote access to a router’s panel.
No VPN at those sites I’d bet, that’s the point of the panel feature.
Router A: you can’t switch that from Hermetry, by design. «Allow panel access from my cloud account» is the router owner’s local consent and lives only on the router’s own Cloud page. Someone on site has to turn it on once. We had a farmer do it with me on the phone, it took five minutes: log into the router’s local panel from a laptop on the LAN, Cloud page, tick the switch. After that Open panel works from anywhere.
Router B: the firmware is too old for panel sessions. Update it through Hermetry’s firmware page. For a router that far away I’d do it on its own first, not as part of a wave, and check its Firmware tab for the Updates over LTE setting if it’s on the mobile uplink. Licensed devices have local approval and metered-link rules, so it may sit in Waiting until those allow it.
Couple of things for when it works. If the router is on LTE you get a confirm that the session may use up to 50 MB and is then closed. Sessions end after 30 minutes without use or 4 hours total. Only the person who opened a session can enter it, so a colleague opens their own. And what you change inside the panel is up to you, opening it changes nothing.
All the refusal messages are listed on Remote access to a router’s panel.
Traducido del English por IA ·
Era eso, tenían guardada directamente en marcadores la página de la bomba. Solucionado, gracias.
That was it, they had the pump board bookmarked directly. Sorted, thanks.
Traducido del English por IA ·
¿Hay alguna forma de volver atrás después de Open a board? Nuestro personal de operaciones termina tres paneles más adentro y luego cierra la pestaña para empezar de nuevo.
Is there a way back after Open a board? Our ops people end up three boards deep and then close the tab to start over.
Traducido del English por IA ·
Gestiono la monitorización de planta para seis clientes de esta forma, así que aquí tienes la configuración que ha funcionado.Una organización por empresa cliente. Tú mantienes una cuenta y eres miembro de cada una, con Admin, y cambias entre ellas desde el selector de organizaciones. Las personas del cliente se invitan como User. Un User puede ver dispositivos, perfiles, paneles y alarmas, reconocer alarmas, enviar comandos básicos y crear paneles personales. Ver los flujos requiere Admin (el permiso es automation.read), así que tu bloque Script queda fuera de su vista. Nunca le des a un cliente Admin «solo por un minuto».Paneles: créalos una vez en una organización plantilla, descarga el panel como archivo e impórtalo en cada organización cliente. Los flujos no viajan en el archivo del panel, así que debes trasladarlos por separado: expórtalo desde el menú de la fila en la lista de flujos (Export) e impórtalo en cada organización cliente (Import). Los secretos hay que volver a escribirlos, y los flujos importados llegan desactivados. Con 4 organizaciones, guardo también el código del bloque Script en git; es una tarea de 10 minutos por cambio. Si esto se vuelve engorroso, piensa en mover el cálculo de dosificación al firmware y enviar dose_g como telemetría; así la lógica vive en una única imagen firmada.Firmware: lo que dijo Laura, firmar con Ed25519 en tu pipeline, registrar la clave pública en la página Firmware y dejar desactivada la opción Allow unsigned images. Las imágenes sin firmar o refirmadas se rechazan entonces en la comprobación de carga.La tabla de roles está en Users and roles. El branding con tu logotipo también se configura por organización, si quieres que parezca tu propio producto.
I run plant monitoring for six customers this way, so here’s the setup that’s held up.
One organisation per customer company. You keep one account and are a member of each, with Admin, and switch between them from the organisation picker. The customer’s people are invited as User. A User can see devices, profiles, dashboards and alarms, acknowledge alarms, send basic commands and build personal boards. Viewing flows needs Admin (the permission is automation.read), so your Script block stays out of their sight. Never give a customer Admin «just for a minute».
Dashboards: build them once in a template org, download the board as a file and import it into each customer org. Flows don’t travel in the board file, so you bring the flow over separately: Export it from the row menu on the flow list and Import it in each customer org (secrets have to be typed in again, and imported flows arrive switched off). With 4 orgs I keep the Script block code in git as well, it’s a 10-minute job per change. If that gets painful, think about moving the dosing calculation into the firmware and sending dose_g as telemetry; then the logic lives in one signed image.
Firmware: what Laura said, sign with Ed25519 in your pipeline, register the public key on the Firmware page, and leave Allow unsigned images off. Unsigned or re-signed images are then refused by the upload check.
The role table is on Users and roles. Branding with your logo is per organisation too, if you want it to look like your product.
Traducido del English por IA ·
Funciona de inmediato en mi máquina Linux, nunca lo he probado en un Mac.
Works out of the box on my Linux machine, never tried a Mac.
Thanks. Do I need to buy a library for the electrical side, or is there something in the base set for meters and breakers?

