Мазмұны:

Қарапайым Kicker мәртебесі мен брондау жүйесі: Slack интеграциясы: 12 қадам (суреттермен)
Қарапайым Kicker мәртебесі мен брондау жүйесі: Slack интеграциясы: 12 қадам (суреттермен)

Бейне: Қарапайым Kicker мәртебесі мен брондау жүйесі: Slack интеграциясы: 12 қадам (суреттермен)

Бейне: Қарапайым Kicker мәртебесі мен брондау жүйесі: Slack интеграциясы: 12 қадам (суреттермен)
Бейне: АЛТЫН КРИПТО-ВАЛЮТА, ТІЗБЕРДІ ҮЗУ ҚАРА ЖАЙ, Криптовалюталар ПАРАДОКС, МҮМКІН БОЛАШАҚ 2024, Шілде
Anonim
Қарапайым Kicker күйі мен брондау жүйесі Slack интеграциясымен
Қарапайым Kicker күйі мен брондау жүйесі Slack интеграциясымен

Мен жұмыс істейтін кәсіпорында үстел үстелі бар. Компания көптеген қабаттарды алып жатыр, ал кейбір қызметкерлер үшін үстелге жету үшін 3 минут қажет, ал үстелдің бос тұрғанын түсіну.

Сондықтан нақты уақыт режимінде жұмыс істейтін қарапайым статустық хабар тарату мен брондау жүйесін құру идеясы пайда болды.

Компания Slack байланыс құралын қолданады, онда әрбір қызметкердің шоты бар. Бізде тек kicker туралы пікірталастарға арналған #kicker арнасы бар. Арнаны брондау және кестенің ағымдағы күйі туралы хабардар ету үшін «кіру нүктесі» ретінде пайдалануға болады.

Әдеттегідей, мұндай жүйемен күресудің көптеген тұжырымдамалары бар. Бірақ, жалпы алғанда, олардың барлығында бір негізгі ереже пайда болды: жүйемен жұмыс істеу кезінде ешқандай артық қадамдарсыз қолдану қарапайым болуы керек.

Құрылғы мен қызмет кикер үстеліне жабыспайды және кез келген «жалпы ресурс» үшін (мысалы, теннис үстелінде, консольде және т.

Сонымен, бастайық …

1 -қадам: Тұжырымдаманың дәлелі және прототиптеу

Тұжырымдаманың дәлелі және прототиптеу
Тұжырымдаманың дәлелі және прототиптеу
Тұжырымдаманың дәлелі және прототиптеу
Тұжырымдаманың дәлелі және прототиптеу
Тұжырымдаманың дәлелі және прототиптеу
Тұжырымдаманың дәлелі және прототиптеу

Бұл талаптарға сәйкес үстелдің жанына қойылатын құрылғыны құру идеясы болды:

  • үстелдің қазіргі жағдайы туралы кейбір көрсеткіштер - егер сіз оның жанында тұрсаңыз, сіз оның тегін немесе резервтелгенін білуіңіз керек, ал біреу 3 минуттан кейін ойнауға келеді. Бағдаршам идеяға сәйкес келеді:

    • жасыл жарық - ойнауға тегін,
    • сары жарық - сақталған,
    • қызыл жарық - басып қалды.
  • түйме (лер) ойынға дейін және кейін басуға болады, осылайша басқалар ағымдағы кестенің күйі туралы хабардар болады. 1 ауыстыру түймесінің орнына мен 2 бөлек түймені қолдануға шешім қабылдадым:

    • қызыл түйме - үстелді алу, ойынды бастау (броньдан кейін немесе уақытша).
    • жасыл түйме - босату кестесі.
  • «не болып жатыр» туралы толығырақ ақпарат бар кейбір дисплей - брондаудың күту уақыты, кестенің қайталанған күйі, ойнау уақытының күту уақыты және т.

Брондау дегенде мен келесі 3 минутқа брондауды айтамын. Жүйе пайдаланушы кестені дәл уақытта (мысалы, 14:00) сақтай алатындай етіп жасалмаған. Ол брондау сияқты жұмыс істемейді, мысалы. мейрамханаларда, бірақ бірнеше минут ішінде.

Жергілікті желіге қосылудың болмауына байланысты, WLAN желісін пайдалану - жалғыз нұсқа - бұл ең жақсы нұсқа. Жүйенің миы Slack арнасынан командаларды жіберу және қабылдау үшін Slack API қолдануы керек. Алдымен NodeMCU қолдануға тырыстым. Мен Slack -тен хабарламаларды ала алдым және қабылдай алдым, бірақ HTTPS -ті қолданғандықтан және Slack -тің «сәлемдесу хабарының» өлшемі (~ 300 кБ), NodeMCU байланысын үзді және/немесе Интернет арқылы қазуды шеше алмайтын біртүрлі ерекшеліктерге ие болдым..

Мен одан да күшті нәрсені қолдануды шештім: Raspberry Pi 3 (WiFi бар Zero W бұл уақытта әлі шығарылған жоқ). RPi -ге ие бола отырып, мен енгізу тілін С -дан Java -ға ауыстыра аламын, себебі бұл маған ыңғайлы - сондықтан бұл артықшылық болды. Бүгін сіз NodeMCU -ден күшті және RPi -ге қарағанда әлсіз нәрсені қолдана аласыз. Raspberry Zero мүмкін бе?

Ақылсыз сымдары бар көптеген эскиздер мен прототиптері бар тақтаға бірінші прототипті құрастырғаннан кейін, жүйе жұмыс істей алатын сияқты болды.

Барлық осы идеялар мен PoC жұмыс істей отырып, мен жоғарыда көрсетілген элементтерді орналастырудың әр түрлі конфигурациясын жоспарлауды бастадым, сондықтан олар ең ақпараттылығы мен қолдануға ыңғайлы болады. Сіз басқа ұсыныстарды тексере аласыз, мүмкін кейбіреулер сізге сәйкес келеді. Соңғысын мен таңдадым.

2 -қадам: материалдар мен құралдар

Мен қолданған материалдар:

  • Қорап
  • Raspberry Pi, microSD картасы, микро USB қуат көзі
  • Жасыл және қызыл аркадалық түймелер
  • 16x2 СКД экраны
  • Жарық диодтары - Мен RGB қолдандым, бірақ сіз сәйкес түсті қолдана аласыз
  • Еркектен әйелге және әйелден әйелге арналған нанға арналған секіргіш кабельдер
  • Micro USB интерфейсі
  • Шағын нан тақтасы кейбір сымдарды қосу үшін
  • Қысқаша шағын USB кабелі RPi -ге қуат беру үшін қораптың ішінде секіргіш ретінде жұмыс істейді

Мен қолданған құралдар:

  • Өткір пышақ (мысалы, кілем кесуге арналған қызметтік пышақ)
  • Айналмалы құрал
  • Ыстық желім қаруы
  • Дәнекерлеу станциясы
  • Қысқыштар, қиғаш қысқыштар/бүйірлік кескіштер
  • Бұрауыш
  • Файл
  • Мен

Сізге қажет құралдар:

Жоғарыда айтылғандардың бәрі, бірақ «Мен» орнына: «Сен» болу керек:)

3 -қадам: алдыңғы панель - СКД экраны

Алдыңғы панель - СКД экраны
Алдыңғы панель - СКД экраны
Алдыңғы панель - СКД экраны
Алдыңғы панель - СКД экраны

СКД экранына арналған тесік қарапайым болды. Менің СКД экранға сәйкес келетін төртбұрыш. Оны өткір пышақпен кесуге тырысқаннан кейін, қораптың пластмассасы өте қиын екенін түсіндім. Сондықтан мен бұрғылау құралын пайдаланып терезені кесіп, шеттерін жылтыраттым.

4 -қадам: алдыңғы панель - күй диодтары

Алдыңғы панель - күй диодтары
Алдыңғы панель - күй диодтары
Алдыңғы панель - күй диодтары
Алдыңғы панель - күй диодтары

Жарық диодты тесіктер де қарапайым. Мен ағаш үшін үлкен бұрғылауды алдым, содан кейін бұрғылау құралының көмегімен жиектерін жылтыраттым. Үлкен светодиодтар өте тығыз бекітілген. Мен светодиодтарға ешқандай резисторды дәнекерлемедім - мен оны құрастыру процесіне қалдырдым.

5 -қадам: алдыңғы панель - түймелер

Алдыңғы панель - түймелер
Алдыңғы панель - түймелер
Алдыңғы панель - түймелер
Алдыңғы панель - түймелер
Алдыңғы панель - түймелер
Алдыңғы панель - түймелер
Алдыңғы панель - түймелер
Алдыңғы панель - түймелер

Бұл 2 үлкен түйменің ең үлкен мәселесі оларды дұрыс аралықпен біркелкі орналастыру болды. Мен тесіктерді бұрғылау құралымен кесіп тастадым, себебі мен диаметрлерді біртіндеп ұлғайта аламын, сондықтан түймелер тығыз орналасады.

6 -қадам: Қуат қосқышы

Қуат қосқышы
Қуат қосқышы

Микро USB қуатына арналған кішкене тесік өте нәзік жұмыс болды. Мен тесіктің мүмкіндігінше сай болуын қаладым, сондықтан мен мұнда жылтыратуға көп уақыт жұмсадым. Бірақ мен соңғы нәтижеге қанағаттандым.

Содан кейін мен қораптың ішіне салынған шағын USB кабелін кесіп алдым. Бір жағынан ол RPi -ге қосылады, ал екінші жағынан, барлық кабельдер USB түйіспелері бойынша микро USB интерфейсіне дәнекерленген.

Содан кейін мен кішкене ПХД-ны тікелей қорапқа жапсырдым (оны құрастыру қадамындағы фотода көруге болады).

7 -қадам: Барлығын біріктіру

Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру

Алдымен светодиодтарға түсіне (кернеуіне) сәйкес 3,3В вольтке сәйкес резисторларды дәнекерледім. Мен қызыл үшін 100Ω, екі резистор 82 және 100 сары (жасыл және қызыл түйін) үшін және жасыл үшін 100Ω қолдандым. Жарықдиодты калькулятор үшін онлайн резистордың бірін қолдануға болады. Бірақ сіз қол жеткізгіңіз келетін жарықтық пен нақты түс реңіне сәйкес жеке зерттеу жүргізіңіз.

Сары жарықдиодты аяқтар бір -біріне дәнекерленген, сондықтан жарық диодты RPi -дегі бір түйреуішпен басқаруға болады.

Бұл диаграммаға сәйкес:

Жарықдиодты түйіндер қосылды:

  • Жасыл жарық диоды - Rpi бойынша GPIO1
  • Сары жарық диоды (екі аяғы) RPi -де GPIO2 -ге дейін
  • Қызыл жарық диоды GPIO0 -ге RPi -де

Мен LCD -ді RPi түйреуіштеріндегі I2C түйреуіштері арқылы қостым

  • СКД SDA GPIO8 -ге RPi -де
  • LCD SCL RPi -де GPIO9 -ға дейін
  • LCD PWR 5 V дейін RPi
  • LCD GND - GND - GND - RPi бойынша

СКД қосымша қорғаныс ретінде қорапқа ыстық желімделген.

Мен 3.3V мен GND -ді кішкене тақтаға қостым, сондықтан мен оларды түймелер үшін қолдана алдым.

Жасыл түйме шағын нан тақтасы арқылы 3.3V -ге және RPi -де GPIO5 -ке қосылды.

Қызыл түйме 3.3В шағын тақта арқылы және GPO4 RPi арқылы қосылды.

Сондықтан сіз түймені басқан сайын RPi түйреуішінде жоғары күй пайда болады.

Шағын брадборд жақсы жұмыс істейді, сондықтан мен барлық сымдарды ПХД -ге дәнекерлеуді өткізіп жібердім. Кабельдер құлап кетпес үшін мен жай ғана шағын тақтаны ыстық желіммен жаптым.

Мен сондай-ақ RPi қақпағын ыстық желіммен жаптым, ол іште тербелмеуі үшін.

Мен алдыңғы панельді ішіндегі барлық заттармен бұрап алдым.

Содан кейін бағдаршам мен түймелердің жанына қарапайым белгілерді басып шығардым, қиып, жапсырдым.

8 -қадам: Slack конфигурациясы

Slack конфигурациясы
Slack конфигурациясы
Slack конфигурациясы
Slack конфигурациясы

Slack.com сайтында өз тобыңызды құрыңыз немесе сізде бар және сізде кем дегенде әкімші құқығы бар команданы қолданыңыз.

Slack -те қызметтің Slack интеграциясы үшін арна жасаңыз (немесе егер сізде бар арнаны қолданғыңыз келсе, арнаны құруды өткізіп жіберіңіз).

Командаңызға жаңа Webhooks интеграциясын қосыңыз. Арнаны таңдап, webhook URL мекенжайын көшіріңіз.

Сіздің командаңызға боттардың интеграциясын қосыңыз. Сіздің ботқа қандай да бір атауды таңдап, бот API таңбалауышын көшіріңіз.

Сіздің реттелетін интеграциялау беті суреттегідей болуы керек.

Сіз ботты арнаңыздың мүшесі ретінде шақыруыңыз керек. Сіз мұны арна құру кезінде жасай аласыз.

