dev_kevin
@kevinanderson25 · Membre depuis juillet 2025
Backend developer · software · new to IoT
- Sujets
- 5
- Réponses
- 38
- Points
- 0
Toutes mes réponses sur les forums
Deployed the median on the boards and this rule on Monday. 3 e-mails all week, each one a dispenser that was actually almost empty. The supervisor asked if she can get the toilet roll ones in the morning only, but that’s a problem for next week.
Traduit de English par IA ·
Je ne suis pas utilisateur d’Edge, mais ne pourriez-vous pas mettre en place un VPN depuis le routeur vers votre bureau ? C’est ce que nous avions fait une fois pour une application web.
Not an Edge user, but couldn’t you run a VPN from the router back to your office? That’s what we did for a web app once.
Traduit de English par IA ·
Désolé, question de débutant : c’est quoi, le catalogue ? Est-ce quelque chose qu’on configure dans le profil ?
Sorry, newbie question, what’s the catalogue? Is that something you set up in the profile?
The « 8 channels times every SF in parallel » bit is what I was missing. Bought one with Basics Station support, followed the Connect a Basics Station gateway page, it showed Online within a minute. Our two test sensors at the far end of the office come in at around -105 dBm, fine for now.
Traduit de English par IA ·
Est-il sûr d’appuyer une fois sur Arrêt d’urgence pour voir ce qu’il fait ? Je ne veux pas que le stockage des données de nos appareils s’arrête.
Is it safe to press Emergency stop once to see what it does? I don’t want our device data to stop being stored.
Traduit de English par IA ·
Je suis nouveau côté matériel, mais j’ai fait du travail sur les protocoles série en logiciel pendant des années, et on peut simuler cela avec la parité. Le 9e bit est envoyé à la place du bit de parité. Linux prend en charge la parité « stick » via le drapeau CMSPAR : avec PARENB|CMSPAR|PARODD, le bit de parité vaut toujours 1 (mark), sans PARODD il vaut toujours 0 (space).Donc : régler la parité mark, écrire l’octet d’adresse, attendre qu’il soit parti (tcdrain), passer en parité space, écrire les octets de données. En Python :
import termios, serial
CMSPAR = 0o10000000000
s = serial.Serial('/dev/ttyAMA0', 9600)
def set_bit9(on):
a = termios.tcgetattr(s.fd)
a[2] |= termios.PARENB | CMSPAR
a[2] = a[2] | termios.PARODD if on else a[2] & ~termios.PARODD
termios.tcsetattr(s.fd, termios.TCSADRAIN, a)
set_bit9(True); s.write(bytes([0x03])); s.flush()
set_bit9(False); s.write(bytes([0x10, 0x00]))
La réception est la partie la plus pénible : activez PARMRK et INPCK, et un octet avec la « mauvaise » parité arrive précédé de 0xFF 0x00, ce qui vous indique son 9e bit. À 9600 bauds, le temps entre l’octet d’adresse et les octets de données présente un petit écart dû au changement de mode, mais la plupart des anciens appareils s’en moquent. Utilisez l’UART PL011 (disable-bt), et non le mini UART, car le mini UART n’a pas de parité.Ensuite, chaque indicateur est envoyé comme un enfant, par exemple {« scale-1 »: {« values »: {« kg »: 12.45}}} sur v1/gw/telemetry.
I’m new to the hardware side but I did serial protocol work in software for years, and you can fake this with parity. The 9th bit is sent where the parity bit would be. Linux supports « stick » parity through the CMSPAR flag: with PARENB|CMSPAR|PARODD the parity bit is always 1 (mark), without PARODD it’s always 0 (space).
So: set mark parity, write the address byte, wait for it to leave (tcdrain), switch to space parity, write the data bytes. In Python:
import termios, serial
CMSPAR = 0o10000000000
s = serial.Serial('/dev/ttyAMA0', 9600)
def set_bit9(on):
a = termios.tcgetattr(s.fd)
a[2] |= termios.PARENB | CMSPAR
a[2] = a[2] | termios.PARODD if on else a[2] & ~termios.PARODD
termios.tcsetattr(s.fd, termios.TCSADRAIN, a)
set_bit9(True); s.write(bytes([0x03])); s.flush()
set_bit9(False); s.write(bytes([0x10, 0x00]))
Receiving is the uglier half: turn on PARMRK and INPCK and a byte with the « wrong » parity arrives prefixed with 0xFF 0x00, which tells you its 9th bit. At 9600 the timing between the address and the data bytes gets a small gap from switching, most old devices don’t care. Use the PL011 UART (disable-bt), not the mini UART, the mini UART has no parity.
Then each indicator goes out as a child, something like {« scale-1 »: {« values »: {« kg »: 12.45}}} on v1/gw/telemetry.
Traduit de English par IA ·
ttyAMA0, c’est un truc USB ? J’ai toujours pensé que les noms ACM/USB étaient réservés à l’USB.
Is ttyAMA0 a USB thing? I always thought ACM/USB names were for USB.
Traduit de English par IA ·
C’étaient deux bugs : le token et la partie /tenant/<tenantId> manquante (j’ai eu un 404 une fois la clé obtenue, puis je m’en suis rendu compte). Ça tourne à 30 s maintenant avec une clé en lecture seule limitée à notre IP. Le buzzer a retenti ce matin quand ils l’ont rempli, donc ça marche.
That was two bugs, the token and the missing /tenant/<tenantId> bit (got a 404 once I had the key, then saw it). Running at 30 s now with a read-only key locked to our IP. Buzzer went off this morning when they filled it, so it works.
The payload isn’t null-terminated, so reading it as a C string runs past the end. That’s the random number.
Traduit de English par IA ·
Qu’est-ce que MQTT-SN, est-ce un autre MQTT ?
What is MQTT-SN, is it a different MQTT?
What happens to the cumulative count when the ESP reboots? It starts at 0 again.
Traduit de English par IA ·
Juste, la connexion sortante est plus propre. Je retire mon conseil sur la redirection de port.
Fair enough, outbound is cleaner. Taking my port forwarding advice back.
Traduit de English par IA ·
La redirection de port sur le routeur fonctionne, je l’ai déjà fait une fois pour une caméra. Choisis simplement un port élevé.
Port forwarding on the router works, I did that for a camera once. Just pick a high port.
Could you only send the battery value once an hour? Then it can’t flap as much.
Is the antenna actually an 868 one? The 915 ones look the same.

