Security vs Cloud blog | Здесь найдете заметки по безопасности, облакам и предпринимательству

Security vs Cloud blog

Здесь найдете заметки по безопасности, облакам и предпринимательству

Beer IoT - часть 3. Процесс варики сусла и управление помпами.

Продолжим автоматизацию процесса приготовления Пива.
Для начала мы разоьрались с процессом затирания в (первой и 2 части) и теперь можем управлять этим процессов в баке-заторнике.
что еще интересно автоматизировать в нашем процессе? Во-первых это перекачивание и фильтрация сусла из заторника во варочник. Во-вторых это кипячение самого сусла до нужной нам плотности (здесь история с автоматизацией весьма интересна).
Мы делаем схему HERMs и тут надо перекачать сусло и MLT (заторник) в KTL(варочник):

Тут нам потребуются управление клапанами, а также насосами. Управлять мы будем через все те же блоки реле. Сейчас едут 2 блока по 8 элементов и нам его хватит. Налнем с насосов. Мы взяли TE091-SZ - Они не дорогие и могут использоваться в пищевой промышленности. Также  у них есть большой плюс - их довольно легко мыть, просто открутив колбу.



Итак, управление насосами довольно простое. Чтобы проверить их работу нужно запитать их через 12 вольт через реле ну и запустить тестовый проект по их управлению:
PumpManage.zip (74,3KB) (C# пример для проверки насосов)

Самое интересное здесь, это логика их работы. Нам нужно отключать насосы вовремя. В принципе они нормально работают "на сухую", поэтому мы можем просто рассчитать время их включения в зависимости от производительности, А можем использовать дополнительный датчик: 


Это простая труба с турбинкой. Соответственно пока идет поток получаем наведенный ей ЭДС и мы можем на PIN'е мониторить уровень. как только уровень LOW - жидкость кончилась. Это сделаем следующий раз.
Теперь про плотность.
После того, как мы все перекачали в варочник, крайне важно, чтобы мы прокипятили все наше дело и выпарили необходимое количество воды, дабы достичь запланированной плотности сусла. Для измерения плотности сусла используют либо аэрометр либо спектрометр. Есть только одна проблема - автоматизированные спектрометры или аэрометры стоят как половина нашей домашней пивоварни, поэтому надо искать решение.
В качестве варианта, мы можем сделать следующее - реализовать собственный аэрометр во внешней смотровой трубке котла, в котором он будет плавать. Нам нужно знать текущий уровень жидкости и текущую глубину погружения аэрометра. Зная эти параметры, мы сможем выстроить его работу. Осталось найти датчики. Этим займемся в следующей части :) А пока приступим к сборке трехкотловой HERMs-пивоварни.

Beer IoT - проект автоматической облачной пивоварни на Win10 IoT и Windows Azure (Часть 2)

Отшумели праздники, и Али стал доставлять заказанные блочки для пивоварни, которые мы описывали в 1 части (http://sec360.ru/post/beer-iot-win10-iot-windows-azure-1)



Какие у нас тут появились задачи. Во-первых для управления тенами надо управлять блоком реле. Данны реле на 10A, надо на 20, поэтому ждем следующий приход, но само управление вполне подходит. Блок реле с развязкой на оптронах (черные прямоугольники), поэтому никаких резисторов ставить не надо, достаточно подключить напрямую к PIN'ам Raspberry и можно управлять. ��ажно, что данный блок имет реверсивных вход, те 5в - реле выключено, 0 - активно.
Итак, берем карту PIN'ов Raspberry PI 2:



подключаем питание блока реле на PIN 4-5 (PWR 5v, GND) и управление 1 каналом на GPID 18 (PIN 12)
Ну а дальше все проще некуда - включаем реле и отключаем реле
var gpio = GpioController.GetDefault();
pin = gpio.OpenPin(LED_PIN);
pinValue = GpioPinValue.High; //Так как вход у нас инверсный, ставим High
pin.Write(pinValue);
pin.SetDriveMode(GpioPinDriveMode.Output); //режим пина на выход
pinValue = GpioPinValue.Low;
pin.Write(pinValue);
pinValue = GpioPinValue.High;
pin.Write(pinValue);

Теперь переходим к подключению термопары. У на есть термопара DS18B20 на полноценной версии протокола 1-Wire. Он цифровой.С 1-Wire можно подключить к Raspberry напрямую и использовать программную реализацию 1-Wire протокола. Тут нам на помощь приходит github - есть готовая реализация 1-wire, портированная с C++ https://github.com/selomkofori/ds18b20_win10iot/blob/master/DS18B201WireLib/OneWire.cs
Остается с ее помощью получать температуру:

  public async Task<double> getTemperature(string deviceId)
        {
            double tempCelsius = -200;

            if (await onewireReset(deviceId))
            {
                await onewireWriteByte(0xCC); //1-Wire SKIP ROM команда (ignore device id)
                await onewireWriteByte(0x44); //DS18B20 convert T команда 
                                              

               //Ждем 750 ms на старт
                await Task.Delay(750);

                // начинаем читать данные
                await onewireReset(deviceId);
                await onewireWriteByte(0xCC); //1-Wire Skip ROM command тут можно смотреть DeviceId, мы скипаем
                await onewireWriteByte(0xBE); 

                byte tempLSB = await onewireReadByte(); //читаем lsb
                byte tempMSB = await onewireReadByte(); //читаем msb
// останавливаем отправку данных термометром await onewireReset(deviceId); // получаем температуру tempCelsius = ((tempMSB * 256) + tempLSB) / 16.0; System.Diagnostics.Debug.WriteLine("T: " + tempCelsius + " degrees C " + temp2); } return tempCelsius; }

Beer IoT - начинаем проект автоматической облачной пивоварни на Win10 IoT и Windows Azure (Часть 1)

Итак, открою серию постов про проект облачной автоматизированной пивоварни. Вести его будем на http://cloudbrew.ru, там же опубликуем исходники и ссылки на Github проекта.

Для начала давайте разберемся с технологией, Дабы понять что такого можно автоматизировать в пивоварении.
Базовый процесс зернового пивоварения состоит из 3 основных частей:
- Затирка сусла
- Варка сусла
- Охмеление
Дальше сусло переливается в бродильные емкости и это мы отдельно опишем.
На этапе затирки сусла нам потребутеся - бак-заторник, в котором должна быть фильтр-система, которая позволит потом слить сусло (или перекачать) в бак-варочник. Тут пока никакого IoT, а 50-ти литровый бак из нержавеющей стали с фильтр-системой на дне выглядит как-то так:
 
Сама затирка солода заключается в нагревании солода с водой до определенной температуры с так-называемыми температурными паузами. В зависимости от температуры, содержащийся в ферменты будут распадаться на сахара различной длины. Сами ферменты это ни что иное как белки - длинные цепочки аминокислот соединенных в цепочку пептидной связью. И вот эта пептидная связь рвется при определенных температурах. 
Соответственно на каждой температурной паузе, происходит денатурация различных ферментов. 

Вот здесь есть место для IoT. Во-первых нужно управлять нагреванием (ТЭНы) или даже управление газ-горелкой. Нам нужно получать информацию о текущей температуры в заторнике, соответственно надо использовать датчик температуры. Так как в качестве основы будет использоваться Raspberi PI 2b с Win10, то надо придумать как туда завести датчик температуры. Проблема в том что на raspbery нет аналогового входа, соответственно нужно брать цифровой датчик на 1-Wire.
 Далее возможны три простых варианта - DS18b20 (1-wire) + схемка подключения 1wire на шину I2C или можем сделать беспроводной термометр через ESP-12E (NodeMCU) или программная реализация 1-Wire на Raspberry.
Итак - на первом этапе понятно что нам нужно - термопара, Raspbery PI 2 ну и схемка DS1820 - для подключения всего этого к Raspberry :)
Продолжение следует.

PKI в .NET4 - базовые функции и возможности

По сегодняшней лекции использования инфраструктуры открытых ключей в .NET (2 курс) выкладываю первую презентацию.
Коротенько рассмотрены пространство имен System.Security.Cryptography и простые сценарии использования крипто-провайдеров. Вторую часть лекции выложу позже, скачать также можно здесь.


PKI_net4_base_functions.pdf (2,4MB)

SymmetricKey support is not available right now - JWT токены в ASP.NET vNext (beta 8)

Вот мучаешься два дня, чувствуешь себя дураком, а оказывается "SymmetricKey support is not available right now. Closing issue dup of #58".
Собственно о чем пост - в ASP.NET vNext DNX 5 (beta 8) есть JWT-токены. Но, Оказывается, использовать их с симметричной криптографией просто так не получится - по умолчанию нет поддержки SymmetricKey в SignatureProvider. 
Чтобы разрулить эту проблему, пр придется написать свой провайдер. Возмем основу AssymetricSignatureProvider и допишем поддердку MAC для SymmetricSignatureProvider. Что получилось  - в аттаче :)

SymmetricSignatureProvider_DNX5_beta8.zip (5,5KB)

Вне темы

Хотя я тут обычно делаю заметки по ИТ-специфике, хочу рассказать про технологии социальные.
6-го июля мы запускаем курс по игровым механикам для HR.

Первый набор курса бесплатный, так что если интересуютесь как раскачать народ, вовлечь в работу, то записывайтесь!