İçindekiler:

IDC2018IOT: Toplantı Odası Snitcher: 6 Adım
IDC2018IOT: Toplantı Odası Snitcher: 6 Adım

Video: IDC2018IOT: Toplantı Odası Snitcher: 6 Adım

Video: IDC2018IOT: Toplantı Odası Snitcher: 6 Adım
Video: Al Capone'un Mirasını Tanıtıyoruz | Suçun, Gücün ve Kefaretin Günlükleri! 2024, Temmuz
Anonim
IDC2018IOT: Toplantı Odası Snitcher
IDC2018IOT: Toplantı Odası Snitcher

SORUN

Bildiğimiz gibi, ortak çalışma alanları trendi, ihtiyaçlarınıza uyan özel ortak çalışma alanı seçimini tanımlayan son teknoloji ile birlikte son birkaç yıldır hızlanıyor.

Sunulan ana özelliklerden biri, (genellikle) basit bir takvim platformu tarafından yönetilen ortak çalışma alanı üyelerine sunulan ortak toplantı odalarıdır.

İnsanların programı dinamik olma eğiliminde olduğu için bir sorun yeniden ortaya çıkar.

İhtiyacı olabileceğini ve zaman dilimini kaçırmak istemeyeceğini düşünerek bir oda ayırtabilir.

Kişi bu zaman aralığını eninde sonunda kullanmasa bile, başkaları için bilgilendirme ve iptal etme zahmetine girmez, çünkü ne yazık ki bu insan doğasıdır.

BUNU NASIL ÇÖZERİZ?

IoT teknolojisini kullanarak - belirlenmiş bir toplantı odasındaki sesi ve hareketi kontrol ederek, belirli bir zaman aralığında bir odanın rezerve edilip edilmediğini ve gerçekten dolu olup olmadığını kontrol ediyoruz:

1. Rezervasyon yapılmadıysa hiçbir şey yapmayın.

2. Kayıtlıysa, herhangi bir hareket veya ses algılanıp algılanmadığını kontrol edin;

Varsa, hiçbir şey yapmayın.

Hiçbir şey algılanmadıysa, odayı rezerve eden kullanıcıya, odanın hala kullanımda olup olmadığını soran bir uyarı mesajı (e-posta yoluyla) gönderin. kullanıcı hala odayı kullandığını beyan etmedikçe, oda durumu “Müsait” olarak değiştirilecektir.

* Burada projemizi olabildiğince genelleştirmek için Google Takvim ile entegre ettik.

1. Adım: Gerekli Donanım ve Protokoller

Gerekli Donanım ve Protokoller
Gerekli Donanım ve Protokoller

1. NOSEMCU'yu WIFI bağlantısını kullanarak dinamik olarak güncelleyebilmek için kullandık.

2. Odadaki gürültüyü "okuyacak" mikrofon sensörü.

3. Herhangi bir hareket olup olmadığını kontrol edecek PIR sensörü.

Yazılım ve sunucu kullanımı için Arduino'daki kodun yanı sıra sistemimizi online olarak desteklemek için Google Script ve Zapier kullandık. Akışı eklenen resimde (ve PDF'de) görebilirsiniz.

Uygulamaları bağlamak ve iş akışlarımızı (IFTTT gibi) otomatikleştirmek için Zapier'i kullandık ve Google Takvim ile iletişim kurmamıza yardımcı olması için Google Script'i kullandık. Yazdığımız komut dosyası, etkinlik oluşturucunun e-postasını oluşturuyor, böylece Zapier'i gönderip gönderebilelim ve kullanıcının etkinliği silmeden önce odayı tutmak isteyip istemediğini (Google E-Tablolar'da bazı bilgileri kaydederek) kontrol ettik.

Adım 2: Mikrofonu ve PIR Sensörünü Bağlayın

Mikrofonu ve PIR Sensörünü Bağlayın
Mikrofonu ve PIR Sensörünü Bağlayın
Mikrofonu ve PIR Sensörünü Bağlayın
Mikrofonu ve PIR Sensörünü Bağlayın

İnsanlar konuşurken mikrofonun NODEMCU'ya gönderdiği ortalama değerleri kontrol etmek istedik (açıkçası her odada farklı arka plan sesleri vardı). Bazı testler yaptık ve çalıştığımız odanın ortalama gürültü seviyesinin 50'nin üzerinde olduğunu fark ettik.

PIR sensörü yalnızca YÜKSEK veya DÜŞÜK değerler verir, bu nedenle yalnızca kontrol ettiğimiz oda için en doğru olan hassasiyet seviyesini kontrol ettik. Bu rehber oldukça yardımcı oldu.

BAĞLANTILARIMIZ:

Mikrofon - resimdeki gibiPIR sensörü: GND > GND, OUT > D7, VCC > VN (5V)

Adım 3: İş Akışını Zapier'de Oluşturun

İş Akışını Zapier'de Oluşturun
İş Akışını Zapier'de Oluşturun
İş Akışını Zapier'de Oluşturun
İş Akışını Zapier'de Oluşturun
İş Akışını Zapier'de Oluşturun
İş Akışını Zapier'de Oluşturun

Odanın gerçekten boş mu yoksa hala kullanımda mı (ve örneğin kullanıcılar bir molada) olup olmadığını bilmek için, NodeMCU'nun Zapier'e bir Web kancasını ateşledikten hemen sonra, bunu sağlayan bir akış oluşturmak istiyoruz. oda boş:

(1) TRIGGER - CATCH HOOKZapier Web kancasını yakalar (NODEMCU tarafından gönderilecek)

(2) EYLEM - GETZapier, olay verilerini almak için başka bir Web kancası gönderir;> Geçerli olay verilerini - olay adı, olay kimliği, kullanıcı e-postasını almak için bir GoogleScript - GetCurrentEmailEventID (aşağıdaki adımdaki açıklama) çağırır (çalışır).

(3) FİLTRE - YALNIZCA DEVAM EDERSE

Bir sonraki adıma yalnızca takvimde o anda gerçekleşen bir etkinlik (herhangi bir etkinlik) varsa devam edin (ODA MEŞGUL), aksi takdirde oda boş olduğu için durur.

(4) EYLEM - GMAILZapier, odayı rezerve eden kullanıcıya Gmail aracılığıyla bir e-posta gönderir (bu bilgiyi 2. adımda almıştır).

(5) EYLEM - GECİKTİRME Kullanıcıya e-postayı yanıtlaması için zaman tanıyın.- Kullanıcı bağlantıyı tıklarsa: GoogleScript'i çağırın (çalıştırın) - ApproveCurrentEvent(Bu nedenle oda, 'Silinecek odalar' listesinden kaldırılır ve oda hala dolu olarak işaretlenir.)

(6) EYLEM - GET 5 dakika sonra, Zapier GoogleScript'i çağırır (çalışır) - DeleteCurrentEvent- Kullanıcı bağlantıyı tıklamadıysa

Oda kimliğinin 'Silinecek odalar' listesinde olup olmadığını kontrol eder

sadece olayı kaldırır.

4. Adım: Google Komut Dosyaları

Google Komut Dosyaları
Google Komut Dosyaları
Google Komut Dosyaları
Google Komut Dosyaları
Google Komut Dosyaları
Google Komut Dosyaları

Tüm sistemi entegre ettiğimiz için, GoogleScripts bir IDE'nin önemsiz seçimiydi, Bu nedenle ilgili Google Kitaplıklarını kullandık. Oda Rezervasyon Platformuna göre değişecektir.

(1) GetCurrentEmailEventID

Bir Web kancası çağrısı ile çalıştırılır.

Olası yanlış iptali ortadan kaldırmak için belirli bir ofset kullanmak, mevcut olay verilerini almak.

(2) Geçerli Olayı Onayla

Bir kullanıcı tıklamasıyla çalışır.

Bir kullanıcının odanın hala kullanımda olduğunu onaylaması durumunda, etkinlik kimliğini 'Silinecek Odalar'dan siler. Bir Google sayfası kullandık, başka herhangi bir liste biçimi burada alakalı olabilir.

(3) Geçerli Olayı Sil

Bir Web kancası çağrısı ile çalıştırılır.

Listede (Google sayfası) ilgili olay kimliğini arar ve bu olayı takvimden siler.

Adım 5: Akışı Arduino Koduyla Bağlayın

Ekli kod, birkaç adım önce kontrol ettiğimiz sensörlere çevrimiçi sisteme bağlanır (bizim durumumuzda Google takvimi). Odanın meşgul olup olmadığını kontrol eder ve sonra değilse, Zapier'de silme olayı isteğini başlatan bir HTTP isteği (bir Web kancası) gönderir.

Adım 6: Gözden Geçirme, Sonuçlar ve Gelecek Ölçeklendirme

Image
Image

Başa çıkmamız gereken asıl zorluk, bir toplantı odasını boşaltmaya karar verirken tüm uç vakaları ele almaktı. Daha sonra her olası durumu göz önünde bulundurarak bir durum makinesi oluşturmamız gerekiyordu, öyle ki bir hata oluşmayacak ve oda yalnızca gerektiği zaman kullanılabilir olacak şekilde ayarlanacak.

Örneğin, oda şu anda orada olmayan (örneğin molada olan) bir grup için rezerve edilmişse, ancak yine de buna ihtiyacı varsa, NODEMCU odanın boş olduğunu algılayacaktır > SORUN.

Ardından, çözümümüz, odayı rezerve eden kullanıcıya (ki bunu anlamak kolay değildi) odayı elinde tutma seçeneği sunan bir mesaj e-postası göndermek oldu.

Kullanıcı belirli bir süre içinde cevap vermemişse (5 dakika olarak ayarladık, ancak kolayca değiştirilebilir), etkinliği takvimden sileriz (ve odayı boşaltırız).

Bu sayede olası tüm senaryoları ele almayı ve çalışan bir sistem oluşturmayı başardık.

SİSTEM SINIRLAMALARIMIZ:

1. Kullanılan sensörler çok hassas ve hassas olmalıdır.

2. Oda boyutu, sensörün yarıçapı/aralığı ile sınırlıdır.

3. Kullanıcı duyarlılığına güvenmek zorunda kalacağız.

4. Sistemimiz çeşitli platformlar (Google takvimi, Gmail, Zapier vb.) kullanılarak oluşturulmuştur ve gerçekleştirmek için hizmetlerini kullanmak zorunda kalacaktır.

5. Bu hizmeti birden fazla oda için ölçeklendirmek (tüm sistemi çoğaltmak yerine), oda kimliğiyle ek bir işlem gerektirecektir.

6. Sistem sadece otomatiktir ve oda rezervasyonunu manuel olarak iptal etme seçeneği yoktur.

GELECEK GELİŞMELER:

Sistemi kesinlikle iki şekilde büyütürüz:

1. Diğer takvim platformlarıyla çalışabilme (böylece herhangi bir ortak çalışma alanı şirketi bunu kullanabilir).

2. Birden fazla oda, kat ve siteyi idare edebilme.

Bu tür bir ölçeğin genelleştirilmesi, test edilmesi ve birden fazla oda (kat vb.) özelliğinin eklenmesi 2-3 ayı bulacaktır.

Ek olarak, sınırsız miktarda para ve kaynak kullanarak, daha geniş bir menzile sahip daha iyi sensörler kullanacağız ve bunları belirlenen odaya göre özelleştireceğiz - menzil, yarıçap, sensör sayısı vb. açıkça.

Önerilen: