New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Kevin Anderson

dev_kevin

@kevinanderson25 · Joined July 2025

Newcomer

Backend developer · software · new to IoT

Topics
5
Replies
38
Points
0
Newcomer10 points to Member

Forum Replies Created

Viewing 15 posts – 1 through 15 (of 38 total)

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.

Measure twice, poll once.
♥ 0

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.

Measure twice, poll once.
♥ 2

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.

Measure twice, poll once.
Accepted solution♥ 9

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.

Measure twice, poll once.
♥ 0
Viewing 15 posts – 1 through 15 (of 38 total)