Sisällysluettelo:

Yksinkertainen Kicker -tila- ja varausjärjestelmä löysällä integroinnilla: 12 vaihetta (kuvilla)
Yksinkertainen Kicker -tila- ja varausjärjestelmä löysällä integroinnilla: 12 vaihetta (kuvilla)

Video: Yksinkertainen Kicker -tila- ja varausjärjestelmä löysällä integroinnilla: 12 vaihetta (kuvilla)

Video: Yksinkertainen Kicker -tila- ja varausjärjestelmä löysällä integroinnilla: 12 vaihetta (kuvilla)
Video: Советы и Хитрости Мастеров по Дому, Которые Действительно Помогают! 2024, Heinäkuu
Anonim
Yksinkertainen Kicker -tila- ja varausjärjestelmä löysällä integroinnilla
Yksinkertainen Kicker -tila- ja varausjärjestelmä löysällä integroinnilla

Yrityksessä, jossa työskentelen, on potkupöytä. Yrityksellä on useita kerroksia, ja joillekin työntekijöille kestää jopa 3 minuuttia päästä pöytään ja… ymmärtää, että pöytä on jo varattu.

Siksi syntyi idea rakentaa eräänlainen yksinkertainen tilalähetys- ja varausjärjestelmä, joka toimii reaaliajassa.

Yritys käyttää Slack -viestintätyökalua, jossa jokaisella työntekijällä on tili. Meillä on jopa #kicker -kanava keskustelua varten… kickeristä. Kanavaa voitaisiin käyttää eräänlaisena "sisäänkäyntipisteenä" varaukseen ja saada tietoa nykyisen pöydän tilasta.

Kuten tavallista, tällaiseen järjestelmään on monia käsitteitä. Mutta yleensä yksi perussääntö esiintyi kaikissa: sen on oltava helppokäyttöinen ilman liiallisia toimenpiteitä järjestelmän käsittelyssä.

Laite ja palvelu eivät ole kiinni kicker-pöydässä, ja niitä voidaan käyttää mihin tahansa "yhteiseen resurssiin" (kuten pingispöytä, konsoli jne.), Jotka tarvitsevat jonkinlaista tilan lähetystä ja varausratkaisua.

Joten aloitetaan…

Vaihe 1: Todiste konseptista ja prototyypistä

Todiste konseptista ja prototyypistä
Todiste konseptista ja prototyypistä
Todiste konseptista ja prototyypistä
Todiste konseptista ja prototyypistä
Todiste konseptista ja prototyypistä
Todiste konseptista ja prototyypistä

Karkeasti ajatuksena oli rakentaa laite, joka asetetaan kicker -pöydän viereen seuraavien vaatimusten mukaisesti:

  • joitakin indikaattoreita pöydän nykyisestä tilasta - jos seisot sen vieressä, sinun pitäisi pystyä tietämään, että se on ilmainen tai varattu ja joku tulee pelaamaan 3 minuutin kuluttua. Liikennevalot sopivat ideaan täydellisesti:

    • vihreä valo - vapaa pelata,
    • keltainen valo - varattu,
    • punainen valo - varattu.
  • painiketta (painikkeita) Voit napsauttaa ennen ja jälkeen pelin, jotta kaikki muut saavat tietoa nykyisen pöydän tilasta. Yhden vaihtopainikkeen sijaan päätin käyttää kahta erillistä painiketta:

    • punainen painike - miehittää pöydän, aloittaa pelin (varauksen jälkeen tai ad hoc).
    • vihreä painike - vapautuspöytä.
  • jotkut näytöt, joissa on yksityiskohtaisempia tietoja "mitä tapahtuu" - varauksen aikakatkaisu, toistuva taulukon tila, peliajan aikakatkaisu jne …

Varauksella tarkoitan vain seuraavan 3 minuutin varausta. Järjestelmää ei ole suunniteltu siten, että käyttäjä voi varata pöydän täsmälliseen aikaan (esim. Klo 14.00). Se ei toimi kuten varaus esim. ravintoloissa, mutta vain muutaman minuutin ajan.

Koska LAN -yhteys puuttuu, ainoa vaihtoehto on käyttää WLAN -verkkoa - se on joka tapauksessa paras vaihtoehto. Järjestelmän aivojen on käytettävä Slack APIa lähettämään ja vastaanottamaan komentoja Slack -kanavalta. Ensin yritin käyttää NodeMCU: ta. Pystyin vastaanottamaan ja vastaanottamaan viestejä Slackiin ja sieltä, mutta HTTPS -käytön ja myös Slackin "tervetuloviestin" koon (~ 300 kt) vuoksi NodeMCU katkaisi yhteyden ja/tai sai outon poikkeuksen, jota en voinut ratkaista kaivamalla Internetin kautta.

Joten päätin käyttää jotain tehokkaampaa: Raspberry Pi 3 (Zero W ja WiFi ei vielä julkaistu tuolloin). Kun minulla on RPi, voisin vaihtaa toteutuskielen C: stä Javaksi, koska se on minulle kätevämpää - joten tämä oli etu. Nykyään voit käyttää jotain tehokkaampaa kuin NodeMCU ja vähemmän tehokasta kuin RPi. Raspberry Zero ehkä?

Kun ensimmäinen prototyyppi oli rakennettu leipälevylle, jossa oli hullu johdotus, paljon luonnoksia ja prototyyppejä, järjestelmä näytti toimivan.

Kun minulla oli kaikki nämä ideat ja toimiva PoC, aloin suunnitella eri sijoituskokoonpanoja yllä olevista kohteista etupaneelissa, jotta ne ovat kaikkein informatiivisimpia ja kätevimpiä käyttää. Voit tarkistaa joitain muita ehdotuksia, ehkä jotkut sopivat sinulle paremmin. Viimeinen oli minun valitsemani.

Vaihe 2: Materiaalit ja työkalut

Materiaalit, joita käytin:

  • Laatikko
  • Raspberry Pi, microSD -kortti, mikro -USB -virtalähde
  • Vihreä ja punainen arcade -painike
  • 16x2 LCD -näyttö
  • LEDit - Käytin RGB: tä, mutta voit käyttää oikeaa väriä
  • Uros -naaras ja naaras -naaras -leipälevyn hyppyjohdot
  • Micro USB -liitäntä
  • Mini leipälauta vain johtojen liittämistä varten
  • Lyhyt mikro -USB -kaapeli, joka toimii hyppyjohtimena laatikon sisällä RPi: n virran saamiseksi

Työkalut joita käytin:

  • Terävä veitsi (esim. Työkaluterä maton leikkaamiseen)
  • Pyörivä työkalu
  • Kuuma liimapistooli
  • Juotosasema
  • Pihdit, lävistävät pihdit/sivuleikkurit
  • Ruuvimeisseli
  • Tiedosto
  • Minä

Tarvittavat työkalut:

Kaikki edellä mainitut, mutta "minun" sijaan sen pitäisi olla: "sinä":)

Vaihe 3: Etupaneeli - LCD -näyttö

Etupaneeli - LCD -näyttö
Etupaneeli - LCD -näyttö
Etupaneeli - LCD -näyttö
Etupaneeli - LCD -näyttö

LCD -näytön reikä oli yksinkertainen. Vain suorakulmio, joka sopii LCD -näyttöön. Kun yritin leikata sitä terävällä veitsellä, huomasin, että laatikon muovi on melko kovaa. Joten käytin poratyökalua ikkunan leikkaamiseen ja reunojen kiillottamiseen.

Vaihe 4: Etupaneeli - Tila -LEDit

Etupaneeli - Tila -LEDit
Etupaneeli - Tila -LEDit
Etupaneeli - Tila -LEDit
Etupaneeli - Tila -LEDit

LED -reiät ovat myös yksinkertaisia. Otin juuri suuren poran puulle ja sitten kiillotin reunat poratyökalulla. Suuret LED -valot olivat tiukasti kiinni. En juottanut mitään vastuksia LEDeihin - jätin sen kokoonpanoprosessiin.

Vaihe 5: Etupaneeli - painikkeet

Etupaneeli - painikkeet
Etupaneeli - painikkeet
Etupaneeli - painikkeet
Etupaneeli - painikkeet
Etupaneeli - painikkeet
Etupaneeli - painikkeet
Etupaneeli - painikkeet
Etupaneeli - painikkeet

Suurin ongelma näiden kahden ison painikkeen kanssa oli sijoittaa ne tasaisesti oikeilla väleillä. Leikkasin reiät vain poratyökalullani, koska voisin lisätä halkaisijaa askel askeleelta, jotta painikkeet istuvat tiukasti.

Vaihe 6: Virtaliitin

Virtaliitin
Virtaliitin

Pieni reikä mikro -USB -virtalähteelle oli erittäin herkkä tehtävä. Halusin, että reikä olisi mahdollisimman sopiva, joten vietin täällä paljon aikaa kiillotukseen. Mutta olin tyytyväinen lopputulokseen.

Leikkasin sitten lyhyen mini -USB -kaapelin, joka sijoitettiin laatikon sisään. Toisella puolella se on kytketty RPi: hen, ja toisella puolella kaikki kaapelit juotettiin mikro -USB -liitäntään USB -pistokkeiden mukaisesti.

Sitten liimasin pienen piirilevyn suoraan laatikkoon (se näkyy valokuvassa kokoonpanovaiheessa).

Vaihe 7: Yhdistä kaikki

Kaikki yhteen
Kaikki yhteen
Kaikki yhteen
Kaikki yhteen
Kaikki yhteen
Kaikki yhteen

Ensin juotin sopivat vastukset LEDeihin niiden värin (jännitteen) mukaan 3,3 V: n jännitteelle. Käytin 100Ω punaiselle, kaksi vastusta 82 ja 100 keltaiselle (vihreä ja punainen solmu) ja 100Ω vihreälle. Voit käyttää LED -laskimen online -vastusta. Tee kuitenkin itse tutkimusta sen kirkkauden ja tarkan värisävyn mukaan, jonka haluat saavuttaa.

Keltaisen LEDin jalat juotettiin yhteen, joten itse LEDiä voidaan ohjata vain yhdellä RPi -nastalla.

Tämän pinout -kaavion mukaan:

LED -solmut yhdistettiin:

  • Vihreä LED - GPIO1 Rpi: ssä
  • Keltainen LED (molemmat jalat) GPIO2: een RPi: ssä
  • Punainen LED - GPIO0 RPi: ssä

Liitin nestekidenäytön käyttämällä RP2 -nastojen I2C -nastoja

  • LCD SDA - GPIO8 RPi: llä
  • LCD SCL - GPIO9 RPi: llä
  • LCD PWR - 5 V RPi: llä
  • LCD GND - GND RPi: llä

Nestekidenäyttö liimattiin kuumaan liitäntään lisäsuojana.

Liitin 3.3V ja GND pieneen leipälautaan, jotta voisin käyttää niitä painikkeisiin.

Vihreä painike liitettiin 3.3 V: iin minileipälevyn kautta ja GPIO5: een RPi: ssä.

Punainen painike liitettiin 3.3V: iin minileipälevyn kautta ja GPIO4: ään RPi: ssä.

Joten aina kun painat painiketta, RPi -nastassa on korkea tila.

Mini -bradboard toimii hienosti, joten ohitin kaikkien johtojen juottamisen PCB: hen. Sen sijaan peitin minileipälevyn kuumalla liimalla, jotta kaapelit eivät putoa.

Liimasin myös RPi: n kuoren laatikkoon, jotta se ei heiluta sisältä.

Rikkasin etupaneelin ja kaikki tavarat sisällä.

Sitten tulostin, leikkasin ja liimasin yksinkertaisia tarroja liikennevalojen ja painikkeiden viereen.

Vaihe 8: Slack Configuration

Slack -kokoonpano
Slack -kokoonpano
Slack -kokoonpano
Slack -kokoonpano

Luo tiimisi Slack.com -sivustolla tai käytä sitä, joka sinulla on ja sinulla on vähintään järjestelmänvalvojan oikeudet.

Luo Slackissa kanava palvelun Slack -integrointia varten (tai ohita kanavan luominen, jos haluat käyttää jo olemassa olevaa kanavaa).

Lisää Incomming Webhooks -integraatio tiimiisi. Valitse kanava ja kopioi webhook -URL -osoite.

Lisää Bots -integraatio tiimiisi. Valitse botille jokin nimi ja kopioi bot -sovellusliittymän tunnus.

Muokattujen integrointien hallinnan sivun pitäisi näyttää kuvassa.

Sinun on kutsuttava robotti kanavasi jäseneksi. Voit tehdä sen jo kanavan luomisen aikana.

Jos haluat muokata palvelua myöhemmin, tarkista Slack -sovellusliittymä.

Vaihe 9: Ohjelmiston käyttöönotto

Käytin Raspbiania RPi -käyttöjärjestelmänä noudattamalla tätä opetusohjelmaa. Anteeksi, jätän sen selittämättä, koska se on jo dokumentoitu monissa paikoissa ja prosessi on suoraviivainen. Toivon, että olet riittävän taitava ja kokenut, jotta pystyt asentamaan RPi: n itse. Muista määrittää WiFi -yhteys Raspberry Pi -laitteeseesi;)

Kuten prototyyppiosassa mainittiin, käytin Java -järjestelmää koko järjestelmän aivojen toteuttamiseen. Koodi on saatavilla GitHubissa -

Käyttämäni Java -kirjastot:

  • pi4j - käyttää Raspberry Pi: tä Javasta
  • Springboot sovellusalustana
  • allbegray/slack-api Slack-integraationa

Sinun on muokattava määritystiedostoa osoitteessa src/resources/config.properties. Sinun on määritettävä 3 merkintää Slack -sovellusliittymän käyttämiseksi:

  • channelName - kanavan nimi Haluat lähettää tilamuutoksia ja vastaanottaa komentoja.
  • slackBotToken - Slack -tiimiintegraatioihisi määritetyn botin merkki, jota käytetään viestien lähettämiseen yllä mainitulle kanavalle. Huomaa, että sinun on lisättävä Slack Bot kanavan jäseneksi.
  • webhookUrl - URL -osoite, jonka saat Slack Teamin mukautetuista integraatioista.

Projekti on Mavenized, joten voit rakentaa sen vain kirjoittamalla (tarvitset vähintään Java 8: n ja Mavenin asennettuna):

mvn puhdas paketti

Ja kohde väsymys Löydät Springbooted JAR -tiedoston. Palvelun käynnistäminen:

sudo java -jar kicker-varaus-palvelu-0.3.0.jar

Asetin tämän rivin.sh -komentosarjaksi ja lisäsin sen automaattiseksi käynnistykseksi. Joten aina kun virta on kytketty, palvelu käynnistyy automaattisesti.

LCD -näyttöön tarvitaan yksi erityinen selitys.

Yritin eri lähestymistapoja/kirjastoja ohjata LCD: tä I2C: n kautta RPi: stä, mutta en vain onnistunut. Joidenkin LCD -näyttö ei toiminut kunnolla, joillekin se näytti roskaa.

Mutta yksi asia toimi erittäin mukavasti vain laatikosta. Se on apuohjelman komentorivityökalu, jonka löysin Voit käyttää nestekidenäytön ohjaamiseen. Joten päätin käyttää tätä työkalua vain Javalta. Se toimii näin, että normaalia Linux -prosessia (lcdi2c) kutsutaan (valmiilla parametreilla) aina, kun haluan näyttää jotain nestekidenäytössä.

Sinun on ladattava työkalu ja asetettava se JAR -palvelun viereen

Tämän työkalun käyttäminen on eräänlainen hakkerointi ja tyhmä ratkaisu, mutta noudatan suunnittelun ensimmäistä sääntöä:

Jos se on tyhmää, mutta se toimii, se ei ole tyhmä

Vaihe 10: Käyttöohje

Käyttöohje
Käyttöohje

Voit tarkistaa kicker -pöydän nykyisen tilan luodusta Slack -kanavasta kirjoittamalla "status" (tai pian "st") -komennon tai tarkistaaksesi suoraan laitteen liikennevalot.

Jos haluat vain pelata - paina punaista painiketta. Slack -kanavalle lähetetään viesti, jossa kerrotaan, että kicker -pöytä on varattu. Kun olet lopettanut pelaamisen - paina vihreää painiketta. Slack -kanavalle lähetetään viesti, jossa kerrotaan, että kicker -pöytä on vapaasti pelattavissa.

Myös liikennevalot muuttuvat ja nestekidenäytössä näkyy yksityiskohtaisia tietoja.

Jos unohdat vapauttaa pöydän pelaamisen päätyttyä, aikakatkaisu on asetettu 20 minuuttiin. Jos pelaat edelleen ja tarvitset enemmän aikaa, paina punaista painiketta uudelleen, ja ottelu pidentyy 5 minuutilla (vain silloin, kun ennen aikakatkaisua on jäljellä alle 5 minuuttia). Toiston aikakatkaisu näkyy LCD -näytöllä.

Jos haluat varata kicker -pöydän, kirjoita viesti "reserve" (tai vain: "res") Slack -kanavalle.

Keltainen liikennevalo syttyy ja ilmoittaa muille potkuripöydän lähellä oleville, että se on varattu, ja pian joku tulee pelaamaan.

Varauksen aikakatkaisu on asetettu 3 minuuttiin. Tämän jälkeen kicker -pöytä vaihtaa tilan vapaaseen pelaamiseen.

Tarvittaessa voit peruuttaa varauksen kirjoittamalla Slack -kanavalle Peruuta.

Järjestelmässä on myös muita pieniä ominaisuuksia, kuten:

  • Varauksen jälkeen painikkeet jäätyvät 5 sekunniksi. Näin vältetään tilanteita, että samaan aikaan joku varaa ja milisekunnin kuluttua joku painaa punaista painiketta ajatellen, että hän on pöydän viejä, mutta tietämättä, että joku on varannut pöydän vain millisekuntia ennen.
  • Minkä tahansa painikkeen painaminen pysäyttää molemmat puoleksi sekunniksi. Näin estetään hullujen painikkeiden napsautukset, joten Slack -kanavaa ei roskapostiteta niin paljon.
  • Ilmainen Slack -versio mahdollistaa 10000 viestin tallentamisen koko tiimille. Jos haluat säilyttää osan viesteistä, palvelu poistaa vanhat varaus-/tilajärjestelmään liittyvät viestit) ja säilyttää vain kuusi viimeistä viestiä. Miksi 6? Koska useimmiten on olemassa 2 skenaariota: "Varattu-miehitetty-vapaa" ja "varattu-vapaa". Järjestelmä voi siis tallentaa vähintään kaksi täysin varattua istuntoa. Voit puhdistaa kaikki järjestelmän viestit kirjoittamalla "clean" (tai "clear") -komennon.

Vaihe 11: Vapauttaminen

Vapauttaminen
Vapauttaminen
Vapauttaminen
Vapauttaminen

Toistaiseksi (tämän ohjeen julkaisemishetkeen) järjestelmä on käytössä yli 2,5 kuukautta ja sitä käyttää yli 30 henkilöä. Potkupöydän tilan päivityksen vuoksi tiedämme aina, milloin se on vapaa tai varattu, joten emme hukkaa aikaa edestakaisin. Yhteys ja palvelu ovat erittäin vakaita, joten voimme luottaa siihen.

Toistaiseksi niin hyvin…

Vaihe 12: Usein kysytyt kysymykset

Miksi varauksen aikakatkaisu on asetettu 3 minuuttiin?

3 minuuttia on maksimi varausaika, hyväksy se niin kuin haluat koodissa. Yleensä tapahtuu harvoin, että täydet 3 minuuttia kuluu ja varaus aikakatkaistaan. Useimmissa tapauksissa joku tulee lopulta ja istuu pöydän ääressä.

Miksi toistoaika on asetettu 20 minuuttiin?

Pelaajista riippuen keskimääräinen peliaika on ~ 10 minuuttia. Jos haluat pelata pidempään, paina punaista painiketta uudelleen, kun alle 5 minuuttia on jäljellä ja aikakatkaisu pidennetään takaisin 5 minuuttiin. Tämä aikakatkaisu asetetaan vain siltä varalta, että joku unohtaa vapauttaa pöydän.

Miksi laitteessa ei ole PIN -näppäintä varauksen vahvistamiseksi; ei tunnuksia ja salasanoja?

Pääidea oli pitää yksinkertainen-tyhmä. Muussa tapauksessa, jos pelin varaaminen, aloittaminen ja lopettaminen vaatii liikaa vaivaa, kukaan ei halua käyttää sitä.

Miksi laite näyttää niin teolliselta-ruma?

Koska minulla ei ollut laserleikkuria, CNC: tä, 3D -tulostinta, hienoja värillisiä tarratulostimia jne. Olet enemmän kuin tyytyväinen parantamaan sitä ja tekemään siitä kauniimpaa.

Miksei vain oteta käyttöön jokin sovellus ja kiinnitettävä halpa tabletti seinään samalla toiminnallisuudella?

Sovelluksia, sovelluksia kaikkialla. Ihmiset haluavat olla fyysisesti vuorovaikutuksessa asioiden kanssa eivätkä vain napauttaa litteitä näyttöjä.

Suositeltava: