Cuprins:

IDC2018IOT: Snitcher de ședințe: 6 pași
IDC2018IOT: Snitcher de ședințe: 6 pași

Video: IDC2018IOT: Snitcher de ședințe: 6 pași

Video: IDC2018IOT: Snitcher de ședințe: 6 pași
Video: Intamplari tampite cu politia la scoala 2024, Iulie
Anonim
IDC2018IOT: Snitcher de sală de ședințe
IDC2018IOT: Snitcher de sală de ședințe

PROBLEMA

După cum știm, tendința spațiilor de lucru în comun s-a accelerat în ultimii ani, alături de tehnologia de ultimă generație care definește alegerea spațiului de lucru în comun care se potrivește nevoilor dumneavoastră.

Una dintre principalele caracteristici oferite este sălile de întâlnire comune oferite membrilor spațiului de lucru, care este gestionat de o platformă de calendar (de obicei) simplă.

O problemă apare din nou, deoarece programul oamenilor tinde să fie dinamic.

S-ar putea să rezervați o cameră gândindu-vă că ar putea avea nevoie de ea și nu ar vrea să rateze intervalul de timp.

Chiar dacă cineva nu ar folosi acea perioadă de timp în cele din urmă, nu se va deranja să o notifice și să o anuleze de dragul altora, deoarece, din păcate, aceasta este natura umană.

CUM O REZOLVĂM?

Folosind tehnologia IoT - verificarea sunetului și a mișcării într-o sală de ședință desemnată, verificăm, la fiecare anumit interval de timp, dacă o cameră este rezervată și de fapt ocupată sau nu:

1. Dacă nu este rezervat, nu faceți nimic.

2. Dacă este rezervat, verificați dacă sunt detectate mișcări sau sunete;

Dacă există, nu faceți nimic.

Dacă nu a fost detectat nimic, trimiteți un mesaj de avertizare (prin e-mail) utilizatorului care a rezervat camera care vă întreabă dacă camera este încă în uz. cu excepția cazului în care utilizatorul va declara că încă folosește camera, starea camerei va fi schimbată în „Disponibil”.

* Aici, am integrat proiectul nostru cu Google Calendar pentru a-l generaliza cât mai mult posibil.

Pasul 1: Hardware și protocoale necesare

Hardware și protocoale necesare
Hardware și protocoale necesare

1. Am folosit NOSEMCU astfel încât să putem actualiza lucrurile dinamic folosind conexiunea WIFI.

2. Senzor microfon care va „citi” zgomotul din cameră.

3. Senzor PIR care va verifica dacă există vreo mișcare.

Pentru utilizarea software-ului și a serverului, pe lângă codul din Arduino, am folosit Google Script și Zapier pentru a sprijini sistemul nostru online. Puteți vedea fluxul în imaginea adăugată (și PDF).

Am folosit Zapier pentru a conecta aplicații și a automatiza fluxurile noastre de lucru (cum ar fi IFTTT) și am folosit Google Script pentru a ne ajuta să comunicăm cu Google Calendar. Scriptul pe care l-am scris produce e-mailul creatorului evenimentului, astfel încât să-l putem trimite pe Zapier și verifică dacă utilizatorul a cerut să dețină camera (salvând câteva informații în Foi de calcul Google) înainte de a șterge evenimentul.

Pasul 2: Conectați microfonul și senzorul PIR

Conectați microfonul și senzorul PIR
Conectați microfonul și senzorul PIR
Conectați microfonul și senzorul PIR
Conectați microfonul și senzorul PIR

Am vrut să verificăm valorile medii ale postărilor microfonului către NODEMCU atunci când oamenii vorbesc (în mod clar, în fiecare cameră aveau zgomote de fond diferite). Am făcut câteva teste și am realizat că nivelul mediu de zgomot este camera în care am lucrat este undeva peste 50.

Senzorul PIR oferă doar valori HIGH sau LOW, deci am verificat doar nivelul de sensibilitate care este cel mai precis pentru camera pe care am verificat-o. Acest ghid a fost destul de util.

LEGĂTURILE NOASTRE:

Microfon - ca în imagine Senzorul PIR: GND> GND, OUT> D7, VCC> VN (5V)

Pasul 3: Creați fluxul de lucru în Zapier

Creați fluxul de lucru în Zapier
Creați fluxul de lucru în Zapier
Creați fluxul de lucru în Zapier
Creați fluxul de lucru în Zapier
Creați fluxul de lucru în Zapier
Creați fluxul de lucru în Zapier

Pentru a ști dacă camera este de fapt goală sau încă este în uz (și utilizatorii sunt într-o pauză, de exemplu), am dori să creăm un flux care să o asigure, imediat după ce NodeMCU declanșează un Webhook către Zapier care notifică că camera este goală:

(1) TRIGGER - CATCH HOOKZapier prinde Webhook-ul (care va fi trimis de NODEMCU)

(2) ACTION - GETZapier trimite un alt Webhook pentru a obține datele despre eveniment;> Apelează (rulează) un GoogleScript - GetCurrentEmailEventID (explicație în pasul următor), pentru a obține datele curente ale evenimentului - numele evenimentului, ID-ul evenimentului, adresa de e-mail a utilizatorului.

(3) FILTRU - CONTINUAȚI DOAR DACĂ

Continuați cu pasul următor numai dacă există un eveniment (orice eveniment) care se întâmplă în prezent pe calendar (CAMERA ESTE OCUPATĂ), în caz contrar, se oprește deoarece camera este liberă.

(4) ACȚIUNE - GMAILZapier trimite un e-mail, prin Gmail, utilizatorului care a rezervat camera (a primit aceste informații la pasul 2)

(5) ACȚIUNE - ÎNTÂRZIERE FOR Permiteți utilizatorului să răspundă la e-mail. - Dacă utilizatorul dă clic pe link: apelați (rulați) GoogleScript - ApproveCurrentEvent (Prin urmare, camera este eliminată din lista „Camere de șters” și camera este încă marcată ca ocupată.)

(6) ACȚIUNE - OBȚINERE După 5 minute, Zapier apelează (rulează) GoogleScript - DeleteCurrentEvent- Dacă utilizatorul nu a făcut clic pe link

Verifică dacă ID-ul camerei se află în lista „Camere de șters”

doar elimină evenimentul.

Pasul 4: Scripturi Google

Scripturi Google
Scripturi Google
Scripturi Google
Scripturi Google
Scripturi Google
Scripturi Google

Pe măsură ce am integrat întregul sistem, GoogleScripts a fost alegerea banală a unui IDE, astfel am folosit bibliotecile Google relevante. S-ar schimba în conformitate cu platforma de rezervare a camerei.

(1) GetCurrentEmailEventID

Se execută printr-un apel Webhook.

Utilizarea unui anumit offset pentru a elimina posibila anulare ratată, obținând datele curente ale evenimentului.

(2) ApproveCurrentEvent

Se execută de un clic de utilizator.

În cazul aprobării de către utilizator a faptului că încă camera este în uz, șterge ID-ul evenimentului din „Camere de șters”. Am folosit o foaie Google, orice altă formă de listă ar putea fi relevantă aici.

(3) DeleteCurrentEvent

Se execută printr-un apel Webhook.

Căutați ID-ul evenimentului relevant din listă (foaia Google) și șterge acel eveniment din calendar.

Pasul 5: Conectați fluxul cu codul Arduino

Codul atașat se conectează la senzorii pe care i-am verificat acum câțiva pași la sistemul online (calendarul Google în cazul nostru). Verifică dacă camera este ocupată și apoi dacă nu, trimite o cerere HTTP (un Webhook) care pornește solicitarea de ștergere a evenimentului pe Zapier.

Pasul 6: Revizuire, concluzii și scalare viitoare

Image
Image

Principala provocare cu care a trebuit să ne confruntăm este acoperirea tuturor cazurilor marginale atunci când am decis să eliberăm o sală de ședințe. Apoi a trebuit să creăm o mașină de stare luând în considerare fiecare caz posibil, astfel încât să nu apară o eroare și camera să fie setată ca disponibilă numai atunci când ar trebui.

De exemplu, dacă camera este rezervată pentru un grup care nu este în prezent (adică într-o pauză, de exemplu), dar care încă mai are nevoie, NODEMCU va detecta că camera este liberă> PROBLEMĂ.

Apoi, soluția noastră a fost să trimitem prin e-mail utilizatorului care a rezervat camera (ceea ce nu a fost simplu de dat seama) un mesaj care oferă opțiunea de a păstra încăperea.

Dacă utilizatorul nu a răspuns într-un timp dat (l-am setat la 5 minute, dar poate fi schimbat cu ușurință), ștergem evenimentul din calendar (și eliberăm camera).

În acest fel, în cele din urmă am reușit să gestionăm toate scenariile posibile și să creăm un sistem de lucru.

LIMITĂRILE SISTEMULUI NOSTRU:

1. Senzorii folosiți trebuie să fie foarte exacți și sensibili.

2. Dimensiunea camerei este limitată la raza / raza senzorului.

3. Va trebui să ne bazăm pe capacitatea de răspuns a utilizatorului.

4. Sistemul nostru este construit folosind mai multe platforme (calendar Google, Gmail, Zapier etc.) și va trebui să își folosească serviciul pentru a efectua performanțe.

5. Scalarea acestui serviciu pentru mai multe camere (în locul duplicării întregului sistem) va necesita o manipulare suplimentară cu ID-ul camerei.

6. Sistemul este automat doar și nu există o opțiune manuală pentru anularea rezervării unei camere.

EVOLUȚII VIITOARE:

Cu siguranță am extinde sistemul în două moduri:

1. Abilitatea de a lucra cu orice alte platforme calendaristice (astfel încât orice companie de spații de colaborare să o poată utiliza).

2. Capacitatea de a gestiona mai multe camere, etaje și site-uri.

Credem că acest tip de scară va dura 2-3 luni pentru a generaliza, testa și adăuga mai multe camere (etaje etc.).

În plus, folosind o sumă nelimitată de bani și resurse, vom folosi senzori mai buni cu o gamă mai mare, împreună cu personalizarea acestora în camera desemnată - luând în considerare intervalul, raza, cantitatea de senzori etc. Un pas care ar face ca fiecare sistem să se instaleze mai mult, evident.

Recomandat: