dev_kevin
@kevinanderson25 · Temmuz 2025 tarihinde katıldı
Backend developer · software · new to IoT
- Konular
- 5
- Yanıtlar
- 38
- Puan
- 0
Oluşturulan forum yanıtları
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.
Yapay zekâ tarafından English dilinden çevrildi ·
Edge kullanıcısı değilim, ama router’dan ofisinize bir VPN kuramaz mıydınız? Bir keresinde bir web uygulaması için biz de bunu yapmıştık.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
Kusura bakmayın, acemi bir soru: katalog nedir? Bu, profilde ayarlanan bir şey mi?
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.
Yapay zekâ tarafından English dilinden çevrildi ·
Ne yaptığını görmek için Acil durdurma düğmesine bir kez basmak güvenli mi? Cihaz verilerimizin depolanmasının durmasını istemiyorum.
Is it safe to press Emergency stop once to see what it does? I don’t want our device data to stop being stored.
Yapay zekâ tarafından English dilinden çevrildi ·
Donanım tarafına yeniyim ama yıllarca yazılımda seri protokol çalıştım ve bunu parite ile taklit edebilirsiniz. 9. bit, parite bitinin olacağı yere gönderilir. Linux, CMSPAR bayrağı ile “stick” pariteyi destekler: PARENB|CMSPAR|PARODD ile parite biti her zaman 1 (mark), PARODD olmadan her zaman 0 (space) olur.Yani: mark pariteyi ayarla, adres baytını yaz, çıkana kadar bekle (tcdrain), space paritesine geç, veri baytlarını yaz. Python’da:
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]))
Alma tarafı daha zahmetli: PARMRK ve INPCK’yi açın; “yanlış” pariteli bir bayt 0xFF 0x00 önekiyle gelir ve bu, 9. bitini size söyler. 9600’de adres ve veri baytları arasındaki zamanlamada, geçişten kaynaklanan küçük bir boşluk oluşur; çoğu eski cihaz buna aldırmaz. PL011 UART’ı kullanın (disable-bt), mini UART’ı değil, çünkü mini UART’ta parite yoktur.Ardından her gösterge v1/gw/telemetry üzerinden bir alt öğe olarak gönderilir, örneğin {“scale-1”: {“values”: {“kg”: 12.45}}} gibi.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
ttyAMA0 bir USB şey mi? ACM/USB adlarının USB için olduğunu hep düşünmüştüm.
Is ttyAMA0 a USB thing? I always thought ACM/USB names were for USB.
Yapay zekâ tarafından English dilinden çevrildi ·
Bu iki hataymış: token ve eksik /tenant/<tenantId> kısmı (anahtarı aldıktan sonra bir kez 404 aldım, sonra fark ettim). Şu an 30 s aralıkla çalışıyor ve IP adresimize kilitli, salt okunur bir anahtar kullanıyoruz. Bu sabah tank doldurulduğunda zil çaldı, yani çalışıyor.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
MQTT-SN nedir, farklı bir MQTT mi?
What is MQTT-SN, is it a different MQTT?
What happens to the cumulative count when the ESP reboots? It starts at 0 again.
Yapay zekâ tarafından English dilinden çevrildi ·
Haklısın, giden bağlantı daha temiz. Port yönlendirme önerimi geri alıyorum.
Fair enough, outbound is cleaner. Taking my port forwarding advice back.
Yapay zekâ tarafından English dilinden çevrildi ·
Router üzerinde port yönlendirme çalışıyor, bir keresinde bir kamera için bunu yapmıştım. Sadece yüksek bir port seç.
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.

