Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Aoife Lynch

lynchlab

@aoife_l22 · Se unió el abril 2025

Recién llegado

Engineering student · university

Temas
15
Respuestas
79
Puntos
0
Recién llegado10 puntos para Miembro

Respuestas de foro creadas

Viendo 15 entradas – de la 61 a la 75 (de un total de 79)

Traducido del English por IA ·

0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

Solo Wi-Fi, ninguna entrada de Bluetooth en absoluto.

Timestamps in UTC or it didn't happen.
♥ 2

Traducido del English por IA ·

Por desgracia, no es la misma red en todas partes. Dos edificios están en un SSID IoT separado, un laboratorio tiene su propio router y las contraseñas se cambian cada semestre. Además, los tokens tienen que ser diferentes para cada nodo de todos modos.

Timestamps in UTC or it didn't happen.
♥ 2

Liam’s half right. avr-libc’s printf family is built without float support by default to save flash, so %f prints ?. You can link the float version (-Wl,-u,vfprintf -lprintf_flt) but it costs about 1.5 KB of flash and the Arduino IDE makes the flags annoying.

What I do on Nanos is convert the floats with dtostrf first, then format strings:

char ts[8], hs[8], buf[96];
dtostrf(t, 0, 2, ts);      // width 0 = no padding
dtostrf(h, 0, 1, hs);
snprintf(buf, sizeof(buf), "{"temp_c":%s,"rh":%s,"seq":%lu}", ts, hs, seq);

Or send integers: temp_c10 as 2154 and scale it back later. Same quota, zero float formatting. Also check for NaN when the SHT31 read fails: dtostrf prints nan, which isn’t valid JSON, and the whole message gets stored as raw text. Skip the key when the read fails.

Timestamps in UTC or it didn't happen.
Solución aceptada♥ 5

Both fixed. The society bought the isolated carrier for the pH circuit and the 0.3 jumps are gone. The JSON rule with the any group saved fine, and the pump ran three times today without a single alarm. Then I dropped the probe in pH 4 buffer to test and it opened after five minutes, as expected.

Timestamps in UTC or it didn't happen.
♥ 1

Traducido del English por IA ·

Muy útil, gracias. El supervisor aceptó «CA pública en la tarjeta, secretos en NVS cifrada». La parte de X.509 me ahorró una semana; ya había empezado a generar una CA con openssl. Curiosamente, la semana pasada cloné la tarjeta para una segunda placa y los datos estaban incompletos; era exactamente el problema de la toma de control.

Timestamps in UTC or it didn't happen.
♥ 1

Traducido del English por IA ·

Hicimos nuestro proyecto de fin de carrera sobre algo casi idéntico (contadores inteligentes sobre 2G, interceptamos nuestro propio tráfico). Todo lo que dijo Laura es correcto. Esto es lo que haría yo en tu lugar, en este orden.Primero, separa el perfil. Crea un perfil nuevo para las 38 unidades TLS y déjalo en el valor predeterminado, solo TLS en 8883. Muévelas a ese perfil. Los dispositivos de ese perfil no pueden iniciar sesión en 1883 en absoluto, así que aunque alguien intente algo con ellos, nada viaja en claro.Segundo, las 12 unidades antiguas tienen su propio perfil con MQTT sin cifrar permitido, y lo bloqueas al máximo:

  • Redes permitidas: introduce solo el rango de direcciones desde el que llega el tráfico de tu operador. Pide al operador un APN privado si puedes; así será su rango privado. Todo lo que venga de fuera se rechaza (CONNACK 5).
  • Comandos permitidos sin TLS: déjalo vacío o, como máximo, sys.info. Nunca sys.reboot. Los demás comandos simplemente esperan una sesión TLS, que estas unidades nunca tendrán, así que caducan.
  • Autenticación permitida: solo token de acceso, si es lo único que usan.

Tercero, rota el token del armario que capturó el tester, y, siendo honestos, los 12, porque llevan dos años cruzando internet en claro.Las actualizaciones de firmware y la configuración de los dispositivos tampoco se envían nunca en claro, así que no estás filtrando esos datos. Todo lo anterior está en esta página: Device transport security. Para TI, la respuesta honesta es: «38 están cifradas de extremo a extremo, 12 no lo están y quedan aisladas hasta que se reemplacen».

Timestamps in UTC or it didn't happen.
Solución aceptada♥ 2

Traducido del English por IA ·

La función de ahorro de energía estaba activada. Añadí el archivo de configuración, reinicié NetworkManager, y lleva 3 días seguidos en línea, sin keepalive_timeout en la pestaña Log desde entonces. SSH también responde al instante, algo que ni siquiera había relacionado con el problema. ¡Gracias Ciaran!

Timestamps in UTC or it didn't happen.
♥ 0

Traducido del English por IA ·

Lo puse en marcha ayer y a todos en el laboratorio les encanta. No tuve que pedirle nada a IT, lo cual fue una victoria. Solo una cosa: al principio usé status=active y, después de un reinicio, repetía alarmas ya reconocidas porque mi seen-set estaba vacío. Cambié a OPEN, como ustedes habían escrito. También tuve que cambiar los nombres de los dispositivos de «frz-03» a «freezer three» porque piper leía «frz» como «frz» sin sentido.

Timestamps in UTC or it didn't happen.
♥ 1

Traducido del English por IA ·

Es headless, no tiene pantalla. Aun así desactivé el apagado de pantalla por si acaso, sin cambios.

Timestamps in UTC or it didn't happen.
♥ 2

Traducido del English por IA ·

Peleé con la placa de expansión del Edison para un laboratorio el año pasado. Abrir /dev/ttyMFD1 no basta en esa placa: los pines 0 y 1 pasan por un multiplexor de pines y los convertidores de nivel, y hasta que se configuran la UART no está conectada al conector, los pines son GPIO normales. Por eso se abre sin problemas pero no lee nada.La forma sencilla es la biblioteca mraa, que configura el multiplexor por usted al abrir la UART por su número de placa:

import mraa
u = mraa.Uart(0)            # pins 0/1 on the Arduino breakout, sets the mux
u.setBaudRate(115200)
u.setMode(8, mraa.UART_PARITY_NONE, 1)
while True:
    if u.dataAvailable(1000):
        line = u.readStr(64).strip()     # "caps_ok=1823;caps_rej=12"
        vals = dict(kv.split("=") for kv in line.split(";"))
        # add to the payload the Edison already sends:
        payload["caps_ok"] = int(vals["caps_ok"])
        payload["caps_rej"] = int(vals["caps_rej"])

Compruebe también que el cableado está cruzado: TX de la OpenMV al RX del Edison (pin 0), RX de la OpenMV al TX del Edison (pin 1). El pin 0 es RX en la placa de expansión, así que si lo que escribió es exactamente como está cableado, intercámbielos.

Timestamps in UTC or it didn't happen.
Solución aceptada♥ 9
Viendo 15 entradas – de la 61 a la 75 (de un total de 79)