Егер сіз қызметті кейінірек теңшегіңіз келсе, Slack API тексеріңіз.

9 -қадам: Бағдарламалық қамтамасыз етуді енгізу

Мен Raspi -ді осы оқулыққа сәйкес операциялық жүйе ретінде қолдандым. Кешіріңіз, мен түсіндіруді өткізіп жіберемін, өйткені ол көптеген жерде құжатталған және процесс қарапайым. Сіз RPi -ді өз бетіңізше орнатуға қабілетті және тәжірибелі екеніңізге сенемін. Өтінемін, сіздің Raspberry Pi -де WiFi -ге кіруді конфигурациялауды ұмытпаңыз;)

Прототиптеу бөлімінде айтылғандай, мен Java -ді бүкіл жүйенің миын енгізу үшін қолдандым. Код GitHub -те қол жетімді -

Мен қолданған Java кітапханалары:

  • pi4j - Java -ден Raspberry Pi пайдалану
  • Springboot қосымшалық платформа ретінде
  • allbegray/slack-api Slack интеграциясы ретінде

Src/resources/config.properties ішіндегі конфигурация файлын өңдеу қажет. Slack API пайдалану үшін конфигурациялау қажет 3 жазба бар:

  • channelName - арнаның атауы, сіз күйді өзгерткіңіз келеді және пәрмендерді алғыңыз келеді.
  • slackBotToken - жоғарыда көрсетілген арнаға хабар жіберу үшін қолданылатын Slack командасының интеграциясында конфигурацияланған бот белгісі. Назар аударыңыз, Slack Bot -ті арнаға қосу керек.
  • webhookUrl - URL -ді Slack Team -тың реттелетін интеграциясынан алуға болады.

Жоба Mavenized болып табылады, сондықтан оны құру үшін теріңіз (сізге кемінде Java 8 және Maven орнатылған болуы керек):

mvn таза пакеті

Ал мақсатты тиректорияда сіз Springbooted JAR файлын таба аласыз. Қызметті бастау үшін:

sudo java -jar kicker-брондау-қызметі-0.3.0.jar

Мен бұл жолды.sh сценарийіне қойдым және оны автоматты іске қосу ретінде қостым. Сондықтан қуат қосылған сайын, қызмет автоматты түрде қосылады.

СКД үшін бір арнайы түсініктеме қажет.

Мен LCD -ді I2C арқылы RPi -ден басқару үшін әртүрлі тәсілдерді/кітапханаларды қолдандым, бірақ мен сәтсіз болдым. Кейбіреулер үшін СКД дұрыс жұмыс істемеді, кейбіреулер үшін қоқыс пайда болды.

Бірақ бір нәрсе қораптан тыс өте жақсы жұмыс істеді. Бұл СКД басқару үшін қолдануға болатын қызметтік пәрмен жолы құралы. Сондықтан мен бұл құралды тікелей Java -дан қолдануды шештім. СКД экранында бір нәрсені көрсеткім келген сайын, Linux -тың қалыпты процесі (lcdi2c) шақырылады (дайын параметрлермен) осылай жұмыс істейді.

Сізге құралды жүктеп алып, оны JAR қызметінің қасына қою керек

Бұл құралды пайдалану - бұл ақымақтық және ақымақ шешім, бірақ мен инженерияның бірінші ережесін ұстанамын:

Егер бұл ақымақ болса, бірақ ол жұмыс істесе … бұл ақымақ емес

10 -қадам: пайдалану жөніндегі нұсқаулық

Қолдану жөніндегі нұсқаулық
Қолдану жөніндегі нұсқаулық

Сіз «мәртебе» (немесе қысқаша «st») пәрменін енгізу арқылы құрылатын Slack арнасындағы кесте ағымдағы күйін тексере аласыз немесе құрылғыдағы бағдаршамды тікелей тексере аласыз.

Егер сіз жай ғана ойнағыңыз келсе - қызыл түймені басыңыз. Хабар Slack арнасына жіберіледі, онда кесте толтырылған. Сіз ойнауды аяқтаған кезде - жасыл түймені басыңыз. Хабар Slack арнасына жіберіледі, онда ойын кестесі тегін.

Бағдаршам да өзгереді, ал СКД экраны егжей -тегжейлі ақпаратты көрсетеді.

