RGB лента + Raspberry Pi

На днях собрал себе очередную игрушку на raspberry pi для загородного дома. А именно по датчику движения в коридоре будет включаться RGB лента, цель которой дать освещение достаточное для «дойти до выключателя». Не, я конечно натыкал и «проходных» выключателей аж 3 штуки, но всё равно иной раз приходиться идти до них, нащупывать их в темноте, попутно спотыкаясь о валяющуюся на полу пилу, циркуляру и электрокосу 😉 Пока правда собрал «на коленке», для проверки работы ленты. Получилось примерно так:

Лента самая китайская на контроллере WS2812b, 5V , 60 диодов на метр, 5 метров (1300р). Блок питания S-100W-5 (1000р).

Схема подключения:

Результат выложил на Гитхаб: https://github.com/donpadlo/rgb_led_effect

alsa : нет звука

Потратил минут 20 чтобы собрать сборник рецептов почему может не быть звука в терминале Ubuntu

1) Проверить нашла ли alsa вашу звуковую карту вообще

aplay -l

2) Установить/переустановить alsa и pulseaudio

sudo apt install alsa-base pulseaudio

3) Проверить регуляторы звука, может быть просто в mute

sudo apt install alsa-base pulseaudio

4) Перезагрузить настройки

sudo alsa force-reload

5) Посмотреть туда ли вставлен джек

hdajacksensetest

6) Переинициализировать

alsactl init

CSS: Выравнивание содержимого блоков по вертикали

Чтобы получилось нечто подобное:


HTML:

    <div class="tile2">
        <div class="icons_left"><img height="32px" src="/images/list.png"></div>
        <div class="icons_right" ><img height="32px" src="/images/heart.png"></div>
    </div>

CSS:

.tile2{
    grid-template-columns: 50% 50%;
    display: flex;
    height: 100%;    
}
.tile2>.icons_left {
    color: #003264;
    font-weight: bold;
    font-size: xx-large;
    text-align: end;
    margin:  auto;
    cursor: pointer;
} 
.tile2>.icons_right {
    color: #003264;
    font-weight: bold;
    font-size: xx-large;
    text-align: left;
    margin:  auto;
    cursor: pointer;
}

1C: пауза при исполнении кода

Есть мнение, что необходимость паузы в коде, это признак плохой архитектуры кода. Категорически не согласен. Да любой код можно усложнить так,  чтобы избежать необходимости паузы. Но стоит ли усложнять код ради этого? Нужно искать компромисс. В моем случае, пауза понадобилась из-за того что есть ограничение по количеству отправляемых СМС в секунду со стороны провайдера. Простой способ: отправлять СМС с паузой. Сложный способ — организовать очередь отправки через..ну например регламентные задания.  Зачем сложный способ для редкой отправки  20 СМС? Вот, держите один из реализаций «Паузы»:

&НаСервере
Процедура Пауза(Секунд) Экспорт    
    ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
    ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();    
    Если ФоновоеЗадание = Неопределено Тогда
        ПараметрыН = Новый Массив;
        ПараметрыН.Добавить(Секунд);
        ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбщегоНазначенияБТС.Пауза", ПараметрыН);
    КонецЕсли;
        
    Попытка
        ФоновоеЗадание.ОжидатьЗавершения(Секунд);
    Исключение
        Возврат;
    КонецПопытки;
    
КонецПроцедуры

Нагрузочное тестирование сайта с помощью Jmeter

Задача: провести нагрузочное тестирование сайта. Выяснить сколько пользователей в минуту, он может обслужить.

Дополнительно: тестирование сервера WEBSocket, так-же используемого на том-же сервере, где и расположен сайт.

Решение: используем инструмент Jmeter от фонда Apache.

1) Скачиваем, распаковываем, запускаем из папки bin или файл jmeter.bat (Windows) или jmeter.sh (Linux)

2) На сайте плагинов скачиваем плагины Plugins Manager и JMeterWebSocketSamplers. Ложим их в папку lib\ext, Jmeter перезапускаем. При помощи Plugins Manage, в дальнейшем (если захотите) сможете устанавливать дополнительные плагины.

3) Правой клавишей щелкаем по TestPlan, и создаем поток тестирования.

Далее в настройках выставляем количество потоков, время тестирования и количество циклов

4) Добавляем авторизацию на сайте (ну или просто открытие страницы — тогда POST запрос не заполняем)

 

К этому же узлу добавим и отчетность:

5) По тому-же принципу последовательно добавляем задачи WebSocketOpen,WebSocketSingleWrite и WebSocketClose. Т.е. после авторизации пользователя мы откроем соединение, пошлем что-то на сервер и закроем соединение.

Далее играем циферками количества поток, чтобы выяснить на скольких потоках сайт упадет отдохнуть..

 

Жизнь замечательных грибов