5 dolarlık ESP32 ve sunucusuz veritabanıyla doluluk sensörü yapmak
(matthew.science)- Restoran yoğunluk verisi sağlayan Bluefox sözleşmesi ortadan kalkınca, kampüsteki doluluk eğilimini BLE reklam paketlerinde görünen cihaz sayısıyla doğrudan ölçen bir cihaz yapıldı
- Dizüstü bilgisayar deneylerinde küçük bir alandaki gerçek yoğunluk ile BLE cihaz sayısı hızla birlikte hareket etti; büyük yemekhanede de ders öncesi ve sonrası hareket saatlerindeki eğilim değişimiyle iyi örtüştü
- Raspberry Pi Zero W, Linux Bluetooth, DBus, çapraz derleme ve başsız Wi-Fi yapılandırması nedeniyle dağıtım cihazı olarak kullanımı zorlaştığı için daha basit olan ESP32'ye geçildi
- Düşük maliyetli ESP32-WROOM kartı yaklaşık 250~400 cihaz civarında bellek sorunları nedeniyle kararsızlaştı; ancak Seeed Studio XIAO ESP32C3/S3 uzun süre kararlı çalıştı ve yaklaşık 1000 cihaza kadar algılamaya dayandı
- Son yapılandırmada ESP32, BLE cihaz sayısını tarayıp Cloudflare Functions ve D1'e gönderiyor; görselleştirme ve tahmin için Grafana ve NeuralProphet kullanılıyor, ancak doğruluk kalibrasyonu ile gizlilik doğrulaması hâlâ bekliyor
Ortadan kaybolan restoran yoğunluk verisi
- Üniversitenin ilk yılında yemekhane işletmecisi Sodexo'ydu ve Sodexo, yemekhanedeki kişi sayısını gösteren doluluk sensörleri için Bluefox ile sözleşme yapmıştı
- FOIA talebiyle alınan belgelere göre Bluefox cihazı, Bluetooth reklam paketlerindeki akıllı telefon MAC adreslerini sayarak çalışıyordu
- API çağrıları Grafana'ya bağlanınca yemekhane yoğunluğu gerçek zamanlı grafik olarak görülebiliyor, böylece kalabalık saatlerden kaçınmak mümkün oluyordu
- Daha sonra yemekhane işletmecisi Aramark oldu ve Aramark, Bluefox benzeri doluluk sayımı sözleşmesi yapmadığı için mevcut veri ortadan kayboldu
BLE beacon'larını kişi sayısı için vekil gösterge olarak kullanmak
- Projenin özü, Bluetooth beacon sayısının gerçek kişi sayısı ve kalış süresini ne kadar iyi temsil edebildiğini doğrulamaktı
- Bazı insanlar kulaklık, akıllı saat gibi birden fazla cihaz taşıyor
- Bazıları hiç cihaz taşımıyor ya da telefonunda Bluetooth kapalı olabiliyor
- Kalış süresi tahmininde benzersiz MAC adreslerinin değişiminin (churn) kullanılıp kullanılamayacağı ve Android ile Apple gibi üreticilerin MAC adresi rastgeleleştirmesinin etkisi önemli değişkenlerdi
- Veriyi merkezi sunucuya göndermede en doğal seçenek Wi-Fi idi, ancak her konumda kolayca kullanılabilecek Wi-Fi yoktu
- LoRa da beacon dağılımına bağlı olarak aday olabilirdi, ancak gerçek menzil anten kazancı ve kurulum konumuna büyük ölçüde bağlıydı
- Veri depolamada zaman serisi veritabanı kullanılıp kullanılmayacağı ve uzun vadeli eğilim tahminlerinde homecoming hafta sonu ya da final haftası gibi özel olayların hariç tutulup tutulamayacağı da değerlendirme konusuydu
Dizüstü bilgisayarla yapılan ilk doğrulama
- İlk deney, dizüstü bilgisayarın Bluetooth adaptörüyle
xsaniye tarama yapıp bunu herysaniyede bir tekrarlayan ve sonuçları SQLite veritabanına kaydeden basit bir koddu - Yemekhane, Chick-Fil-A, Starbucks gibi çeşitli yerlerde dizüstüyle beklenerek veri toplandı
- Küçük ve tek bir alan olan Starbucks'ta cihaz sayısı oldukça isabetliydi ve en azından doluluk eğilimini hızla yansıtıyordu
- İnsanlar geldiğinde grafik hızla yükseliyordu
- Yemekhane gibi büyük alanlarda toplam kişi sayısını doğrudan saymak mümkün değildi ve Bluetooth adaptörünün menzili de net değildi; buna rağmen ders çıkışı yemek saatlerine giden artış ile algılanan beacon sayısındaki artış iyi uyuşuyordu
Raspberry Pi Zero W yaklaşımının tıkanma nedeni
- Uzun süreli dağıtım cihazı olarak ilk akla gelen seçenek, küçük, ucuz ve Wi-Fi ile Bluetooth içeren Raspberry Pi Zero W oldu
- Kod Rust ile yeniden yazılarak yeniden başlatma, ağ olmaması ve adaptör kaybı gibi durumların ele alınması hedeflendi
- Linux Bluetooth'u başsız ortamda yönetmek beklenenden çok daha karmaşık çıktı
- DBus binding'leri için çapraz derleme ayarları gerekiyordu
- Cross da sorunu çözmedi
- Çeşitli derleyici bayrakları, Makefile çalışmasının kaybı ve QEMU bridge ayarlarından sonra ikili dosya Pi üzerinde çalıştırılabildi
- Wi-Fi bağlantısı, açılışta gerekli kütüphanelerin kurulması, çalıştırılabilir dosyanın servis olarak kaydedilmesi ve güncellemelerin otomatik alınması uygulandı; ancak gerçek açılıştan sonra sistem düzgün çalışmadı
- Bu yaklaşım, ihtiyaç duyulan tek şey güvenilir Wi-Fi ve Bluetooth olmasına rağmen tüm Linux çekirdeğini ve çok sayıda hareketli parçayı beraberinde getiriyordu
ESP32'ye geçiş
- ESP32, kâğıt üzerinde Wi-Fi, Bluetooth, düşük güç tüketimi, düşük fiyat ve küçük boyutu bir araya getiren bir cihazdı
- Amazon'dan OLED ekranlı rastgele bir ESP32-WROOM-32 satın alındı
- Amaçlardan biri gerçek zamanlı veriyi ekranda göstermekti
- ESP32 için Rust ekosisteminin henüz yeterince olgun olmadığı düşünülerek veri toplama kodu C++ ile yeniden yazıldı
- OLED,
SSD1306Wire display(0x3c, 5, 4);ayarıyla çalıştırıldı - Kampüs BT ekibinden MAC adresi whitelist talep edildi ve veri toplama backend'i olarak Cloudflare Functions ile D1 veritabanı yazıldı
İlk dağıtımda ortaya çıkan bellek sorunu
- Veri toplama cihazı kampüs kütüphanesine kuruldu ve dizüstü bilgisayardan verinin geldiği doğrulandı
- Sonrasında kütüphanedeki herkesin bir anda gitmiş gibi göründüğü tuhaf sonuçlar ortaya çıktı; neden, rastgele alınan ESP32 kartının düşük özellikleriydi
- Cihaz yaklaşık 250 cihaz civarında çöküyordu
- Başta sonuç sayısının 1 baytlık sayı içinde tutulduğu ve yaklaşık 255'te takıldığı düşünüldü
Serial.printile kontrol edilince 249, 265 gibi benzer aralıklarda rastgele çökme görüldü; yani sorun basit bir tamsayı taşması değildi
- Tarama sırasında sonuçların tamamı veri yapısında tutuluyor, sinyal gücü, reklam servisleri, üretici kimliği gibi pek çok veri birikiyor ve küçük RAM doluyordu
- Oysa gerçekten gereken tek değer benzersiz cihaz sayısıydı; tüm tarama sonuçlarını saklayan yapı gereğinden fazlaydı
Elle yazılmış hash set ve sınırları
- Çözüm olarak C++ veri yapısı elle yazılarak küçük bir hash set oluşturuldu
- Her callback'te MAC adresi hash set'e eklenip ardından yerleşik sonuç yapısı temizlenerek bellek boşaltıldı
- Bu yaklaşımın dezavantajı, yerleşik sonuç yapısının yinelenenleri denetlemek için kullandığı veriyi kaybetmesi ve her BLE reklam paketi için callback tetiklemesiydi
addToSetiçinde hash set düzeyinde yinelenen kontrolü yapılıyordu- Ancak yine de yinelenen callback'ler yüzlerce kez oluşuyor, sonuç yapısı sürekli ayrılıp serbest bırakıldığı için heap churn meydana geliyordu
- Buna rağmen en fazla 250 kişi civarında kapasiteye takılmaktansa, 1000'den az öğe içeren bir hash map'i sık sık kontrol etmenin daha iyi olduğuna karar verildi
Daha kararlı ESP32 kartı seçimi
- Güz tatili boyunca 5 günlük uzun test denendi, ancak yaklaşık 400 cihaz civarında yeniden çökme yaşandı
- Sorun yaklaşık 3 saatlik kullanımın ardından ortaya çıktı ve periyodik yeniden başlatma eklense bile her taramada anında 0 cihaz döndürme durumu görüldü
- Birden fazla kart test edildi
- Seeed Studio XIAO ESP32S3/C3
- WaveShare ESP32S3 Zero
- Markasız ESP32-WROOM with OLED
- Orange Pi Zero W
- Raspberry Pi Zero W
- Uzun süre kararlı çalışan tek kart XIAO ESP32C3/S3 oldu ve her ikisi de kabul edilebilir düzeyde çalıştı
- Nihai seçim XIAO ESP32C3 oldu
- RISC-V tabanlı olması beğenildi
- Daha ucuzdu
- Daha iyi bir üretici kartına geçilince SRAM arttı ve elle yazılmış hash map yerine varsayılan sonuç veri yapısını korumak bile çökme sayısını azalttı
- Yaklaşık 1000 cihaz algılamaya kadar yavaşlama belirtisi görülmedi; heap ve callback churn'ünün de azalmış olması muhtemel
Yurt penceresinden görülen hareket düzeni
- Kararlı bir cihaz bulunduktan sonra, dağıtımı yinelemeyi kolaylaştırmak için cihaz yurt odasının pencere kenarına taşındı
- Günlük veride ders değişim saatlerinde zirveler görüldü
- Cihaz yurtta olsa da esasen sadece yurtta kalanları ölçmüyordu
- Eğer yalnızca yurtta kalanlar ölçülseydi sabah çok erken saatlerde tepe yapıp gün içinde azalması beklenirdi
- Pencerenin dışarı bakması nedeniyle yakınlardaki iki akademik binaya gidip gelen öğrenciler ağırlıklı olarak algılanıyordu
- Sabah 7:50 civarındaki zirve, Ewell Hall ve Washington Hall'daki saat 8 derslerinden hemen önceki zamana denk geliyordu
- 8:50, 9:50 ve 10:50 zirveleri sırasıyla saat 9, 10 ve 11 derslerine geçiş zamanlarıyla örtüşüyordu
- Cihaz, çevredeki öğrenci hareketinin eğilimini izlemek için uygun görünüyordu; anten menzili Washington Hall'a yaklaşık 160 ft, Ewell'e ise yaklaşık 100 ft kadar ulaşıyor gibiydi
-
- kattaki yükseklik de algılama menziline yardımcı olmuş görünüyordu
Tahmin ve geriye kalan doğrulama görevleri
- Toplanan veride saatlik, günlük ve haftalık eğilimler bol olduğu için NeuralProphet gibi zaman serisi tahmini araçlarına çok uygundu
- Tahmin özelliği eklendikten sonra şu anda günlük eğilimler iyi tahmin ediliyordu
- Haftalık, aylık ve sezonluk uzun vadeli eğilimlerin yeterli veri toplandığında yakınsaması bekleniyordu
- Hâlâ çözülmemiş pek çok soru var
- BLE beacon sayısı gerçek nüfus sayısını ne kadar iyi temsil ediyor
- Birden fazla cihaz taşıyan kişiler nedeniyle
xbeacon'ın kabaca0.7xkişi gibi bir düzeltme katsayısına bağlanıp bağlanamayacağı - Bilgisayar bilimi binasında cihaz sayısı fazla olduğu için kişi başına beacon oranının yüksek mi olacağı, yoksa Bluetooth kapalı kişiler çok olduğu için düşük mü kalacağı
- Personel binasında, öğrencilerden daha az cihaz taşındığı için oranın daha düşük olup olmayacağı
- Yemekhanede, dersliklerde olduğu gibi dizüstü bilgisayar ve iPad kullanımının daha az olması nedeniyle oranın daha düşük olup olmayacağı
- Doğruluğu artırmak için yöntemler de duruyor
- Zayıf sinyalleri dışlamak için minimum RSSI eşiği belirlemek
- Yalnızca Apple ve yaygın Android üretici kimliklerini sayacak filtreleme
- Apple Watch, AirPods, MacBook gibi cihazların hâlâ sayıya eklenmesi sorunu
- Yalnızca saf beacon sayısını izleyen ve gerçek MAC adreslerini takip etmeyen mevcut yaklaşımda ek gürültü gerekip gerekmediği
- Sadece cihaz sayısıyla tek bir kullanıcıyı tanımlamanın pratikte mümkün olup olmadığı
- Çok kısa olursa yüzlerce cihazın tamamı bulunamıyor, çok uzun olursa çoktan ayrılmış cihazlar sayılıyor; bu yüzden tarama süresinin seçimi
- Belirli süre değişim olmazsa taramayı bitiren dinamik tarama uzunluğu
Olası dağıtım biçimleri
- Gerçek nüfus sayısının kolay elde edilebildiği yerlerde veriyi doğrulama planı var
- Giriş kaydı olan spor salonu
- Girişleri sınırlı yemekhane ya da Starbucks benzeri yerler
- Üniversite komitelerinde kullanım senaryoları ya da akademik araştırma olasılıkları üzerine öğretim üyeleriyle görüşülüyor
- Fiziksel mağazalara doluluk eğilimini ölçmek için satılabilecek bir çözüm olasılığı da değerlendiriliyor
- Tek bir dağıtım biriminin kurulumu nispeten paketlenmiş durumda
- Yapılandırmadan Wi-Fi ayarı
- Portal varsa ağın MAC adresini whitelist'e alması
- Açık ya da şifreli Wi-Fi'ye açılışta bağlanma
- Yapılandırmada machine ID ve site ID değiştirme
- Cihazı merkezi ya da uygun bir konumdaki prize takma
- Backend'de her cihazı okuyan Grafana dashboard'u kurma
- Tahmin edilen eğilimleri ayrı grafikte okuyan Grafana dashboard'u kurma
1 yorum
Hacker News yorumları
Bu teknolojiyle gerçek bir iş (occuspace.io) kurduk ve gündeme getirilen soruların çoğuyla uğraştık.
BLE beacon sayısı, içeride bulunan kişi sayısıyla çok yüksek korelasyon gösteriyor; ancak restoran, derslik ve kütüphane katı gibi farklı alanlarda korelasyon katsayısı büyük ölçüde değiştiği için daha karmaşık özellikleri de birlikte kullanmak daha iyi.
BLE beacon’ın görünür olduğu süreye bakarak kalış süresini tahmin etmenin doğru olmadığını düşünüyorum; çünkü üreticiye bağlı olarak Bluetooth MAC adresi 8-20 dakikada bir rastgeleleştiriliyor.
Zayıf RSSI değerlerini hariç tutup yalnızca yakındaki cihazları sayma yöntemi iyi bir fikir, ancak eşik değer alan türüne ve sensörün kurulduğu konuma göre değişiyor.
Asıl gereksinim “yemekhane kalabalığından kaçınmak” idiyse, kabaca yoğun/düşük bilgisini bilmek yeterli olabilir.
İş tarafında müşterilerin yüksek doğruluk bekleyip beklemediğini, herkesin mi yoksa yalnızca bir kısmının mı böyle düşündüğünü de merak ediyorum.
MAC adresi rastgeleleştirilse bile cihaz türünü tespit edip yalnızca telefonları saymanın, kulaklıkları vb. hariç tutmanın bir yolu olabilir mi diye düşünüyorum.
Sinyal daha uzağa yayılacağı için zor olacak gibi; tenis kortu doluluk takibine ihtiyaç duyan bir startup üzerinde çalışıyorum.
Dış mekânın köşelerine Bluetooth cihazları yerleştirip sinyal güçlerini eşik değer olarak kullanmak da mümkün olabilir.
Wi-Fi, Wi-Fi MAC ve video bilgilerini izleyip birbirine bağlarsanız daha fazlasını yapmak mümkün olabilir.
Olası rakiplerden biri olarak bilmekte fayda var.
STEM üniversite binalarında kişi başına 3’ten fazla Bluetooth cihazı olabilir; başka yerlerde ise bu sayı 1’in altında olabilir.
Harika bir yazı.
Seeed Studio XIAO ESP32S3/C3, WaveShare ESP32S3 Zero, Unbranded ESP32-WROOM with OLED, Orange Pi Zero W ve Raspberry Pi Zero W’nin hepsini test ettikten sonra, uzun vadede, şu an yaklaşık bir ay boyunca stabil çalışanların yalnızca XIAO ESP32C3/S3 olduğunu söylemişti; bunun güç kaynağı sorunu olabileceğinden şüpheleniyorum.
ESP32 ailesi iletim sırasında voltaj dalgalanmalarına hassas olabildiğinden, güç hattına büyük bir kondansatör eklemeyi şiddetle öneririm.
Hem RPi hem de ESP; güç adaptörü, kablo ve kablo uzunluğu konusunda nazlı olabiliyor; RPi’nin SD kartı da ani güç kesintilerinde kolayca bozulabiliyor.
Yine de hepsinin bir aydan uzun dayanabilmesi gerekir; benim Pi ve ESP’lerim aylarca çalıştı.
Diğer ESP32’lere veya Pi’ye daha büyük bir kondansatör takıldığında sonuçların ne olacağını merak ediyorum.
ESP32 çok yaygın kullanılıyor; bu yüzden ilk aldığım isimsiz üretici ESP32’nin uzun süre dayanmamasının sebep olması muhtemel.
Düzgün bir üreticinin ürününe geçince sorun çözüldü ve ESP32 iyi çalışıyor.
Raspberry Pi ise gerçekten neredeyse hiç çalışmadı; çünkü yalnızca Bluetooth taraması ve HTTP çağrısı yapması gereken işi gereğinden fazla karmaşık hale getirip çok fazla şeyi yönetmeye çalışıyordum.
Prizden USB-C ile doğrudan 5V 1A verdiğim için güç sorunu olduğunu sanmıyorum; ancak Xiao ESP32-S3’te de aralıklı sorunlar vardı ve hatırladığım kadarıyla XTensa çekirdeği RISC-V tabanlı ESP32-C3’ten daha fazla güç tüketiyor, bu yüzden kontrol etmekte fayda var.
Ara sıra ESPHome ile güncelliyorum ama belirgin bir sorun olmadı.
Bazıları birden çok işi birlikte yapıyor; örneğin biri ev ofiste Bluetooth proxy’si olarak çalışırken Skadis duvar panosu boyunca kurulu ışık şeridini de kontrol ediyor.
Amazon’daki “AZDelivery” adlı şirketten aldığım rastgele markalı ürünleri kullanıyorum ve özel bir işlem yapmadım.
3D baskı kasalara koyup, genellikle 30 cm’den kısa kablolarla en az 5V/1A adaptörlere bağlı tutuyorum.
Yalnızca
lbu commit -dçalıştırdığınızda diske kaydediyor; varsayılan olarak bir tür tempfs üzerinden önyükleme yapıyor.Bu, bir üniversite öğrencisinin üniversitede yaptığı bir proje ve bir ölçüde insan takibi içerdiği için, eğer araştırmaysa hangi insan denek araştırması prosedürlerinin gerektiğini bir profesöre sormak için iyi bir fırsat.
Üniversitenin IRB’sine sormaktansa profesöre sormak daha kolay olabilir.
IRB, yetki alanına girmediğini söyleyip konuşmayı reddedebilir ya da daha önce konuşmadığınız için temkinli yaklaşabilir.
Kampüs IT’nin gizlilik ve güvenlik politikaları da geçerli olabilir.
Sıradan web siteleri, uygulamalar ve IoT cihazları insanları çok daha ağır biçimde ihlal ediyor olsa da üniversitelerin bazen dış dünyadan daha iyi olma hedefi de olabiliyor.
İyi gitmeyebilir diye metne koymadım.
Beacon’lar yayın yapıyor ve gittiğimiz neredeyse her yerde rızamız olmadan toplanıyor olmaları muhtemel.
Evim bir kavşağın yanında olduğu için çevrede sık sık çok sayıda Bluetooth cihazı birikiyor; sırf eğlencesine bir BLE izleyici kurup ne toplayabileceğime ve veriden ne öğrenebileceğime bakmayı bir ara düşünmüştüm.
Örneğin evdeki hava kalitesinin kötüleşmesi ile o bölgeye Bluetooth cihazlarının gelmesi arasında bir korelasyon olduğundan eminim.
“Böyle bir nerd snipe’ta ivmeyi kaybetmemek ölümcül derecede önemli” cümlesi beni güldürdü.
Benim nerd beynim de birkaç kez para harcamam için beni tam bu mantıkla ikna etti.
Proje yapmak isteme hissinin daha güçlü olduğu dönemler kesinlikle var; özellikle kışın daha çok elektronik projesi yapıyor ve daha çok oyun oynuyorum.
Benim oyun “sezonum” da geçen hafta yeniden başladı.
“Bugün ne yapmak istiyorum?”dan “Bu sezon ne yapacak havadayım ve neye zamanım var?”a dramatik geçişte yaşlanmanın ve çocuk sahibi olmanın etkisi büyük; ama böyle projeleri yapma isteği ve zamanı o kadar seyrek geliyor ki ivmeyi kaybederseniz ya 1 yıl sonra geri dönersiniz ya da bir daha hiç dönmeyebilirsiniz.
En az 10 yıl önce başladığım bir elektronik projem var; epey para harcadım ve bir gün bitireceğim diye hâlâ inat ettiğim için aile içinde kötü şöhretli bir projeye dönüştü.
Çalar saatim bir ESP32, epey büyük bir LED dizisi, buzzer ve PIR sensöründen oluşuyor
Saati göstermiyor; buzzer ve yanıp sönmeyle uyarıyor, odayı yavaşça aydınlatıyor ya da geceleri tüm ışıklar kapandıktan belirli bir süre sonra yavaşça karartıyor
Sonradan keşfettiğim ek bir avantaj da, AP benimle ESP arasında olmasa bile RF’yi yeterince yansıtmam sayesinde, yalnızca RSSI logları ile yatakta olduğum zamanın yanı sıra geceleri pozisyon değiştirdiğim anları bile anlayabilmem
https://imgur.com/a/VixOlu5
Uyarının aksine müstehcen içerik yok
Ortadaki yeşil RSSI, alttaki sarı PIR sensörü, üstteki ise Mi Band 3 verileriyle yatakta olduğum zamana ilişkin notların karışımı
Uyumadan önce ve kalkmadan önce uzun süre haber okuduğum da doğru
ESP32 projelerini nasıl ürün gibi toparladıklarını merak ediyorum
Seri üretimden bahsetmiyorum; kabloların her yerden çıktığı bir kart yerine bağımsız bir cihaz yapmak istemekten söz ediyorum
Birçok sayfada sadece çıplak kart gösteriliyor ama gerçek hayatta bunu paketlemek gerekiyor
Benim gibi yazılım tarafındaki biri, kendi başına bir şeyleri kurcalamak yerine biraz daha fazla para verip düzgünce toparlanmış bir formu tercih etmeye daha yatkın olabilir
3D yazıcın varsa 3D baskı yapabilirsin
Akrilik tarafındaysan lazer kesiciyle şekli kesip birkaç delik açınca kutu olur
Hiçbir şeyin yoksa ve sadece en temel kutuyu istiyorsan, 12 tanesi yaklaşık 25 dolar olan Altoids Tin kullanabilirsin; içinde işe yaramaz naneler var, onları atıp projeyi içine koyarsın
Altoids kutusundan biraz daha iyisini istiyorsan Hammond Enclosure alabilirsin
(https://www.hammfg.com/electronics/small-case)
Ben olsam elektrik bandıyla sarıp üstüne koli bandı gibi bir şey sarar, sonra da keçeli kalemle boyayabilirdim
Genelde kartı vidalayarak sabitleyebileceğin önceden delinmiş birkaç flanş bulunur; giriş/çıkış için dış delikleri ise ihtiyaca göre kendin delersin
Bazı üreticiler aşağıdaki gibi; geliştirme kartını veya başka parçaları zaten alıyorsan kargo ücretinden tasarruf etmek için adafruit ya da digikey’de de genellikle bulabilirsin
https://www.hammfg.com/
https://www.budind.com/
http://takachi-enclosure.com/
https://www.adafruit.com/product/903
Gördüğün projelerin çoğu ürünleştirilmiyor
Bunlar hacker’ların tek seferlik projeleri; başkaları faydalı bulursa güzel ama hedef bu olmadığı için paketlemeye gerek olmuyor, bazen de sadece bir kutuya tıkıştırılıyor
Daha güzel görünen bir şey istiyorsan birine kasa tasarımı yaptırman gerekir
O kişi kendin de olabilirsin
ESP32 kendi ürünlerine koymayı kolaylaştıracak şekilde tasarlandığından süreç, devre kartı ve kasanın birbirine uyacak şekilde tasarlanması ve ESP32 çiplerinin toplu alınıp karta monte edilmesi şeklinde ilerler
Prototipleme için aldığın kartlar resmî olarak yalnızca referans kartlarıdır; nihai sevkiyat için beklenen şey değildir ama pratikte kartı olduğu gibi sevk etmek de yaygındır
Çünkü küçük ve ucuzdur, zor kart tasarımını da zaten birileri yapmıştır
Ürün yeterince standartsa bu adımı atlayabilirsin
Sonra yerel üreticilerle ve daha büyük pazarlardaki üreticilerle iletişime geçip numune alır, düzgün çalışıp çalışmadığını kontrol edersin
Beğenirsen küçük adetlerle sipariş verirsin
Üreticinin %20 hatalı ürün göndermemesi için kalite güvence süreci tasarlayacak ya da yardımcı olacak bir uzman bulmak iyi olur
Ürünü fiziksel mağazalara koyar veya bir web sitesi yapıp Amazon gibi portallarda satarsın
Müşterilerle konuşur, geri bildirimlerini dinler ve tüm adımları azar azar iyileştirirsin
Kulağa göz korkutucu geliyor ama küçük bir akıllı ev startup’ında çalışırken Shenzhen’de, kurucuların hayal ettikleri ürünü hayata geçirmesine yardımcı olacak bütün bir endüstrinin hazır olduğunu ve her aşamada yardım edecek kişileri sözleşmeyle tutabileceğini öğrendim
Bizim deneyimimize göre Çin tarafındaki hizmetler Avrupa’daki tekliflerden çok daha iyi, ucuz ve hızlıydı
Paket servis kabının geri kalanı enclosure oluyor
Kabloların girip çıkacağı delikleri kaba açıyorum
Biraz şık olsun istediğimde Tupperware kap kullanıyorum
Veriyi bellekte tutma meselesini tamamen takip edemedim ve sanırım şimdi çözülmüş gibi, ancak benzersiz beacon ID sayısını tahmin etmek için kardinalite tahmin algoritması kullanılırsa sabit alanla mümkün olabilir gibi görünüyor
https://en.wikipedia.org/wiki/Count-distinct_problem
Yakın zamanda bir futbol maçına götürüp hızlıca erişebileceğim en büyük kalabalıkla stres testi yapmayı düşünüyordum
Binlercesini sorunsuz tarayabiliyorsa oldukça sağlam saymayı planlıyorum
Yine de sabit boyutlu yaklaşık veri yapılarını araştırmak gerçekten ilginç olur; mutlaka bakacağım
Bu projede en sevdiğim şeylerden biri, en kolay çözümü yapma baskısı olmadan daha derin ve ilginç bilgisayar bilimi kavramlarına dalabilmek
ASAP teslim edilecek bir çözüm geliştirmiyorum; kendi kaşıntımı kaşıyorum
“Linux Bluetooth’u headless şekilde kullanmak inanılmaz acı verici. DBus binding’leri cross-compile büyüsü gerektiriyordu ve Cross bile bunu çözemedi” kısmı benim deneyimimle de aynıydı
Ben başka bir işle uğraştığım için sonunda iki cihazı aynı Wi‑Fi ağına koyup pi.local’ı tarama yöntemine karar verdim
Yine de kütüphane yoksa derlemede reddetmeyip çalışma anında çöken diğer crate’lerin nasıl davrandığını merak ediyorum
Yazar bunu gömülü olarak yapmaya çalışırken çok daha düşük seviyeli arayüzlerle uğraşmak zorunda kaldığı için epey zorlanmış gibi görünüyor
Yüksek seviyeli dillerde bu uzun zaman önce çözülmüş bir problem
İzleyici sonunda bilgisayarın yanındaki kapıya konulduysa, Python çalıştıran RPi’yi aynen kullanmak da yeterli olurdu
https://github.com/home-assistant/core/blob/dev/homeassistan...
https://www.home-assistant.io/integrations/bluetooth_tracker...
Bunun BLE için olduğu açıkça belirtilmeliydi
İlk başta kalp atışı, ısı, giriş-çıkış ya da daha fiziksel bir şeye dayalı olduğunu düşündüm
Ayrıca ESP32’nin alıcı hassasiyeti yaklaşık -94 dBm ile oldukça kötü sayılır; çoğu cihaz -100, -102, hatta -104 dBm’e kadar iniyor
Bu fark oldukça büyük
ESPresence ilginç bir proje ve ESP32-C3 üzerinde de çalışıyor
Daha çok hangi odada olduğunu tespit etmeye yönelik tasarlanmış