maker_busra
@busra-ozturk · Ocak 2026 tarihinde katıldı
Hobi elektronikçisi · ev otomasyonu · Eskişehir · sahada 19 yıl
- Konular
- 2
- Yanıtlar
- 19
- Puan
- 0
Oluşturulan forum yanıtları
Yapay zekâ tarafından English dilinden çevrildi ·
Oradayken Telemetry keys sekmesinde birimleri ve aralıkları doldurmaya değer. 2.3.0 sürümünden itibaren bir gösterge, varsayılan ölçeğini profilin tanımladığı aralıktan alıyor; bu yüzden soğuk oda göstergelerimiz onlara dokunmadan doğru çıktı.
Worth filling in units and ranges on the Telemetry keys tab while you’re there. Since 2.3.0 a gauge takes its default scale from the range the profile declares, so our cold room gauges came out right without touching them.
İlk açılış betiği ile her Pi’nin wlan0 MAC’ini ve daire numarasını topladım, CSV’yi yükledim, kontrol adımında 25 satır hazır dedi. Token dosyasını hemen indirdim, bir Pi’ye yanlış token kopyalamışım sadece, onu da Rotate secret ile düzelttim. İki Pi 5’in MAC’i 2C:CF:67 ile başlıyormuş, listeyi ben de not aldım.
Aslan Bey haklı. Evde 40’a yakın BLE sensörü tek Pi ile okuyorum, bağlanmadan.
BLE’de iki ayrı dünya var. Yayın (advertising): sensör kimseye bağlanmadan saniyede bir-iki kez küçük bir paket yayınlıyor, içinde sıcaklık ve nem var. Dinleyen sayısında sınır yok, sensör tarafında en az pil harcayan yol bu. Bağlantı (GATT): Pi sensöre bağlanıp karakteristik okuyor. Bağlantı sayısı adaptöre göre sınırlı (Pi’de pratikte 7-10), her bağlantı iki tarafta da enerji harcıyor. Eşleştirme (pairing/bonding) bağlantının üstüne şifreleme ekliyor; ayar yazmak veya şifreli veri okumak için gerekiyor, sadece ölçüm okumak için gerekmiyor.
Bu tip sensörlerin çoğu ölçümü yayın paketinde de veriyor (bazıları özel firmware ile). bleak’te pasif tarama ile dinle:
from bleak import BleakScanner
son = {}
def cb(dev, adv):
if dev.address in SENSORLER:
t, h = coz(adv.service_data) # sensöre göre çözümleme
son[SENSORLER[dev.address]] = {"values": {"sicaklik": t, "nem": h}}
scanner = BleakScanner(detection_callback=cb)
Dakikada bir son sözlüğünü tek mesajla gönder: v1/gw/telemetry içinde her child adının altında bir kayıt. 30 sensör tek mesaj, kota açısından da iyi.
Dezavantaj: yayın şifresiz, yakındaki herkes okuyabilir ve taklit edebilir. Bazı firmware’ler şifreli yayın destekliyor (bindkey ile), ilaç gibi bir yer ise ona bakın.
İsim daire numarası olacak (d-12 gibi), MAC yanında dursun istiyorum. Hepsi Wi-Fi’dan bağlı, iyi ki söyledin Derya.
Kalibrasyon yapıldı mı? Hard iron ve soft iron kalibrasyonu yapılmamışsa dönüş yönüne göre farklı hata çıkar, sağ-sol farkı ondan olabilir.
Kelime sırasını anlamanın en kolay yolu: debimetrenin ekranında bilinen bir değer varken iki birleştirmeyi de yazdır, hangisi ekranla tutuyorsa o.
Bu tablo tam LoRaWAN’ın işi, iki GES sahasında aynısını kurdum. 320 m, panel arkası, pil, saatte birkaç ölçüm: LoRaWAN sensörü SF7-SF9’da rahat ulaşır, mesh’e ihtiyaç yok, 3 yıl pil gerçekçi. Türkiye EU868 bandında, Hermetry’de de frekans planı gateway’e göre gidiyor, EU868 gateway ve sensör alın.
Kurulum şöyle oluyor:
- Kontrol odasının çatısına (mümkünse direğe) bir Basics Station destekli dış mekan gateway. Hermetry’de LoRaWAN gateway olarak ekliyorsun, gateway
wss://ile dışarı bağlanıyor, gelen port açmana gerek yok. - Sensörleri OTAA olarak ekliyorsun. Kendi nRF52840 kartını kullanacaksan üstüne bir SX1262 koyup LoRaWAN yığını çalıştırırsın, ya da hazır sensör alırsın.
- Byte’ları değere çevirmek için kendi codec’ini yazıyorsun. Hermetry’de codec JavaScript değil, JSON tablo: byte konumu, format, ölçek. Test vektörü zorunlu.
Kendi gateway yazılımına göre farkı: gateway’in kodunu sen yazmıyorsun, join, ADR ve frame sayaçlarıyla ağ sunucusu uğraşıyor. Her sensör yine kendi cihazı olarak görünüyor, alarm ve pano aynı. Gateway ve her sensör plandaki cihaz sayısına dahil, 40 nokta + 1 gateway hesaplayın.
Başlangıç için: İlk LoRaWAN sensörünüzü bağlayın.
Kerem Bey harika olmuş, teşekkürler. Döngü özetine geçtim, yeni fırçalarla normal süre 11,8 s çıktı, limiti 14 yaptım. Eski motoru da denemek için bir haftalığına taktım: ikinci gün WARNING açıldı, süreler 15-16 s gidiyordu. Yani geçen kış bunu aylar önce görebilirmişim.
Hoş geldin Tuğba. Sensör DHT22 ise nemli odada bir süre sonra nemi yüksek okumaya başlayabiliyor, ona dikkat et. Bütçe el verirse SHT31 ya da BME280 uzun vadede daha düzgün okuyor. Kolay gelsin.
Oğuz Bey’e katılıyorum. ENC28J60 “aptal” bir çip, TCP/IP yığınının tamamı Uno’nun 2 KB RAM’inde dönüyor. UIPEthernet tek başına RAM’in büyük kısmını yiyor, üstüne Modbus tamponu gelince bağlantı açılıyor ama cevap oluşturulurken bellek bitiyor. Yıllar önce ev otomasyonunda aynı modülle aynı duvara çarptım, birkaç gün uğraştıktan sonra modülü çekmeceye attım.
Gerçekçi seçenekler:
W5500 (ya da W5100) modülü al. TCP/IP yığını çipin içinde, Uno’nun RAM’ini yemiyor, Ethernet.h ile çalışıyor, ArduinoModbus’ın ModbusTCPServer’ı da direkt derleniyor. Fiyat farkı birkaç kahve parası.
#include <SPI.h>
#include <Ethernet.h>
#include <ArduinoModbus.h>
EthernetServer server(502);
ModbusTCPServer modbus;
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x01};
void setup() {
Ethernet.begin(mac, IPAddress(192, 168, 1, 50));
server.begin();
modbus.begin();
modbus.configureHoldingRegisters(0x00, 3);
}
void loop() {
EthernetClient client = server.available();
if (client) {
modbus.accept(client);
while (client.connected()) {
modbus.holdingRegisterWrite(0, readTempX10(0)); // 23.4 °C -> 234
modbus.poll();
}
}
}
Ya da Uno yerine bir ESP32 kullan, RAM sorunu kalmıyor.
ENC28J60’ta ısrar edersen: Serial.print’leri F() ile flash’a al, kullanmadığın her şeyi çıkar, UIPEthernet ayar dosyasında soket sayısını 1’e indir. Çalışır hale gelebilir ama ders için sürekli takılan bir sistem istemezsin.
Bir de sıcaklığı float değil, 10 ile çarpılmış tamsayı olarak koy, Pi tarafında 10’a bölüp Hermetry’ye gönder. Pi’de pymodbus ile okurken adres 0’dan başladığını unutma, Modbus Poll’da “40001” gördüğün register kodda 0.
EU868’de görev döngüsünü de unutma, %1. Dakikada bir gönderen düğüm SF12’de bu sınırı aşar, SF7-SF9 civarında kal, ADR’yi açık bırak.
CONNACK gelmiyorsa TLS el sıkışmasında takılıyorsun. Komutunda iki şey var, ikisi de bunu yapar.
Birincisi IP ile bağlanıyorsun. Hermetry SNI istiyor, yani istemci el sıkışmada sunucu adını göndermeli; IP ile bağlanınca bu olmuyor ve el sıkışma düşüyor. Cihazın Connection details kartındaki host adını kullan, kendi bölgenin adresini.
İkincisi Windows’taki mosquitto istemcisi sistemin sertifika deposunu kendiliğinden kullanmıyor. 2.x sürümlerinde --tls-use-os-certs var, ya da elindeki bir CA paketini --cafile ile ver. Ben ilk denememde ikisini de unutmuştum, birebir aynı mesajı aldım.
mosquitto_pub -d -h <connection details'teki host> -p 8883 --tls-use-os-certs ^
-i test-pc-01 -u <token> -t v1/telemetry -q 1 -m "{"t":21.4}"
Bağlantı açılınca bundan sonraki hataları (CONNACK 4, 5 gibi) cihazın Log sekmesinde nedeniyle birlikte görürsün; 5’in nedeni cihaza hiç gönderilmiyor, sadece orada yazıyor. Tablo burada: Cihaz bağlanmıyor.
CH340’lı ucuz çeviricilerde seri numarası olmuyor, by-id’de ikisi aynı görünür. O durumda /dev/serial/by-path/ kullanın, USB portuna bağlı kalıyor.
Geçen yıl bir bağda neredeyse aynısını kurdum. 2 km, Wi-Fi yok, 15 dakikada bir ölçüm; ben olsam LoRaWAN ile yapardım. Mikrodenetleyiciyi de radyoyla beraber seçmek lazım.
Benim kullandığım RAK3172 modülüydü (içinde STM32WL var, LoRa radyosu aynı çipte). Uykuda 2-3 µA civarı, gönderim birkaç yüz milisaniye. 15 dakikada bir küçük bir paketle 2xAA bir yılı rahat çıkarır, sensörü de bir MOSFET ile ölçüm anında beslersen. ESP32’yi bu iş için önermem, Wi-Fi bağlanması tek başına pili yiyor.
Hermetry tarafı: kendi LoRaWAN ağ sunucusu var, frekans planı gateway’den geliyor (Türkiye’de EU868 gateway ve sensör alırsın), OTAA ile cihazı ekliyorsun, Class A yeterli. Tek şart, alanı gören bir LoRaWAN gateway olması (Basics Station destekleyen bir gateway ya da lisanslı bir router). Fakülte çatısına bir tane konursa 2 km sorun olmaz. Başlangıç için şu sayfa iyi: İlk LoRaWAN sensörünüzü bağlayın.
Dayanıklı değil. SX127x’in dijital girişleri en fazla VDD + 0,3 V civarı. 5V sinyal ile sürmek modülü yavaş yavaş öldürür, ısınma da ondan olabilir.

