Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Eric Lewis

lewisfw

@lewis-e · Mart 2026 tarihinde katıldı

Yeni üye

Embedded developer · energy · 14 years in the field

Konular
1
Yanıtlar
37
Puan
0
Yeni üye10 için Üye puan

Oluşturulan forum yanıtları

15 yazı görüntüleniyor – 1 ile 15 arası (toplam 37)

Yapay zekâ tarafından English dilinden çevrildi ·

cfg.* paylaşımlı öznitelikleri kullanın, tam olarak bunun için tasarlandılar ve istenen ile raporlanan değer karşılaştırmasını ek bir çaba olmadan elde edersiniz.Anahtarları profilin Configuration keys sekmesinde tanımlayın (tür, etiket, sınırlar), ardından bunları paylaşımlı öznitelik olarak ayarlayın: cfg.telemetry.interval_s, cfg.pressure.deadband_bar, cfg.ntp.server. Cihaz değişiklikleri v1/attributes/set üzerinden alır, uygular ve uygulanan değeri aynı anahtarla istemci özniteliği olarak geri bildirir. Hermetry ikisini karşılaştırır ve Attributes sekmesinde her anahtar için In sync, Pending, Rejected veya Drifted durumunu gösterir.Cihaz tarafında, her bağlantıdan sonra:

SUBSCRIBE v1/attributes/set
PUBLISH   v1/attributes/req/1   {"sharedKeys": "cfg.*"}
# v1/attributes/res/1 üzerindeki yanıt -> hepsini uygula -> geri bildir:
PUBLISH   v1/attributes   {"cfg.telemetry.interval_s": 300, "cfg.pressure.deadband_bar": 0.05}

Kırsal sahalarınızı kapsayan şey bağlantıdan sonraki istektir: üç gündür çevrimdışı olan bir ünite geri geldiğinde tüm cfg.* anahtarlarını ister ve eksiklerini tamamlar. Bir ünite bir şeyi uygulayamazsa, bunu cfg_rejected içinde bildirin, örneğin {"cfg_rejected": {"cfg.ntp.server": "apply_failed"}}; satırda nedeniyle birlikte Rejected görünür. Uygulamayı idempotent yapın, bir mesaj iki kez gelebilir.300 ünite için, cihaz listesi üzerinde bir döngü içinde değerleri API ile yazın (POST …/attributes/shared, çağrı başına en fazla 100 anahtar). Temel değer ve toplu iş ekranları, ayar manifestosu yayınlayan cihazlar (lisanslı cihazlar) içindir; kendi yazılımınızla çalışan cihazlarda yol cfg.* üzerinden geçer. Durum tablosu için Attributes sayfasına bakın.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 7

Yapay zekâ tarafından English dilinden çevrildi ·

Benimki sorunsuz bağlanıyor, ancak iki üç gw mesajından sonra bağlantı kesiliyor. Aynı kutudan gelen düz cihaz telemetrisi çalışıyor.

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

Yapay zekâ tarafından English dilinden çevrildi ·

Firmware’i yazan kişi için: istek kimliğine göre tekrarları ayıklayın. Bir komut iki kez gelebilir. Son 32 kimliği on dakika boyunca tutun ve tekrarları atlayın. Bunu bir yeniden başlatma komutuyla öğrendim.

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

Yapay zekâ tarafından English dilinden çevrildi ·

Bir cihazın A değerine bağlı gösterge (canlı) anında tepki veriyor. Yanında bulunan yaklaşık 40 cihazlık tablo ise 30 saniyeye kadar gecikiyor. Dokümanlardaki Live sütunundaki Polled ifadesi bunun anlamı mı?

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

Yapay zekâ tarafından English dilinden çevrildi ·

Not: Aynı betik bir servis olarak çalıştığında günlükleri journald’a da yazıyor ve journal içindeki renk kodları can sıkıcı. Çoğu günlükleme kütüphanesi, stdout bir tty değilken rengi kapatmanıza izin verir.

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

Yapay zekâ tarafından English dilinden çevrildi ·

ESP32 firmware’i 8.8.8.8 gibi sabit kodlanmış bir DNS kullanıyorsa, buna da izin ver; yoksa taşınmadan sonra bağlantı kuramazlar ve güvenlik duvarının sorunsuz olduğuna yemin edersin.

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

Yapay zekâ tarafından English dilinden çevrildi ·

O veri yükünde üç şey var, bunların ikisinde forklift takipçilerinde ben de takıldım.Harita kartının Longitude sütunu varsayılan olarak lng, Latitude ise lat. Sen lon gönderiyorsun, bu yüzden her satırda boylam yok ve atlanıyor. Ya cihazda anahtarı yeniden adlandır ya da karttaki Longitude sütununu lon olarak ayarla. Ben cihazda yeniden adlandırırdım, böylece gelecekteki her kart sorunsuz çalışır.Sayıları JSON’u String() ile oluşturduğun için metin olarak gönderiyorsun. Sayı benzeri metinler karşılaştırmalarda çoğu zaman çalışır, yine de gerçek sayılar gönder. Ayrıca String(float) varsayılan olarak iki ondalık basamak verir, bu yaklaşık bir kilometreye denk gelir. Römorkların hepsi aynı noktada görünür.Ve konum geçerli değilse yayınlama yapma, yoksa bir kulübede her açıldığında römorkların Afrika açıklarında 0,0 noktasında park ettiği görülür.

if (gps.location.isValid() && gps.location.age() < 3000) {
char buf[96];
snprintf(buf, sizeof(buf), "{"lat":%.6f,"lng":%.6f,"spd_kmh":%.1f}",
gps.location.lat(), gps.location.lng(), gps.speed.kmph());
client.publish("v1/telemetry", buf);
}

snprintf ile %f, Uno’dan farklı olarak ESP8266 çekirdeğinde çalışır. Kart ayarları Map cards sayfasında.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 9

Yapay zekâ tarafından English dilinden çevrildi ·

Eğer bir tane kullanıyorsanız 10’dan 6 pinli ISP adaptörünü de kontrol edin. Bir tanesinde MISO ve MOSI çapraz bağlıydı ve bu yalnızca bir kart türünde şans eseri çalışıyordu.

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

Aoife’s question is the right one. Cold moves the crystals.

The four in RX:

RSSI is how strong the received signal is, read from RegRssiValue (0x11), value / 2 as negative dBm. AGC picks the LNA gain from that so strong signals don’t saturate the receiver; your 0x0E already has AgcAutoOn (bit 3) set, leave it. FEI (frequency error indicator, RegFeiMsb/Lsb 0x1D/0x1E) measures how far the incoming carrier is from where the receiver expects it. AFC uses that measurement to retune the receiver onto the signal, at the start of a packet if AfcAutoOn (bit 4) is set. Yours is off.

A plain crystal is good for maybe ±10 to 20 ppm, and drifts with temperature. At 868 MHz, 20 ppm is about 17 kHz. Probe and receiver drift differently on a cold morning, and once the offset plus your deviation falls outside a 10.4 kHz receive bandwidth, the packet is gone. That’s your dropouts.

RegRxConfig (0x0D) = 0x1E   // AfcAutoOn + AgcAutoOn + preamble detect trigger
RegAfcBw   (0x13)  = wide enough to catch the offset before AFC (e.g. 41.7 kHz)
RegRxBw    (0x12)  = 20.8 kHz after AFC
// or simply widen RxBw if you don't want AFC

Then send the FEI and RSSI of each probe as values next to the moisture reading. In Hermetry a chart of FEI against air temperature shows you which probes drift; ours showed 11 kHz swings on two units before we changed anything.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 7

Yapay zekâ tarafından English dilinden çevrildi ·

Mağazalardaki misafir ağlarında genellikle bir captive portal bulunur veya istemcileri birkaç saat sonra düşürür; ESP32’ler orada takılı kalır. Bunu önceden kontrol edin. Sensörlerin mağazadaki herhangi bir şeyle iletişim kurması gerekiyor mu, yoksa yalnızca internete mi çıkmaları yeterli?

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

Yapay zekâ tarafından English dilinden çevrildi ·

Ayrıca ABD firmware’inin hangi CA paketini sabitlediğini kontrol edin. Normal bir CA deposu yerine bölgesel sunucu sertifikasını sabitlediyse, AB sunucusunda farklı bir nedenle başarısız olabilir.

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

Yapay zekâ tarafından English dilinden çevrildi ·

Ne kadar sıcak? Yazın çelik bir kutunun içinde bir Pi 4’ün 80 C’de throttle yaptığını gördük.

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

I have a drawer full of these, so here’s how they differ in practice.

HC-05: classic Bluetooth with the serial port profile, can be master or slave, configured with AT commands at 38400 when you hold the KEY/EN pin high at power-up. HC-06: classic SPP too, slave only, fewer AT commands, default 9600. HM-10: Bluetooth Low Energy, the “serial” data goes through characteristic FFE1. Lower power, but the Pi side has to speak BLE.

All three have 3.3 V logic on RX. Their breakout boards take 5 V on VCC, but put a divider on the Uno’s TX line (1k from the Uno, 2k to ground) before it goes into the module’s RX.

For your case the HC-06 is the least work. On the Pi:

sudo rfcomm bind 0 98:D3:31:F5:A2:10 1     # HC-06 address, channel 1
# /dev/rfcomm0 now behaves like a serial port
python3 -c "import serial; s=serial.Serial('/dev/rfcomm0', 9600); print(s.readline())"

Uno side, one line per reading so the Pi can split it easily:

Serial.print("flow_c="); Serial.print(tFlow, 2);
Serial.print(";return_c="); Serial.println(tReturn, 2);

If the Pi is already your gateway to Hermetry, report the heat pump as its own child device on v1/gw/telemetry rather than adding the keys to the Pi itself, then it gets its own page and alarms.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 4
15 yazı görüntüleniyor – 1 ile 15 arası (toplam 37)