56

Как я выводил информер в камеру Hikvision

Длиннопост-кулстори о марафоне разработчика длиной почти в сутки.

ВОРНИНГ! Пост не претендует на звание точной инструкции, хотя и содержит некоторые полезные указания ближе к концу. Ну и как всегда - автор не несет ответственности за Ваши действия и возможный ущерб.

Как я выводил информер в камеру Hikvision Cctv, Видеонаблюдение, Камера, Linux, Разработка, Программирование, Raspberry Pi, Длиннопост

Поступило техническое задание: придумать, как бы вывести текст на изображение с камеры. В идеале - вывести информер для отображения температуры, получаемой с погодной станции Народного мониторинга Dozor Meteo. При необходимости изменять прошивку станции можно, но лучше нельзя. Для экспериментов была выдана камера Hikvision DS-2CD2012, но, думаю, у всех творений этой фирмы одинаковый API, поэтому описанный способ применим ко всем камерам этого бренда.
Да, кстати говоря, у большинства камер видеонаблюдения (у Hikvision тоже, разумеется) по умолчанию доступен функционал OSD - наложения текстовых плашек на изображение. Например, на снимке ниже видно, что накладывается дата и текст. И на этой же камере необходимо вывести значение термометра.

Как я выводил информер в камеру Hikvision Cctv, Видеонаблюдение, Камера, Linux, Разработка, Программирование, Raspberry Pi, Длиннопост

Именно таким путём пошел участник одного форума. В теме опубликован скрипт, интегрируемый в систему управления умным домом MajorDoMo, который через штатный API изменял значения полей OSD камеры. На этом же форуме я нашел официальную документацию Hikvision, но о ней позже.

Буквально сразу после постановки задачи в голову пришла простая мысль - написать php-скрипт, который будет формировать пакет, включая в него значение температуры, допустим, из GET-запроса, и отправлять его в камеру, к которой уже проброшены нужные порты. Скрипт этот можно разместить на хостинге, где у меня крутится сайт dubos.tech. В тот момент у меня был только доступ к FTP сервера, поэтому я не видел иных вариантов и сразу взялся это реализовывать. Сразу скажу, что путь этот - тупиковый.

В официальной доке написано, что в камеру нужно передать HTTP PUT запрос, в теле которого должен быть XML-файл с информацией. В итоге я весь вечер изучал вопрос отправки PUT запросов через PHP curl. Все варианты заканчивались ответом камеры "3 - Device Error". Да, именно к PHP у меня претензий нет, ибо составленный вручную PUT запрос тоже не прошел.

Практически отчаявшись я, руководствуясь наработками разработчика joonhshin, написал скрипт, который по расписанию (статья про cron для начинающих, которая мне очень помогла) запускался на Raspberry Pi. Этот скрипт я планировал перенести на один из роутеров, которые, как принято, работают круглосуточно и могут без особого труда взять на себя эту обязанность.

Как я выводил информер в камеру Hikvision Cctv, Видеонаблюдение, Камера, Linux, Разработка, Программирование, Raspberry Pi, Длиннопост

Честно говоря, идея с роутерами тоже не оправдала себя. В наличии были два Mikrotik'а, ZyXEL Keenetic и пара дешёвых TP-Link с прошивкой OpenWRT. Язык скриптования RouterOS от Mikrotik был мне чужд, поэтому этот вариант отпал почти сразу. Роутеры на OpenWRT тоже "пролетели", поскольку на них банально не хватило места для установки линуксовой утилиты curl. А мой любимый Keenetic тоже остался не у дел, поскольку в штатной прошивке нет полноценного доступа к SSH-консоли.

К счастью, примерно в это время я получил доступ к SSH-консоли сервера хостинга. Линуксоиды знают, что если у человека есть доступ к консоли linux, у человека есть доступ ко всему. Теперь можно модифицировать скрипт, чтобы он забирал данные с сервера Народного мониторинга и выводил их на камеру.

Как я выводил информер в камеру Hikvision Cctv, Видеонаблюдение, Камера, Linux, Разработка, Программирование, Raspberry Pi, Длиннопост

Обратите внимание, что значения posX и posY обязательно должны быть кратны 16 (например, 0, 16, 32, 48 и т.д.)

Для работы скрипта нужно зарегистрировать на сайте Народного мониторинга приложение (Профиль - Мои Приложения - Новый ключ) и ввести ключ в строку key=... (без скобок и кавычек). В uuid=... ввести любой md5-хэш - это необходимо для работы API.

Далее нужно получить ID датчика. Первым делом нужно открыть окошко устройства на сайте Народного мониторинга. В строке с интересующим нас датчиком есть строка "S*****". Число после буквы S - и есть искомый ID. (Занимательно, что такой просто способ я обнаружил только при написании статьи, раньше же пользовался более сложным вариантом).

В последней строке скрипта, понятно, указываются данные для доступа к камере.

Чтобы скрипт запускался автоматически через равные промежутки времени, нужно сконфигурировать планировщик cron, но об этом написано множество статей, учитывающих специфику для разных систем. Обратите внимание, что API Народного мониторинга не позволяет осуществлять запросы чаще, чем 1 раз в минуту. Советую ставить интервал от 5 минут, поскольку большинство датчиков (в том числе и Dozor Meteo) отправляют показания с такой периодичностью или реже.

Таким образом, задание практически выполнено. Сегодня на объекте, где нужно измерять температуру, установили новую погодную станцию, поэтому примерно через сутки (когда сервис мониторинга одобрит новое устройство) я установлю информер на рабочую камеру. Посмотреть результат работы можно будет на сайте koktebel.top.

Как я выводил информер в камеру Hikvision Cctv, Видеонаблюдение, Камера, Linux, Разработка, Программирование, Raspberry Pi, Длиннопост

Найдены возможные дубликаты

+4

интересно, сколько переходов по ссылке будет?

раскрыть ветку 1
+1

Хотите сказать, весь пост суть есть реклама "Апартаментов"? @moderator, если в самом деле так, удалите ссылки и скрины на "Коктебель"

+4

Возникает много дополнений сразу.

1. PHP Curl не существует, это в чистом виде переходники на libcurl. Всё что в CURL - всё и тут, разницы реально нету, даже основы настройки тупо передаются параметрами для libcurl.

2. wget в стоке принятом openwrt - переходник с busybox(uclient-fetch точнее уже), curl тебе и не нужен, есть куча вариантов как его собрать получше с поддержкой PUT, но можно и не начинать даже, достаточно netcat скормить предефайн текста запроса.

раскрыть ветку 3
-2

Насчет PHP - проблема, полагаю не столько в curl, сколько в камере. Линуксовая команда "curl -T ...", насколько я понял, это не именно put запрос, а просто загрузка файла. PUT запрос, составленный вручную и отправленный через hercules, привел к той же ошибке - "3 - device error".

Насчет второго пункта - не знал. Спасибо за наводку, буду "курить дзен". Впрочем, конкретно для этой задачи, я думаю, сервер хостинга подходит даже лучше, чем tp-link, поскольку последний все равно стоит в другой сети, посему не имеет никаких преимуществ.

Спасибо Пикабу за советы шарящих Пикабушников!

раскрыть ветку 2
+2

Так ты проверь tcpdump что шлёт curl при -T.

Я думаю что это косяк самой камеры и там нечто в духе запрос GET, но данные в pipe клиент шлёт как контент файла а-ля POST, такой изврат в куче такого говна есть.

UPD

Я вот у себя посмотрел и вижу что это чистый PUT. Думаю криво PUT составлял в hercules.


curl -v -T /root/coredump.conf http://localhost

Естественно его шлёт в 40x, но curl уже сам всё показал.


* Trying 127.0.0.1... * TCP_NODELAY set * Expire in 200 ms for 4 (transfer 0x555e618e49c0)
* Connected to localhost (127.0.0.1) port 80 (#0)
> PUT /coredump.conf HTTP/1.1
> Host: localhost
> User-Agent: curl/7.64.0
> Accept: */*
> Content-Length: 611
> Expect: 100-continue
> * Expire in 1000 ms for 0 (transfer 0x555e618e49c0)
< HTTP/1.1 100 Continue * We are completely uploaded and fine
< HTTP/1.1 405 Method Not Allowed
< Date: Sat, 06 Jun 2020 18:13:18 GMT
< Server: Apache
< Allow: HEAD,GET,POST,OPTIONS
< Content-Length: 220
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method PUT is not allowed for this URL.</p>
</body></html>
* Connection #0 to host localhost left intact

Так что как раз у камеры всё верно и это тупо вебморда к файловой системе по большому счёту по REST скорее всего. Может webdav...

+1

Вот кстати гайд на примере POST. Там ровно то же, только PUT команда.

https://www.egeek.me/2014/08/17/sending-http-post-request-wi...

+2

Прикольный вид ! Эхх ... И какая сейчас там температура?

раскрыть ветку 5
-2

Будет информер - увидим)

раскрыть ветку 4
+1
Всё ещё нет информера?
раскрыть ветку 1
+1
А температуру воды добавить можно?
раскрыть ветку 1
+1

Расскажи лучше - там полетать на планерх щас реально, че  для этого нужно?

раскрыть ветку 4
+1

Полетать можно. Вчера целый день летали над  морем.

"че для этого нужно?" - приехать, и гоу на гору Клементьева или в Коктебель , в конец улицы Юнге (возле погранзаставы)

раскрыть ветку 1
+1

Спасибо!

0

Реально. Хотя по таким вопросам лучше обращаться в тематическую группу, ибо я несведущ в планерах

раскрыть ветку 1
+1

Да и по статье как то напутано, приложил бы пару дампов с ваершарка, народ глядишь сравнил бы и помог, что не так  с HTTP...  А TCP пакеты можно и на ардуйне сочинять,  не бином ньютона...

+1

Странное решение, у всех камер можно дописать - название камеры. Что то вроде кам1, что мешает вам вместо названия камеры вписать имя сайта

раскрыть ветку 3
0

Имя сайта так и написано, суть не в этом. А написать вместо названия камеры температуру не получится, поскольку информация эта должна автоматически обновляться

раскрыть ветку 2
0
Если видео на сайте то можно наложить на него все что хочешь с помощью html+css
раскрыть ветку 1
+1

Не судьба мне посмотреть образец. Менять телефон не охота

Иллюстрация к комментарию
раскрыть ветку 3
0

что за телефон?

0

Странно - раньше таких проблем с сервисом IPeye не возникало. Если интересно - скрин

Иллюстрация к комментарию
раскрыть ветку 1
0

@4fatal, причина в том что ios не поддерживает mse mp4 - поэтому на айфоны передается hls, а так как поток на бесплатном тарифе - то прежде чем отдать hls надо приконектится к камере получить оттуда 30 секунд видео а потом сформировать плейлист, а мобильные браузеры не дают так долго ждать видео

Короче проблем цепочка

1) айфон не может в стримнговый протокол, ему нужен кеш

2) по дефолту кеш на бесплатном тарифе не создается

3) айфон не хочет ждать пока создастся кеш

4) вылезает данная ошибка, потому что низы не могут а верхи не хотят xD

5) что делать - хз, об этой проблеме мы теперь в курсе, но как и когда будем ее решать - неизвестно

6) об проблемах в целом и об этой в частности можно меня попинывать, но результат не гарантирован

0

А где можно посмотреть трансляцию с камеры в душевой кабинке?

-1

Чё-та людей маловато

Похожие посты
31

Что находится между идеей и кодом? Обзор 14 диаграмм UML

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Аве Кодер! Тебе пришла крутая идея продукта, но ты не хочешь увязнуть в коде и потерять целостную картинку из-за мелких деталей? Ты вот-вот присядешь за то, что крякнул корпоративный сервер и тебе нужно набить что-то крутое и айтишное?


UML, как мы знаем, является стандартизированным языком моделирования, состоящим из интегрированного набора диаграмм, разработанных, чтобы помочь разработчикам систем и программного обеспечения в определении, визуализации, конструировании и документировании артефактов программных систем, а также, к примеру, для бизнес-моделирования.


UML представляет собой набор лучших инженерных практик, которые доказали свою эффективность в моделировании больших и сложных систем и является очень важной частью разработки объектно-ориентированного программного обеспечения.


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


Для тех, кому лень читать и кто предпочитает смотреть и слушать: https://youtu.be/0I9aIP5gKCg


Основные цели дизайна UML:

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

Обеспечить механизмы расширяемости и специализации для расширения основных понятий.

Быть независимым от конкретных языков программирования и процессов разработки.

Обеспечить формальную основу для понимания языка моделирования.

Поощрять рост рынка объектно-ориентированных инструментов.

Поддержка высокоуровневых концепций разработки, таких как совместная работа, структуры, шаблоны и компоненты.

Интегрировать лучшие практики.


Диаграммы UML подразделяют на два типа - это структурные диаграммы и диаграммы поведения.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

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


Диаграммы поведения показывают динамическое поведение объектов в системе, которое можно описать, как серию изменений в системе с течением времени.


Теперь пару слов о каждой из них


Диаграмма классов

https://youtu.be/sVVJp5a41o4


Диаграмма классов - это центральная методика моделирования, которая используется практически во всех объектно-ориентированных методах. Эта диаграмма описывает типы объектов в системе и различные виды статических отношений, которые существуют между ними.


Три наиболее важных типа отношений в диаграммах классов (на самом деле их больше), это:

-- Ассоциация, которая представляет отношения между экземплярами типов, к примеру, человек работает на компанию, у компании есть несколько офисов.

-- Наследование, которое имеет непосредственное соответствие наследованию в Объектно-Ориентированном дизайне.

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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма компонентов

https://youtu.be/OiVyha3sf_I


На языке унифицированного моделирования диаграмма компонентов показывает, как компоненты соединяются вместе для формирования более крупных компонентов или программных систем.


Она иллюстрирует архитектуры компонентов программного обеспечения и зависимости между ними.

Эти программные компоненты включают в себя компоненты времени выполнения, исполняемые компоненты, а также компоненты исходного кода.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма развертывания

https://youtu.be/Yz8phtJoP7I


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

Артефакты представляют собой конкретные элементы в физическом мире, которые являются результатом процесса разработки.


Диаграмма моделирует конфигурацию времени выполнения в статическом представлении и визуализирует распределение артефактов в приложении.

В большинстве случаев это включает в себя моделирование конфигураций оборудования вместе с компонентами программного обеспечения, на которых они размещены.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма объектов

https://youtu.be/tVW5oHNfAvc


Статическая диаграмма объектов является экземпляром диаграммы класса; она показывает снимок подробного состояния системы в определенный момент времени. Разница в том, что диаграмма классов представляет собой абстрактную модель, состоящую из классов и их отношений.

Тем не менее, диаграмма объекта представляет собой экземпляр в конкретный момент, который имеет конкретный характер.Использование диаграмм объектов довольно ограничено, а именно - чтобы показать примеры структуры данных.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма пакетов

https://youtu.be/237BWanM4Ak


Диаграмма пакетов - это структурная схема UML, которая показывает пакеты и зависимости между ними.

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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма составной структуры

https://youtu.be/nsuJcMNaKeE


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


Эта диаграмма может включать внутренние части, порты, через которые части взаимодействуют друг с другом или через которые экземпляры класса взаимодействуют с частями и с внешним миром, и соединители между частями или портами. Составная структура - это набор взаимосвязанных элементов, которые взаимодействуют во время выполнения для достижения какой-либо цели. Каждый элемент имеет определенную роль в сотрудничестве.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма профилей

https://youtu.be/qBws7AfvDL8


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

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма прецедентов

https://youtu.be/BdAcxboG5No


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

Прецеденты позволяют связать то, что нам нужно от системы с тем, как система удовлетворяет эти потребности.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма деятельности

https://youtu.be/Z8PHBsNXAgc


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

Они описывают поток управления целевой системой, такой как исследование сложных бизнес-правил и операций, а также описание прецедентов и бизнес-процессов.

В UML диаграммы деятельности предназначены для моделирования как вычислительных, так и организационных процессов.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма состояний

https://youtu.be/ojCcUvGfpi8


Диаграмма состояний - это тип диаграммы, используемый в UML для описания поведения систем, который основан на концепции диаграмм состояний Дэвида Харела. Диаграммы состояний отображают разрешенные состояния и переходы, а также события, которые влияют на эти переходы. Она помогает визуализировать весь жизненный цикл объектов и, таким образом, помогает лучше понять системы, основанные на состоянии.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма последовательности

https://youtu.be/ycg3njrkk1c


Диаграмма последовательности моделирует взаимодействие объектов на основе временной последовательности. Она показывает, как одни объекты взаимодействуют с другими в конкретном прецеденте.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма Коммуникации

https://youtu.be/KVLJj9xOq0E


Как и диаграмма последовательности, диаграмма коммуникации также используется для моделирования динамического поведения прецедента. Если сравнивать с Диаграммой последовательности, Диаграмма коммуникации больше сфокусирована на показе взаимодействия объектов, а не временной последовательности. На самом деле, диаграмма коммуникации и диаграмма последовательности семантически эквивалентны и могут перетекать одна в другую.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Диаграмма обзора взаимодействия

https://youtu.be/E0OJG8ojEAg


Диаграмма обзора взаимодействий фокусируется на обзоре потока управления взаимодействиями. Это вариант Диаграммы деятельности, где узлами являются взаимодействия или события взаимодействия. Диаграмма обзора взаимодействий описывает взаимодействия, в которых сообщения и линии жизни скрыты. Мы можем связать «реальные» диаграммы и добиться высокой степени навигации между диаграммами внутри диаграммы обзора взаимодействия.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Временная диаграмма

https://youtu.be/NKTyDQUkLoM


Временная диаграмма показывает поведение объекта (ов) в данный период времени. По сути - это особая форма диаграммы последовательности и различия между ними состоят в том, что оси меняются местами так, что время увеличивается слева направо, а линии жизни отображаются в отдельных отсеках, расположенных вертикально.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма
Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

Зачем в UML столько диаграмм?


Причина этого заключается в том, что можно взглянуть на систему с разных точек зрения ведь в разработке программного обеспечения будут участвовать многие заинтересованные стороны, такие как: аналитики, конструкторы, кодеры, тестеры, контроль качества, клиенты, технические авторы.

Что находится между идеей и кодом? Обзор 14 диаграмм UML IT, Длиннопост, Софт, Программирование, Программа, Программист, Разработка, Диаграмма

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

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

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

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



Аве!

Показать полностью 17
131

Во что поиграть программисту на карантине

На карантине я решил освоить программирование на Python…, но залип на играх. На эту тему есть много игрушек, в которых программисту можно весело провести время. Я опишу некоторые из тех, которые меня заинтересовали.

TIS-100

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

Игра, от Zachtronics, которая уже считается классикой и практически породила свой собственный жанр “zach-like”, (не путать с “souls-like” )))))), а то будет боооооль). Без поллитра не разберешься, но когда разберешься, то становится интересно, и дальше все интереснее. Минус - сюжет только на английском языке. Если любите сложные задачки - очень рекомендую.


Ссылка на Steam: https://store.steampowered.com/app/370360/TIS100/

SHENZHEN I/O

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

Если понравилась предыдущая игрушка, то также посмотрите на ее более продвинутую версию от того же разработчика - с более интересными геймплейными возможностями, поддержкой мастерской и большим комьюнити.


Также у Zachtronics есть и другие игры, но они похожи друг на друга и напоминают перечисленные выше, что я не стал о них писать. Кто захочет познакомиться сам.


Ссылка на Steam: https://store.steampowered.com/app/504210/SHENZHEN_IO/

ASTRA-256 Assembler

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

После игр Зака, наткнулся на эту игру, которая делается уже усилиями наших разработчиков. Хотя это скорее не игра, а олд-скульный компьютер, или калькулятор, с возможностями программирования на Ассемблере. Также программа дает представление о том как работает железо компьютера. У проекта пока ранний доступ и не слишком много отзывов, но есть мастерская и подробная документация. Также рекомендую к ознакомлению.


Ссылка на Steam: https://store.steampowered.com/app/1260310/ASTRA256_Assembler/

Basic8

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

Если наелись Ассемблером, тогда вот вам старый-добрый Бейсик в новой обертке! Те, из вас, кто как и я в школьные годы пытались создать что-то свое при помощи этого языка, обязательно должны попробовать эту игру. Программа малоизвестна и у нее также маловато отзывов, пока что...


Ссылка на Steam: https://store.steampowered.com/app/767240/BASIC8/

Human Resource Machine и 7 Billion Humans

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

Эти 2 игры от авторов World of Goo я решил объединить под одним заголовком, потому что они очень похожи и являются более простыми играми на тему программирования. Подойдет даже ребенку. Хотя я не уверен, что под конец игры ваше чадо не будет с глазами красными от слез и кода =)) Также, может подойти, чтобы познакомиться с основами и скоротать несколько вечеров.


Ссылка на Steam: https://store.steampowered.com/app/375820/Human_Resource_Machine

Ссылка на Steam #2: https://store.steampowered.com/app/792100/7_Billion_Humans

while True: learn()

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

Нейросети, коты, программирование и приятный визуальный стиль - ядреная смесь! Ненапряжно, интересно, забавно. Если переиграли во все выше перечисленное, тогда посмотрите и данную игру.


Ссылка на Steam: https://store.steampowered.com/app/619150/while_True_learn/

Gladiabots

Во что поиграть программисту на карантине Программирование, Инди игра, Компьютерные игры, Подборка, Симулятор, Разработка, Длиннопост

Пока коты спят... как вам программирование ИИ боевых роботов с последующими гладиаторскими боями в одиночном режиме или в мультиплеере? Заинтересовало? Тогда обязательно посмотрите эту игру. Думаю, затянет вас надолго =).


Ссылка на Steam: https://store.steampowered.com/app/871930/Gladiabots/

Я ничего интересного не упустил? Возможно, вы в комментариях дополните список другими интересными проектами?

Показать полностью 5
1073

WiFi Видеонаблюдение, разочарование в стандарте 802.11

Я видел на пикабу много постов про разные профессии и это было очень интересно, а кому то наверняка и полезно. Моя профессия не самая распространённая, я "Специалист экспертного отдела", по факту, от лица Российской компании на китайском заводе разрабатываю/выпускаю камеры видеонаблюдения. И когда я сталкиваюсь с какой либо проблемой, то оказывается, что в интернете о ней нет практически никакой информации и мне приходится самому собирать информацию от китайский вендоров и наших парнеров. На основании этой информации составлять тест план и разбираться с этой проблемой. Статья как раз посвящена одной из таких проблем и будет полезна всем, кто хоть как то связан с видеонаблюдением - производителям, монтажникам, конечным потребителям и т.д.

Как вы догадались из названия, речь пойдёт о подключении камер видеонаблюдения по сети  WiFi.
В общем, решили мы выпустить камеру без LAN'а (без разъёма RJ-45) с возможностью подключения только по WiFi. На стадии тестирования образцов и сравнения их с конкурентами, мы заметили что на одном роутере адекватно работает только 2-3 камеры. А у нас их было 6 или 7 для сравнения. И это было немного удивительно, ведь битрейт у камер был в районе 6000 кбит\с и по идее одного роутера должно быть достаточно что бы подключить все камеры.
На тот момент мы использовали, если мне не изменяет память, роутер TP-Link Archer А5. На веб интерфейсе роутера мы увидели что загрузка ЦП уходит в 100% и начали грешить на то что у нас слабый роутер, не вывозит видеопоток с IP камер.

Тогда мы взяли точку доступа  UniFi AP AC PRO, потому что на её контроллере есть обширный функционал по анализу состояния сети. С учётом всех помех в офисе, на частоте 2.4Ггц мы получили канал шириной 40 Мб\с и провели следующий тест:

Методика тестирования:

1) Мы замеряем нагрузку на точке доступа без камер.

2) Затем подключаем одну камеру , фиксируем как изменяется нагрузка на точку , записываем данные в таблицу.

3)Потом подключаем 2 камеру и фиксируем нагрузку на точку при подключении двух камер

И т.д.


Условия тестирования:

Камеры подключены к серверу видеонаблюдения на дефолтных настройках,( для 2Mp камер это : переменный битрейт 4096, GOP 20, FPS 25, качество кодирования - лучшее) включен звук, пишет по детектору, около 30% кадра занимает включённый маятник.


Ведём с результатами тестирования.

В таблице мы фиксируем загрузку ЦП, памяти и трафик ( потребляемый от общей ширины канала в 40Мб\с.). Так же фиксируем качество потока при Live - просмотре на сервере в

основном потоке.

WiFi Видеонаблюдение, разочарование в стандарте 802.11 Cctv, Видеонаблюдение, Wi-Fi, Китайский, Завод, Длиннопост

Результат:

Исходя из данных в таблице мы видим что подключая первые 4 камеры , нагрузка на процессор растёт на 3-5% за каждую камеру. Память камеры вообще практически не используют. 6 камер на 1% загрузили память.


Но при подключении 5 и 6ой камеры рост нагрузки на процессор останавливается и начинаются проблемы с потоком и растут дропы пакетов по вай фаю.

При этом используется только половина ширины канала - 21.5Мб\с.. В этот же момент замеряем пропускную способность канала через iperf и видим что есть ещё 20Мб\с. свободной ширины канала.


Из этого следует что все наши предположения о том что нам не хватает мощности роутера, пропускной способности, хороших условий для Wifi без помех , оказались в корне не верны.

Мы думали что у нас плохие условия, много помех. слабое оборудование и тд. и пытались исправить эти проблемы.


По факту проблема абсолютно другая и кроется в самих принципах работы WIFi сетей.

Проблема в том что на WiFi сеть, (как на среду передачи данных), перекладывается обязанность устранения коллизий. Вдобавок к этому, WiFi единовременно может работать только с одним клиентом, остальные ждут и находятся в очереди.

При подключению по кабелю, свитч сам работает над устранением коллизий и приотирезации трафика, а благодаря кабелю он может единовременно общаться со всеми подключенными клиентами.


При подключению по WIFI Устройство должно само анализировать среду передачи данных на наличие помех, прослушивать канал на наличие других устройств передающих трафик, дождаться конца передачи (освобождения канала) и только при этих условиях начинать передачу. Для этого используются дополнительные инструменты и протоколы которые и вызывают задержки трафика и следовательно проблемы с потоком.

Чем больше устройств подключено по WiFi на одной точке, тем больше очередь ожидания благоприятной среды для передачи данных и при количестве 4-6 камер эта очередь становится критической.


Я предполагаю что на количество камер, для создание критической очереди, может влиять битрейт и количество движения в кадре и в принципе работа детектора движения, но это нужно исследовать отдельно, если вообще нужно, потому что корень проблемы не в этом.


В данной статье,(https://www.proxim.com/technology/worp) некий производитель Proxim описывает свой протокол WORP, который оптимизирует служебные протоколы в среде передачи данных WiFi и даёт возможность подключить бОльшее количество WiFi камер к своей точке доступа (которые они производят) которая использует ,вышеуказанный протокол WORP.


В этой статье ссылаются на непригодность протокола 802.11 MAC используемого в текущих WiFi сетях стандарта 802.11 для создания точки доступа с множеством подключенных устройств с аудио и видео трафиком из за создания заторов на канале, в следствии согласования приоритетов передачи трафика между устройствами.


Протокол 802.11 MAC(https://ru.wikipedia.org/wiki/IEEE_802.11e)  использует протокол DCF (https://ru.wikipedia.org/wiki/Distributed_coordination_funct...), чтобы разделить эфир между множеством станций.

А протокол DCF в свою очередь базируется на протоколе CSMA/CA (https://ru.wikipedia.org/wiki/CSMA/CA) который как раз и производит прослушивание канала, согласование передачи трафика с другими WiFi устройствами и этим самым должен предотвращать появление колизий.


При подключении нескольких WiFi устройств к одной точке, они начинают выстраивать между собой очередь передачи трафика и ,в случае с камерами, при подключении 6ой камеры у нас переполняется очередь до "критических" значений задержек и появляются дикие лаги на видео.

Если камеры разнести друг от друга, чтобы они не могли согласовывать между собой приоритеты подачи трафика, то они все начинают слать трафик одновременно что приводит к образованию коллизий и следовательно потеря пакетов приводит к ухудшению видеопотока.

Вывод: В силу особенностей работы беспроводных сетей стандарта 802.11, на одном роутере адекватно будут работать только 3-5 2Mp камер со средними настройками.

Что касается 5Ггц - в видеонаблюдении они бесполезны. Полосы пропускания в 2.4Ггц достаточно для камеры, а дальнобойность и пробивная способность препятствий  у 5Ггц намного меньше.

P.S. - Моя первая статья, написана сугубо технарьским языком, не судите строго :3
P.S.S. - Если вам интересны ещё какие либо особенности тестирования\производства камер видеонаблюдения, особенности их работы, как работать с китайцами - пишите в комментариях, напишу ещё статьи если это будет вам интересно)

Показать полностью 1
383

Стартап на кузове машины

Работаю водителем, но — прошлое даёт о себе знать, — и потому кузов моей служебной машины в ожидании очередной мойки собственноручно расписан (в промежутках между разгрузками-загрузками) всякими умными словами, типа «PHP», «MySQL», «Python», «JQuery» и пр. На днях возвращаюсь к машинке и вижу, как двое юношей, — лет по 14 каждому, —сосредоточенно дополняют роспись. Подхожу.

— Что рисуем, художники?

— Ой, это ваша машина? Извините! Да мы увидели, что у вас тут языки программирования написаны, ну и решили дописать название своего, всё равно хуже не станет.

— Своего?! Какого своего?!

И тут ребята мне рассказывают, что при помощи языка Луэ они самостоятельно разработали свой язык программирования под названием Next. Дальше расспрашивать не стал — может, и зря, лишнего времени не было.

Ребята, если вы рассказали мне правду и читаете это на Пикабу — не бросайте это дело! Вы молодцы! Если ваш Next войдёт в обиход — обещаю изучить и даже что-нибудь на нём написать. Может, и с работы водителя соскочу когда-нибудь благодаря вам. Только документацию нормальную сделайте.

71

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Уважаемые друзья!


Мы решили поделиться с Вами бюджетным готовым решением, надеемся Вы оцените наши старания. Решение проверенное, рабочее. Во вложении можно скачать все файлы программ и настройки. Отдаем все бесплатно.


Умный дом для заказчика в основном «игрушка» которым можно похвастаться перед друзьями, но эти игры стоят не малых усилий интеграторам!


Речь пойдет о некоторых проблемах и решениях, связанных именно с освещением в доме, как о неотъемлемом блоке «умного дома».


Проблема 1: Если система централизованная, то в случае сбоя центрального контроллера программа не может управлять реле включения света.


Решение: Использовать распределенные модули управления с внутренней логикой, по нашему опыту одним из самых зарекомендовавших себя устройств в этом — программируемое реле ПР200 производства компании ОВЕН. Советуем использовать версию 220в, т.к. бытовые выключатели рассчитаны именно на это напряжение и будет меньше проблем с логической «единицей» на дискретном входе.

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Это устройство имеет 8 каналов (реле) которые можно запрограммировать с использованием внутренней логики (как распределенную систему), дополнительно подключаются еще модули расширения 2шт. по 8 каналов, но тут есть риск остаться без большего количество управляемых светильников при выходе из строя самого ПР200 (8 каналов против 24), если соберетесь экономить, подумайте!

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Несмотря на то, что программу выглядит просто, к ней мы шли несколько лет не по своей вине, компания Овен относительно недавно (после появления ПР200) добавила возможность управлять сетевой переменной как снаружи, так и изнутри.


Подробнее о программе:


I8 – это дискретный вход с 8 выключателя в доме или комнате


RTRIG – детектор переднего, необходим для формирования единичного (на один цикл программы) импульса


TO INT – преобразования Bool в INT можно было бы и обойтись, но Slave сетевая переменная в Owen Logic не поддерживает bool.


XOR – исключающее или, если на одном входе 1, то и выход 1, если на оба входа подать 1 выход обнулится, основной элемент программы, который решает по нажатию на выключатель включить или выключить свет.


Реле8 – входная и выходная сетевая переменная, как я и говорил выше с недавнего времени можно использовать эти две переменные с одним регистром (адресом) Modbus, это нам дает возможность сохранить в нее необходимое нам состояние как снаружи, так и внутри без использования различных триггеров. Эти сетевые переменные имеют энергонезависимую память, поэтому при скачке напряжения освещение вернется в последнее состояние.


TO BOOL – конвертируем INT в BOOL значение, потому как реле на выходе имеет состояние False/True.


Шаг 1: программу для 8 каналов можно скачать по ссылке в конце статьи и залить в программируемое реле, не забудьте сменить целевую платформу для своей версии ПР200/110 иначе прошить устройство не удастся!


Проблема 2: стандартные бытовые выключатели имеют состояния включен либо выключен, что в корне противоречит логике управления освещением в умном доме, нам нужны кнопки без фиксации (с пружинками).


Решение 1: Использовать готовые кнопки без фиксации, которые есть у большинства производителей выключателей таких как Shneider, Biticino, ABB и др. (рекомендованное решение, хоть кнопки в одном положении и включенных и выключенных ламп это выглядит эстетически красиво)


Решение 2: Отлавливать в ПР200/110 изменение состояния входа при использование типичного бытового выключателя с фиксацией и дальше посылать импульс программе которую скачали выше, если свет был включен то он погаснет и наоборот (не рекомендуется, т.к. через некоторое время все кнопки будут перепутаны верх и низ)


Проблема 3: верхний уровень у большинства производителей систем умного дома не дотягивает до эстетического и функционального совершенства.


Решение: используем HomeKit от Apple, которое: функционально, удобно и есть голосовое управление.


Шаг 2: стыкуем ПР200/110 с HomeKit


Для этого необходимы следующие инструменты:


Решение рекомендованное для демонстраций:


Raspberry Pi 2/3/4 и к нему usb конвертер rs485 (например с Alliexpress)

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Решение рекомендованное для инсталляций:

Устройство на базе модуля Raspberry CM3+ в промышленном исполнении c 2 двумя встроенными RS485 портами:

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Устройство AntexGate. Документацию можно посмотреть тут.

Подключите Ваше устройство на базе Raspberry к питанию и домашней сети желательно патчкордом, а не по wifi.


Соедините RS485 порт Вашего устройства и ПР200/110.


Далее определите IP адрес который выдал Ваш роутер и подключитесь по SSh например через программу PUTTY (по умолчанию логин pi пароль raspberry)


Установите программный продукт node-red для стыковки протокола HomeKit на верхнем уровне и Modbus Rtu на нижнем, смотри инструкцию по установке тут.


Не забудьте сделать Ваш node-red сервисом для автозагрузки.


Установите пакет HomeKit и modbus для node-red


cd ~/.node-red
npm install node-red-contrib-homekit
npm install node-red-contrib-modbus
sudo reboot

Ждем перезагрузки и переходим в браузер «ВАШ IP»:1880 (например 192.168.1.110:1880)


Копируем следующий поток (код в конце статьи) и вставляем в веб интерфейс «движка» правил node-red


Заходим в Menu -> import -> вставляем код потока

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост
Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост
Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Необходимо применить поток нажав на кнопку Deploy


В случае неудачи советуем правильно указать RS485 порт в настройках Modbus плагина «Запрос модбас» и «Write Reset FC6» (пример /dev/ttyUSB0).


Для достоверности перезагрузите Ваше устройство.


Шаг 3. Настройка приложения на Вашем Apple устройстве довольно простая.

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Даем имя нашему дому по желанию, в нашем примере ПР200

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Добавляем и соглашаемся использовать несертифицированный аксессуар

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Вводим код доступа, в нашем случае 111 11 111, его можно заменить в настройках Node-red в каждом из аксессуаров HomeKit

Умный Дом — голосовое управление в три шага. Raspberry + HomeKit Raspberry pi, Homekit, Smarthouse, Контроллер, Интернет вещей, Программирование, Длиннопост

Добавляем все наши лампы в комнаты, это можно сделать позже.


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


Внимание:


Мы не агитируем к коммерческому использованию протокол HomeKit, любые действия противоречащие лицензионному соглашению APPLE по использованию протокола HomeKit разработчик берет на себя!


Программу для ОВЕН ПР200 и скрипт для NodeRed можно бесплатно скачать тут.

Показать полностью 11
76

Разработка IoT-шлюза на базе Raspberry CM3+

Разработка IoT-шлюза на базе Raspberry CM3+ Raspberry pi, Интернет вещей, Промышленность, Программирование, Автоматизация, Вагинальный контроллер, Длиннопост

Рисунок 1 — Плата устройства

Большой опыт работы в сфере промышленной автоматизации и АСУТП, казалось бы, должен способствовать тому, что со временем уже много всего видел и много всего знаешь. Но не тут-то было. Оказывается, иногда могут возникать задачи и проекты, которые трудно реализовать стандартными средствами. Так под один крупный проект по мониторингу и управлению в «облаке» одного небезызвестного завода N требовалось найти подходящее железо. Однако оказалось, что в России по требованиям помехозащищенности устройства и открытости системы ничего подходящего не существует. Попытка заказать идеально подходящее нам устройство из-за рубежа провалилась, поскольку на территорию нашей страны оборудование с пометкой «IoT» весьма трудно ввести в промышленных масштабах. Другие же поставщики не устроили сроками доставки в 12 недель при небольших объемах и ценой. Поэтому в голове родилась и плотно осела мысль о создании своего устройства. Причем такого, чтобы оно было универсальным и подходило не только конкретно под этот один проект, а под множество других. В итоге от момента зарождения идеи, подбора поставщиков и корпуса, разработки платы, её отладки и тестирования, написания инструкций и технической документации прошло весьма много времени. Но зато теперь я держу с легким трепетом в руках полностью законченное и рабочее устройство, и могу заявлять, что мы это сделали!

Почему именно Raspberry?


Raspberry Pi – это небольшой и дешевый универсальный микрокомпьютер, гибко настраиваемый под любые задачи. С 2014 года он выпускается как самостоятельный вычислительный модуль Compute Module, то есть из привычной платы с различными интерфейсами и разъемами осталось только самое важное: процессор, ПЗУ и ОЗУ. Такое исполнение позволяет использовать это устройство для любых мыслимых и немыслимых задач, все лишь упирается в возможности фантазии для создания обвязки вокруг модуля. Стоит также заметить, что с момента выхода в свет первой версии устройства вышло уже три версии модулей, а после выхода Raspberry Pi 4, вероятно, стоит ожидать еще и четвертую версию в скором времени. Всё это говорит о том, что разработчики активно развивают свой продукт, увеличивают его мощность и быстродействие, и что их устройство пользуется определенной популярностью у людей. Эта популярность не беспочвенна: за всё это время они зарекомендовали себя как надежные устройства, способные решать задачи различного уровня в любых условиях, даже в космосе. Также программировать на Raspberry Pi условно просто, они обладают большим количеством интеграторов по всему миру.


Открытая операционная система Linux позволяет устанавливать на устройство абсолютно любое программное обеспечение в зависимости от требуемой задачи. Например для решений в области умного дома возможны стыковки с OpenHab, Home Assistant, iRidiumMobile, NodeRed и др. Для промышленности возможна установка SCADA-систем, таких как CODESYS, Rapid SCADA, OpenSCADA с возможностью использовать устройство как шлюз для передачи данных на верхний уровень по протоколам MQTT, http, REST API или CoAP. Также возможна интеграция с различными облачными сервисами.

Что по интерфейсам?

Разработка IoT-шлюза на базе Raspberry CM3+ Raspberry pi, Интернет вещей, Промышленность, Программирование, Автоматизация, Вагинальный контроллер, Длиннопост

Рисунок 2 — Вид платы сверху и снизу

Устройство в минимальном исполнение поддерживает следующие интерфейсы:


- RS485 х 2;

- RS232 х 1;

- CanBus х 1;

- 1-Wire х 1;

- USB х 1;

- Ethernet х 1;

- SMA x 2;

- SIM х 1;

- miniPCIe х 2;

- HDMI 4k х 1;

- MicroUSB х 1;

- MicroSD х 1;

- GPIO х 1.

- LED х 1 (программируемый);


Вышеописанные интерфейсы позволяют внедрить устройство практический в любой проект. А дополнительные аппаратные модули для установки в слоты Mini PCI-e от сторонних производителей решают проблему с наличием связи и интернета у устройства. Такой путь с установкой модулей связи нами был выбран не случайно, поскольку наличие USB-адаптеров (так называемых «свистков») является не очень надежным и качественным вариантом, а установка промышленных роутеров по типу Robustel R2000-3P является дорогостоящим (около 12 т.р.). Поэтому мы остановились на установке двух разъемов под модули Mini PCI-e, которые можно использовать по собственному желанию:


3G, LTE, GPRS модуль (HUAWEI MU709s-2, цена: 2,5 т.р.);

Wi-Fi модуль с возможностью подключения к нему направленной антенны;

NB-IoT модуль;

LoraWan модуль для построения сети «интернет вещей».


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

Дополнительные решения

- Аппаратный watchdog;

- Аппаратные часы реального времени;

- Энергонезависимая память EEPROM;

- Металлический корпус и крышки (алюминий 3 мм);

- Диапазон питания 9-36 В;

- Температурный диапазон -25...+80°C (по документам, тесты еще не проводились).

Разработка IoT-шлюза на базе Raspberry CM3+ Raspberry pi, Интернет вещей, Промышленность, Программирование, Автоматизация, Вагинальный контроллер, Длиннопост

Рисунок 3 — Устройство AntexGate в корпусе

Показать полностью 2
99

О САПР KiCad

Привет народ! В прошлой своей мини статье я затронул тему изготовления лицевых панелей в САПР KiCad. Теперь, я хочу рассказать о том, как я перешел на САПР KICad.


Я долгое время пользовался программой Altium Designer(около 3-х лет), потом я решил перейти на ОС семейства Linux. А в Linux как говориться своя атмосфера и с запуском WIndows программ, могут возникнуть проблемы. Правда, в Linux, есть очень хорошая программа - Wine, с помощью которой я запускал игры, и некоторый софт. За недельку ковыряний мне удалось запустить Altium. Есть сайт winehq, на котором можно посмотреть совместимость Windows программ(игр) с Wine.


Далее я стал искать альтернативы Altium'у, по функционалу и главное что бы софт запускался в Linux нативно, и желательно был кроссплатформенным. Я попробовал САПР Eagle, но она мне не понравилась -  были проблемы с 3D просмотром спроектированных плат и были ограничения в бесплатной версии.


В процессе поиска я нашел САПР LibrePCB. Ссылка на сайт - https://librepcb.org/ . Данный проект разрабатывают энтузиасты, и я на нем долго не задержался.


Следующим был KiCad. Поначалу я долго привыкал к интерфейсу, в дальнейшем я изучил горячие клавиши и прочие полезности этой программы. Это уже была полностью бесплатная САПР, с просмотрщиком 3д(привет трассировка лучами), который я так люблю.  В KiCad'е уже не было ни каких ограничений, он был полностью бесплатен и открыт. К тому же, у него была большая аудитория пользователей и пара больших  форумов, где можно было найти ответы на свои вопросы.


Ссылка на один из англоязычных форумов https://forum.kicad.info/


Пример рендера платы, со включенным режимом "трассировка лучами":

О САПР KiCad Linux, Сапр, Разработка, Электроника, Видео, Длиннопост

Конечно KiCad не идеален, есть много минусов. Например такой минус, как то, что нельзя использовать другие шрифты, кроме того, что забит где-то в исходниках. А как бы хотелось использовать гостовский шрифт(мне он очень нравится) или какой либо другой.


Что меня бесило - это стандартная цветовая тема оформления KiCad. Так как я особо не люблю белый цвет, особенно когда сидишь работаешь ночью, и экран монитора светит как прожектор, и от этого очень сильно устают глаза. Я полез в интернет и начал искать решение данной проблемы, в итоге я нашел различные цветовые темы.


Пример цветовой темы, которую использую я:

О САПР KiCad Linux, Сапр, Разработка, Электроника, Видео, Длиннопост
О САПР KiCad Linux, Сапр, Разработка, Электроника, Видео, Длиннопост

Ссылка на репозиторий с темами https://github.com/pointhi/kicad-color-schemes В репозитории на выбор светлые и темные темы.


Далее, я столкнулся с проблемой формирования BOM листов(списки компонентов) и сборочных чертежей. Дело в том, что при сборке плат, удобно на экране монитора видеть как сборочный чертеж, так и BOM лист. Я пробовал разбираться со встроенными генераторами BOM листов, но забросил со временем это дело.


Списки компонентов я составлял в гугл таблицах, что не очень удобно и требует внимательности + время. Поиски привели меня к плагину Interactive HTML BOM generation. Данный плагин очень сильно автоматизировал мою рутину при составлении BOM и облегчил монтаж печатных плат.


Плагин полностью автономен, после его запуска создается html файл, который не имеет каких либо зависимостей и может быть открыт любым браузером. Т.е. вся информация храниться в одном файле.


Ссылка на плагин https://github.com/openscopeproject/InteractiveHtmlBom


Пример работы плагина:

О САПР KiCad Linux, Сапр, Разработка, Электроника, Видео, Длиннопост

Видео о работе с плагином:

Чуть больше года я был пользователем ОС семейства LInux, пока не обновил железо своего ПК на платформу, на базе Ryzen. Что подтолкнуло меня на использование ОС Windows 10. Со сменной операционной системы, у меня не возникло желание сменить KiСad, на какой либо другой софт.

Показать полностью 4 1
112

Подключение PIR(датчика движения) к RaspberryPi.

В одном из своих постов я описывал как сделать умное зеркало. В комментариях поступило предложение подключить датчик движения. Опишу процесс подключения датчика,может быть кому-то будет полезна эта информация

Контакты на датчике:

Подключение PIR(датчика движения) к RaspberryPi. Зеркало, Raspberry pi, Arduino, Датчик, Датчик движения, Умный дом, Linux, Длиннопост

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

Подключение датчика к GPIO:
GND-2 пин GPIO
OUT-11 пин GPIO
+5V-6 пин GPIO

Подключение PIR(датчика движения) к RaspberryPi. Зеркало, Raspberry pi, Arduino, Датчик, Датчик движения, Умный дом, Linux, Длиннопост

Создание скрипта на питоне:

Теперь мы делаем скрипт python.
Создаем файл в каталоге MagicMirror с расширением .py(я назвал pir.py). Открываем этот файл любым текстовым редактором и прописываем туда следующие строки :

#!/usr/bin/env python

import sys
import time
import RPi.GPIO as io 
import subprocess

io.setmode(io.BOARD)
SHUTOFF_DELAY = 600 # секунды
PIR_PIN=11

def main():
    io.setup(PIR_PIN, io.IN)
    turned_off = False
    last_motion_time = time.time()
    while True:
        if io.input(PIR_PIN):
            last_motion_time = time.time()
            sys.stdout.flush()
            if turned_off:
                turned_off = False
                turn_on()
        else:
if not turned_off and time.time() > (last_motion_time + SHUTOFF_DELAY):
                turned_off = True
                turn_off()
            if not turned_off and time.time() > (last_motion_time + 1):
        time.sleep(.1)
def turn_on():
    subprocess.call("sh /home/pi/MagicMirror/monitor_on.sh", shell=True)

def turn_off():
    subprocess.call("sh /home/pi/MagicMirror/monitor_off.sh", shell=True)

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        io.cleanup()
Проверяем скрипт. Если датчик не улавливает движения в течение 600с(10мин), то монитор выключается. Всё работает
Теперь сделаем так, чтобы скрипт запускался автоматическое при запуске системы. Для этого Переходим по этому адресу ~/.config/lxsession /, открываем LXDE-pi в текстовом редакторе и добавляем эту строку :
@sudo / usr / bin / python /home/pi/MagicMirror/pir.py
Сохраняем изменения, выходим и перезагружаем raspberry pi.
Мои посты:

Умное зеркало на Raspberry pi 4

Процесс создания умного зеркала на raspberry pi.

Показать полностью 1
857

Процесс создания умного зеркала на raspberry pi.

Что нам потребуется :
-raspberry pi 2-4(в моем случае raspberry pi 4)
-Карта памяти не меньше 8гб
-блок питания 5В
-монитор, чем больше тем лучше (я использовал 24-х дюймовый монитор)
-зеркало гизелла или стекло с наклеенной зеркальной плёнкой
-рамка для зеркала
-hdmi провод
-провод питания для raspberry pi и для монитора

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

6)Дожидаемся окончания установки операционной системы.
7)После перезагрузки видим установленный Raspbian

Установка MagicMirror:
Здесь все предельно просто.
открываем окно терминала и вводим эту команду

bash -c "$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/maste...)"

Началась установка MagicMirror.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

После установки запустится окно умного зеркала,чтобы его свернуть нажимаем Ctrl+M.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Включение русского языка:
1)Переходим по адресу /home/pi/MagicMirror/config и открываем config.js(далее просто конфиг) в текстовом редакторе. В строке language заменяем значение "en" на "ru". Сохраняем файл config.js.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

2)Разворачиваем окно MagicMirror и перезапускаем его сочетанием клавиш Ctrl+R. Теперь все модули, кроме комплиментов и новостей, переведены на русский язык.

Настройка погоды:
1)По этой ссылке скачиваем архив городов, распаковываем его и находим свой город.
2)Регистрируемся на Openweathermap.org по этой ссылке и получаем api_key
3)Открываем конфиг, ищем модули "currentweather", "weatherforecast". В поле location указываем ваш город. В поле locationID указываем ID города из скачанного архива. В поле appid указываем api_key, который мы получили на openweathermap.org.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Сохраняем все изменения и перезагружаем MagicMirror. Теперь модуль погоды показывает погоду вашего города

Настройка календаря :
Открываем конфиг и ищем модуль "calendar". В поле header указываем название календаря, оно будет отображаться в зеркале . В поле URL вы можете указать URL своего календаря Google, Icloud или любого другого календаря.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Сохраняем конфиг и перезапускаем приложение MagicMirror.

Настройка новостей :
В конфиге находим модуль "newsfeed". В поле title изменяем название источника новостей, а в поле URL указываем ссылку на источник новостей rss.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Сохраняем конфиг и перезапускаем приложение MagicMirror. Теперь модуль новостей показывает новости из источника, который вы указали.

Модуль комплиментов :
Лично я отключил этот модуль(удалил в конфиге). Кому-то понравится этот модуль, поэтому опишу процесс изменения английских комплиментов на русские.
Переходим по адресу home/pi/MagicMirror /modules/default/compliments/ и Открываем файл compliments.js в текстовом редакторе. Находим строку compliments, ниже указаны комплименты на английском, заменяем на свои и сохраняем файл. Перезапускаем приложение MagicMirror. Теперь текст в модуле комплименты отображается на русском языке.

Добавление других модулей:
1)Переходим по ссылке, выбираем интересующий вас модуль и скачиваем его.
2)скачанный модуль перемещаем по адресу :home/pi/MagicMirror /modules/
3)Изучаем файл Readme и редактииуем конфиг согласно инструкции.
4)Сохраняем все изменения и перезапускаем MagicMirror.

Автозапуск MagicMirror при перезагрузке raspberry pi:
1)Открываем окно терминала и вводим эти команды:

sudo npm install -g pm2

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

sudopm2 startup

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

cd ~
nano mm.sh

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Откроется редактор текста, добавляем следующие строки:

cd ~/MagicMirror
DISPLAY=:0 npm start

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Сохраняем изменения и закрываем, используя сочетания клавиш CTRL+O и CTRL+X.

Далее поочерёдно вводим эти команды :

chmod +x mm.sh

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

pm2 start mm.sh

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

pm2 save

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Закрываем окно терминала и перезагружаем RaspbianOS. Теперь при перезагрузке MagicMirror запускается автоматически

Отключение сна :
Открываем окно термина и вводим команду:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Добавляем строки в конец файла
@xset s noblank
@xset s off
@xset -dpms

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

Выходим, сохраняя изменения и вводим новую команду:

sudo nano /etc/lightdm/lightdm.conf

В текстовом редакторе прокручиваем вниз до раздела  [SeatDefaults] и находим xserver-command. Измените строку, чтобы она выглядела так:
xserver-command=X -s 0 -dpms
Нажимаем CTRL+X затем Y.

Процесс создания умного зеркала на raspberry pi. Умный дом, Raspberry pi, Arduino, Зеркало, Инструкция, Как?, Linux, Длиннопост

С программной частью закончено, осталось только сделать рамку для зеркало и собрать все в единное устройство.

Спасибо всем кто дочитал этот пост до конца попытался описать все наиболее подробно и понятно.

Показать полностью 15
1131

Законно ли устанавливать камеры видеонаблюдения

Законно ли устанавливать камеры видеонаблюдения Видеонаблюдение, Камера, Законность, Длиннопост

Люди часто считают, что видеонаблюдение было установлено незаконно. Вообще, многие считают незаконным всё, что им не нравится. Спорят с соседями, которые установили камеры, требуют собрать подписи со всех жильцов и т.п. Но что происходит на самом деле? Когда можно вести видеозапись, а когда и где нет? Нужно ли согласие жильцов на установку видеонаблюдения? Давайте разберёмся и сформулируем ряд советов, которые помогут сберечь нервы и избежать проблем с законом.


Безусловно, само по себе видеонаблюдение - нужная и полезная вещь. Оно позволяет фиксировать различные события с последующим просмотром и "разбором полётов". Помогает решить спорные моменты, в том числе и раскрытие преступлений и правонарушений. Видеокамеры используются в магазинах для пресечения воровства, в офисах - для контроля сотрудников, в подъездах - для контроля порядка. Количество возможных применений систем видеонаблюдения бесконечно. Однако в некоторых случаях подобные действия могут нарушать закон и быть незаконными.


Законодательство не даёт прямого ответа на эти вопросы. Нет никакого "закона о видеонаблюдении" или что-то типа того. Однако существует ряд случаев, когда ведение видеосъемки, её хранение и последующее распространение является незаконным.


Нужно ли согласие жильцов на установку видеокамер?

Очень часто спрашивают, надо ли получать согласие соседей и остальных жильцов в доме на установку видеонаблюдения. Тут есть две ситуации, в которых согласие точно нужно и в которых согласие точно не нужно (если не нарушается закон о частной жизни).


Согласие жильцов на установку камер точно нужно, если вы планируете устанавливать видеонаблюдение совместно (скидываться), и тем более, если планируется внести в ежемесячную плату стоимость обслуживания этой системы. При этом жильцы имеют право отказаться как от участия в установке, так и от ежемесячной оплаты за обслуживания системы видеонаблюдения. Спорные моменты могут наступить, когда такое прописано в договоре на обслуживание жилья. Здесь без помощи юристов не обойтись!


И согласие жильцов точно не нужно, если вы устанавливаете видеокамеры для себя и за свой счёт. Главное при этом не нарушать частную жизнь других людей.


Нарушение частной жизни

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


Конституция РФ, статья 23: 1. Каждый имеет право на неприкосновенность частной жизни, личную и семейную тайну… […]

Однако понятие частной жизни трактуется настолько широко, что бывает трудно разобраться - нарушается оно или нет. Оставим тонкости юристам, и расскажем самые важные моменты, на которые надо обращать внимание.


Частной жизнью считается деятельность человека, которая касается только его самого, если она не носит противоправный характер.


Работа не является частью частной жизни


Как следует из определения, взаимоотношения чужих людей не относятся к частной жизни и не попадают под это определение. Поэтому всяческое видеонаблюдение за сотрудниками или за посетителями вроде бы не нарушает частную жизнь. Но это не совсем так. Например, нельзя устанавливать видеокамеры в раздевалках, туалетах, медицинских кабинетах и т.п. помещениях.


Кроме того, люди могут вести частную жизнь и в общественных местах. Целоваться, встречаться и т.д. Семейная тайна также подпадает под защиту частной жизни. Как быть? Как не нарушить закон?


Всё меняется, если человек даёт своё согласие.


Нельзя записывать частную жизнь без согласия человека, а с согласием - можно!

Что это значит? Например, ясли вы хотите с кем-то сфотографироваться, то надо спросить у него разрешение? Да. Также и с видеосъемкой? Да.


Но что-то никто не спрашивает нашего согласия на видеосъемку, например в магазине. Зато везде установлены таблички типа "Ведётся видеонаблюдение". И не просто везде, а прямо на дверях. Нельзя зайти в магазин и не увидеть эту табличку. Оказывается, видя такую табличку и заходя в такой магазин мы выражаем своё СОГЛАСИЕ на видеозапись. Вот и всё! Дальше, если в магазине какие-то образом на камеру попадет что-то из частной жизни человека - это уже не будет нарушением закона. Т.к. человек видел табличку, зашел и этим выразил своё согласие на ведение видеозаписи.


Не будет нарушением закона видеозапись, полученная на общественном мероприятии, если она велась не с целью сбора и раскрытия информации о частной жизни отдельного человека. То же самое касается различных выставок, спортивных мероприятий и т.п.


Правильные советы как не нарушить закон при установке видеонаблюдения

Чтобы не лезть в юридические дебри, опишем ряд советов, которые помогут вам избежать проблем с законом при установке видеонаблюдения:


1. Никогда не устанавливайте камеры, так чтобы они "заглядывали" в квартиру или на территорию частной собственности.


Апелляционное определение Ростовского областного суда от 22.09.2015 по делу N 33-13488/2015.


Жильцы в многоквартирном доме установили рядом со входом в свою квартиру камеру видеонаблюдения. Соседи подали в суд, т.к. камера направлена на их дверь. Однако суд установил, что видеокамера, установленная над входом в квартиру ответчика, способна зафиксировать только действия, происходящие на лестничной площадке и лестничном марше, не позволяет зафиксировать вход в квартиру истца. Суд пришел к выводу о том, что действия ответчика по установке камеры видеонаблюдения в месте общего пользования не является действием, посягающим на личную жизнь истца, в связи с чем отказал в удовлетворении исковых требований о демонтаже видеокамеры и взыскании компенсации морального вреда.


Камера была направлена от двери, не заглядывала в дверь соседскую. Проблем нет. Но есть и противоположные судебные решения, когда камера захватывала чужую дверь. Суд удовлетворил иск и постановил камеру демонтировать.


2. Никогда не устанавливайте скрытые камеры, даже у себя в квартире.


3. Установив камеры, расставьте на видном месте таблички "ведется видеонаблюдение". Особенно это важно для магазинов.


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


5. Если ваши камеры зафиксировали преступление - можете смело опубликовать видеозапись, т.к. преступления не могут быть "защищены" неприкосновенностью частной жизни.


6. На работе со стороны работодателя разумно будет внести в трудовой договор пункт о том, что на территории предприятия ведётся видеонаблюдение (с указанием какая в этом необходимость). Если видеонаблюдение устанавливается на уже работающем предприятии, то желательно с каждым сотрудником подписать дополнительное соглашение. Тогда таблички можно и не ставить, хотя они и не повредят.


7. Няней, уборщиц и другой персонал надо поставить в известность о том, что в квартире ведется видеозапись. Желательно письменно.


8. Вам не требуется согласие жильцов на установку видеокамер в подъезд. Всем кто не согласен с этим вежливо предлагайте решать этот вопрос в суде.


Плохие советы

Чаще всего защищать свои права приходится не тем, кого снимают, а владельцам систем видеонаблюдения. Недовольные жильцы, посетители и клиенты пишут заявления, обращаются в суд. И вот уже владельцу видеокамер надо отвечать на вопросы и доказывать, что он прав.


К счастью, в таких вопросах действует преимущество (презумпция) невиновсности. Доказывать нарушение должен заявитель (обвинитель). Заявление или иск ещё ничего не доказывают.


То, что камеры установлены, ещё не значит, что они включены. Система может быть просто не доделана и не функционировать. Какие могут быть претензии к неработающей системе? Работающая камера ничем не отличается от неработающей. На ней не зажигается табличка "ведется запись". Правда в темноте у работающей камеры зажигаются светодиоды. Но можно поставить камеры и попроще.


Ставьте камеры молча. Всем недовольным можно сказать, что они пока ещё не включены. Не ввязывайтесь в споры. В случае проблем настаивайте на том, что видеозапись не велась, не сохранилась, нет жесткого диска, система не доделана. Это крайний случай, но мысль, думаю, понятна.


Порча частной собственности (ваших видеокамер) - уголовное преступление. Объясните и это недовольным.


Отсюда

Показать полностью
42

Сервис для перехода из 3D в 2D - наш, Российский...

Привет! Годами анимешники пытаются разорвать грани 2D мира. На реддите есть целый раздел посвящённый данным разработкам. Так вышло, что и я поучаствовал в схожем проекте.

Думаю, что многие из вас видели сайт selfie2anime. Он основан на открытом исходном коде и позволяет с помощью магии машинного обучения конвертировать фоточки в аниме.

Иногда выходит годно!

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Иногда кринжово не очень...

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Результат высылается на почту, что несколько устарело.

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Так вышло, что несколько моих друзей разбираются в машинном обучении. После пары недель нытья просьб одна из них запустила публичную модель и разработала к ней Android приложение. Вышло удобнее чем с сайтом. Особенно, когда работает...

Оказывается, вам не нужен большой IP, чтобы оказаться вдохновителем крутого сервиса!

Правда, после пары постов, появились первые установки, отзывы и понимание, что мир ещё не готов...

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

А ещё люди не читали инструкцию и публиковали туда всякие ~50 сантиметровые штуки. Угадайте, сколько пикабушников на 100 человек?

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Но кого остановит волна негатива? Не нас! Нужно найти проблему и решить её. (Даже, если это не так проблема)

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Можно заметить, что у получающихся картинок блеклые цвета. Это связано с тем, что нейросеть обучалась на старых аниме. Кроме того, у неё явные проблемы с тенями...

Поэтому, после моих настойчивых замечаний было решено потратить ещё немного времени на приложение и обучить его на современном аниме!

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Как идейный вдохновитель, графику должен был добыть я... Вы пробовали найти триста тыщ аниме голов? И чтобы эти головы были 2010+ года выпуска, да в достойном разрешении... Очень легко на самом деле - гуглите "Anime-Face-Dataset".

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

В идеале, стоило накачать рисунков из Printrest, как мне и советовали, но взять готовый архив проще же. Иногда я бываю СЛИШКОМ вдохновляющим - смог "продавить" простой путь =\

Итак, эти картинки загрузили в нейросеть и как-то поставили её учиться трансформировать 3D в 2D...

К сожалению, это РЕАЛЬНО оказался набор голов и других частей тела. Там не было фонов и их программа рисовать не научилась.

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Чтобы хоть как-то сгладить сиё недоразумение, в приложение была добавлена опция для ПоискЛицоОпределение. Теперь, люди, гордо загружающие себя в полный рост имеют хоть какой-то шанс увидеть достойный результат.

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

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

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Новая сеть хуже различает цвета волос и глаз. Зато реже уходит в трип из-за теней и не путает число глаз. Это же важнее чем их цвет?

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Ну и конечно лучше работает с котиками o(≧▽≦)o

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Так и заканчивается эта история... (И не смотрите на текст ниже) Спасибо, если прочитали. Надеюсь, что она вас чему-нибудь научила. Планированию там... или игнорированию мнения вдохновляторов по выбору дата-сета для обучения. Надеюсь, что вы не ожидали тут какой-то эпик.

Я вдохновил подругу на создание забавного сервиса, который всё же не пришёлся людям по душе. Мы получили опыт, повеселились, слили денег на сервера и набили синяки - это жизнь 2D она или 3D. Некоторых вон вообще грузовики сбивают.

Сервис для перехода из 3D в 2D - наш, Российский... Аниме, Не аниме, Программирование, Разработка, Машинное обучение, Android, Личный опыт, Длиннопост

Если честно, боюсь, что промахнулся немного с сообществом, но про разработку я знаю только GameDev ._.


Напоследок оставлю чит-код для приложения, который отключает рекламу - PIKABU, чтобы его ввести, надо на главном экране зажать плашку с ссылкой на UGATIT.


Подруга моя, просьбы мои, тупые советы мои, тег ваш...


P.S. Нет. Это нельзя использовать в реальном времени на очках виртуальной реальности.

Показать полностью 12
106

Очередной экспонат в кунсткамеру.

Одна из камер Хиквижен DS-2CD2143G0-IS, которая трудилась в СВН в компании еще 12 штук своих близнецов. Работала до момента, пока соседи сверху не переделали помещение и не стали мыть полы "по-морскому". Протекли межэтажные швы, соленая бурда потекла вниз, на пути оказалась эта камера. Вот во что она превратилась. Это натекла ржавчина с балок перекрытия.

Очередной экспонат в кунсткамеру. Видеонаблюдение, Камера, Соль, Длиннопост

Это ее внешнее состояние

Очередной экспонат в кунсткамеру. Видеонаблюдение, Камера, Соль, Длиннопост

А вот так она теперь выглядит внутри. Соль разъела уплотнительное кольцо и соленая бурда скапливалась внутри купола.

Очередной экспонат в кунсткамеру. Видеонаблюдение, Камера, Соль, Длиннопост

Белые камни это соль, которая превратилась местами в монолитные куски кристаллов.

Итог - 13 тысяч рублей на помойку, новая герметичная буллет-камера Хик установлена на замену.

Показать полностью 2
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: