Bir Arduino Uno'ya oda doluluğunu tahmin etmeyi öğretmek – kendi kendine öğrenebilir mi yoksa önce verilerimi dışarı mı çıkarmam gerekir?
Yapay zekâ tarafından English dilinden çevrildi ·
90 odalı bir otelde tesis müdürüyüm, programcı değilim ama bir şeyler kurcalıyorum. 12 odada küçük kartlarımız var (Arduino Uno + Wi-Fi için bir ESP-01, SCD40 CO2 sensörü, bir PIR), her 2 dakikada bir CO2, sıcaklık ve hareket verilerini Hermetry’ye gönderiyorlar.Bir satıcı bize “kenarda (edge) çalışan, odaların ne zaman dolu olduğunu öğrenen yapay zeka” diye çok pahalı bir teklif sundu. Ben de şöyle düşündüm: Uno’nun kendisinde küçük bir sinir ağı eğitip kendi kendine öğrenmesini sağlayamaz mıyım? Kat hizmetlileri hangi odaların gerçekten boş olduğunu bilmekten çok memnun olur. Bu çılgınca bir fikir mi? Nereden başlamalıyım?
Facility manager at a 90-room hotel, I’m not a programmer but I’ve been tinkering. We have small boards in 12 rooms (Arduino Uno + an ESP-01 for Wi-Fi, SCD40 CO2 sensor, a PIR) sending CO2, temperature and motion to Hermetry every 2 minutes.
A vendor pitched us “AI on the edge that learns when rooms are occupied” for a lot of money. I thought, could I just train a small neural network on the Uno itself so it learns by itself? Housekeeping would love to know which rooms are really empty. Is this crazy? Where would I even start?
Yapay zekâ tarafından English dilinden çevrildi ·
Uno üzerinde eğitim: çılgınca, evet. 2 KB RAM. Başka bir yerde eğitilmiş küçük bir modeli çalıştırmak: çok mümkün.
Training on an Uno: crazy, yes. 2 KB of RAM. Running a tiny model that was trained somewhere else: very doable.
Yapay zekâ tarafından English dilinden çevrildi ·
Eğitim neden çalıştırmadan bu kadar çok daha kötü? Matematik aynı değil mi?
Why is training so much worse than running it? Isn’t it the same maths?
Yapay zekâ tarafından English dilinden çevrildi ·
Eğitim, her ağırlığın, gradyanının ve çok sayıda örnek verinin aynı anda bellekte tutulmasını ve birçok geçiş yapılmasını gerektirir. Çıkarım ise tek bir geçiştir: çarpma ve toplama, ağırlıklar da flash bellekte durabilir.
Training needs every weight, its gradient and a pile of example data in memory at once, many passes. Inference is one pass, multiply and add, and the weights can sit in flash.
Yapay zekâ tarafından English dilinden çevrildi ·
Yani asıl ilk adım bir veri seti. Hermetry’de zaten haftalarca okuma verin var, sadece etiketlere ihtiyacın var: temizlik ekibinin giriş/çıkış saatleri yeterli olur.
So the real first step is a dataset. You already have weeks of readings in Hermetry, you just need labels: housekeeping’s check-in/check-out times would do.
Yapay zekâ tarafından English dilinden çevrildi ·
Megan haklı. Ben şunu yapardım:1. co2, temperature ve motion değerlerini sayı olarak göndermeye devam edin (motion true/false değil, 0/1 olarak; böylece bir geçmişi olur).2. Ham verileri geçmiş API’si ile çekin, çağrı başına bir gün rahat bir seçenektir:
curl -s -H "Authorization: Bearer $KEY" "https://$HOST/tenant/$TENANT/api/telemetry/series?kind=iot_device&entityId=$ROOM&keys=co2,temperature,motion&from=$FROM&to=$TO&bucket=raw"
Bir anahtar 10.000 nokta döndürürse, son ts + 1 değerinden itibaren tekrar isteyin.3. Bunu bir dizüstü bilgisayarda ön büro dışa aktarımıyla birleştirin; Python’da bir lojistik regresyon ya da 3 girişli, 8 nöronlu bir ağ eğitin. CO2 eğimi + hareket sayısı için bu yeterince fazla.4. Ağırlıkları int8’e nicemleyin, bunları const int8_t w[] PROGMEM dizisi olarak yapıştırın; Uno yalnızca ileri geçişi çalıştırır. Sonucu diğer anahtarların yanında occupied_p (0-100) olarak gönderin.Açıkçası doluluk için, son 20 dakikadaki CO2 artışı ile “son 30 dakikada herhangi bir hareket” kuralı, herhangi bir sinir ağından önce büyük ölçüde işinizi görür. Modelin değer katıp katmadığını anlamak için önce bunu bir temel çizgi olarak başlatın. API tarafı burada: Geçmiş API’si.
Megan’s right. What I’d do:
1. Keep sending co2, temperature and motion as numbers (motion as 0/1, not true/false, so it has a history).
2. Pull the raw data out with the history API, one day per call is comfortable:
curl -s -H "Authorization: Bearer $KEY" "https://$HOST/tenant/$TENANT/api/telemetry/series?kind=iot_device&entityId=$ROOM&keys=co2,temperature,motion&from=$FROM&to=$TO&bucket=raw"
If a key comes back with 10,000 points, ask again from the last ts + 1.
3. Join it with the front desk export on a laptop, train a logistic regression or a 3-input, 8-neuron net in Python. That is plenty for CO2 slope + motion count.
4. Quantise the weights to int8, paste them as a const int8_t w[] PROGMEM array, and the Uno only runs the forward pass. Send the result as occupied_p (0-100) alongside the other keys.
Honestly, for occupancy the CO2 rise over 20 minutes plus “any motion in the last 30 min” gets you most of the way before any neural net. Start with that as a baseline so you know if the model is worth it. API side is here: The history API.
Yapay zekâ tarafından English dilinden çevrildi ·
Bu dışa aktarmayı betikle yapacaksanız API anahtarına Salt okunur ön ayarını verin ve laptopunuzun ağıyla sınırlayın. Python notebook’larında çok fazla tam yetkili anahtar gördüm.
If you script that export, give the API key the Read-only preset and restrict it to your laptop’s network. Seen too many full-admin keys in Python notebooks.
Yapay zekâ tarafından English dilinden çevrildi ·
İki hafta sonra güncelleme: yeğenim Python kısmında yardımcı oldu. Basit kural (CO2 artışı + son 30 dakikada hareket), ön büro kaydına göre %87 oranında doğruydu; küçük model ise %91. Uno üzerinde çalışıyor, 24 ağırlık var. Satıcının çözümünü satın almıyoruz. Evet, Brian’ın dediği gibi bir Salt okunur anahtar oluşturdum, ilk anahtarım yönetici anahtarıydı…
Update after two weeks: my nephew helped with the Python part. The simple rule (CO2 rising + motion in last 30 min) was right 87% of the time against the front desk log, the tiny model 91%. It runs on the Uno, 24 weights. We’re not buying the vendor thing. And yes, I made a Read-only key like Brian said, my first one was an admin key…
- Bu konuyu yanıtlamak için giriş yapmış olmalısınız.
Sohbete katılın
Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

