Как да си направим кутия за известия за изграждане с Raspberry Pi

Винаги ли сте мислели, че може да е забавно да имате нещо, което възпроизвежда звук всеки път, когато даден срив се провали или завърши внедряването? Притежаването му на вашата локална машина може да бъде забавно, но не би ли било чудесно, ако беше устройство само по себе си (може би дори е свързано с дисплей). В тази статия показвам как с помощта на малинов пи, прикачен към някои говорители, облака и някакъв код на Node.js, за да направите точно това. Можете да намерите готовия код на GitHub тук:

https://github.com/matthewbill/mdb-build-notification

Тази статия е съставянето на беседа, която беше представена в Потребителската група на Norwich Node. Ако искате да говоря на някое от вашите събития, моля, свържете се. Слайдовете за тази беседа могат да бъдат намерени тук:

Изграждане / хакерски проекти

Подобно на всеки вид хакерски проект, ние в крайна сметка ще научим цял куп различни умения. В тази статия ще научим за следните теми:

  • Raspberry Pi
  • AWS CLI
  • Тест към реч (кажете)
  • Уеб хостинг (експресен)
  • Съединени архитектури, базирани на събития (SQS)
  • Приложения за възел за кошчета
  • Процесори за събития
  • CI / CD инструменти

За това просто приложение решихме да го направим като част от проект за обяд, за да помогнем на нов член на екипа да научи за възел и AWS. Този тип проекти могат да бъдат чудесен начин за едновременно учене и забавление.

Raspberry Pi

Малък и достъпен компютър, който можете да използвате, за да научите програмиране
https://www.raspberrypi.org/

Raspberry Pi е по същество супер евтин мини компютър, който се побира в ръката ви и може да бъде свързан към всички видове електроника чрез редица входни / изходни пинове с общо предназначение (GPIO). Това е подобно на друго устройство, наречено arduino, което определено си струва да проверите и в някакъв момент. Той може да стартира Raspbian като негова операционна система, която е основана на Debian os. Като се базира на Linux, той може да стартира всички програмни инструменти, които може да очаквате, включително python и в нашия случай - възел.

Можете да вземете стартов комплект Raspberry Pi, включително захранващия кабел и карта с памет с Raspbian, предварително инсталирана за £ 50 - £ 60 паунда. Това го прави фантастично малко устройство за игра с всички идеи за IoT или електроника, които може да имате. За нас можем да го свържем с някои високоговорители и да възпроизвеждаме известия до офиса с обикновено приложение за възел.

Можете обаче да стартирате приложението в тази статия на вашия компютър или на който и да е стар компютър, разположен около офиса. Това е красотата на възела, който е толкова кросплатформен. Ако планирате да направите това, тогава можете да прескочите раздели Raspberry Pi и направо до секцията „Игра на звуци“.

Ако искате да се задълбочите по-дълбоко в pi's, тогава W3schools.com има страхотен урок за това как да използвате pi с пълния си потенциал и как да получите достъп до GPIO пиновете. Вие сте ограничени само от въображението си върху това, което можете да изградите!

Raspberry Pi Bits

Ще ви трябват следните битове за вашия Raspberry Pi, за да стартирате нашето приложение:

  • Самият пи
  • Захранващ кабел
  • Карта с памет, инсталирана с Raspbian
  • HDMI кабел и някакъв вид дисплей
  • [По желание] Високоговорители и аудио кабел, ако не пускат звука през HDMI

Инсталиране на възел

Едно от първите неща, които трябва да направим, е да инсталираме възел на нашата пи. Като се базирате на Linux, можете да го инсталирате с помощта на apt-get. Вместо да навлизате в подробностите в тази статия, w3schools.com вече има отлично ръководство стъпка по стъпка:

https://www.w3schools.com/nodejs/nodejs_raspberrypi.asp

Можете да разберете повече за инсталирането на възел на различни устройства / os тук:

https://nodejs.org/en/download/

Игра на звуци

Едно от първите неща, които трябва да настроим, е възможността нашето приложение да възпроизвежда звуци. Има две основни опции за това, можем да имаме записани звуци или да използваме „текст в реч“. Подходът текст към реч ще ни позволи да изпращаме всякакъв вид съобщения (като например името на номера на приложението / внедряването), така че ще продължим с този подход. За щастие за нас има един хубав малък пакет, наречен „казвам“, който ще използва каквато и да е библиотека с текст в реч в работещата операционна система:

npm инсталирайте казвам

Ако използвате Windows или mac, автоматично вече ще имате библиотека с текст в реч. Ако използвате Linux или в нашия случай Raspian, ще трябва да инсталирате festival.

sudo apt-get install festival festvox-kallpc16k

Засега просто инсталираме един глас, за да ни накара да работим, но може би искате да се върнете и да изследвате други. Можем да добавим следния клас, който ще влезе в някакъв текст и ще го възпроизведе вместо нас, използвайки say.

Ако го опитате на различни операционни системи, ще откриете, че Windows и mac текстът в реч определено е с по-високо качество от своя Linux колега. На Linux звучи малко… роботизирано!

Забележка: Друга опция може да бъде използването на облачен текст за речева услуга, като Amazon Polly. Това ще изисква допълнителна сложност, натоварване на мрежата и вероятно забавя нещата за нашия случай на използване. Нека го поддържаме просто, глупаво (KISS).

Raspberry Pi Audio

Понякога може да получите проблеми с аудиото на вашия Raspberry Pi. За да проверите дали работи правилно, просто пуснете обикновено видео в YouTube. Ако няма аудио, най-вероятно е едно от двете неща.

  1. Грешният изход (HDMI / Analog) е избран към това, което сте включили.
  2. Използвате HDMI и е необходима малка настройка:

Ще трябва да направите промяна във файла config.txt, открит в:

/boot/config.txt

Декомментирайте „hdmi_drive = 2“ вътре в този файл и го запазете. Можете лесно да направите това чрез нано редактора:

sudo nano /boot/config.txt

След това ще трябва да рестартирате вашия pi

судо рестартиране

Сега вашият пи трябва да бъде настроен за възпроизвеждане на звук от HDMI.

Създаване на крайна точка

Сега нашето приложение играе някакъв звук, имаме нужда от начин за изпращане на съобщения за него, за да дразни (* кашлица * .. искам да уведомя) нашите колеги. Един от най-простите начини да направим това е да настроим HTTP крайна точка с помощта на express, който се обажда на нашия звуков плейър.

След стартиране на това приложение вече можем да отидем до нашата крайна точка, за да изпратим съобщение:

localhost: 3000 / кажете? message = Hello World

Сега идва забавният бит, където можете да раздадете IP на локалната мрежа на хората от вашия офис и да видите какви съобщения изпращат до вашия екип. О, но изчакайте, отдалечените работници не могат да изпращат никакви съобщения, а нашия сървър за изграждане дори не е в нашата локална мрежа. Нуждаем се от нов хитър план!

Декупажна архитектура

Нуждаем се от начин да изпращаме съобщения до нашето устройство от всяка точка на света. Има толкова много различни начини, по които това може да се направи, но има тенденция да се свежда до вас:

  • натиснете съобщения към нашето приложение
  • анкета за някаква крайна точка, за да видите дали има съобщения за игра.

Тъй като искаме да запазим приложението си просто и не искаме да плащаме за какъвто и да е вид хостинг (за използване на уеб сокети), ще използваме подхода на анкетата.

SQS

Въведете AWS SQS или „Simple Queue Service“, напълно управлявана услуга на опашката от Amazon, която ви позволява да изпращате съобщения до единия край на опашката и да четете тези съобщения от другия край (подобно на Rabit MQ). Хората от всяка точка на света могат да изпращат съобщения на опашката и след това нашето приложение може да анкетира тази опашка, за да види дали има съобщения за игра.

За да създадете нова опашка SQS, просто влезте в конзолата AWS и преминете към секцията SQS. Веднъж там, създайте стандартна опашка с избраното от вас име и щракнете върху Бърза създаване на опашката. След като това бъде създадено, ще можете да го видите в списъка си с опашки, заедно с подробностите за URL адреса на опашката (направете забележка за това сега).

Конфигурирайте идентификационните данни на AWS

Преди да започнем да говорим със SQS, ще трябва да конфигурираме AWS идентификационните данни на компютъра, който ще работи нашето приложение. Един от най-лесните начини да направите това е да използвате AWS CLI. Ако за първи път работите с AWS, можете да разберете повече за настройката на идентификационни данни в документите на AWS.

Има няколко различни начина за инсталиране на AWS CLI, но за нашия pi, най-лесният начин е да използвате pip:

sudo pip инсталирайте awscli

След това можете да се уверите, че е инсталиран правилно, като изпълните следното:

aws - версия

За да конфигурирате нашите идентификационни данни, изпълнете следната команда и въведете вашата информация за ключ / секрет:

aws конфигуриране

За да разберете повече подробности за нашето инсталиране на CLI, можете да посетите документацията за AWS тук: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html

Процесорът

Сега имаме създадена опашка за SQS и нашите локални идентификационни данни са конфигурирани, трябва да създадем процесор, който да работи на заден план, за да проверява периодично дали има нови съобщения. За да опростим кода за демонстрационни цели, призоваваме клас „messageService“, който обработва цялата комуникация със SQS.

Когато бъде открито ново съобщение, ние използваме звуковия плейър, който сме създали по-рано, за да възпроизвеждаме съобщението, което идва през. Най-накрая изтриваме съобщението от опашката, така че случайно не пускаме същото съобщение отново. За да изтрием съобщението, използваме дръжката за получаване на полученото съобщение, която действа като уникален идентификатор. И накрая, ние задаваме метода на процеса да бъде извикан отново след определено забавяне на анкетата.

Инсталация

Така че ние създадохме нашето приложение локално и то работи чудесно, но как да го инсталираме на нашето пи. Бихме могли да предприемем подхода за копиране на файловете и да го изпълним, като посочим файла ... но това е малко скучно! Вместо това можем да се възползваме от секцията за бин в package.json.

Това означава, че когато този пакет е инсталиран с помощта на npm install, той автоматично ще свърже файла на скрипта mdb-build-noti.js на възела към командата mdb-build-notification. Ако публикуваме нашия пакет в npm, използвайки командата npm публикуване, той ще бъде достъпен за всеки, който може да инсталира, използвайки следната команда:

sudo npm инсталирайте mdb-build-уведомление -g

Двоичният файл вече ще съществува в световен мащаб и можем да го изпълняваме така, сякаш е като всяка друга команда в командния ред.

mdb-build-уведомление {endpointUrl} {pollDelay}

Това ще стартира приложението за нашата SQS крайна точка и сега ще започне да възпроизвежда всякакви съобщения, изпратени до вашата опашка. Запитването за анкета е в мс.

Надграждане

С този подход е много лесно да се надгражда, ако някога се наложи и вие. Просто добавете маркера @latest в края, за да принудите да инсталирате последната версия.

sudo npm инсталирайте mdb-build-notification @ latest -g

Изпращане на съобщения

Има няколко различни начина, по които можете да изпращате съобщения до вашата опашка SQS. Можете да влезете в конзолата AWS и да я изпратите през GUI, да използвате AWS CLI (вече използван за конфигуриране на идентификационни данни) или да използвате AWS SDK за JavaScript. Например, за да изпратите съобщение чрез AWS CLI, просто използвайте следната команда:

aws sqs send-message - queue-url {queueUrl} - тяло на съобщението „Build Complete”

Можете да използвате същата команда като стъпка на сглобяване във вашата версия на Travis / Jenkins / Circle CI / и т.н., за да изпратите съобщение, след като вашата компилация не успее или внедряването завърши. Очевидно ще трябва да се уверите, че вашият сървър / контейнер за изграждане има инсталиран AWS CLI и зададени идентификационни данни.

резюме

Това просто приложение е създадено и готово за използване. Можете да станете и да изпълните със следните стъпки:

  1. Създайте опашка SQS в AWS
  2. Конфигурирайте вашите AWS Удостоверения
  3. Инсталирайте приложението
    sudo npm инсталирайте mdb-build-уведомление -g
  4. Стартирайте приложението
    mdb-build-уведомление {endpointUrl} {pollDelay}
  5. Започнете да изпращате известия за изграждане / внедряване

Вие сте повече от добре дошли да вземете кода и да го разширите за вашите собствени нужди. За пореден път кодът може да бъде намерен на GitHub:

https://github.com/matthewbill/mdb-build-notification

Моля, споделете с всички свои приятели в социалните медии и натиснете бутона за бутони по-долу, за да разпространите думата. Оставете отговор, с който ще ни уведомите кога стартирате и стартирате инструмента си за уведомяване за изграждане.

Ако тази публикация ви е харесала, моля, следвайте ме и разгледайте някои от другите ми статии.

относно

Матю Бил е страстен технически лидер и пъргав ентусиаст от Великобритания. Той се радва да нарушава статуквото, за да доведе до трансформационни промени и технически постижения. Със силен технически опит в Polyglot Software Engineering, той решава сложни проблеми, като използва иновативни решения и се отличава в прилагането на силни култури на DevOps.

Той е активен член на технологичната общност, пише статии, представя разговори, допринася за отворен код и е съосновател на групата потребители на Norwich Node. Ако искате той да говори на някоя от вашите конференции или да напише парче за вашата публикация, моля, свържете се.

Научете повече за Матю и неговите проекти на matthewbill.gihthub.io.

Благодаря за четенето!

Други публикации в архитектурата, които може да

Вижте GitKraken, един от задължителните инструменти на 2019 година