Егер сіз ойнауды аяқтағаннан кейін үстелді босатуды ұмытып кетсеңіз, 20 минутқа күту уақыты бар. Егер сіз әлі ойнап жатсаңыз және сізге көбірек уақыт қажет болса, қызыл түймені қайтадан басыңыз, матч 5 минутқа ұзартылады (тек күту уақыты аяқталғанға дейін 5 минуттан аз уақыт қалған кезде ғана қолданылады). Ойынның күту уақыты СКД экранында көрсетіледі.

Басқару үстелін брондау үшін Slack арнасына «резерв» (немесе жай ғана: «res») хабарын жазыңыз.

Сары бағдаршам қосқыш үстелінің жанында басқаларға оның сақталғанын хабарлайды және көп ұзамай біреу ойнауға келеді.

Брондаудың күту уақыты 3 минутқа орнатылды. Осыдан кейін, ойын кестесі өз күйін еркін ойнауға ауыстырады.

Қажет болса, Slack арнасына «бас тарту» деп жазып, брондауды тоқтатуға болады.

Жүйенің басқа да кішігірім ерекшеліктері бар:

  • Брондағаннан кейін түймелер 5 секундқа қатып қалады. Бұл жағдайдың алдын алу үшін, дәл сол уақытта біреу резервте және бір секундтан кейін біреу қызыл түймені басады, ол үстелді мен отырамын деп ойлайды, бірақ біреу үстелді бір милис секунд бұрын ғана сақтап қойғанын білмейді.
  • Кез келген түймені басу екеуін де жарты секундқа қатырады. Бұл батыл түймелерді басудың алдын алу үшін, сондықтан Slack арнасына спам көп жіберілмейді.
  • Slack -тің ақысыз нұсқасы бүкіл команда бойынша 10000 хабарламаны сақтауға мүмкіндік береді. Кейбір хабарларды сақтау үшін қызмет брондау/күй жүйесімен байланысты ескі хабарларды жояды) және олардың соңғы 6 -ын ғана сақтайды. Неге 6? Өйткені көбінесе 2 статус сценарийі бар: «Резервтелген-бос» және «Бос-бос». Осылайша, жүйе кем дегенде 2 толық бос сессияны сақтай алады. Барлық жүйелік хабарламаларды тазарту үшін «тазалау» (немесе «тазалау») пәрменін теріңіз.

11 -қадам: босату

Шығару
Шығару
Шығару
Шығару

Осы уақытқа дейін (бұл нұсқаулық жарияланған сәтте), жүйе 2,5+ ай бойы жұмыс істейді және оны 30 -дан астам адам қолданады. Үстел кестесінің жаңартылуына байланысты біз оның бос немесе бос екенін білеміз, сондықтан біз енді артқа және артқа уақыт жоғалтпаймыз. Байланыс пен қызмет өте тұрақты, сондықтан біз оған сене аламыз.

Әзірше бәрі жақсы…

12 -қадам: Жиі қойылатын сұрақтар

Неліктен брондаудың күту уақыты 3 минутқа орнатылды?

3 минут - брондаудың максималды уақыты, оны кодта қалағаныңыздай қабылдаңыз. Әдетте бұл сирек кездеседі, толық 3 минут өтеді және брондау уақыты аяқталады. Көп жағдайда ақыр соңында біреу келіп, үстелді алады.

Неліктен күту уақыты 20 минутқа орнатылды?

Ойыншыларға байланысты ойынның орташа уақыты ~ 10 минут. Егер сізге ұзақ ойнау қажет болса, 5 минуттан аз уақыт қалғанда қызыл түймені қайта басыңыз, ал күту уақыты 5 минутқа дейін ұзартылады. Бұл күту уақыты біреу кестені босатуды ұмытып кеткен жағдайда ғана орнатылады.

Неліктен брондауды растайтын құрылғыда PIN -код жоқ? логин мен пароль жоқ па?

Негізгі идея-ақымақтықты сақтау. Әйтпесе, брондау, ойынның басталуы мен аяқталуы тым көп күш салуды қажет етсе, оны ешкім қолданғысы келмейді.

Неліктен құрылғы соншалықты өнеркәсіптік болып көрінеді?

Менде лазерлік кескіш, CNC, 3D принтері, түрлі -түсті жапсырма жасаушы болмағандықтан, сіз оны жақсартуға және оны әдемі етуге қуаныштысыз.

Неліктен кейбір функцияларды қолданып, арзан планшетті қабырғаға жабыстырмаңыз?

Қолданбалар, барлық жерде қосымшалар. Адамдар заттармен физикалық қарым -қатынас жасауды ұнатады, тек жалпақ экранды түртуді ұнатпайды.

Ұсынылған: