Sadržaj:
- Korak 1: Dokaz koncepta i izrada prototipa
- Korak 2: Materijali i alati
- Korak 3: Prednja ploča - LCD ekran
- Korak 4: Prednja ploča - LED diode statusa
- Korak 5: Prednja ploča - dugmad
- Korak 6: Konektor za napajanje
- Korak 7: Sve spojite
- Korak 8: Slack konfiguracija
- Korak 9: Implementacija softvera
- Korak 10: Upute za upotrebu
- Korak 11: Otpuštanje
- Korak 12: Česta pitanja
Video: Sistem za jednostavan status i rezervaciju sa slack integracijom: 12 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
U firmi u kojoj radim postoji sto za udaranje. Kompanija zauzima mnogo spratova, a nekima od zaposlenih je potrebno do 3 minute da dođu do stola i… shvate da je stol već zauzet.
Stoga je nastala ideja o izgradnji svojevrsnog jednostavnog statusa emitirajućeg i rezervacijskog sistema koji funkcionira u stvarnom vremenu.
Kompanija koristi Slack komunikacijski alat gdje svaki zaposlenik ima račun. Imamo čak i #kicker kanal samo za rasprave o … kicker -u. Kanal se može koristiti kao neka vrsta "ulazne tačke" za rezervacije i biti informiran o statusu trenutnog stola.
Kao i obično, postoji mnogo koncepata kako se nositi s takvim sistemom. No općenito se u svima njima pojavilo jedno osnovno pravilo: ono mora biti jednostavno za upotrebu bez ikakvih pretjeranih koraka koje treba izvesti pri radu sa sistemom.
Uređaj i usluga nisu zalijepljeni za početnu tablicu i mogu se koristiti za bilo koji "zajednički resurs" (poput ping-pong stola, konzole itd.) Kojem je potrebna neka vrsta rješenja za proširenje statusa i rezervacije.
Dakle, počnimo…
Korak 1: Dokaz koncepta i izrada prototipa
Smirena ideja bila je izgraditi uređaj koji će ležati pored stola za kicker prema sljedećim zahtjevima:
-
neki pokazatelji o trenutnom statusu stola - ako stojite pored njega, trebali biste znati da je besplatan ili rezerviran i da će netko doći igrati za 3 minute. Semafori se savršeno uklapaju u ideju:
- zeleno svjetlo - besplatno igranje,
- žuto svjetlo - rezervirano,
- crveno svjetlo - zauzeto.
-
dugme (i) Možete kliknuti prije i poslije utakmice kako bi svi ostali bili informirani o statusu trenutnog stola. Umjesto 1 prekidača, odlučio sam upotrijebiti 2 odvojena dugmeta:
- crveno dugme - zauzmite sto, započnite igru (nakon rezervacije ili ad hoc).
- zeleno dugme - tablica za otpuštanje.
- neki ekran sa detaljnijim informacijama o tome "šta se dešava" - vremensko ograničenje rezervacije, status ponovljenog stola, istek vremena za reprodukciju itd …
Pod rezervacijom mislim samo na rezervaciju za naredne 3 minute. Sistem nije dizajniran tako da korisnik može rezervirati stol u točno određeno vrijeme (npr. 14:00). Ne funkcionira poput rezervacije, npr. u restoranima, ali samo za nadolazeće minute.
Zbog nedostatka LAN veze, jedina opcija je korištenje WLAN -a - to je ipak najbolja opcija. Mozak sistema mora koristiti Slack API za slanje i primanje naredbi sa Slack kanala. Prvo sam pokušao koristiti NodeMCU. Uspio sam primati i primati poruke na i sa Slacka, ali zbog korištenja HTTPS -a i Slackove veličine poruke dobrodošlice (~ 300 kB), NodeMCU je gubio vezu i/ili dobio neki čudan izuzetak koji nisam mogao riješiti kopajući po internetu.
Stoga sam odlučio koristiti nešto moćnije: Raspberry Pi 3 (Zero W s WiFi -om tada još nije bio objavljen). Imajući RPi, mogao sam prebaciti jezik implementacije sa C na Javu jer mi je to bilo prikladnije - pa je to bila prednost. Danas možete koristiti nešto moćnije od NodeMCU -a i manje moćno od RPi -ja. Malina Zero možda?
Nakon izgradnje prvog prototipa na ploči s ludim ožičenjima, mnogo skica i prototipova, sistem je izgledao kao da može funkcionirati.
Imajući sve ove ideje i radni PoC, počeo sam planirati različite konfiguracije postavljanja gornjih stavki na prednjoj ploči tako da će one biti najinformativnije i najprikladnije za upotrebu. Možete provjeriti neke druge prijedloge, možda vam neki više odgovaraju. Posljednji sam odabrao.
Korak 2: Materijali i alati
Materijali koje sam koristio:
- Box
- Raspberry Pi, microSD kartica, mikro USB napajanje
- Zeleni i crveni arkadni tasteri
- 16x2 LCD ekran
- LED diode - koristio sam RGB, ali možete koristiti odgovarajuću boju
- Muški na ženski i ženski na ženski spojni kabel
- Mikro USB interfejs
- Mini ploča samo za povezivanje nekih žica
- Kratki mikro USB kabel radi kao kratkospojnik u kutiji za napajanje RPi
Alati koje sam koristio:
- Oštri nož (npr. Pomoćni nož za rezanje tepiha)
- Rotacijski alat
- Pištolj za vruće ljepilo
- Lemna stanica
- Klešta, dijagonalna kliješta/bočni rezači
- Šrafciger
- Datoteka
- Ja
Alati koji vam vjerovatno trebaju:
Sve gore navedeno, ali umjesto "Ja" trebalo bi biti: "Ti":)
Korak 3: Prednja ploča - LCD ekran
Rupa za LCD ekran je bila jasna. Samo pravokutnik koji pristaje mom LCD ekranu. Nakon što sam ga pokušao rezati oštrim nožem, shvatio sam da je plastika kutije prilično tvrda. Zato sam upotrijebio alat za bušenje za rezanje prozora i poliranje rubova.
Korak 4: Prednja ploča - LED diode statusa
LED rupe su takođe jednostavne. Uzeo sam veliku bušilicu za drvo, a zatim sam polirao rubove alatom za bušenje. Velike LED diode savršeno su pričvršćene. Još nisam lemio otpornike na LED diode - ostavio sam ih za proces sastavljanja.
Korak 5: Prednja ploča - dugmad
Najveći problem sa ova dva velika dugmeta bilo je njihovo ravnomjerno postavljanje s odgovarajućim razmakom. Rupe sam izrezao samo alatom za bušenje jer sam mogao povećavati promjer korak po korak tako da se gumbi čvrsto priliježu.
Korak 6: Konektor za napajanje
Mala rupa za napajanje mikro USB -a bila je vrlo osjetljiv posao. Htio sam da rupa bude što je moguće prikladnija pa sam ovdje proveo dosta vremena za poliranje. Ali bio sam zadovoljan konačnim rezultatom.
Zatim sam presjekao kratki mini USB kabel koji je stavljen unutar kutije. S jedne strane je priključen na RPi, a s druge strane svi su kabeli lemljeni na mikro USB sučelje prema USB pinout -ovima.
Zatim sam vruće zalijepio malu PCB izravno na kutiju (može se vidjeti na fotografiji u koraku montaže).
Korak 7: Sve spojite
Prvo sam lemio odgovarajuće otpornike LED diodama prema njihovoj boji (naponu) za 3,3 V volta. Koristio sam 100Ω za crvenu boju, dva otpornika 82 i 100 za žutu (zeleni i crveni čvor) i 100Ω za zelenu. Za LED kalkulator možete koristiti jedan od mrežnih otpornika. No, molimo vas da sami istražite svjetlinu i tačan ton boje koji želite postići.
Noge žute LED diode su lemljene zajedno tako da se sama LED dioda može kontrolirati samo jednim pinom na RPi.
Prema ovom dijagramu pinout:
LED čvorovi su spojeni:
- Zelena LED dioda - GPIO1 na Rpi
- Žuta LED (obje noge) na GPIO2 na RPi
- Crvena LED na GPIO0 na RPi
Povezao sam LCD pomoću I2C pinova na RPi pinove
- LCD SDA do GPIO8 na RPi
- LCD SCL do GPIO9 na RPi
- LCD PWR do 5V na RPi
- LCD GND u GND na RPi
LCD je vruće zalijepljen na kutiju kao dodatna zaštita.
Priključio sam 3.3V i GND na malu ploču kako bih ih mogao koristiti za tipke.
Zeleno dugme je spojeno na 3.3V putem mini ploče i na GPIO5 na RPi.
Crveno dugme je spojeno na 3.3V putem mini ploče i na GPIO4 na RPi.
Dakle, kad god pritisnete dugme, na RPi pinu postoji visoko stanje.
Mini bradboard radi sasvim dobro pa sam preskočio lemljenje svih žica u PCB. Umjesto toga, mini ploču sam samo prekrio vrućim ljepilom kako kablovi ne bi otpali.
Također sam vruće zalijepio RPi poklopac na kutiju tako da se neće njihati iznutra.
Zašrafio sam prednju ploču sa svim stvarima unutra.
Zatim sam ispisao, izrezao i zalijepio jednostavne naljepnice pored semafora i dugmadi.
Korak 8: Slack konfiguracija
Kreirajte svoj tim na Slack.com ili upotrijebite onaj koji imate i imate barem administratorska prava.
U Slacku stvorite kanal za Slack integraciju usluge (ili preskočite kreiranje kanala ako želite koristiti kanal koji već imate).
Dodajte Incomming Webhooks integraciju svom timu. Odaberite kanal i kopirajte URL webhook.
Dodajte integraciju Botova u svoj tim. Odaberite neko ime za svog bota i kopirajte API token za bot.
Stranica vaše prilagođene integracije trebala bi izgledati kao na slici.
Morate pozvati robota kao člana svog kanala. To možete učiniti već prilikom stvaranja kanala.
Ako kasnije želite prilagoditi uslugu, provjerite Slack API.
Korak 9: Implementacija softvera
Koristio sam Raspbian kao operativni sistem za svoj RPi slijedeći ovaj vodič. Oprostite, preskočit ću objašnjenje jer je već dokumentovano na mnogim mjestima, a proces je jednostavan. Nadam se da ste dovoljno vješti i iskusni da sami uspijete postaviti RPi. Ne zaboravite konfigurirati WiFi pristup na vašem Raspberry Pi;)
Kao što je spomenuto u odjeljku prototipova, koristio sam Javu za implementaciju mozga cijelog sistema. Kod je dostupan na GitHubu -
Java biblioteke koje sam koristio:
- pi4j - za korištenje Raspberry Pi iz Jave
- Springboot kao aplikacijski platrorm
- allbegray/slack-api kao Slack integracija
Morate urediti konfiguracijsku datoteku u src/resources/config.properties. Postoje 3 unosa koje morate konfigurirati da biste koristili Slack API:
- channelName - naziv kanala Želite objaviti promjene statusa i primati naredbe.
- slackBotToken - token bota konfiguriran u integracijama vašeg Slack tima koji će se koristiti za slanje poruka na gore spomenuti kanal. Napomena: Morate dodati Slack Bota kao člana kanala.
- webhookUrl - URL koji možete dobiti od prilagođenih integracija Slack Team -a.
Projekt je maveniziran pa za njegovu izradu samo upišite (trebate imati instalirane najmanje Java 8 i Maven):
mvn čisti paket
A u ciljanoj gumariji možete pronaći Springbooted JAR datoteku. Da biste pokrenuli uslugu:
sudo java -jar kicker-booking-service-0.3.0.jar
Postavio sam ovu liniju na.sh skriptu i dodao je kao autostart. Dakle, kad god je napajanje uključeno, usluga se automatski pokreće.
Potrebno je jedno posebno objašnjenje za LCD.
Pokušao sam s različitim pristupima/bibliotekama za kontrolu LCD -a preko I2C iz RPi -a, ali jednostavno nisam uspio. Za neke LCD nije radio ispravno, za neke je pokazivao smeće.
Ali jedna stvar je radila vrlo dobro, odmah po kutiji. To je pomoćni alat komandne linije koji sam pronašao Možete koristiti za kontrolu LCD -a. Stoga sam odlučio koristiti ovaj alat izravno iz Jave. Radi ovako da se zove normalni Linux proces (lcdi2c) (sa pripremljenim parametrima) svaki put kad želim prikazati nešto na LCD ekranu.
Morate preuzeti alat i postaviti ga pored JAR servisa
Korištenje ovog alata neka je vrsta hakiranja i glupog rješenja, ali slijedim prvo pravilo inženjeringa:
Ako je glupo, ali funkcionira … nije glupo
Korak 10: Upute za upotrebu
Možete provjeriti trenutni status kicker tablice na stvorenom Slack kanalu upisivanjem naredbe "status" (ili kratko "st") ili direktno provjeriti semafore na uređaju.
Ako samo želite igrati - pritisnite crveno dugme. Poruka će biti poslana na Slack kanal s informacijom da je kicker stol zauzet. Kada završite igru - pritisnite zeleno dugme. Poruka će biti poslana na Slack kanal s informacijama da je stol za igranje slobodan.
Semafori će se također promijeniti, a LCD ekran će pokazati neke detaljne informacije.
U slučaju da zaboravite otpustiti stol nakon što ste završili s igrom, vremensko ograničenje je postavljeno na 20 minuta. Ako još uvijek igrate i trebate više vremena, ponovno pritisnite crveno dugme i utakmica će se produžiti za 5 minuta (primjenjuje se samo ako je ostalo manje od 5 minuta do isteka vremena). Vremensko ograničenje reprodukcije bit će prikazano na LCD ekranu.
Da biste rezervirali kicker stol, napišite poruku „Reserve“(ili samo: „res“) na Slack kanalu.
Žuti semafor će se upaliti i obavijestiti druge u blizini stola za igru da je rezervisan i uskoro će neko doći da se igra.
Vremensko ograničenje rezervacije je postavljeno na 3 minute. Nakon toga, kicker stol mijenja svoje stanje u slobodno za igru.
Ako vam je potrebno, možete otkazati rezervaciju upisom „cancel“na Slack kanalu.
Sistem ima i neke druge manje značajke poput:
- Nakon rezervacije, dugmad se zamrzavaju 5 sekundi. To se radi kako bi se spriječile situacije, da u isto vrijeme netko rezervira i milisekundu kasnije netko pritisne crveno dugme misleći da on/ona zauzima stol, ali bez znanja da je netko rezervirao stol prije samo milisekundu.
- Pritiskom bilo kojeg dugmeta oboje se zamrzavaju na pola sekunde. To se radi kako bi se spriječilo ludo klikanje gumba pa Slack kanal neće biti toliko spamiran.
- Besplatna verzija Slacka omogućuje pohranu 10000 poruka cijelog tima. Da bi sačuvao neke od poruka, servis briše stare poruke vezane za sistem rezervacije/statusa) i zadržava samo posljednjih 6 od njih. Zašto 6? Budući da najčešće postoje 2 scenarija statusa: "Rezervirano-zauzeto-besplatno" i "zauzeto-besplatno". Tako sistem može pohraniti najmanje 2 pune sesije bez zaposlenja. Da biste očistili sve sistemske poruke, upišite naredbu "clean" (ili "clear").
Korak 11: Otpuštanje
Do sada (trenutak objavljivanja ovog uputstva) sistem radi 2.5+ mjeseca i koristi ga više od 30 ljudi. Zbog ažuriranja statusa kicker stola, uvijek znamo kada je slobodan ili zauzet, tako da više ne gubimo vrijeme naprijed -nazad. Veza i usluga su vrlo stabilni pa se na njih možemo osloniti.
Zasada je dobro…
Korak 12: Česta pitanja
Zašto je vremensko ograničenje rezervacije postavljeno na 3 minute?
3 minute je maksimalno vrijeme rezervacije, usvojite ga kako želite u kodu. Općenito, rijetko će se dogoditi da prođu pune 3 minute, a rezervacija će isteći. U većini slučajeva neko će konačno doći i zauzeti sto.
Zašto je vremensko ograničenje igranja postavljeno na 20 minuta?
Ovisno o igračima, prosječno vrijeme igranja je ~ 10 minuta. Ako trebate igrati duže, ponovo pritisnite crveno dugme kad preostane manje od 5 minuta, a vrijeme čekanja će se produžiti na 5 minuta. Ovo vremensko ograničenje je postavljeno samo u slučaju da neko zaboravi osloboditi tablicu.
Zašto na uređaju nema PIN uloška za potvrdu rezervacije; nema prijava i lozinki?
Glavna ideja je bila držati to jednostavno-glupo. U suprotnom, ako rezervacija, početak i završetak igre zahtijevaju previše truda, nitko je neće htjeti koristiti.
Zašto uređaj izgleda tako industrijski ružno?
Budući da nisam imao laserski rezač, CNC, 3D štampač, aparat za izradu etiketa u boji itd. Sa zadovoljstvom ćete ga poboljšati i učiniti ljepšim.
Zašto jednostavno ne implementirate neku aplikaciju i ne zalijepite jeftini tablet na zid s istom funkcionalnošću?
Aplikacije, aplikacije posvuda. Ljudi vole fizički komunicirati sa stvarima, a ne samo dodirivati ravne ekrane.
Preporučuje se:
Slack Updater Status sa ESP8266: 5 koraka (sa slikama)
Slack ažuriranje statusa s ESP8266: Ovaj projekt pomaže vam da vam malo olakša dan ako radite na daljinu koristeći Slack. Pokazat ću vam kako ga izgraditi pomoću WiFi ploče ESP8266. Ne propustite gornji video za pregled. Bilo da ste tek počeli koristiti Slack ili ste tek koristili
Kontrola roletni sa ESP8266, Google Home i Openhab integracijom i web kontrolom: 5 koraka (sa slikama)
Kontrola roletni sa ESP8266, Google Home i Openhab integracijom i web kontrolom: U ovom uputstvu pokazat ću vam kako sam dodao rolete svojim automatizacijama. Htio sam moći dodati i ukloniti automatizaciju, tako da je sva instalacija pričvršćena. Glavni dijelovi su: Koračni motor Bij ESP-01 upravljanjem koračnim upravljačem i mjenjačem
Senzor vrata na baterije s integracijom kućne automatizacije, WiFi i ESP-SADA: 5 koraka (sa slikama)
Senzor vrata na baterijski pogon sa integracijom kućne automatizacije, WiFi i ESP-SADA: U ovom uputstvu pokazat ću vam kako sam napravio senzor vrata na baterije s integracijom kućne automatizacije. Vidio sam neke druge lijepe senzore i alarmne sisteme, ali sam htio da ih napravim sam. Moji ciljevi: Senzor koji otkriva i prijavljuje doo
(Jednostavan) jednostavan način za dobivanje analognog/pwm zvuka s Raspberry PI Zero -a i povezivanje na Crt TV: 4 koraka
(Jednostavan) jednostavan način za dobijanje analognog/pwm zvuka s Raspberry PI Zero -a i povezivanje na Crt TV: Ovdje sam upotrijebio najjednostavniji način za unos zvuka na TV zajedno sa kompim video zapisom
Jednostavan sistem obavještavanja ISS -a: 6 koraka (sa slikama)
Jednostavan sistem obavještavanja o ISS -u: Šta je Međunarodna svemirska stanica i zašto želite predvidjeti gdje se ona nalazi? Da bismo odgovorili na prvo pitanje, odgovor možemo potražiti na web stranici NASA -e. Što je ukratko: Međunarodna svemirska stanica je velika svemirska letjelica. Kruži oko