Kazalo:
- 1. korak: Dokaz koncepta in izdelava prototipov
- 2. korak: Materiali in orodja
- 3. korak: Sprednja plošča - LCD zaslon
- 4. korak: Sprednja plošča - LED diode stanja
- 5. korak: Sprednja plošča - gumbi
- 6. korak: Priključek za napajanje
- 7. korak: Vse združite
- 8. korak: Slack konfiguracija
- 9. korak: Izvajanje programske opreme
- 10. korak: Navodila za uporabo
- 11. korak: Sprostitev
- 12. korak: Pogosta vprašanja
Video: Enostaven sistem za preverjanje statusa in rezervacije s Slack integracijo: 12 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
V podjetju, kjer delam, je mizica. Podjetje zaseda veliko nadstropij in nekaterim zaposlenim traja do 3 minute, da pridejo do mize in … da se zavedajo, da je miza že zasedena.
Zato se je porodila ideja o izgradnji neke vrste enostavnega sistema za oddajanje in rezervacijo statusa, ki deluje v realnem času.
Podjetje uporablja komunikacijsko orodje Slack, kjer ima vsak zaposleni račun. Imamo celo kanal #kicker samo za razprave o … kickerju. Kanal bi lahko uporabili kot nekakšno "vstopno točko" za rezervacijo in obveščanje o trenutnem stanju mize.
Kot ponavadi obstaja veliko konceptov, kako ravnati s takšnim sistemom. Na splošno pa se je pri vseh pojavilo eno osnovno pravilo: mora biti enostavna za uporabo, brez kakršnih koli pretiranih korakov, ki jih je treba izvesti pri obravnavi sistema.
Naprava in storitev nista prilepljena na začetno mizo in ju je mogoče uporabiti za kateri koli "skupni vir" (na primer mizo za namizni tenis, konzolo itd.), Ki potrebuje nekakšno rešitev za razširjanje statusa in rezervacijo.
Torej, začnimo…
1. korak: Dokaz koncepta in izdelava prototipov
Nenavadno je bila zamisel zgraditi napravo, ki bo položena poleg mize za udarce v skladu s temi zahtevami:
-
nekaj kazalcev trenutnega stanja mize - če stojite ob njej, bi morali vedeti, da je brezplačna ali rezervirana in da se bo nekdo prišel igrati v 3 minutah. Semaforji popolnoma ustrezajo ideji:
- zelena luč - prosto igranje,
- rumena luč - rezervirano,
- rdeča luč - zasedena.
-
gumb (i) Lahko kliknete pred i po igri, tako da bodo vsi ostali obveščeni o stanju trenutne mize. Namesto enega preklopnega gumba sem se odločil za uporabo dveh ločenih gumbov:
- rdeči gumb - zasedite mizo, začnite igro (po rezervaciji ali ad hoc).
- zeleni gumb - sprostitvena miza.
- nekaj prikaza s podrobnejšimi informacijami o tem, kaj se dogaja - časovna omejitev rezervacije, stanje ponavljajoče se mize, čas predvajanja itd …
Z rezervacijo mislim samo na rezervacijo za naslednje 3 minute. Sistem ni zasnovan tako, da lahko uporabnik rezervira mizo ob točno določenem času (npr. Ob 14.00). Ne deluje kot rezervacija npr. v restavracijah, a le za prihajajoče minute.
Zaradi pomanjkanja povezave LAN je edina možnost uporaba WLAN - vseeno je to najboljša možnost. Možgani sistema morajo uporabljati Slack API za pošiljanje in sprejemanje ukazov iz kanala Slack. Najprej sem poskusil uporabiti NodeMCU. Lahko sem prejemal in prejemal sporočila v in iz Slacka, vendar zaradi uporabe HTTPS in tudi Slackovega sporočila dobrodošlice (~ 300 kB) je NodeMCU izgubljal povezavo in/ali dobil neko čudno izjemo, ki je nisem mogel rešiti pri iskanju po internetu.
Zato sem se odločil uporabiti nekaj močnejšega: Raspberry Pi 3 (Zero W z WiFi takrat še ni bil izdan). Z RPi -jem bi lahko prevedel implementacijski jezik iz C v Javo, saj mi je to bolj priročno - zato je bila to prednost. Danes lahko uporabite nekaj močnejšega od NodeMCU in manj zmogljivega od RPi. Mogoče malina nič?
Po izdelavi prvega prototipa na plošči z noro napeljavo, veliko skicami in izdelavo prototipov je bil sistem videti, kot da lahko deluje.
Ob vseh teh zamislih in delujočem PoC -ju sem začel načrtovati različne konfiguracije postavitev zgornjih elementov na sprednji plošči, tako da bodo najbolj informativne in priročne za uporabo. Lahko preverite nekatere druge predloge, morda se vam kakšen bolj prilega. Zadnji je bil moj izbranec.
2. korak: Materiali in orodja
Materiali, ki sem jih uporabil:
- Škatla
- Raspberry Pi, kartica microSD, napajalnik mikro USB
- Zeleni in rdeči arkadni gumbi
- 16x2 LCD zaslon
- LED - Uporabil sem RGB, lahko pa uporabite ustrezno barvo
- Moški na žensko in ženski na ženski mostični kabli
- Vmesnik mikro USB
- Mini plošča samo za povezavo nekaterih žic
- Kratek kabel mikro USB, ki deluje kot mostiček v škatli za napajanje RPi
Orodja, ki sem jih uporabil:
- Ostri nož (npr. Nož za rezanje preprog)
- Rotacijsko orodje
- Pištola za vroče lepilo
- Spajkalna postaja
- Klešče, diagonalne klešče/stranski rezalniki
- Izvijač
- mapa
- Jaz
Orodja, ki jih verjetno potrebujete:
Vse zgoraj, ampak namesto "jaz" bi moralo biti: "ti":)
3. korak: Sprednja plošča - LCD zaslon
Luknja za LCD zaslon je bila preprosta. Samo pravokotnik, ki se prilega mojemu LCD zaslonu. Ko sem ga poskušal rezati z ostrim nožem, sem spoznal, da je plastika škatle precej trda. Zato sem uporabil vrtalno orodje za rezanje okna in poliranje robov.
4. korak: Sprednja plošča - LED diode stanja
LED luknje so tudi preproste. Pravkar sem vzel velik vrtalnik za les in nato poliral robove z vrtalnim orodjem. Velike LED diode so popolnoma pritrjene. Na LED še nisem spajkal nobenega upora - pustil sem ga za postopek sestavljanja.
5. korak: Sprednja plošča - gumbi
Največja težava teh dveh velikih gumbov je bila njihova enakomerna postavitev s pravilnim razmikom. Luknje sem izrezal samo s svojim vrtalnim orodjem, saj sem lahko korak za korakom povečal premer, da se gumbi tesno prilegajo.
6. korak: Priključek za napajanje
Majhna luknja za napajanje mikro USB je bila zelo občutljiva naloga. Želel sem, da je luknja čim bolj primerna, zato sem tukaj preživel veliko časa za poliranje. Toda s končnim rezultatom sem bil zadovoljen.
Nato sem prerezal kratek mini USB kabel, ki je bil nameščen v škatli. Na eni strani je priključen na RPi, na drugi strani pa so bili vsi kabli spajkani na vmesnik mikro USB v skladu z izhodi USB.
Nato sem vroče zlepil majhno tiskano vezje neposredno na škatlo (to je mogoče videti na fotografiji v koraku sestavljanja).
7. korak: Vse združite
Najprej sem LED -diode prilepil ustrezne upore glede na njihovo barvo (napetost) za 3,3 V volta. Uporabil sem 100Ω za rdečo barvo, dva upora 82 in 100 za rumeno (zeleno in rdeče vozlišče) in 100Ω za zeleno. Za kalkulator LED lahko uporabite enega od spletnih uporov. Prosimo, da sami raziščete glede na svetlost in natančen barvni ton, ki ga želite doseči.
Noge rumene LED so spajane skupaj, tako da lahko samo LED upravljate le z enim zatičem na RPi.
V skladu s tem diagramom pinout:
Priključena so bila LED vozlišča:
- Zelena LED - GPIO1 na Rpi
- Rumena LED (obe nogi) do GPIO2 na RPi
- Rdeča LED na GPIO0 na RPi
LCD sem povezal z zatiči I2C na zatičih RPi
- LCD SDA do GPIO8 na RPi
- LCD SCL do GPIO9 na RPi
- LCD PWR do 5V pri RPi
- LCD GND do GND pri RPi
LCD je bil kot dodatna zaščita vroče lepljen na škatlo.
Priključil sem 3.3V in GND na majhno ploščo, da sem jih lahko uporabil za gumbe.
Zeleni gumb je bil priključen na 3.3V prek mini plošče in na GPIO5 na RPi.
Rdeči gumb je bil priključen na 3.3V prek mini plošče in na GPIO4 na RPi.
Torej, ko pritisnete gumb, je na pin -ju RPi visoko stanje.
Mini bradboard deluje v redu, zato sem preskočil spajkanje vseh žic v tiskano vezje. Namesto tega sem mini ploščo samo prekril z vročim lepilom, da kabli ne bodo odpadli.
Na škatlo sem vroče zlepil tudi pokrov RPi, tako da se v notranjosti ne bo nihal.
Privil sem sprednjo ploščo z vsemi stvarmi.
Nato sem na semaforje in gumbe natisnila, izrezala in prilepila preproste nalepke.
8. korak: Slack konfiguracija
Ustvarite svojo ekipo na Slack.com ali uporabite tisto, ki jo imate, in imate vsaj skrbniške pravice.
V Slacku ustvarite kanal za integracijo storitve Slack (ali preskočite ustvarjanje kanala, če ga želite uporabiti že imate).
Dodajte integracijo Incomming Webhooks v svojo ekipo. Izberite kanal in kopirajte URL spletnega kljuka.
Dodajte integracijo Botov v svojo ekipo. Izberite ime za svojega bota in kopirajte žeton API -ja bota.
Stran za upravljanje integracij po meri bi morala izgledati kot na sliki.
Bota morate povabiti kot člana svojega kanala. To lahko storite že med ustvarjanjem kanala.
Če želite storitev kasneje prilagoditi, preverite Slack API.
9. korak: Izvajanje programske opreme
Po tej vadnici sem uporabil Raspbian kot operacijski sistem za svoj RPi. Oprostite, opustil bom razlago, saj je že velikokrat dokumentirano in postopek je preprost. Upam, da ste dovolj usposobljeni in izkušeni, da lahko sami nastavite RPi. Ne pozabite konfigurirati dostopa do WiFi na vašem Raspberry Pi;)
Kot je omenjeno v oddelku za izdelavo prototipov, sem uporabil Javo za implementacijo možganov celotnega sistema. Koda je na voljo na GitHub -
Knjižnice Java, ki sem jih uporabljal:
- pi4j - za uporabo Raspberry Pi iz Jave
- Springboot kot aplikacijski platrorm
- allbegray/slack-api kot integracija Slack
Konfiguracijsko datoteko morate urediti v src/resources/config.properties. Za uporabo Slack API -ja morate konfigurirati 3 vnose:
- channelName - ime kanala Želite objaviti spremembe stanja in prejemati ukaze.
- slackBotToken - žeton bota, konfiguriranega v integracijah vaše ekipe Slack, ki bo uporabljen za objavljanje sporočil na zgoraj omenjeni kanal. Opomba: Slack Bota morate dodati kot člana kanala.
- webhookUrl - URL, ki ga lahko dobite iz integracij po meri Slack Team.
Projekt je Mavenized, zato ga vnesite (potrebujete vsaj Java 8 in Maven):
mvn čisti paket
V ciljnem tovarni pnevmatik najdete datoteko JAR Springbooted. Za zagon storitve:
sudo java -jar kicker-booking-service-0.3.0.jar
To vrstico sem nastavil na.sh script in jo dodal kot samodejni zagon. Zato se storitev samodejno zažene, kadar je vklopljen.
Za LCD je potrebna posebna razlaga.
Poskusil sem različne pristope/knjižnice za nadzor LCD preko I2C iz RPi, vendar mi ni uspelo. Za nekatere LCD ni deloval pravilno, za nekatere je prikazoval nekaj smeti.
Toda ena stvar je delovala zelo dobro, takoj ko je škatla. To je orodje ukazne vrstice, ki sem ga našel. Uporabite ga lahko za nadzor LCD -ja. Zato sem se odločil, da bom to orodje uporabil neposredno iz Jave. Deluje tako, da se pokliče običajen postopek Linuxa (lcdi2c) (s pripravljenimi parametri) vsakič, ko želim nekaj prikazati na LCD zaslonu.
Orodje morate prenesti in ga postaviti poleg storitve JAR
Uporaba tega orodja je nekakšen kramp in neumna rešitev, vendar se držim prvega inženirskega pravila:
Če je neumno, vendar deluje … ni neumno
10. korak: Navodila za uporabo
Trenutno stanje mize za sprožitev lahko preverite na ustvarjenem kanalu Slack tako, da vnesete ukaz "status" (ali na kratko "st") ali neposredno preverite semaforje na napravi.
Če želite samo igrati - pritisnite rdeči gumb. Sporočilo bo poslano na Slack kanal z informacijami, da je igralna miza zasedena. Ko končate z igranjem - pritisnite zeleni gumb. Sporočilo bo poslano na kanal Slack z informacijami, da je igralna miza brezplačna.
Spremenili se bodo tudi semaforji in na LCD zaslonu bodo prikazane nekatere podrobne informacije.
Če pozabite spustiti mizo, potem ko ste končali z igranjem, je časovna omejitev nastavljena na 20 minut. Če še vedno igrate in potrebujete več časa, znova pritisnite rdeči gumb in tekma se bo podaljšala za 5 minut (velja le, če je do časovne omejitve ostalo manj kot 5 minut). Časovna omejitev predvajanja bo prikazana na LCD zaslonu.
Če želite rezervirati mizico za kicker, napišite sporočilo „rezerviraj“(ali samo: „res“) na Slack kanal.
Rumeni semafor se bo vklopil in obvestil druge v bližini igralne mize, da je rezerviran in kmalu se bo prišel kdo igrati.
Časovna omejitev rezervacije je nastavljena na 3 minute. Po tem miza za preklop spremeni stanje v prosto igranje.
Če potrebujete, lahko prekličete rezervacijo tako, da na kanalu Slack napišete „prekliči“.
Sistem ima tudi nekatere druge manjše lastnosti, kot so:
- Po rezervaciji se gumbi zamrznejo za 5 sekund. To je zato, da bi preprečili situacije, da istočasno nekdo rezervira in milisekundo kasneje nekdo pritisne rdeč gumb, misleč, da on/ona zaseda mizo, vendar ne ve, da je nekdo rezerviral mizo le za milisekundo prej.
- S pritiskom na kateri koli gumb oba zamrzneta za pol sekunde. To je zato, da se prepreči noro klikanje gumbov, tako da Slack kanal ne bo toliko vsiljen.
- Brezplačna različica Slacka omogoča shranjevanje 10000 sporočil celotne ekipe. Če želite ohraniti nekatera sporočila, storitev izbriše stara sporočila, povezana s sistemom rezervacije/statusa) in ohrani le zadnjih 6 sporočil. Zakaj 6? Ker najpogosteje obstajata 2 scenarija statusa: "Reserved-Occupied-Free" in "Occuposed-Free". Tako lahko sistem shrani vsaj 2 polni seji brez zasedenosti. Če želite očistiti vsa sistemska sporočila, vnesite ukaz "clean" (ali "clear").
11. korak: Sprostitev
Do sedaj (v trenutku objave tega navodila) sistem deluje 2,5+ meseca in ga uporablja več kot 30 ljudi. Zaradi posodobitve stanja mize za kicker vedno vemo, kdaj je prosta ali zasedena, da ne izgubimo več časa naprej in nazaj. Povezava in storitev sta zelo stabilna, zato se lahko zanesemo nanjo.
Zaenkrat tako dobro…
12. korak: Pogosta vprašanja
Zakaj je časovna omejitev rezervacije nastavljena na 3 minute?
Najdaljši čas rezervacije je 3 minute, sprejmite ga tako, kot želite v kodi. Na splošno se bo redko zgodilo, da bodo minile polne 3 minute, rezervacija pa bo potekla. V večini primerov bo na koncu nekdo prišel in zasedel mizo.
Zakaj je čas predvajanja nastavljen na 20 minut?
Odvisno od igralcev je povprečni čas igranja ~ 10 minut. Če morate igrati dlje, znova pritisnite rdeči gumb, ko ostane manj kot 5 minut, časovna omejitev pa se podaljša nazaj na 5 minut. Ta časovna omejitev je nastavljena samo v primeru, da kdo pozabi sprostiti mizo.
Zakaj v napravi ni vnosne kode PIN za potrditev rezervacije; ni prijav in gesel?
Glavna ideja je bila, da je preprosto-neumno. V nasprotnem primeru, če rezervacija, začetek in končanje igre zahtevajo preveč napora, je nihče ne bo želel uporabiti.
Zakaj naprava izgleda tako industrijsko grdo?
Ker nisem imel laserskega rezalnika, CNC -ja, 3D -tiskalnika, izdelovalca modnih barvnih etiket itd. Z veseljem ga izboljšate in polepšate.
Zakaj preprosto ne bi implementirali kakšne aplikacije in poceni tabličnega računalnika prilepili na steno z enako funkcionalnostjo?
Aplikacije, aplikacije povsod. Ljudje radi fizično komunicirajo s stvarmi in se ne dotikajo le ravnih zaslonov.
Priporočena:
AvoRipe - Preverjanje, ali je vaš avokado zrel: 8 korakov (s slikami)
AvoRipe - preverjanje, ali je vaš avokado zrel: zgodilo se je vsem, kupite avokado, še ni zrel. Nekaj dni mine, in ko zori, ste na to že pozabili … in čez nekaj dni bo lahko šlo! Na srečo smo vam zasnovali in izdelali AvoRipe, napravo, ki preverja vaš avokado
Preverjanje muh diskretnih hlač: 17 korakov (s slikami)
Discreet Pants Fly Checker: Ljudje se vedno sprašujejo, kako to, da delam toliko inventivnih stvari. To so zame običajne vsakodnevne stvari. Samo naredim. Res ne vem, kako naj naredim kaj drugega. Kar me še bolj moti, je, kako to počnejo vsi drugi
Senzor vrat z baterijskim napajanjem z integracijo domače avtomatizacije, WiFi in ESP-NOW: 5 korakov (s slikami)
Senzor vrat z baterijskim napajanjem z integracijo avtomatizacije doma, WiFi in ESP-ZDAJ: V tem navodilu vam pokažem, kako sem izdelal senzor vrat na baterijsko napajanje z integracijo avtomatizacije doma. Videl sem še nekaj lepih senzorjev in alarmnih sistemov, vendar sem jih želel narediti sam. Moji cilji: Senzor, ki zazna in poroča o doo
Enostaven in enostaven spletni strelec Spider-Man: 12 korakov
Enostaven in enostaven spletni strelec Spider-Man: Ste že gledali film o Spider-Manu? Zakaj ne bi naredili preprostega spletnega strelca? Po nekaj vaje sem ustvaril dizajn iz hišnih materialov, ki bi jih lahko ustvarili
DIY MusiLED, glasbeno sinhronizirane LED z aplikacijo Windows in Linux z enim klikom (32-bitne in 64-bitne). Enostaven za ponovno ustvarjanje, enostaven za uporabo, enostaven za prenos .: 3 koraki
DIY MusiLED, glasbeno sinhronizirane LED z aplikacijo Windows in Linux z enim klikom (32-bitne in 64-bitne). Enostaven za ponovno ustvarjanje, enostaven za uporabo, enostaven za prenos. Ta projekt vam bo pomagal povezati 18 LED (6 rdečih + 6 modrih + 6 rumenih) na ploščo Arduino ter analizirati signale zvočne kartice v računalniku v realnem času in jih posredovati LED diode, ki jih prižgejo glede na učinke utripa (Snare, High Hat, Kick)