Речь пойдет о сборке, настройке и запуске охранной системы с датчиками, камерой, хранением видеозаписей на удаленном домашнем NAS, встроенным UPS, web-интерфейсом и оповещением через Telegram.

Чтобы быть предельно кратким, оформил статью в стилистике hackster.io. Информация рассчитана на читателей с опытом работы с одноплатным компьютером Raspberry и пониманием принципов работы VPN.

Требования к системе

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

Основными требованиями были:

  • наличие охранных функций: использовать датчики в качестве пожарной сигнализации и камеру как детектор движения;

  • возможность хранить видео сроком семь дней и более; 

  • высоковольтное оборудование должно уместиться в существующем электрощитке небольшого размера и не выходить за его пределы;

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

  • минимум проводов;

  • в дальнейшем расширять функциональные возможности;

  • удаленный доступ;

  • доступность как по деньгам, так и по оборудованию.

За основу решил взять миникомпьютер Raspberry Pi Zero W.  Его легко разместить в небольшом электрощитке. Рабочий вариант выглядит так:

https://lh7-us.googleusercontent.com/7886VFf_ybeR1Z2Po0fABqVvw8bhxPYcYP8wFOt3sez0PJZJjP7izI64zcuxvO5luTDKmru_vKCzNgWnVUsIhmw9lxNWpuKhO17KY3mNq7BIiRqt6hfUbpb0jmtB1ppoJvrarbAKQ2MwMUbucdBH-hQ
Вариант установки в распределительном щите справа от электросчетчика и розетки

В итоге получилась система, которая умеет постоянно записывать видео с IP-камеры на домашний NAS через VPN, при постановке на охрану оповещать в Telegram о движении на участке и повышении температуры в доме и работать без электричества чуть более часа. Все это умещается в распределительный щит. Также можно следить за разрядом батареи,  подключаться удаленно из любой точки мира не только к камере, но и зайти на страницу управления и просмотреть состояние системы, графики изменения температуры и загрузки ЦПУ. 

https://lh7-us.googleusercontent.com/kAH1Aphxt7ydl3bPK_1EiTEtr_n01_2HuHjWvCoBDxW8U4ly63iR2ejYaMIWgpEifOtA-e4HtwbzjPWXyfBkwIxKrMhEQL_9To2s05eZg8MUaI01wb-J2u9JbkwvR9Ckt0M6dmJGjSeD3cmiKC0LgOo
Страница управления и мониторинга

Аппаратная часть

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

https://lh7-us.googleusercontent.com/2h2yH2ALQdtkazcKj8gP51pY3vAuirhGqzZYVKDe82_Q2xsmudHMKfo9T7vwHvPp4tnQfSrncqrg3lgtoc8sfjaJdgtf5psTdVmorcUleDqUMrmU6OyEGMQAoy8Pkk2qWQMJtH71yd1tqFziijm1Dqg
Архитектурная схема

Нам потребуется:

  • Raspberry Pi Zero W (wi-fi идет как точка доступа для раздачи интернета на даче);

  • Raspberry Pi Camera Board (используется в качестве камеры в доме);

  • Raspberry Pi Ethernet/USB HUB HAT (для подключения 4G-модема и IP-камеры);

  • UPS Lite v1.2 Power HAT (в качестве источника бесперебойного питания);

  • антивандальная кнопка с подсветкой и фиксацией (в качестве кнопки постановки на охрану);

  • модуль датчика температуры DS18B20 (плата с датчиком температуры и встроенным резистором);

  • IP-камера с POE и дискретными входами/выходами (камера с возможностью подачи дискретного сигнала);

  • POE-адаптер 220v (для подключения IP-камеры к Raspberry Pi);

  • 4G-модем (для удаленного доступа и отправки уведомлений в интернет);

  • роутер с возможностью создания VPN-сервера (для удаленного доступа);

  • NAS с приложением для видеонаблюдения (для записи и хранения видео);

  • Ethernet-кабель (для подключения камеры к Raspberry);

  • резистор (для подключения I/O-камеры к Raspberry GPIO).

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

Программная часть

  • Raspberry Pi OS 32-bit;

  • WireGuard  (VPN-сервер на роутере и VPN-клиент на raspberry);

  • Telegram;

  • Node-RED (инструмент потокового программирования):

Сборка

https://lh7-us.googleusercontent.com/Itm9EEKK6jI2RQa5YzjK6Qug69NNobE8ZoEsfuTgjnltQiua5LyK40CMviML_HPVR1BH7DPRd_7zlOl19SqMKz_7asRMR5htHE5N_WvxRtNFHbtfkcqZQl4yb6h3dr4QLyITfpA9b192hRM-rbbtAqQ

Собираем «бутерброд». Подключаем Raspberry Pi Cam к Raspberry Pi Zero W. Снизу подсоединяем UPS Lite, сверху - Raspberry Pi Ethernet/USB HUB HAT. Добавляем датчик  температуры DS18B20. Я использовал модуль из набора для Arduino, в нем кроме датчика температуры уже добавлен резистор и выведены контакты для быстрого подключения.  Помним, что этот датчик использует 1-Wire  протокол, на контроллере это пин GPIO4.

Подключаем согласно архитектурной схеме представленной выше: 

  • минус заводим на пин GND;

  • плюс заводим на пин 3.3v;

  • сигнальный вывод на пин GPIO4.

Подключаем ввод-вывод IP-камеры к Raspberry. Я использовал камеру с наличием ввода-вывода, так как считаю этот способ более надежным и гибким в конфигурировании. Принцип следующий: как только камера обнаруживает движение или попытки взлома, формирует на выходе сигнал. В зависимости от настроек он может быть как постоянным, так и импульсным, а контакт - нормально открытым или нормально замкнутым. В моем случае у камеры на выходе будет постоянное напряжение при нормально замкнутом контакте. У Raspberry Pi Zero напряжение на пинах ввода-вывода 3.3v для логической единицы и 0v для нуля. У меня уже была камера Geovision, в описании которой сказано, что максимальный ток 30mA и на дискретном выходе 5v, следовательно мне подойдет резистор на 100 Ом. Возвращаемся к схеме и подключаем:

  • плюс с камеры на резистор, с резистора на пин GPIO27;

  • минус с камеры заводим на пин GND.

Теперь кнопка постановки на охрану. Я выбирал кнопку с LED-индикацией. Это позволяет визуально оценить, включена охрана или нет. Также индикация меняется при обнаружении движения. Удобно то, что кнопка рассчитана на питание 3-6V, что существенно облегчает монтаж к Raspberry Pi. Кнопка имеет пять контактов и позволяет подсоединить ее разными способами. Я выбрал тот, при котором подсветка горит при нажатой кнопке. Подключение сделал следующим образом:

  • GPIO17 подключил к кнопке к контакту С;

  • минус кнопки заводим на пин GND;

  • контакт  кнопки NO подключил к GPIO22;

  • минус кнопки заводим на пин GND.

https://lh7-us.googleusercontent.com/PQtZ1quK-h6LIpMmu-Na8uAN0IRQ_fF7LPMCo037FYwmbPeh3ba8GzWqHQ4KIPgUje5GnFI7lXSPDMlZZoHye2d6sj1m_MRycXj__7n8FWz06cyJIcUmpk_hgasCGUGQODiEuby1Y3JUurxACqTlz6E

Дело за малым - подключить к USB-порту LTE-модем, Ethernet-кабель от Raspberry Pi Ethernet/USB HUB HAT к POE-адаптеру, а от адаптера к IP-камере. Запитать UPS Lite от стандартного блока питания для Raspberry и включить POE-адаптер в розетку. Как все это выглядит живьем, можно посмотреть на самом первом фото.

Настройка

Установка и настройка Raspberry Pi

Подготавливаем Raspberry Pi к работе. Первым делом установим Raspberry Pi OS 32-bit. Установка  подробно описана на официальном сайте. После успешной установки и загрузки OS включаем поддержку протокола 1-Wire и активируем Raspberry Pi Camera Board. Делаем это через утилиту raspi-config запуском в терминале команды:

sudo raspi-config

В открывшемся окне настроек переходим в раздел Interfacing options.

https://lh7-us.googleusercontent.com/Tn_XgWZwCKHAaOHiR8ebWkXBd0rkcETdLVckZXpP8Db58Oblr22Qi5I5RWZKDdloc5rsAsLf0AqvU3Uhj3nd95hyh61B2xxXI_J7xbJkYugrAIjtsveLSEefPJJgUqzvolbEVu0umlvMM883xfl379U

Активируем P1 Camera и 1-Wire.

https://lh7-us.googleusercontent.com/4cF7K0VkC0yA0lCIMzbXdwiW1EggbFDZ5YGplOEc9gE_V3Lh4YKV-iwIHLRvWJgXB__APt-NcYv7rEa7jxMlTSqE1xiUtro41qnQU8UE6lUFcTbyjIotF6fxR6cKo6iM4m4_rh-0xK4FFSADlutXc3I

После сохранения настроек, скорее всего, понадобится перезагрузить Raspberry Pi.

Установка Node-RED

Далее устанавливаем инструмент потокового программирования Node-RED. На Хабре много статей о самом продукте и его установке. В моем случае никаких особенностей нет, выполняем команду:

$ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

После успешного выполнения скрипта,  устанавливаем модули:

  1. node-red-contrib-boolean-logic
    $ npm install node-red-contrib-boolean-logic

  2. node-red-contrib-camerapi
    $ npm install node-red-contrib-camerapi

  3. node-red-contrib-cpu
    $ npm install node-red-contrib-cpu

  4. node-red-contrib-easybotics-ina219-sensor
    $ npm install node-red-contrib-easybotics-ina219-sensor

  5. node-red-contrib-edge-trigger
    $ npm install node-red-contrib-edge-trigger

  6. node-red-contrib-sensor-ds18b20
    $ npm install node-red-contrib-sensor-ds18b20

  7. node-red-contrib-telegrambot
    $ npm install node-red-contrib-telegrambot

  8. node-red-node-pi-gpio
    $ npm install node-red-node-pi-gpio

Включаем автозапуск и запускаем Node-RED.

$ sudo systemctl enable nodered.service
$ sudo systemctl start nodered.service

Открываем редактор

Как только Node-RED запустится, подключаемся через браузер по адресу: http://<ip raspberry>:1880.  

https://lh7-us.googleusercontent.com/6DN9wcKfTXPZC5n6lXnyPy77qC60bXPmE83OskVHLwsnEpCMMv4Gdw75jsViDjSf8jGFzvendFnV4UJu1R-5Jdd7Mj9Eu6QuqKKIM3qKjbJGY-E5aYV2ZooAXpKR9xmm-a7opg9zkUDYE-ifVDbPsSs

Подготавливаем проект под себя

Проект представляет собой json-файл. Так как для отправки уведомлений используется модуль Telegram, в настройках которого указывается id Telegram-канала, в который отправляются оповещения, то понадобиться зарегистрировать Telegram-бота и создать чат. Для регистрации бота воспользуйтесь служебным ботом @BotFather. Узнать id-номер чата поможет бот @getmyid_bot, добавленный в созданный Telegram-чат. Чат позволит добавить пользователей, которые будут получать сообщения от системы. Номер созданного чата необходимо подставить в json-файле вместо текста  CHANGE_CHAT_ID

Содержимое json-файл проекта
[
	{
    	"id": "35700ef4.b4cc62",
    	"type": "tab",
    	"label": "Dacha",
    	"disabled": false,
    	"info": ""
	},
	{
    	"id": "21ee0549ab80c1b3",
    	"type": "group",
    	"z": "35700ef4.b4cc62",
    	"name": "Temperature external",
    	"style": {
        	"fill": "#c8e7a7",
        	"label": true,
        	"stroke": "#000000",
        	"color": "#000000"
    	},
    	"nodes": [
        	"1b33f0bb.ddc0af",
        	"8cb14a63.63e588",
        	"bf42d115.5f8dc",
        	"f826e2b9.18e4c",
        	"37299a0b.442dc6",
        	"589f8077.70b05",
        	"7744d782.93a8f8",
        	"cd44f017.139e6",
        	"d9e7f0b2.9c11a"
    	],
    	"x": 34,
    	"y": 479,
    	"w": 1172,
    	"h": 302
	},
	{
    	"id": "3a19bea8.e27032",
    	"type": "group",
    	"z": "35700ef4.b4cc62",
    	"name": "Camera external motion alarm",
    	"style": {
        	"stroke": "#000000",
        	"fill": "#c8e7a7",
        	"label": true,
        	"color": "#000000"
    	},
    	"nodes": [
        	"5d05a379.500dcc",
        	"636c36b0.9db488",
        	"391ad295.c56a6e",
        	"14425883.8a8027",
        	"c14e914c.160e1",
        	"57894684.68d3c8",
        	"f7c59ddc.2f24c",
        	"c411c632.3dd2f8",
        	"48255a26.189904",
        	"78cfa48.1eae25c",
        	"ce092f2e.fb6ff",
        	"3b1e904c.649e9",
        	"48d31990.641c08",
        	"1d8f6830.1c7338",
        	"7f12a359.8f4dfc",
        	"6299cce8.7b20a4",
        	"7f956fcc.36206",
        	"e9b9f2a1a8421187",
        	"548c306e6e2c111f"
    	],
    	"x": 34,
    	"y": 19,
    	"w": 1192,
    	"h": 422
	},
	{
    	"id": "6e2ba88d.60c498",
    	"type": "group",
    	"z": "35700ef4.b4cc62",
    	"name": "CPU Load and temperature",
    	"style": {
        	"stroke": "#000000",
        	"fill": "#c8e7a7",
        	"label": true,
        	"color": "#000000"
    	},
    	"nodes": [
        	"b8c052bb.44535",
        	"d6fd679.6caa398",
        	"dab61cbf.cfa87",
        	"fdb3a1b6.cfb71",
        	"a0e62b1a.757c48"
    	],
    	"x": 34,
    	"y": 819,
    	"w": 452,
    	"h": 282
	},
	{
    	"id": "72f5dbe4bc2de2b5",
    	"type": "group",
    	"z": "35700ef4.b4cc62",
    	"name": "Capture photo",
    	"style": {
        	"fill": "#c8e7a7",
        	"label": true,
        	"stroke": "#000000",
        	"color": "#000000"
    	},
    	"nodes": [
        	"9aca7759.d95a48",
        	"9ca8d5ff.3857d8",
        	"24ee77ab.2e8738",
        	"ea0b75b0.94f058",
        	"c452f057.ca63a"
    	],
    	"x": 44,
    	"y": 1159,
    	"w": 1182,
    	"h": 142
	},
	{
    	"id": "8c22d8c9580d2858",
    	"type": "group",
    	"z": "35700ef4.b4cc62",
    	"name": "",
    	"style": {
        	"label": true,
        	"fill": "#c8e7a7"
    	},
    	"nodes": [
        	"cc5bc2c3a2c509fa",
        	"e291c889c1d4e186",
        	"0d8935ca87af5a1b",
        	"a067feaf7d06fabf",
        	"2686f0fe374cc52d",
        	"d6992fd1eb26d528",
        	"589c720b5a2be2f2",
        	"4ecdc496c0ecd286",
        	"b9d28942538208e4",
        	"bd842c6db6853e79",
        	"26d9630fb660bc9d",
        	"0d4f374253a9f8d4",
        	"65fe44dc0bb4ca1d"
    	],
    	"x": 514,
    	"y": 819,
    	"w": 692,
    	"h": 282
	},
	{
    	"id": "9aca7759.d95a48",
    	"type": "camerapi-takephoto",
    	"z": "35700ef4.b4cc62",
    	"g": "72f5dbe4bc2de2b5",
    	"filemode": "1",
    	"filename": "photo1.JPEG",
    	"filedefpath": "0",
    	"filepath": "/home/pi/Pictures/",
    	"fileformat": "jpeg",
    	"resolution": "3",
    	"rotation": "0",
    	"fliph": "0",
    	"flipv": "0",
    	"brightness": "50",
    	"contrast": "0",
    	"sharpness": "0",
    	"quality": "80",
    	"imageeffect": "none",
    	"exposuremode": "auto",
    	"iso": "0",
    	"agcwait": "1.0",
    	"led": "0",
    	"awb": "auto",
    	"name": "",
    	"x": 860,
    	"y": 1260,
    	"wires": [
        	[
            	"24ee77ab.2e8738",
            	"ea0b75b0.94f058"
        	]
    	]
	},
	{
    	"id": "9ca8d5ff.3857d8",
    	"type": "ui_template",
    	"z": "35700ef4.b4cc62",
    	"g": "72f5dbe4bc2de2b5",
    	"group": "fddd6117.b012f",
    	"name": "",
    	"order": 1,
    	"width": "10",
    	"height": "13",
    	"format": "<script>\nvar value = \"1\";\n// or overwrite value in your callback function ...\nthis.scope.action = function() { return value; }\n\nfunction updateF() {\n  var source = '/photo1.JPEG',\n  timestamp = (new Date()).getTime(),\n  newUrl = source + '?_=' + timestamp;\n  document.getElementById(\"photo\").src = newUrl;\n}\n</script>\n\n<md-button ng-click=\"send({payload:action()})\" onclick=\"setTimeout(updateF, 2500);\" style=\"padding:40px; margin-bottom: 40px; color: #000000; background-color: #888981;\" >\n <ui-icon icon=\"camera\"></ui-icon>\n Take a photo<br>\n</md-button>\n\n<div style=\"margin-bottom:40px;\">\n <img src=\"/photo1.JPEG\" id=\"photo\" width=\"100%\" height=\"100%\">\n</div>",
    	"storeOutMessages": true,
    	"fwdInMessages": true,
    	"resendOnRefresh": true,
    	"templateScope": "local",
    	"x": 130,
    	"y": 1260,
    	"wires": [
        	[
            	"9aca7759.d95a48"
        	]
    	]
	},
	{
    	"id": "24ee77ab.2e8738",
    	"type": "debug",
    	"z": "35700ef4.b4cc62",
    	"g": "72f5dbe4bc2de2b5",
    	"name": "",
    	"active": true,
    	"tosidebar": true,
    	"console": false,
    	"tostatus": false,
    	"complete": "false",
    	"statusVal": "",
    	"statusType": "auto",
    	"x": 1110,
    	"y": 1260,
    	"wires": []
	},
	{
    	"id": "5d05a379.500dcc",
    	"type": "inject",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "Test sms",
    	"props": [
        	{
            	"p": "payload"
        	},
        	{
            	"p": "topic",
            	"vt": "str"
        	}
    	],
    	"repeat": "",
    	"crontab": "",
    	"once": false,
    	"onceDelay": 0.1,
    	"topic": "",
    	"payload": "",
    	"payloadType": "date",
    	"x": 760,
    	"y": 340,
    	"wires": [
        	[
            	"e9b9f2a1a8421187"
        	]
    	]
	},
	{
    	"id": "636c36b0.9db488",
    	"type": "function",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"func": "msg.payload = {}\nmsg.payload.chatId = CHANGE_CHAT_ID\nmsg.payload.type = \"message\"\nmsg.payload.content = \"Motion detected! [myDacha]\"\nreturn msg;\n",
    	"outputs": 1,
    	"noerr": 0,
    	"initialize": "",
    	"finalize": "",
    	"libs": [],
    	"x": 980,
    	"y": 320,
    	"wires": [
        	[
            	"f5b3043a.2a3ff8"
        	]
    	]
	},
	{
    	"id": "391ad295.c56a6e",
    	"type": "rpi-gpio in",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "camera grpio 7",
    	"pin": "13",
    	"intype": "down",
    	"debounce": "25",
    	"read": true,
    	"x": 140,
    	"y": 220,
    	"wires": [
        	[
            	"f7c59ddc.2f24c",
            	"78cfa48.1eae25c",
            	"48d31990.641c08",
            	"548c306e6e2c111f"
        	]
    	]
	},
	{
    	"id": "14425883.8a8027",
    	"type": "rising-edge",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"threshold": "0",
    	"x": 770,
    	"y": 280,
    	"wires": [
        	[
            	"636c36b0.9db488"
        	]
    	]
	},
	{
    	"id": "c14e914c.160e1",
    	"type": "ui_button",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"group": "371d08d2.682078",
    	"order": 3,
    	"width": "6",
    	"height": "1",
    	"passthru": false,
    	"label": "Test msg",
    	"tooltip": "",
    	"color": "#000000",
    	"bgcolor": "#888981",
    	"icon": "",
    	"payload": "1",
    	"payloadType": "str",
    	"topic": "topic",
    	"topicType": "msg",
    	"x": 760,
    	"y": 400,
    	"wires": [
        	[
            	"e9b9f2a1a8421187"
        	]
    	]
	},
	{
    	"id": "57894684.68d3c8",
    	"type": "ui_switch",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"label": "Лампочка",
    	"tooltip": "",
    	"group": "371d08d2.682078",
    	"order": 1,
    	"width": "6",
    	"height": "1",
    	"passthru": true,
    	"decouple": "false",
    	"topic": "topic",
    	"topicType": "msg",
    	"style": "",
    	"onvalue": "true",
    	"onvalueType": "bool",
    	"onicon": "",
    	"oncolor": "",
    	"offvalue": "false",
    	"offvalueType": "bool",
    	"officon": "",
    	"offcolor": "",
    	"animate": false,
    	"x": 1100,
    	"y": 60,
    	"wires": [
        	[
            	"316ad35.6698d2c"
        	]
    	]
	},
	{
    	"id": "f7c59ddc.2f24c",
    	"type": "ui_text",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"group": "189e2e48.d109d2",
    	"order": 1,
    	"width": 0,
    	"height": 0,
    	"name": "",
    	"label": "Движение",
    	"format": "{{msg.payload}}",
    	"layout": "row-spread",
    	"x": 310,
    	"y": 300,
    	"wires": []
	},
	{
    	"id": "c411c632.3dd2f8",
    	"type": "ui_text",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"group": "189e2e48.d109d2",
    	"order": 3,
    	"width": 0,
    	"height": 0,
    	"name": "",
    	"label": "Охрана",
    	"format": "{{msg.payload}}",
    	"layout": "row-spread",
    	"x": 300,
    	"y": 60,
    	"wires": []
	},
	{
    	"id": "48255a26.189904",
    	"type": "rpi-gpio in",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "Security Button",
    	"pin": "15",
    	"intype": "up",
    	"debounce": "250",
    	"read": true,
    	"x": 140,
    	"y": 120,
    	"wires": [
        	[
            	"c411c632.3dd2f8",
            	"78cfa48.1eae25c",
            	"3b1e904c.649e9"
        	]
    	]
	},
	{
    	"id": "78cfa48.1eae25c",
    	"type": "BooleanLogic",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"operation": "AND",
    	"inputCount": "2",
    	"topic": "result",
    	"x": 500,
    	"y": 220,
    	"wires": [
        	[
            	"14425883.8a8027",
            	"6299cce8.7b20a4"
        	]
    	]
	},
	{
    	"id": "ce092f2e.fb6ff",
    	"type": "inject",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "Blink 1",
    	"props": [
        	{
            	"p": "payload"
        	},
        	{
            	"p": "topic",
            	"vt": "str"
        	}
    	],
    	"repeat": "0.5",
    	"crontab": "",
    	"once": true,
    	"onceDelay": "0.5",
    	"topic": "",
    	"payload": "true",
    	"payloadType": "bool",
    	"x": 480,
    	"y": 60,
    	"wires": [
        	[
            	"3b1e904c.649e9"
        	]
    	]
	},
	{
    	"id": "3b1e904c.649e9",
    	"type": "BooleanLogic",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"operation": "AND",
    	"inputCount": "3",
    	"topic": "result",
    	"x": 720,
    	"y": 120,
    	"wires": [
        	[
            	"7f12a359.8f4dfc"
        	]
    	]
	},
	{
    	"id": "1b33f0bb.ddc0af",
    	"type": "inject",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"props": [
        	{
            	"p": "payload"
        	},
        	{
            	"p": "topic",
            	"vt": "str"
        	}
    	],
    	"repeat": "1",
    	"crontab": "",
    	"once": false,
    	"onceDelay": 0.1,
    	"topic": "",
    	"payload": "",
    	"payloadType": "date",
    	"x": 170,
    	"y": 640,
    	"wires": [
        	[
            	"8cb14a63.63e588"
        	]
    	]
	},
	{
    	"id": "8cb14a63.63e588",
    	"type": "sensor-ds18b20",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"topic": "",
    	"sensorid": "28-011632edb7ee",
    	"timer": "1",
    	"repeat": false,
    	"x": 390,
    	"y": 640,
    	"wires": [
        	[
            	"bf42d115.5f8dc",
            	"cd44f017.139e6",
            	"d9e7f0b2.9c11a"
        	]
    	]
	},
	{
    	"id": "bf42d115.5f8dc",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "Above 40",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "gte",
            	"v": "40",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 600,
    	"y": 520,
    	"wires": [
        	[
            	"37299a0b.442dc6"
        	]
    	]
	},
	{
    	"id": "f826e2b9.18e4c",
    	"type": "function",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"func": "msg.payload = {}\nmsg.payload.chatId = CHANGE_CHAT_ID\nmsg.payload.type = \"message\"\nmsg.payload.content = \"Temperature HI! [myDacha]\"\nreturn msg;",
    	"outputs": 1,
    	"noerr": 0,
    	"initialize": "",
    	"finalize": "",
    	"libs": [],
    	"x": 1120,
    	"y": 520,
    	"wires": [
        	[
            	"f5b3043a.2a3ff8"
        	]
    	]
	},
	{
    	"id": "37299a0b.442dc6",
    	"type": "trigger",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"op1": "1",
    	"op2": "0",
    	"op1type": "str",
    	"op2type": "str",
    	"duration": "5",
    	"extend": true,
    	"overrideDelay": false,
    	"units": "s",
    	"reset": "",
    	"bytopic": "all",
    	"topic": "topic",
    	"outputs": 1,
    	"x": 770,
    	"y": 520,
    	"wires": [
        	[
            	"7744d782.93a8f8"
        	]
    	]
	},
	{
    	"id": "589f8077.70b05",
    	"type": "debug",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"active": true,
    	"tosidebar": true,
    	"console": false,
    	"tostatus": false,
    	"complete": "payload",
    	"targetType": "msg",
    	"statusVal": "",
    	"statusType": "auto",
    	"x": 670,
    	"y": 600,
    	"wires": []
	},
	{
    	"id": "7744d782.93a8f8",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "eq",
            	"v": "1",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 950,
    	"y": 520,
    	"wires": [
        	[
            	"f826e2b9.18e4c"
        	]
    	]
	},
	{
    	"id": "cd44f017.139e6",
    	"type": "ui_gauge",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"group": "189e2e48.d109d2",
    	"order": 5,
    	"width": "6",
    	"height": "6",
    	"gtype": "gage",
    	"title": "Temperature ext",
    	"label": "units",
    	"format": "{{value}}",
    	"min": "-40",
    	"max": "60",
    	"colors": [
        	"#00b500",
        	"#e6e600",
        	"#ca3838"
    	],
    	"seg1": "",
    	"seg2": "",
    	"x": 860,
    	"y": 680,
    	"wires": []
	},
	{
    	"id": "d9e7f0b2.9c11a",
    	"type": "ui_chart",
    	"z": "35700ef4.b4cc62",
    	"g": "21ee0549ab80c1b3",
    	"name": "",
    	"group": "172f5cc2.238383",
    	"order": 1,
    	"width": "18",
    	"height": "4",
    	"label": "Temperature ext",
    	"chartType": "line",
    	"legend": "false",
    	"xformat": "HH:mm:ss",
    	"interpolate": "linear",
    	"nodata": "",
    	"dot": false,
    	"ymin": "-40",
    	"ymax": "60",
    	"removeOlder": "1",
    	"removeOlderPoints": "",
    	"removeOlderUnit": "3600",
    	"cutout": 0,
    	"useOneColor": false,
    	"useUTC": false,
    	"colors": [
        	"#3f16d4",
        	"#aec7e8",
        	"#ff7f0e",
        	"#2ca02c",
        	"#98df8a",
        	"#d62728",
        	"#ff9896",
        	"#9467bd",
        	"#c5b0d5"
    	],
    	"outputs": 1,
    	"useDifferentColor": false,
    	"x": 860,
    	"y": 740,
    	"wires": [
        	[]
    	]
	},
	{
    	"id": "ea0b75b0.94f058",
    	"type": "function",
    	"z": "35700ef4.b4cc62",
    	"g": "72f5dbe4bc2de2b5",
    	"name": "",
    	"func": "var payload = { \nchatId: CHANGE_CHAT_ID,\n	type: \"photo\",\n	content: \"/home/pi/Pictures/photo1.JPEG\" };\nreturn {payload};",
    	"outputs": 1,
    	"noerr": 0,
    	"initialize": "",
    	"finalize": "",
    	"libs": [],
    	"x": 1100,
    	"y": 1200,
    	"wires": [
        	[
            	"f5b3043a.2a3ff8"
        	]
    	]
	},
	{
    	"id": "c452f057.ca63a",
    	"type": "inject",
    	"z": "35700ef4.b4cc62",
    	"g": "72f5dbe4bc2de2b5",
    	"name": "Test web cam img",
    	"props": [
        	{
            	"p": "payload"
        	}
    	],
    	"repeat": "",
    	"crontab": "",
    	"once": false,
    	"onceDelay": 0.1,
    	"topic": "",
    	"payload": "1",
    	"payloadType": "num",
    	"x": 850,
    	"y": 1200,
    	"wires": [
        	[
            	"ea0b75b0.94f058"
        	]
    	]
	},
	{
    	"id": "b8c052bb.44535",
    	"type": "cpu",
    	"z": "35700ef4.b4cc62",
    	"g": "6e2ba88d.60c498",
    	"name": "",
    	"msgCore": true,
    	"msgOverall": false,
    	"msgArray": false,
    	"msgTemp": false,
    	"x": 170,
    	"y": 860,
    	"wires": [
        	[
            	"d6fd679.6caa398"
        	]
    	]
	},
	{
    	"id": "d6fd679.6caa398",
    	"type": "ui_chart",
    	"z": "35700ef4.b4cc62",
    	"g": "6e2ba88d.60c498",
    	"name": "",
    	"group": "172f5cc2.238383",
    	"order": 3,
    	"width": "18",
    	"height": "4",
    	"label": "CPU usage",
    	"chartType": "line",
    	"legend": "true",
    	"xformat": "HH:mm:ss",
    	"interpolate": "linear",
    	"nodata": "",
    	"dot": false,
    	"ymin": "0",
    	"ymax": "100",
    	"removeOlder": "1",
    	"removeOlderPoints": "",
    	"removeOlderUnit": "3600",
    	"cutout": 0,
    	"useOneColor": false,
    	"useUTC": false,
    	"colors": [
        	"#b33c1e",
        	"#aec7e8",
        	"#ff7f0e",
        	"#2ca02c",
        	"#98df8a",
        	"#d62728",
        	"#ff9896",
        	"#9467bd",
        	"#c5b0d5"
    	],
    	"outputs": 1,
    	"useDifferentColor": false,
    	"x": 390,
    	"y": 880,
    	"wires": [
        	[]
    	]
	},
	{
    	"id": "dab61cbf.cfa87",
    	"type": "inject",
    	"z": "35700ef4.b4cc62",
    	"g": "6e2ba88d.60c498",
    	"name": "",
    	"props": [
        	{
            	"p": "payload"
        	},
        	{
            	"p": "topic",
            	"vt": "str"
        	}
    	],
    	"repeat": "1",
    	"crontab": "",
    	"once": true,
    	"onceDelay": "1",
    	"topic": "",
    	"payload": "",
    	"payloadType": "date",
    	"x": 170,
    	"y": 960,
    	"wires": [
        	[
            	"b8c052bb.44535",
            	"fdb3a1b6.cfb71"
        	]
    	]
	},
	{
    	"id": "fdb3a1b6.cfb71",
    	"type": "cpu",
    	"z": "35700ef4.b4cc62",
    	"g": "6e2ba88d.60c498",
    	"name": "CPU Temp",
    	"msgCore": false,
    	"msgOverall": false,
    	"msgArray": false,
    	"msgTemp": true,
    	"x": 170,
    	"y": 1060,
    	"wires": [
        	[
            	"a0e62b1a.757c48"
        	]
    	]
	},
	{
    	"id": "a0e62b1a.757c48",
    	"type": "ui_chart",
    	"z": "35700ef4.b4cc62",
    	"g": "6e2ba88d.60c498",
    	"name": "",
    	"group": "172f5cc2.238383",
    	"order": 5,
    	"width": "18",
    	"height": "4",
    	"label": "CPU Temp",
    	"chartType": "line",
    	"legend": "false",
    	"xformat": "HH:mm:ss",
    	"interpolate": "linear",
    	"nodata": "",
    	"dot": false,
    	"ymin": "",
    	"ymax": "",
    	"removeOlder": "1",
    	"removeOlderPoints": "",
    	"removeOlderUnit": "3600",
    	"cutout": 0,
    	"useOneColor": false,
    	"useUTC": false,
    	"colors": [
        	"#30b31e",
        	"#aec7e8",
        	"#ff7f0e",
        	"#2ca02c",
        	"#98df8a",
        	"#d62728",
        	"#ff9896",
        	"#9467bd",
        	"#c5b0d5"
    	],
    	"outputs": 1,
    	"useDifferentColor": false,
    	"x": 370,
    	"y": 1020,
    	"wires": [
        	[]
    	]
	},
	{
    	"id": "f5b3043a.2a3ff8",
    	"type": "telegram sender",
    	"z": "35700ef4.b4cc62",
    	"name": "",
    	"bot": "d9de0dcc.3d2a6",
    	"haserroroutput": false,
    	"outputs": 1,
    	"x": 1430,
    	"y": 320,
    	"wires": [
        	[]
    	]
	},
	{
    	"id": "316ad35.6698d2c",
    	"type": "rpi-gpio out",
    	"z": "35700ef4.b4cc62",
    	"name": "LED",
    	"pin": "11",
    	"set": true,
    	"level": "0",
    	"freq": "",
    	"out": "out",
    	"x": 1330,
    	"y": 140,
    	"wires": []
	},
	{
    	"id": "48d31990.641c08",
    	"type": "Invert",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "Invert",
    	"x": 490,
    	"y": 160,
    	"wires": [
        	[
            	"3b1e904c.649e9"
        	]
    	]
	},
	{
    	"id": "1d8f6830.1c7338",
    	"type": "trigger",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"op1": "",
    	"op2": "false",
    	"op1type": "pay",
    	"op2type": "str",
    	"duration": "250",
    	"extend": false,
    	"overrideDelay": false,
    	"units": "ms",
    	"reset": "",
    	"bytopic": "all",
    	"topic": "topic",
    	"outputs": 1,
    	"x": 1120,
    	"y": 120,
    	"wires": [
        	[
            	"316ad35.6698d2c"
        	]
    	]
	},
	{
    	"id": "7f12a359.8f4dfc",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "eq",
            	"v": "1",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 890,
    	"y": 120,
    	"wires": [
        	[
            	"1d8f6830.1c7338"
        	]
    	]
	},
	{
    	"id": "6299cce8.7b20a4",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "eq",
            	"v": "1",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 770,
    	"y": 200,
    	"wires": [
        	[
            	"7f956fcc.36206"
        	]
    	]
	},
	{
    	"id": "7f956fcc.36206",
    	"type": "trigger",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"op1": "",
    	"op2": "true",
    	"op1type": "pay",
    	"op2type": "str",
    	"duration": "100",
    	"extend": false,
    	"overrideDelay": false,
    	"units": "ms",
    	"reset": "",
    	"bytopic": "all",
    	"topic": "topic",
    	"outputs": 1,
    	"x": 1020,
    	"y": 200,
    	"wires": [
        	[
            	"316ad35.6698d2c"
        	]
    	]
	},
	{
    	"id": "cc5bc2c3a2c509fa",
    	"type": "ina-sensor",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"handle": "93c1182fe25c4f4a",
    	"x": 670,
    	"y": 940,
    	"wires": [
        	[
            	"e291c889c1d4e186",
            	"0d4f374253a9f8d4"
        	],
        	[
            	"0d8935ca87af5a1b",
            	"26d9630fb660bc9d"
        	]
    	]
	},
	{
    	"id": "65fe44dc0bb4ca1d",
    	"type": "inject",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"props": [
        	{
            	"p": "payload"
        	},
        	{
            	"p": "topic",
            	"vt": "str"
        	}
    	],
    	"repeat": "1",
    	"crontab": "",
    	"once": false,
    	"onceDelay": 0.1,
    	"topic": "",
    	"payloadType": "date",
    	"x": 650,
    	"y": 880,
    	"wires": [
        	[
            	"cc5bc2c3a2c509fa"
        	]
    	]
	},
	{
    	"id": "e291c889c1d4e186",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "Less 3.5v",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "lt",
            	"v": "3.5",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 900,
    	"y": 900,
    	"wires": [
        	[
            	"d6992fd1eb26d528"
        	]
    	]
	},
	{
    	"id": "0d8935ca87af5a1b",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "Less 30%",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "lt",
            	"v": "30",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 900,
    	"y": 1060,
    	"wires": [
        	[
            	"589c720b5a2be2f2"
        	]
    	]
	},
	{
    	"id": "a067feaf7d06fabf",
    	"type": "function",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"func": "msg.payload = {}\nmsg.payload.chatId = CHANGE_CHAT_ID\nmsg.payload.type = \"message\"\nmsg.payload.content = \"Voltage low 3.5v! [myDacha]\"\nreturn msg;",
    	"outputs": 1,
    	"noerr": 0,
    	"initialize": "",
    	"finalize": "",
    	"libs": [],
    	"x": 1120,
    	"y": 920,
    	"wires": [
        	[
            	"f5b3043a.2a3ff8"
        	]
    	]
	},
	{
    	"id": "2686f0fe374cc52d",
    	"type": "function",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"func": "msg.payload = {}\nmsg.payload.chatId = CHANGE_CHAT_ID\nmsg.payload.type = \"message\"\nmsg.payload.content = \"Battery low 30%! [myDacha]\"\nreturn msg;",
    	"outputs": 1,
    	"noerr": 0,
    	"initialize": "",
    	"finalize": "",
    	"libs": [],
    	"x": 1120,
    	"y": 1000,
    	"wires": [
        	[
            	"f5b3043a.2a3ff8"
        	]
    	]
	},
	{
    	"id": "d6992fd1eb26d528",
    	"type": "trigger",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"op1": "1",
    	"op2": "0",
    	"op1type": "str",
    	"op2type": "str",
    	"duration": "5",
    	"extend": true,
    	"overrideDelay": false,
    	"units": "s",
    	"reset": "",
    	"bytopic": "all",
    	"topic": "topic",
    	"outputs": 1,
    	"x": 910,
    	"y": 960,
    	"wires": [
        	[
            	"4ecdc496c0ecd286"
        	]
    	]
	},
	{
    	"id": "589c720b5a2be2f2",
    	"type": "trigger",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"op1": "1",
    	"op2": "0",
    	"op1type": "str",
    	"op2type": "str",
    	"duration": "5",
    	"extend": true,
    	"overrideDelay": false,
    	"units": "s",
    	"reset": "",
    	"bytopic": "all",
    	"topic": "topic",
    	"outputs": 1,
    	"x": 910,
    	"y": 1000,
    	"wires": [
        	[
            	"b9d28942538208e4"
        	]
    	]
	},
	{
    	"id": "4ecdc496c0ecd286",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "eq",
            	"v": "1",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 1090,
    	"y": 860,
    	"wires": [
        	[
            	"a067feaf7d06fabf"
        	]
    	]
	},
	{
    	"id": "b9d28942538208e4",
    	"type": "switch",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"property": "payload",
    	"propertyType": "msg",
    	"rules": [
        	{
            	"t": "eq",
            	"v": "1",
            	"vt": "str"
        	}
    	],
    	"checkall": "true",
    	"repair": false,
    	"outputs": 1,
    	"x": 1110,
    	"y": 1060,
    	"wires": [
        	[
            	"2686f0fe374cc52d"
        	]
    	]
	},
	{
    	"id": "bd842c6db6853e79",
    	"type": "debug",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"active": true,
    	"tosidebar": true,
    	"console": false,
    	"tostatus": false,
    	"complete": "false",
    	"statusVal": "",
    	"statusType": "auto",
    	"x": 870,
    	"y": 860,
    	"wires": []
	},
	{
    	"id": "26d9630fb660bc9d",
    	"type": "ui_gauge",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"group": "189e2e48.d109d2",
    	"order": 3,
    	"width": "3",
    	"height": "2",
    	"gtype": "gage",
    	"title": "Battery",
    	"label": "units",
    	"format": "{{value}}",
    	"min": 0,
    	"max": "100",
    	"colors": [
        	"#ff0000",
        	"#e6e600",
        	"#008000"
    	],
    	"seg1": "30",
    	"seg2": "70",
    	"x": 720,
    	"y": 1060,
    	"wires": []
	},
	{
    	"id": "0d4f374253a9f8d4",
    	"type": "ui_gauge",
    	"z": "35700ef4.b4cc62",
    	"g": "8c22d8c9580d2858",
    	"name": "",
    	"group": "189e2e48.d109d2",
    	"order": 4,
    	"width": "3",
    	"height": "2",
    	"gtype": "gage",
    	"title": "Voltage",
    	"label": "units",
    	"format": "{{value}}",
    	"min": 0,
    	"max": "5",
    	"colors": [
        	"#ff0000",
        	"#e6e600",
        	"#008000"
    	],
    	"seg1": "",
    	"seg2": "",
    	"x": 620,
    	"y": 1000,
    	"wires": []
	},
	{
    	"id": "e9b9f2a1a8421187",
    	"type": "function",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"func": "msg.payload = {}\nmsg.payload.chatId = CHANGE_CHAT_ID\nmsg.payload.type = \"message\"\nmsg.payload.content = \"Test sms! [myDacha]\"\nreturn msg;\n",
    	"outputs": 1,
    	"noerr": 0,
    	"initialize": "",
    	"finalize": "",
    	"libs": [],
    	"x": 990,
    	"y": 400,
    	"wires": [
        	[
            	"f5b3043a.2a3ff8"
        	]
    	]
	},
	{
    	"id": "548c306e6e2c111f",
    	"type": "debug",
    	"z": "35700ef4.b4cc62",
    	"g": "3a19bea8.e27032",
    	"name": "",
    	"active": true,
    	"tosidebar": true,
    	"console": false,
    	"tostatus": false,
    	"complete": "false",
    	"statusVal": "",
    	"statusType": "auto",
    	"x": 340,
    	"y": 400,
    	"wires": []
	},
	{
    	"id": "fddd6117.b012f",
    	"type": "ui_group",
    	"name": "Camera",
    	"tab": "39cad93e.df1b16",
    	"order": 3,
    	"disp": true,
    	"width": "10",
    	"collapse": false
	},
	{
    	"id": "371d08d2.682078",
    	"type": "ui_group",
    	"name": "Проверки",
    	"tab": "39cad93e.df1b16",
    	"order": 4,
    	"disp": true,
    	"width": "6",
    	"collapse": false
	},
	{
    	"id": "189e2e48.d109d2",
    	"type": "ui_group",
    	"name": "Состояние",
    	"tab": "39cad93e.df1b16",
    	"order": 1,
    	"disp": true,
    	"width": "6",
    	"collapse": false
	},
	{
    	"id": "172f5cc2.238383",
    	"type": "ui_group",
    	"name": "Показатели",
    	"tab": "39cad93e.df1b16",
    	"order": 2,
    	"disp": true,
    	"width": "18",
    	"collapse": false
	},
	{
    	"id": "d9de0dcc.3d2a6",
    	"type": "telegram bot",
    	"botname": "house_bot",
    	"usernames": "",
    	"chatids": "",
    	"baseapiurl": "",
    	"updatemode": "polling",
    	"pollinterval": "300",
    	"usesocks": false,
    	"sockshost": "",
    	"socksport": "6667",
    	"socksusername": "anonymous",
    	"sockspassword": "",
    	"bothost": "",
    	"botpath": "",
    	"localbotport": "8443",
    	"publicbotport": "8443",
    	"privatekey": "",
    	"certificate": "",
    	"useselfsignedcertificate": false,
    	"sslterminated": false,
    	"verboselogging": false
	},
	{
    	"id": "93c1182fe25c4f4a",
    	"type": "ina-sensor-manager",
    	"address": "0x36",
    	"delay": "1000",
    	"ohms": "0.01",
    	"customResistor": false
	},
	{
    	"id": "39cad93e.df1b16",
    	"type": "ui_tab",
    	"name": "Dacha",
    	"icon": "dashboard",
    	"order": 2,
    	"disabled": false,
    	"hidden": false
	}
]

Загружаем проект

В правом верхнем углу вызываем меню и выбираем «Импорт».

https://lh7-us.googleusercontent.com/aqgnp8JXyQrtimUBYamVUdTmHErObNeowU82p0o-REbhJ3u8qUkFjZsdrYHvJyzeWg3fagK5g2XMyzowQQXotTvDdBVkZw5HWdcgtD4d1SgDy7P5ZfFPM7tL0WMNxpyCokDI7G5Kt7h6BCcD1D6C_4c

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

https://lh7-us.googleusercontent.com/lHHBxWUN1PG2JHcHSQ-RJVU1TpW0qEkiRI8pAT6NZHO8LgyqIhPJgSKVcmWqHD1IqGmO-f2p-iN-N4041CZ3iLBij4cSHu1YprV96Y2lXeJWkiLjupL5O9OSkrtpFw3zoNut1XWVi5BNGj9WSpfvBnY

После успешного импорта json-файла в основном окне отобразятся все цепочки потока:

https://lh7-us.googleusercontent.com/zmca0zKXu0EmKYoHE2Y2c4iYXKMDg8UiXKV8hWwEi675dnmuEGjvpdUbbNe66v-w0-w_BB2nJvb3ALoSFSMun6BjAPmLfigQiRc-D2AE_d74E-AGfnEv7sDd72HsiqAUdQI14BxBcf631IAz1izCLyA
Результат импорта json-файла

Проект разбит на пять блоков (сверху вниз, слева направо): 

  • постановка на охрану и обработка сигналов с IP-камеры;

  • логика работы с датчиком температуры;

  • отображение системных метрик Raspberry Pi; 

  • обработка данных с UPS Lite;

  • управление Raspberry Pi Camera.

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

После загрузки потоки существуют только в редакторе, осталось загрузить их на сервер нажатием кнопки «Развернуть» в правом верхнем углу Node-RED.

На этом этапе система уже может выполнять охранные функции, оповещать в Telegram и предоставлять локальное онлайн-наблюдение. 

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

Настраиваем роутер и NAS

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

Так как захват видео с IP-камеры инициализируется самим NAS, а LTE-модем не имеет белого IP-адреса, нам потребуется VPN. В качестве VPN-сервера я выбрал Wireguard. Его преимуществом является быстрая работа (что важно для мобильного интернета) и простая настройка. Мой роутер от Mikrotik умеет работать с Wireguard. 

Настройка роутера сводится к добавлению интерфейса Wireguard, генерации приватного и публичного ключей сервера, плюс добавлении клиентов и маршрутов. Настройка Wireguard на роутерах Mikrotik вариант Site to Site подробно описана на официальном сайте. Вариант настройки через графический интерфейс можно найти на Хабре, например тут. Мой вариант настройки, где локальная сеть имеет адрес 192.168.0.255, VPN адрес 10.10.10.1, а локальная сеть на даче - 192.168.1.255 и VPN адрес 10.10.10.2 имеет такие настройки:

/interface wireguard
add comment="WG Server" listen-port=51820 mtu=1420 name=wg_server



/interface wireguard peers
add allowed-address=10.10.10.2/32,192.168.1.0/24 comment="WG Client" interface=wg_server persistent-keepalive=25s public-key=\
	"публичный ключ из файла wg-public.key"

/ip route
add disabled=no distance=2 dst-address=192.168.1.0/24 gateway=10.10.10.2 pref-src="" scope=30 target-scope=10

Для записи и хранения видео с IP-камеры NAS имеет программный модуль Surveillance Station. Это приложение, которое позволяет управлять IP-камерами из перечня поддерживаемых. Если вашей нет в списке, это не проблема, все IP-камеры имеют протокол ONVIF, который также поддерживает приложение.

Конфигурируем WireGuard на Raspberry Pi

Устанавливаем Wireguard:

$ sudo apt install wireguard

Генерируем приватный и публичный ключи клиента:

$ (umask 077 && wg genkey > wg-private.key)
$ wg pubkey < wg-private.key > wg-public.key

Создаем файл /etc/wireguard/wg0.conf с содержимым:

[Interface]
Address = 10.10.10.2/24
PrivateKey = Приватный ключ из файла wg-private.key
PostUp = /etc/wireguard/scripts/add-nat-routing.sh
PostDown = /etc/wireguard/scripts/delete-nat-routing.sh

[Peer]
PublicKey =
AllowedIPs = 10.10.10.0/24, 192.168.1.0/24б 192.168.0.0/24
Endpoint = белый IP роутера:51820

Содержимое файла wg-public.key надо вставить в настройки клиента в процессе настройки Wireguard на роутере. 

В параметры PostUp и PostDown указал путь к скриптам, которые проставляют маршруты и инициализируют LTE-модем при запуске VPN соединения, а при отключении VPN -  удаляют маршруты.

Скрипт add-nat-routing.sh

#!/bin/bash
IPT="/sbin/iptables"

IN_FACE="br0"               	# NIC connected to the internet
WG_FACE="wg0"                	# WG NIC
SUB_NET="10.10.10.0/24"        	# WG IPv4 sub/net aka CIDR
WAN_FACE="wan"
curl -H "Referer: http://192.168.99.1/index.html" "http://192.168.99.1/goform/goform_set_cmd_process?goformId=SET_CONNECTION_MODE&ConnectionMode=auto_dial"
## IPv4 ##
$IPT -t nat -A POSTROUTING -o $WG_FACE -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $WAN_FACE -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $SUB_NET -o $IN_FACE -j MASQUERADE

Скрипт delete-nat-routing.sh

#!/bin/bash
IPT="/sbin/iptables"
## IPv4 ##
$IPT -t nat -F

Настройки и названия интерфейсов будут описаны в разделе о  конфигурировании точки доступа. Команда curl в скрипте add-nat-routing.sh выполняет инициализацию LTE-модема, команду взял из документации к моему LTE-модему.

Конфигурируем точку доступа

Так как у Raspberry Pi Zero W есть wi-fi модуль, то я решил этим воспользоваться и сделать полноценную точку доступа для раздачи интернета на даче. Процесс создания точки доступа довольно сложный, руководствовался несколькими статьями тут и тут. Первым делом устанавливаем пакеты. 

Для настройки точки доступа:

sudo apt-get install hostapd

Для создания моста между wi-fi и ethernet  интерфейсами:

sudo apt-get install bridge-utils

Описал интерфейсы.

Интерфейс для локальной сети lan описал в файле /etc/network/interfaces.d/lan:

iface lan inet manual

Интерфейс для беспроводной сети wifi описал в файле /etc/network/interfaces.d/wifi:

iface wifi inet manual

Интерфейс LTE-модема wan описал в файле /etc/network/interfaces.d/wan:

iface wan inet static
    	address 192.168.99.100
    	netmask 255.255.255.0
    	gateway 192.168.99.1

Создаем мост и включаем в него интерфейсы lan и wifi:

sudo brctl addbr br0
sudo brctl addif br0 lan
sudo brctl addif br0 wifi

 Мост br0 описал в файле /etc/network/interfaces.d/br0:

auto br0
iface br0 inet static
	bridge_ports wifi lan
	address 192.168.1.1
	broadcast 192.168.1.255
	netmask 255.255.255.0

Чтобы мост заработал, исключаем из DHCP интерфейс wan, добавив в конец файла  /etc/dhcpcd.conf:

denyinterfaces wan

Добавляем диапазон для раздачи адресов в файл /etc/dhcp/dhcpd.conf:

subnet 192.168.1.0 netmask 255.255.255.0 {
    	range 192.168.1.100 192.168.1.254;
    	option routers 192.168.1.1;
    	option subnet-mask 255.255.255.0;
}

Осталось настроить саму точку доступа. Для этого создадим файл /etc/hostapd/hostapd.conf со следующими параметрами:

## Wireless network interface ###
interface=wifi
### Driver ###
driver=nl80211
### Network name SSID ###
ssid=НАЗВАНИЕ_WIFI_СЕТИ
### Set frequency to 2.4 Ghz ###
hw_mode=g
### Channel number ###
channel=4
### Enable Wi-Fi N ###
ieee80211n=1
### Enable WMM ###
wmm_enabled=1
### Enable 40 Mhz channels ###
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
### Allow all MAC Address ###
macaddr_acl=0
### Use WPA Auth ###
auth_algs=1
### Require clients to know the network name ###
ignore_broadcast_ssid=0
### Use WPA2 ###
wpa=2
### Enable Pre-Shared Key ###
wpa_key_mgmt=WPA-PSK
### Network key ###
wpa_passphrase=ПАРОЛЬ_СЕТИ_WIFI
### Use AES ###
rsn_pairwise=CCMP
bridge=br0

Обратите внимание, что там где указано НАЗВАНИЕ_СЕТИ_WIFI и ПАРОЛЬ_СЕТИ_WIFI следует придумать свои.

Указываем расположение конфигурационного файла для точки доступа в файле /etc/default/hostapd:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Осталось включить переадресацию трафика, раскомментировав в файле /etc/sysctl.conf строку:

net.ipv4.ip_forward=1

Выполняем рестарт Raspberry. После рестарта мы получим полноценный роутер с раздачей IP-адресов как по wi-fi, так и по ethernet, плюс подключенный интернет через LTE-модем и настроенный VPN-клиент.

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

В итоге получилось Site-to-Site соединение между домашней и дачной сетями. Это позволяет осуществлять доступ ко всем устройствам и сервисам на даче по внутренним адресам из домашней локальной сети через VPN, и доступ в интернет и в домашнюю сеть из локальной сети на даче.

Что дальше

В таком виде система работает уже более трех лет, сейчас появилась потребность добавить еще одну IP-камеру. Для этого достаточно подключить USB Ethernet-адаптер или добавить еще один Raspberry Pi Ethernet/USB HUB HAT к Raspberry Pi. Входов-выходов у Raspberry достаточно, чтобы добавить датчик дыма, а датчик температуры использовать только для наблюдения. Есть возможность добавить релейный модуль для включения света на участке при срабатывании движения от IP-камеры. Главное, что модернизация не потребует замены распределительного щитка и легко уместится в существующем.

Альтернатива

Raspberry Pi Zero был выбран исключительно из-за его размеров. Если размеры распределительного щитка позволяют, то проще будет использовать Raspberry Pi 3 и новее. В нем уже есть Ethernet и USB-порты. 

Конечно, можно обойтись и без I/O в IP-камере и использовать камеру с wi-fi, а управление и оповещение осуществлять из приложения через облако вендора. Для себя я исключил этот вариант только потому, что считаю проводное соединение надежнее, а облака в последнее время все чаще становятся платными.

Что еще? Недавно на рынок вышел интересный продукт - Mikrotik KNOT. Это полноценный роутер с wi-fi и POE, но самое главное - у него есть GPIO, что позволит подключить не только вход-выход IP-камеры, но и датчики, в том числе аналоговые.

*Статья написана в рамках ХабраЧелленджа 0.1, который прошел в ЛАНИТ осенью 2023 года

Комментарии (157)


  1. GennPen
    28.11.2023 07:32
    +12

    наличие охранных функций

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


    1. rootdefault
      28.11.2023 07:32

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


      1. Vutshi Автор
        28.11.2023 07:32
        +4

        На случай отключения электричества в системе предусмотрен мини безперебойник в виде UPS LIte, с последующим оповещением.


        1. NAI
          28.11.2023 07:32
          +2

          Камера же все равно питается по PoE - отключение ЭЭ превращает ее в тыкву.


          1. iShrimp
            28.11.2023 07:32

            Интересно было бы сделать один большой UPS из литий-титанатных элементов (2*66160?) и запитать все низковольтные устройства, максимально избавившись от преобразователей напряжения. Где бы найти подходящий контроллер заряда для этой цели.



            1. NAI
              28.11.2023 07:32

              У вас все равно будут преобразователи 1. для заряда ~220->напряжение аккума 2. для преобразования в напряжение PoE напряжение аккума (или ~220) -> 36\48... ну и прочие БП на меньшее напряжение. Так что, выглядит так как будто дешевле и проще купить обычный UPS и не париться с 66160


              1. iShrimp
                28.11.2023 07:32

                Основное требование - способность заряжаться при низких температурах, если нет отопления. Поэтому действительно нужна либо традиционная свинцовая АКБ (но стоковые батареи в ИБП не рассчитаны на работу при <0°C), либо титанат.


              1. Pofigator
                28.11.2023 07:32
                +1

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


    1. YaMax57
      28.11.2023 07:32
      +7

      Автор решал задачу охраны "участка с небольшим деревянным домиком". Обычно в таких случаях ГБР не совсем рентабельно. Как дополнение можно порекомендовать дополнить оповещение звонком хозяину дома.


      1. GennPen
        28.11.2023 07:32
        +14

        Автор решал задачу охраны "участка с небольшим деревянным домиком". Обычно в таких случаях ГБР не совсем рентабельно. 

        Это не означает, что система становится охранной.


      1. Komrus
        28.11.2023 07:32
        +3

        Которое будет трезвонить в самые неподходящие моменты по самым неочевидным поводам :)
        Иногда лучше - пусть уж аллюминиевые ложечки сопрут, чем охранная система будет мне в ночи названивать :)


      1. Didimus
        28.11.2023 07:32

        И как это поможет от незваных гостей?


        1. diaskzn
          28.11.2023 07:32
          +1

          Само наличие камер (легкозаметных) отпугивает некоторых пионеров.


          1. Didimus
            28.11.2023 07:32
            +1

            Или наоборот, привлечёт чуть более продвинутых, например, цветмет. Воруют всё, даже алюминиевую кружку украли.


    1. SelectVim
      28.11.2023 07:32
      +2

      У меня камера с функцией распознавания человека. Начинает орать сиреной и подсвечивать. ГБР пока доедет до деревни... а так, хоть мелких воришек отпугнёт


      1. GennPen
        28.11.2023 07:32

        а так, хоть мелких воришек отпугнёт

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


        1. SelectVim
          28.11.2023 07:32

          Ну, деревенские живут, спохватятся от воришек. В целом, ваше предложение тогда какое? За вменяемый ценник?


          1. CaptGg
            28.11.2023 07:32
            +4

            Нужно добавить к этой камере пейнтбольный маркер на сервоприводах и дистанционным управлением с телефона :)


            1. shasoftX
              28.11.2023 07:32
              +6

              Чтобы отломали и утащили и пейнтбольный маркер и сервоприводы?


          1. sergeyns
            28.11.2023 07:32
            +5

            Есть мнение что обычно деревенские и обносят домики "дачников"..


        1. Javian
          28.11.2023 07:32
          +2

          "Все замки от честных людей". Я свои камеры отношу к пугалам. У всех есть, а у меня что? :) Реальный функционал - посмотреть погоду и её последствия. Например не оторвало ли что-нибудь ураганом.


          1. iig
            28.11.2023 07:32
            +1

            Например не оторвало ли что-нибудь ураганом.

            Ну, и например если оторвало то что?


            1. NCNecros
              28.11.2023 07:32
              +6

              Поехать и прибить обратно


            1. Javian
              28.11.2023 07:32
              +2

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


              1. iig
                28.11.2023 07:32
                -4

                Хм. Значит, так, прошел ураган, сняло ветром половину крыши, но в камеру оно не попало. Ехать сегодня или через месяц?


                1. UGivi
                  28.11.2023 07:32
                  +2

                  Камеру не оторвало, а дерево упало и проломило крышу. Через месяц надо будет не залатать пробоину, а выкинуть дофига плесневого (т.е. цена вырастет на порядок. Или два. Десятичных).


                  1. iig
                    28.11.2023 07:32

                    Вот именно. После урагана ехать сразу и в любом случае.

                    Ну, или там 10 камер, которые полностью просматривают весь участок во всех направлениях.


                    1. UGivi
                      28.11.2023 07:32
                      +2

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

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


                      1. SpiderEkb
                        28.11.2023 07:32
                        +2

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

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

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


                      1. Javian
                        28.11.2023 07:32

                        Ничто не мешает сделать такой автоматический сценарий - включать свет в разных комнатах с наступлением сумерек изображая присутствие. Например с 18 до 21. А потом зажечь в одной из комнат фальшивый "голубой свет телеэкрана" на пару часов.


          1. Forvad
            28.11.2023 07:32
            +2

            >>не оторвало ли что-нибудь

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


      1. SpiderEkb
        28.11.2023 07:32
        +3

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

        Так что слово "охрана" тут явно лишнее.

        Опять же (уже моя практика), отключение электричества может быть на 6-8 часов. Например, плановое, ремонт подводящих линий или ТП. Часа тут явно мало.

        У меня в доме на этот случай все критические линии (в т.ч. розетки в кабинете - инет, компы) запитаны через 3КВА инвертор с аккумуляторами на 2400ВАч

        Пожарная сигнализация тоже под вопросом - деревенский домик сгорит дотла пока доедет команда.

        Что еще остается? Я бы скорее организовал контроль за параметрами дома - температура (особенно если дом находится зимой в режиме "неразморозки" т.е. там поддерживается минимальная плюсовая температура), наличие электричества, отсутствие протечек и т.п.

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

        Ну может быть еще какие-то сервисные функции типа потребления тепла, электричества по времени и т.п.

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


        1. SelectVim
          28.11.2023 07:32

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

          Звонок на калитке с видеокамерой. Тоже реагирует на движение. Снаружи дома освещение на умной розетке. Включается по расписанию. Дом не выглядит нежилым. Насос на умной розетке. Выключается, когда уезжаем. Протечек не будет.

          Аккумуляторов нет, свет редко на долго отключают. Обычно на пару часов. Постоянная запись видео не нужна. Только на движение. Сохраняются на карту памяти. Можно смотреть удалённо. Наличие электричества определяется легко -- есть ли связь. А что ещё там нужно в маленьком деревенском доме? А! Ещё купил фотоловушку, повесить на бытовку сзади участка. Но это для души -- участок на границе леса, зверюшек смотреть)

          Про пожарку: имеет смысл купить огнетушители -- сферы противопожарные. От температуры срабатывают, колба взрывается. Разместить рядом с опасными местами.


          1. NCNecros
            28.11.2023 07:32

            А почему не запилить датчик температуры? Зачем так брутально - смотреть на градусник камерой?


            1. SelectVim
              28.11.2023 07:32

              А зачем? Градусник 50 рублей. Или 400 от Сяоми, который график температуры хранит. Я узнаю, что у меня проблемы с температурой, когда вырубят свет надолго, так как отопление от электричества. А узнаю, что долго нет света -- придёт сообщение, что камеры не в сети. Ну, в 80 % случаях. Остальное -- проблемы со связью или серверами. Датчик -- хаб нужен. В итоге 10 000 и тот же функционал для меня. А света не будет, так и датчик не пришлёт сообщение без электричества.


              1. iig
                28.11.2023 07:32
                +1

                Градусник 50 рублей.

                DS1820 тоже недорого.


        1. slonopotamus
          28.11.2023 07:32

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

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

          О, как раз мой случай. А посоветуйте, из чего собрать занедорого? Интернет на даче есть. Электрокотёл олдскульный, управляется аналоговой крутилкой со встроенным термометром. Ставлю на +5 градусов тепла, когда на даче никого нет. Интуитивно догадываюсь, что вместо крутилки можно подключить что-то более электронное и умеющее в вайфай, но вот что... Ну и никакой завязки на облака (допустим я порешаю вопрос с выдачей девайсу белого адреса).


          1. Javian
            28.11.2023 07:32

            В комментариях обратите внимание на термостаты https://habr.com/ru/articles/762730/#comment_26019394

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

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


            1. slonopotamus
              28.11.2023 07:32

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

              Возможно я плохо объяснил (или плохо вас понимаю). Котёл самостоятельно включается-выключается, поддерживая температуру, заказанную на термостате. (И вообще, в контуре не вода, а антифриз :D)

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


              1. SpiderEkb
                28.11.2023 07:32
                +2

                Насколько я понимаю в теплотехнике и теории управления :-) там должно быть примерно так:

                • Котел своим термостатом поддерживает температуру теплоносителя.

                • "На местах" (в помещениях) некое устройство по своему датчику температуры регулирует интенсивность теплоотдачи путем изменения расхода теплоносителя через радиатор.

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

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

                Это если вкратце, на пальцах.


              1. Javian
                28.11.2023 07:32

                по указанной ссылке идет обсуждение этого комментария @Kononvaler

                комментарий

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

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

                Т.е. комната это некий бассейн, в который втекает и вытекает вода. Вытекает - это потери тепла через стены, окна. Втекает - это батареи отопления.

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

                Увеличивать и уменьшать температуру теплоносителя достаточно сложно - большая масса жидкости инерциальна. А температура батареи регулируется за несколько минут - открылся термостат и она нагрелась т.к. жидкость в контуре всё время поддерживается горячей.


                1. SpiderEkb
                  28.11.2023 07:32
                  +1

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

                  А дальше принцип обратной связи - температура пошла вниз - надо добавить тепла. Пошла вверх - убавить. Обычно там используется простейшее релейное регулирование с гистерезисом. Например, установлена температура T. Как только температура в помещении опустилась ниже T - 0.5, включаем обогреватель. Повысилась до T + 0.5 - выключаем. Это просто и эффективно.

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

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

                  У меня конвекторы вообще +/- градус работают. Установлено 23 градуса - опустилось до 22, конвектор включился. Поднялось до 23 - выключился. Дискомфорта не ощущаю.

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


                  1. Javian
                    28.11.2023 07:32

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


                    1. SpiderEkb
                      28.11.2023 07:32

                      Ну это понятно. Резерв может быть в любом случае. Газ тоже бывает с перебоями. И котел может выпасть в ошибку и встать. Много чего может быть.

                      В целом, у меня дом при -20 часов 8 держит без отопления (ну прохладно становится - где-то до 19-ти градусов опускается температура) точно. Больше не было за три года (и это-то один раз всего).

                      Конечно, можно параноидально контейнерную дизелюку киловатт на 20 поставить... И тогда вообще все побоку :-)


                      1. exTvr
                        28.11.2023 07:32

                        контейнерную дизелюку киловатт на 20 поставить

                        А к ней пост охраны :))


                  1. GennPen
                    28.11.2023 07:32
                    +1

                    Выход на режим (когда обе температуры постоянны) идет по затухающей синусоиде. 

                    ПИ(Д) регулятор плохо настроен, если так устанавливает температуру.


                    1. SpiderEkb
                      28.11.2023 07:32
                      +1

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

                      Или вам придется туда закладывать очень много данных (например, точное значение реального теплового потока через ограждающие конструкции в Вт/град для каждого помещения которое можно получить только путем измерений), плюс текущие температуры в каждом помещении плюс температуру на улице плюс учесть инсоляцию... На практике пости нереально.

                      Или делать его "самообучающимся". Что тоже такое себе...

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

                      Был опыт построения ладораторного термостата с точностью до 0.001 град. Именно на ПИД регуляторе. Там термостатировалась медная болванка весом порядка 10кг внутри которой размещался сам объект (ампула емкостью порядка 1куб.см.). Был нагреватель (электрический) и был охладитель (рубашка, через которую гонялись пары азота).

                      Выход на "точку измерений" (заданную температуру) занимал несколько часов. Потом несколько часов измерений при данной температуре и переход на новую точку (там уже быстрее т.к. в первый раз шли от "комнаты", все последующие уже с шагом в 2-3 градуса вниз).


                      1. SergeyMax
                        28.11.2023 07:32

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

                        Нет.


                1. slonopotamus
                  28.11.2023 07:32

                  Я понял что не понимаю куда у меня идут провода от измерителя комнатной температуры. Но котёл включается/выключается в зависимости от разницы между заказанной и фактической комнатной температурой мгновенно. Вряд ли бы это так работало, если бы что-то механическое останавливало теплоноситель. Короче, приеду на дачу, попытаюсь понять как это устроено)


              1. AWRDev
                28.11.2023 07:32
                +1

                Так, как вам предложили, наверное возможен следующий вариант:
                Ставятся термостаты на выход/вход котла
                Котел выкручивается на максимум
                Учимся жонглировать крутилками термостата, для достижения необходимых условий))
                По поводу замены крутилки на котле, мне кажется такое существует, в плане "умной крутилки", которая насаживается на вал имеющийся. А вот про замену готовую самого термостата я не уверен, если у вас там что-то трехфазное/трехкнопочное, где на температурах до 60 только одна кнопка работает, до 80-2, и до 100 - 3, грубо говоря, я так и не понял какая у них логика.
                Самоделку какую-то придумать точно можно)


          1. aMster1
            28.11.2023 07:32

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

            Управление там через GSM, через программку от ZONT


          1. SpiderEkb
            28.11.2023 07:32
            +1

            С котлом не подскажу - не знаю.

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

            Система отопления распределенная - в каждом помещении конвекторы (на первом этаже еще теплые полы). Каждый конвектор (или элемент теплого пола) подключен через свой термостат. Термостаты китайские - Beok TDS21 WIFI-EP Wifi Но в целом это "фабричный Китай" - компания давно работает по этому профилю.

            Почему не стал делать котел?

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

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

            • Простота управления - по каждому помещению могу поддерживать температуру индивидуально (например, у меня на втором этаже есть детская и гостевая - используются только когда кто-то приезжает в гости, остальное время - двери закрыты, температура поддерживается на уровне 15-17 градусов)

            В целом - нормальные устройства. 4 года работают без проблем. Может работать как по встроенному датчику температуры (для конвектора) или по внешнему (идет в комплекте - это для теплых полов). Может работать как в ручном режиме - выставил температуру, он ее держит, так и в автоматическом - задается расписание (три режима - все дни одинаковые, 5 + 2 или 6 + 1 - это будни-выходные) 6 временных интервалов, для каждого своя температура. Для конвекторов использую - ночью держу пониже, днем повыше. В спальнях так лучше спится, в остальных помещениях ночью никого нет - нет смысла греть по полной.

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

            Что касается котлов - у них есть термостаты для электрокотлов - они обозначаются индексом WP. Разница в нагрузочной способности - у EP 16А максимальный ток, у WP - 3А (т.е. он не напрямую котел коммутирует, а управляющее реле). Но там смотреть надо, разбираться как он с котлом стыкуется. Я не вникал в эту тему.


            1. andrey_novikov
              28.11.2023 07:32

              А какие конвекторы?


              1. SpiderEkb
                28.11.2023 07:32

                В принципе, любые. Желательно - самые простые, без электроники, с механическим термостатом. Дело в том, что термостат висит на противоположной стене в 1.5м от пола. Розетка, куда конвектор включен, запитана через него. Т.е. он управляет розеткой. Не уверен, что для конвекторов с электронным управлением это будет хорошо когда ему постоянно питание будут включать-отключать. Да и не нужен там термостат вообще. Я бы вообще взял (если бы были такие) что-то без термостата, только с датчиком авариного перегрева.

                Конвектор при этом просто воткнут в розетку эту и его крутилка выкручена на максимум.

                Конкретно у меня - ADAX (Норвегия) серии KT (механический термостат). Типа такого Мощности разные в разных помещениях - от 0.6 до 2кВт Сейчас, по-моему, их уже не найти - серия не производится. Есть еще что-то из более новой линейки ADAX NOREL (там тоже есть с механикой). Типа таких То же самое, чуть другой дизайн.


          1. woozle
            28.11.2023 07:32

            Имейте только в виду инертность отопления. Зависит конечно от объема и запаса по мощности всей системы, но например у меня в большом доме с высокими потолками подогреть можно зимой ну на +1 градус в сутки. Экспериментировал два года, и в итоге даже с приездом только по выходным разница между режимом "пониженной температуры в отсутствие людей" и режимом "всегда 22 градуса" составила в части затрат на газ примерно 7%, что ничтожно мало (около 3-4т.р. за ГОД в ценах 2018-2022гг.).


          1. Kononvaler
            28.11.2023 07:32

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


        1. UGivi
          28.11.2023 07:32

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

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


          1. SpiderEkb
            28.11.2023 07:32

            Я исхожу из практики. Того, что периодически вижу в сети. Всегда и везде "на камерах какие-то тени в темной одежде, лиц не видно". К делу не пришьешь.

            Тем более, что речь идет о камерах с низким (3МП) разрешением, в условиях плохой освещенности.

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


            1. UGivi
              28.11.2023 07:32

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


        1. MrAloof
          28.11.2023 07:32
          +1

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

          Да, пусть через несколько часов начинаются привет. Но по следам, опросу людей, известному времени получается найти откуда и на чём приехали.

          Да, очень важно обеспечить автономное питание и копирование в облако. Потому что стремятся отрубить электричество и утащить сам регистратор...


          1. UGivi
            28.11.2023 07:32
            +1

            Иногда - зимой, иногда - осенью (зимой ворота примерзают/заснеживаются и не заехать, а на дороге ты слишком заметен, если не в глухом тупике, автомобиль обычно старое ведро на лысой резине - и под строителей косить и бросить не так велика потеря, снега мешают), сначала разведка и подготовка объекта (удаление замков для быстрого заезда, подготовка площадок для преодоления забора, осмотр на предмет ловушек и оценка добычи), отключение питания за пару дней до события. Про этих ребят можно приключенческое кино снимать (с хэппиэндом, десятки эпизодов, 0 пойманных). Возможно, пред-разведка под видом "работаесть?" и отслеживание ремонтов-строек-апгрейдов домов (несколько эпизодов сразу после завершения скройкоремонтных работ, заодно соседи не так реагируют на шум, машину, непонятных людей).


    1. UGivi
      28.11.2023 07:32

      В некоторых местах их тарифы таковы, что грабителями являются они. И гарантий (по реальным кейсам) есть не особо много. Добавить никакую связь и становится ещё интереснее.


  1. ABATAPA
    28.11.2023 07:32
    +31

    "Как не надо делать"

    230В и "низковольтка" в одном шкафу и даже на одной DIN-рейке, открытые неизолированные пины RP, тут же рядом USB, LAN, плёночный шлейф вообще идёт наружу, прижимаемый дверью... Энергонадзора на Вас нет.



    1. Earthsea
      28.11.2023 07:32
      -5

      230В и "низковольтка" в одном шкафу и даже на одной DIN-рейке

      Ну, начнем с того, что 230В это и есть низкое напряжение, как и 400В, и 600В, и даже 900В. И продолжим тем, что и в одном шкафу, и на одной динрейке вполне могут быть автомат и контроллер. Впрочем, контроллер обычно тоже в DIN-корпусе, а не голая плата как здесь. Шлейф под дверью конечно это прикол.

      Силовой и сигнальный провод в разных каналах нужно проводить.


      1. Komrus
        28.11.2023 07:32
        +9

        230В это и есть низкое напряжение, как и 400В, и 600В, и даже 900В

        Программисты считают, что в одном километре - 1024 метра, а таксисты - что в одном кБ - 1000 байт :)
        Также и с напряжением: для больших энергетиков - 900 вольт это "низкое".
        А для ИТ- шников/слаботочников всё, что больше 48 В - это высокое :)


        1. SpiderEkb
          28.11.2023 07:32
          +2

          Вообще, да. Если посмотреть по допускам к работе с... то все, что выше 48В уже требует допусков соответсвующих.

          И, конечно, правильно будет разнести по разным корпусам 220/380 и всю слаботочку.


        1. no1D
          28.11.2023 07:32
          -2

          В одном kB 1000 байт, кило это приставка системы си 10^3.
          Это в одном KiB 1024 байта.


          1. UGivi
            28.11.2023 07:32

            Шутке про килобайт лет больше, чем многим хабровчанам, кибибайт появился совсем недавно - в 1998м.


    1. Tavrid
      28.11.2023 07:32
      +9

      Правильный термин — слаботочные сети.
      Но, действительно в щитке ДИЧЬ. Блок питания в бытовой форме корпуса "всунутый" бочком в полностью закрытый щиток = проблемы перегрева и возможного пожара щитка.
      Не раскрыта тема ЭМ-импульсов при срабатывании автоматов и их влияние на неэкранированный микрокомпьютер/микропроцессор. Из примеру, у нас современный лифт "глючило" от того, что управление было в одном щите с силовыми цепями (контакторы).


      1. GDragon
        28.11.2023 07:32
        +1

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


    1. Komakc
      28.11.2023 07:32
      +1

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

      По поводу терминов, то здесь всё низковольтное оборудование (до 1000В). И делится данный шкаф на силовую часть (слева) и на слаботочку (справа).

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


      1. GDragon
        28.11.2023 07:32
        +4

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


        1. SpiderEkb
          28.11.2023 07:32

          Вообще СИП идет только до входного автомата на уличном щитке. Дальше уже медь. От уличного щитка на внутридомовой и оттуда разводка по дому.


          1. GDragon
            28.11.2023 07:32

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


            1. SpiderEkb
              28.11.2023 07:32

              Ну у меня ящик на столбе в 50м от дома. Там входной автомат, УЗИП и розетка одна. Заземление у ящика свое.

              От него в земле 4х10 медь к дому. Там уже свое заземление и свой щиток - тоже входной автомат и групповые автоматы (или где надо диффавтоматы). И второй щиток на втором этаже - так проще разводку делать было - на второй этаж просто один кабель 5х5 идет.

              В целом порядка километра проводов разных ушло на дом. И автоматов/диффавтоматов штук 50...


      1. Anvano
        28.11.2023 07:32

        Про СИП прям боль, тупорылые энергетики при подключении завели СИП без гильзования, прямо в клеммы автомата (хорошо, что на столбе на улице) и ЗАПЛОМБИРОВАЛИ клеммы так, что их даже подтянуть нельзя теперь.

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


        1. sim31r
          28.11.2023 07:32
          +1

          Тепловизором проверяйте периодически контакты все. Я так нашел один греющийся медный.


          1. GDragon
            28.11.2023 07:32

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


            1. sim31r
              28.11.2023 07:32

              Термолаки еще есть, можно красить кабель у ввода.


              1. GDragon
                28.11.2023 07:32
                +1

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


    1. Didimus
      28.11.2023 07:32
      +1

      Кстати, динрейка, на которой собран щиток, светится на индикаторе не хуже фазы.


    1. 00DVS
      28.11.2023 07:32

      Если добавить частотные преобразователи асинхронных приводов будет почти описание шкафа не самого старого станка с ЧПУ. Например, сверлильно-отрезного-с. Оформление силовой и слаботочной части в шкафах промышленного оборудования уважаемых производителей ну оооччень условное, надписей на разных языках снаружи инспекторам обычно достаточно чтобы внутрь не заглядывать))


  1. Helgich
    28.11.2023 07:32
    +3

    Гнать поток с 2х камер через сотовую сеть...одна камера в 5 мегапикселей по протоколу h.265 генерирует в сутки от 30 до 200 Гб, как вы с этим справляетесь? Сколько в месяц выходит?


    1. Vutshi Автор
      28.11.2023 07:32
      +1

      Камера 3мп. В день порядка 50-100Гб в зависимости от погоды.

      Вторая 1мп. В среднем в день 15-20Гб.

      Тариф безлимитный от известного опертаора.


      1. sim31r
        28.11.2023 07:32
        +5

        На глазок вы занимаете 20% частотной полосы базовой станции оператора. Он вероятно не может отследить такую ситуацию ввиду редкости. Но другим пользователям такая нагрузка может доставлять неудобства. Я даже на офисном WiFi стараюсь меньше трафика гнать и по возможность на Ethernet проводной подключаюсь, просто чтобы эфир и так перегруженный не занимать.


    1. boulder
      28.11.2023 07:32
      +1

      Рискну сказать, что к исходящему трафику операторы относятся менее критично. У меня около 100Гб в месяц, но это только дежурные картинки с камер.


      1. efcadu
        28.11.2023 07:32

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


        1. boulder
          28.11.2023 07:32
          +1

          Мне помнится, даже на GPRS операторы суммировали входящий и исходящий :)


    1. MAXInator
      28.11.2023 07:32
      +2

      Мне кажется, что пора бы переходить на h.265+, с 5мп камеры - около 3 Гб в сутки (поток около 300 килобит в секунду).


      1. boulder
        28.11.2023 07:32

        Это же вспомогательный поток, 320x240 или что-то там, иначе одна листва летом эти гигабайты перекроет? :)


        1. MAXInator
          28.11.2023 07:32

          Нет, это основной поток, постоянная запись, 25 FPS с минимальным сжатием и переменным битрейтом. У субпотока (HVGA, 20 FPS) 13 килобит/сек.


          1. boulder
            28.11.2023 07:32

            Понимаете, какая штука, 0.3 * 60 * 60 * 24 = 25920 kByte. А листья на ветру движутся летом как минимум 12 часов.


            1. boulder
              28.11.2023 07:32

              Ах, килоБит. Ну, плюс-минус похоже, да. Всё равно удивительно, что так мало ;)


        1. Vutshi Автор
          28.11.2023 07:32
          +1

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


      1. Maxim_Q
        28.11.2023 07:32

        пора бы переходить на h.265+

        Проводил тестирование новомодного h.265+ качество картинки вышло хуже чем просто h.265, никакими настройками камеры не получилось сделать сопоставимое качество. Тут простая логика что при уменьшении битрейта будет страдать качество картинки, ничего просто так не бывает.


        1. MAXInator
          28.11.2023 07:32

          Проводил тестирование новомодного h.265+ - качество картинки вышло точно такое же, как у просто h.265. Может, у вас камера не справляется, например?

          А аргумент про невозможность разменять битрейт на мощности обработчиков битрейта - это уж какое-то средневековье, уж извините.


          1. Maxim_Q
            28.11.2023 07:32

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

            https://hikvision.ru/product/ds_2cd2087g2_lu

            https://hikvision.ru/product/ds_2cd2t83g2_2i

            Битрейт ставился максимальный 16000 Кб, тестирование проходило на картинке с улицы. Для помещения будет немного по другому, но у меня нет возможности протестировать камеры в помещении. Анализ проводился покадрово с возможностью рассмотреть лица и детали одежды идущего человека. Статичные картинки не анализировались! Если у вас получится, попробуйте повторить свой нализ на себе походите перед камерой и внимательно проанализирйте еще раз свое лицо, у меня при вклюенном h.265+ получалось хуже.


  1. Zivaka
    28.11.2023 07:32
    +1

    В вашей вселенной еще не изобрели ivideon?


    1. uhf
      28.11.2023 07:32
      +4

      Это как на форуме поваров предложить купить замороженную пиццу.


      1. Zivaka
        28.11.2023 07:32
        +5

        Учитывая задачу, не соглашусь и тогда аналогией будет - открыть столовку, чтобы было где обедать)


    1. vvzvlad
      28.11.2023 07:32
      +2

      Есть китайские камеры с бесплатным облаком


  1. dvb-des
    28.11.2023 07:32
    +4

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


    1. CaptGg
      28.11.2023 07:32
      -1

      Что за видеорегистратор может стоить всего 35 долларов да еще с детектором лиц? За такие деньги я встречал только какие-то no name виснущие коробки с ПО времен Windows XP в комплекте. Такие регистраторы минимум в 2 раза дороже стоят, во всяком случае на известных сайтах.


      1. dvb-des
        28.11.2023 07:32
        +2

        https://sl.aliexpress.ru/p?key=ZlIpUI4

        Покупал плату, так как корпус у меня был от старого.


        1. 104u
          28.11.2023 07:32

          Брал за 2к 16 канальный для ip камер, тоже только плату. Насчёт распознавания не помню, xmeye тоже в наличии (хотя этот сервис вроде как дырявый до ужаса)


        1. CaptGg
          28.11.2023 07:32

          Спасибо, может пригодится. Но все же плата регистратора - это не регистратор, это конструктор. К тому же для аналоговых AHD, без поддержки IP, т.е. опять же даже не гибридный. Всё это в совокупности довольно далеко от изначальных условий.


          1. 104u
            28.11.2023 07:32

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

            P.S. толкают готовые и за 2.5к (те, что с одним портом), распознавание тоже обещают


          1. dvb-des
            28.11.2023 07:32

            1: 8CH 5MP-N XVI/AHD/CVI/TVI
            2: 8CH 5MP-N XVI/AHD/CVI/TVI + 4CH 1080P IP
            3: 16CH 1080P IP
            4: 8CH 5MP IP

            Это гибридный видеорегистратор


  1. in_terek
    28.11.2023 07:32
    +1

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


    1. AnGord
      28.11.2023 07:32
      +1

      Это пока контролер не придёт. После чего автор будет не рад, что вообще все это собрал.


    1. Vutshi Автор
      28.11.2023 07:32
      +2

      Так и планировал, вынести счетчик на столб, чтоб освободить шкаф для POE-роутера, но пришли электрики, сказали будешь строиться, тогда и вынесем на столб.


  1. Daddy_Cool
    28.11.2023 07:32

    Ну вот невыдуманная история.
    Наша дача и соседская, звоня соседи - говорят - у вас окно открыто, а к нам залезли.
    На дворе осень. Приезжаем - ну да, отжато окно выходящее во двор и... вроде всё. Из ценного у нас на даче газонокосилка и кофемолка. Возможно украли старую зимнюю куртку и новый комплект постельного белья, но не факт, (может куртку я и раньше кому-то отдал, а комплекты белья... ну фиг знает). У соседей украли новый телевизор и 50 тыс. рублей, лежавших где-то в столе - они собирались что-то покупать для дачи - люди там живут всё лето и обустраиваются с комфортом.
    В СНТ все улицы просматриваются камерами, но... данные хранятся две недели, а это всё случилось ровно две недели назад. Грешили на неких молдаван которые обитали рядом, подряжались работать и потом уехали домой. Через несколько месяцев воров нашли - оказались какие-то местные забулдыги, они попались на чем-то еще. Почему выбрали наши дома - наверное потому что они на краю СНТ, вышел из леса - и вот. После этого случая я выразил озабоченность и задумался о видеонаблюдении.
    ----
    Я одно время помогал народу с видеонаблюдением, я бы сделал просто - старый компьютер, в него плату видеонаблюдения и gsm-модем. Но вот вопрос пожароопасности остается всегда когда что-то работает само по себе. Т.е. нужна какая-то независимая противопожарная система.


    1. Vutshi Автор
      28.11.2023 07:32
      +1

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


      1. NAI
        28.11.2023 07:32
        +1

        А что не так с пожаробезопасностью какого-нибудь nuc-ообразного ПК или ноутбука по сравнению с предложенным решением? тот же блок питания с ~220 на 5\9\12 В. Прячется куда угодно, хоть в стену вмуровывай. Без корпуса по размерам как две малинки (а какой-нибудь firebat на N100 еще и меньше).

        Если уж очень боитесь за пожарку - положите в песочную ванну (тепловыделение только посчитайте), заведите отдельный автомат по номиналу (а не вот это всеми любимое 16А) и будет вам счастье


        1. boulder
          28.11.2023 07:32
          +1

          Кирпичный погреб — идеальный вариант. Если не затапливает, конечно.


        1. sim31r
          28.11.2023 07:32

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


          1. NAI
            28.11.2023 07:32

            Лучше предохранитель без запаса по току и УЗО. 

            УЗО то нафига? Подразумевается же закрытая, необслуживаемая система, да еще и с доступом условно квалифицированного специалиста (автора).

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

             на монитор

            какой монитор? откуда монитор?

            Чтобы системные блоки горели

            Системные блоки не горят. Горят блоки питания, дешевые и китайские. Схемотехника то +- у всех одинаковая. А сколько историй было когда конденсаторы взрывались?


            1. sim31r
              28.11.2023 07:32
              +1

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

              Для пожарной безопасности. Если начинается утечка тока всё обесточиваем.

              Про предохранители, тоже такое себе

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

              Плюс предохранители соблюдают "иерархию" при срабатывании, вышестоящие продолжают работать, когда нижестоящие более слабые сгорают. Автоматы могут обесточиться все, и на потребителе и вышестоящие. Тоже дома не важно, а на предприятии может быть важно.

              Горят блоки питания, дешевые и китайские

              Вот ни разу не горели. Срабатывает предохранитель встроенный и всё на этом. Лампочки светодиодные горели видел и светильники.


              1. NAI
                28.11.2023 07:32
                +1

                Плюс предохранители соблюдают "иерархию" при срабатывании

                Нафига вам селективность в домашних условиях? Мы тут явно не промку обсуждаем, а rpi\nuc.

                Второе, 16 А модулька С имеет частичную селективность с 0.5..10 А модулькой В (от 190 до 770 А в зависимости от номинала). Дальше идем и считаем ТКЗ, вангую, что на дачах с учетом спаек, удаленности от подстанции, ТТ, и прочих "соединительных" элементов он примерно таким и будет. Не, если у вас 6\0.4 из окна видна то как бы да, тогда ТКЗ будет выше.

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

                Нет, это самый надежный способ обесточить цепь. 

                Мы тут надежность считаем для каждой АСУ ТП (ну и испытания всякие проводим), я с радостью послушаю про надежность плавких вставок, особенно про то как они соответствуют номиналу.

                Для пожарной безопасности. Если начинается утечка тока всё обесточиваем.

                Так как бы у всех нормальных людей на вводе ставят 100 мА (особо упоротые 30 мА) узо + мокрые зоны, нафига вам на отдельный фидер с одним единственным потребителем, еще одно УЗО?


                1. sim31r
                  28.11.2023 07:32

                  Мы тут надежность считаем для каждой АСУ ТП (ну и испытания всякие проводим), я с радостью послушаю про надежность плавких вставок, особенно про то как они соответствуют номиналу.

                  Ну пишут так

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

                  Например, если нужна отключающая способность более 25 кА, за ту же цену можно поставить предохранители с теми же параметрами, что и АВ, и запастись предохранителями на десятилетия вперед.

                  А автоматы чему соответствуют? Обычный автомат из магазина электротоваров может заклинить при токе от 100А и будет пожар. Или вместо 10А длительно пропускать 25А.

                  С пожароопасности и началось обсуждение. Как предотвратить пожар на удаленном не обслуживаемом объекте. Автомат дешевый тут так себе выбор. Предохранитель намного надежнее будет. А можно поставить и то и другое. Чтобы не получить такое:

                  на отдельный фидер с одним единственным потребителем, еще одно УЗО?

                  Не факт что на даче есть УЗО. Если есть обеспечит более раннее срабатывание, но на 100 мА, а на 10 мА например. В нормальных условиях ток утечки ИБП определяется X конденсаторами и составляет микроамперы. Если пошел больший ток, значит что-то не так.

                  На обычной даче не нужен. А в контексте обсуждения снижения пожарной опасности, нормальное дополнение. Плюс программируемое реле. Смотрим ток потребления электроники, например 0.1А и делаем уставку на 0.15А, плюс уставку по напряжению 170-250В.


                  1. iig
                    28.11.2023 07:32
                    +2

                    А это точно была перегрузка по току? Или просто незатянутый контакт перегрелся?


                    1. GennPen
                      28.11.2023 07:32
                      +2

                      Судя по цвету жилы - алюминиевые провода, со всеми вытекающими.


                  1. NAI
                    28.11.2023 07:32

                    А автоматы чему соответствуют? Обычный автомат из магазина электротоваров ... Автомат дешевый тут так себе выбор. 

                    Ну давайте китайцев или iek сравнивать, чё уж. Всегда можно найти г*но которое не соответствует ТТХ или подделку. А давайте Arcti9 возьмем, да еще и прогрузим и убедимся, что оно срабатывает. У нас кстати, не было ни одного случая чтобы Arcti не прошел испытания.

                    И вот вам вишенка на торте - автомат вы можете прогрузить и проверить, вставку - хер. Вы просто надеетесь что испытав 10 шт из партии в 100, остальные такие же (что по теор.веру может быть соооовсем не так)

                    их применяют там, где большие токи (номинальные и КЗ).

                    Еще раз, чем дальше вы от ТТ, чем больше сопротивление ЛС тем ТКЗ меньше, "более 25 кА" я видел лишь однажды, когда от ТТ шла медная шина в шкаф распределения (строго говоря это была линейка шкафов соединенная с трансом) и то проблема была как раз в необходимости запитать 2 А устройство в обход распределения. Любой автомат распределения, типа NSX\Masterpact снижает ТКЗ. Когда мы говорим про загородный дом\дачу, представляете какие там линии с каким сопротивлением?

                    Не факт что на даче есть УЗО.

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

                    На обычной даче не нужен. 

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


                    1. sim31r
                      28.11.2023 07:32
                      +1

                      А давайте Arcti9 возьмем, да еще и прогрузим и убедимся, что оно срабатывает. У нас кстати, не было ни одного случая чтобы Arcti не прошел испытания.

                      Первый раз слышу такое, при чем тут специфическая торговая марка? Она дешевле предохранителя или надежней?

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

                      Предохранитель ценой в 0.25$ на 0.1А поставить проще и надежнее. Именно для питания системы видеонаблюдения и оборудования связи. У автора сейчас на 10А автоматы. Если в БП обгорят дорожки и он начнет потреблять 9.9А, выделяя при этом 2 кВт энергии в виде огня и дыма, автоматы не сработают. Будет примерно такое, особенно если плата из гетинакса и пластиковый корпус то ситуация опасная, я сам такое видел насколько раз в осветительных приборах, ни какие защиты не срабатывали, приводило к задымлению помещения, далее отключали вручную:

                      Я предложил поставить предохранитель на 0.1А ценой 0.25$ и по желанию настраиваемый автомат по току (на Алиэкспрессе за 7$), это избавит от таких рисков. Событие как на картинке дает рост потребляемого тока, но не такой, чтобы сработали автоматы.

                      Порошковая система пожаротушения и специфическое оборудование которое вы перечислили будет дороже.


  1. Komrus
    28.11.2023 07:32
    +8

    Как говорится, "Вот так, с помощью нехитрых приспособлений буханку хлеба можно превратить в троллейбус… Но зачем?"

    Так и тут - навертели много, но зачем? :)

    Если уж считать по честному:

    Дисковая ёмкость (сами HDD) что в NAS'е, что в видеорегистраторе - стоит одинаково. Для хранения архива нужно гигов несколько. Вот далеко не факт, что они будут вот так свободные и не нужные. Надо диск покупать. Надо его куда-то ставить.

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

    Висящая на шлейфе Raspberry Pi Camera Board - тоже так себе идея. Плохо сочетается с требованием "Минимум проводов". И всё равно потом всплывает обычная IP PoE камера...

    Плюс затраты своего времени на развётрывание и поддержание в работоспособном виде системы...

    ИТОГО
    Не проще ли было взять обычный видеорегистратор на пару HDD, дешевые IP PoE камеры. И спокойно создать систему на недлорогих серийных железках...

    Для организации удалённого просмотра "за бесплатно" - вспомнить, что у одного крупного российского поставщика систем видеонаблюдения есть своё облако. И при хранении записей на своём видеорегистраторе - можно спокойно пользоваться бесплатным тарифом (в чём, правда, хозяева облака не любят признаваться :). Cугубо для "посмотреть удалённо, не городя огород с VPN'ами"...


    1. elprog74
      28.11.2023 07:32

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

      Имя подскажете? Ищу подобный вариант, пока не складывается. Можно в личку. Спасибо.


      1. Komrus
        28.11.2023 07:32
        -1

        Ответил в личку...


    1. Alcpp
      28.11.2023 07:32

      "Плюс затраты своего времени на развётрывание и поддержание в работоспособном виде системы... "

      Это проходит по статье хобби/опыт/удовольствие.


      1. Komrus
        28.11.2023 07:32

        Это проходит по статье хобби/опыт/удовольствие

        Если есть готовое решение за вменяемые деньги, то изобретать велосипед - для меня лично очень неочевидное удовольствие :))

        Но, как говорится в анекдоте - "For whom how" :)
        У меня как-то после четверти века в системной интеграции хобби далеки от IT...
        То фотографией увлекался, то вот лет 10 назад променял видоискатель на коллиматор :)


      1. StraNNicK
        28.11.2023 07:32

        Как бы да, но нет. Хобби/опыт/удовольствие -- это про развёртывание, а вот эксплуатация и поддержка...

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

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


  1. SabMakc
    28.11.2023 07:32

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


    1. Vutshi Автор
      28.11.2023 07:32
      +1

      При большом минусе выключали электричество один раз на 15-20 мин, аккумулятора хватило, но сработал триггер о заряди ниже 30%, в домике ниже -18 не наблюдал. В среднем держит около часа в обычных подмосковных зимних условиях.


      1. SpiderEkb
        28.11.2023 07:32
        +2

        У меня вот так:

        Инвертор 3КВА. 2 AGM (для UPS) аккума 12в 100Ач (два - потому что инвертору надо 24в питание, если послабее - 1-2КВА, там 12в, если помощнее - 5КВА - там уже 48в).

        Через него подключен насос в скважине (750Вт), компрессор в ЛОС (<60Вт) и розетки в кабинете (роутер, коммутатор, компы...)

        Поскольку насос работает в паре с 80л ГА, то работает он в импульсном режиме - один раз смыть в туалете - включение насоса на 15сек. Компрессор в ЛОС работает постоянно, но там мощность мизерная.

        В целом все это за 8 часов без электричества показывает уровень заряда АКБ 3 деления из 4-х (напряжение на полностью заряженных АКБ 26В, после 8-ми часов автономки - 24.6В, отключение при 21В).

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


    1. Dynasaur
      28.11.2023 07:32
      +1

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


  1. Dynasaur
    28.11.2023 07:32
    +7

    За 60 минут? Ну да, из разряда "английский за неделю".

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


    1. rendov
      28.11.2023 07:32
      +1

      Не, просто взять старый смартфон не выйдет. Сначала из него надо вытащить батарейку, т.к. летом может +40 на корпусе быть, а зимой -20, и как она себя поведет в таких условиях мало кто захочет проверять (от 24/7 дозарядки вздуется так это точно). Обычно решается обманом телефона о наличии АКБ припаиванием резистора определенного сопротивления на особый контакт или выковыриванием контроллера заряда из самой батарейки и припаиванием плюса и минуса из блока питания напрямую к нему.

      Теперь по блоку питания. Просто взять родную зарядку не выйдет. Она амперов мало выдает, а смартфоны грешат скачкообразными потреблениями резкими, и при нехватке мощности они просто уходят в перезагрузку или что еще хуже, виснут и все, надо ехать на дачу и ручками дергать по питанию (ну или добавить в схему элемент, типа умной розетки которая по таймеру отключает питание на минуту каждый день, или реле на STМ8/ESP32/etc.). Решается припаиванием емкого и соответственно огромного конденсатора прямо на вводе питания в телефон (что выглядит не слишком эстетично), либо намного проще, покупкой мощного блока питания ватт на 200 и подстройкой выходного напряжения, т.к. надо не 5В подавать, а напряжение вашей батарейки, чаще всего 4.2В.

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

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

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

      Суммируя все это, в 60 минут уложиться конечно будет проблематично, если вообще возможно.


      1. CaptGg
        28.11.2023 07:32

        Если приложение имеет Foreground Activity, то при необходимости Android будет убивать все, кроме этого Activity. Если конечно память не утекает в самом приложении и оно не займёт её всю.

        К тому же приложение может подписаться через receiver на множество системных Broadcast сообщений. И в сочетании с выданным вручную через настройки специальным разрешением SYSTEM_ALERT_WINDOW (поверх других приложений) может автоматически в ответ на них запускать свой Foreground Activity опять, если его его что-то таки убило.

        Всякие "киоски" и медиапанели на Android так работают.


        1. rendov
          28.11.2023 07:32

          Я не Android разработчик, но лет 5-7 назад, в качестве развлечения, писал приложение для превращения одной старой мобилы в нечто на подобие центра умного дома. Шутка-ли, куча мегагерцовых ядер, с вайфаем, потреблением с десяток ватт и просто выкидывать на помойку? Смысл был простой, отправляешь смс на этот телефон, а он в зависимости от содержания пересылает команду на нужный ESP32 модуль (которые, к слову, подключены к Wi-Fi точке доступа этого смартфона). Эдакий мост на случай отсутствия у меня интернета, но наличия сотовой связи. Да, щас странно звучит, но тогда не было таких щедрых тарифов на мобильный инет, особенно в роуминге.

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

          Те медиапанельки, о которых вы упомянули, они очевидно либо системные, либо от вендора выпустившего смартфон (самсунг там или ксяоми), и подписаны ключом которым ты своё приложение не подпишешь. Более того, вендоры еще и андроид любят модифицировать каждый по разному, в целях "чтоб батарею на два дня хватало и летало", что по факту значит порой даже свои самописные менеджеры приложений, которые сводят на нет все твои усилия сделать фоновый сервис который должен автоматически перезапустится при onDestroy() рассылая броадкасты, которые слушает ресивер, заново стартуя сервис. Там вроде просто порой дестрой не вызывается, я фиг знает, как они так делают. В общем на одних смартфонах фоновый процесс висящий 24/7 возможен, на других нет, надо смотреть индивидуально, какой вендор, какая версия андроида и т.д.


          1. SpiderEkb
            28.11.2023 07:32

            А как, интересно, тогда работают те же банковские приложения?

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

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

            Аналогично почтовые клиенты - они периодически проверяют почту и если пришло письмо вывешивают уведомление.

            Аналогично мессенджеры.

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

            Андроид в этом плане (да и не только в этом) дебильная система. ДО андроида был Blackberry - там никакой самодеятельности. Если приложение "свернул в плитку" (типа как минимизация окна в винде) - оно будет работать в фоновом режиме и никто его не тронет. Если хочешь закрыть - закрой сам (опять же как окно в винде) и тогда оно из памяти полностью выгрузится.


            1. rendov
              28.11.2023 07:32

              Неудобно конечно спрашивать, а не замечали, что после ухода Google Pay тот же Mir Pay словил тонны негативных отзывов, что глючит, работает через раз, оплачивает только при открытии самого приложения? Я сам с этим сталкивался, хотя выполнил все рекомендации, по отключению оптимизаций для этого приложения. Как мне видится, у вендора/гугла просто существуют списки популярных проверенных приложений или что-то подобное, чьи процессы стопятся одни из последних, т.е. неизвестное фоновое ресурсоёмкое приложение быстро отлетит из памяти, а вот приложение банка нет.

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


              1. SpiderEkb
                28.11.2023 07:32

                Насчет негативных отзывов не скажу - не обращал внимания.

                У меня работало стабильно. Но, да, требовало запустить приложение чтобы заплатить. Само не хотело.

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

                Так что от MirPay отказался, пользуюсь альфой. Сбер у себя, вроде тоже что-то такое делал... Не знаю получилось у нах, нет...

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


  1. ruYeti
    28.11.2023 07:32
    +2

    Оффтоп)

    Автоматы Schneider самой дорогой серии Acti9 в уличном щитке вижу впервые)

    Не оффтоп.

    Как будет себя чувствовать литиевый пакетик на морозе? В УПСах обычно стоят кислотно-свинцовые AGM VRLA. Да, они тоже теряют ёмкость по мере падения температуры, но не деградируют от мороза.

    Про ёмкость тоже вопрос. IP камера ночью с ИК-подсветкой на 30 метров потребляет около 8 Вт.


  1. rendov
    28.11.2023 07:32
    +1

    У меня на даче роутер Keenetic Giga 2 с флешкой и накаченным на неё Entware отлично заменяет малинку. И инет раздает на весь участок, и по факту мини-линукс на борту со всеми вытекающими плюшками. Производительности хватает за глаза, редко загрузка процессора превышает 10% в режиме видеонаблюдения. Работает уже 3 года без особых проблем, выдерживая и по -20 и по +30, т.к. установлен он в дачном туалете посреди участка, куда просто подведено электричество.

    Схема если вкратце такая, с основными кусками скриптов:

    1) Из 256мб оперативки роутера откусан кусок в 64мб.

    Hidden text
    #Создаем TMPFS на 65536 kb
    if [ ! -d /tmp/video ]
    then
        /opt/bin/mkdir /tmp/video
        /opt/bin/chmod 777 /tmp/video
        /opt/bin/mount -t tmpfs -o size=64M tmpfs /tmp/video
    fi

    2) Туда ffmpeg в режиме копирования потока пишет видео с WiFi-камеры установленной на цоколе дома (которой кстати запрещен доступ в инет, чтоб китайцы не подглядывали =P) кусками по 10 секунд (если писать на воткнутую флешку, а не tmpfs, она быстро помрет).

    Hidden text
    #FFMPEG
    if ((`/opt/bin/pgrep -f "/opt/bin/ffmpeg -hide_banner -y -loglevel error -rtsp_transport tcp" | /opt/bin/wc -l` == 0))
    then
        /opt/bin/ffmpeg -hide_banner -y -loglevel error -rtsp_transport tcp -use_wallclock_as_timestamps 1 -i rtsp://192.168.1.100:554/video1 -c copy -f segment -reset_timestamps 1 -segment_time 10 -segment_atclocktime 1 -strftime 1 /tmp/video/%Y%m%d%H%M%S.mkv &
    fi

    3) Bash скрипт в бесконечном цикле перекидывает эти куски на мой домашний сервер.

    Hidden text
    while true
    do
        #Получаем список 10-ти самых старых фрагментов видеопотока, кроме самого нового, т.к. в него пишет щас ffmpeg.
        LIST_RECORDS=`/opt/bin/ls -1 '/tmp/video/'* | /opt/bin/head -n -1 | /opt/bin/head -n 10`
        if [ "$LIST_RECORDS" != "" ]
        then
            #Проверяем наличие места в TMPFS на случай переполнения из-за сбоев интерент оператора.
            FREE_SPACE=`/opt/bin/df -k /tmp/video | /opt/bin/tail -n 1  | /opt/bin/tr -s ' ' | /opt/bin/cut -d ' ' -f 4`
            
            if [ "$FREE_SPACE" -lt "8192" ]
            then
                #Если свободного места в разделе осталось менее 8мб из 64мб удаляем 8 самых старых файлов.
                /opt/bin/rm -f `/opt/bin/ls -1 '/tmp/video/'* | /opt/bin/head -n 8 | /opt/bin/tr '\n' ' '`
            fi
            
            #Отправляем фрагменты обычным curl-ом на свой сервер.
            for i in $LIST_RECORDS
            do
                CURL_RESULT=`/opt/bin/curl --max-time 10 -s -F "cameramkv=@${i}" https://test.com/upload`
                if [ "$CURL_RESULT" == "OK" ]
                then
                    #На сервере питон-скрипт при успешной загрузке фрагмента отвечает ОК и мы удаляем файл на роутере.
                    /opt/bin/rm -f ${i}
                fi
                /opt/bin/sleep 1
            done
        else
            /opt/bin/sleep 5
        fi
    done

    4) Также cron запускает каждые пять минут управляющий скрипт, который проверяет отвал программ, наличие инета и перезагружает мобилу через adb если его нет 30 мин, шлет телеметрию curl-ом о качестве канала, загруженности роутера и т.д. И самое главное, пробрасывает ssh туннель на мой домашний сервер, пробив NAT сотового оператора, так что я могу спокойно копаться удаленно в его внутренностях.

    Hidden text
    #Проброс SSH туннеля на сервер.
    if ((`/opt/bin/pgrep -f "/opt/bin/ssh alex@xxx.xxx.xxx.xxx -p 25546 -f -N -R 222:127.0.0.1:222" | /opt/bin/wc -l` == 0))
    then
        /opt/bin/ssh alex@xxx.xxx.xxx.xxx -p 25546 -f -N -R 222:127.0.0.1:222 &
    fi
    
    #Получение температуры мобилы и качества LTE сигнала через adb
    adb shell "
    cat /sys/class/thermal/thermal_zone0/temp;
    dumpsys telephony.registry | grep mSignalStrength=SignalStrength | head -n 1 | cut -f 11,12,13 -d ' ' | tr ' ' '|'
    " | /opt/bin/tr '\n' '|'
    
    #Перезагрузка телефона через adb
    /opt/bin/timeout 30 /opt/bin/adb kill-server
    /opt/bin/sleep 5
    /opt/bin/timeout 30 /opt/bin/adb connect 192.168.55.1
    /opt/bin/sleep 5
    /opt/bin/timeout 30 /opt/bin/adb reboot
    /opt/bin/killall ssh

    Инет роутер кстати берет от Wi-Fi точки доступа обычной старой ксяоми, которая которая умеет в 4G и валяется на чердаке дома. Из мобилы я вытащил батарейку для безопасности, (т.к. бывает и по +40 под крышей), припаяв к её контроллеру заряда (чтоб не мучаться с обманом её внутренностей наличия батарейки) толстый медный провод на 2,5 и прокинул его до блока питания на 200 ватт и 5 вольт, где был резистор подстроечный на выход, и я смог убавить напряжение до 4 вольт, а остальное съело метров 10 провода. Саму мобилу пришлось рутовать, шаманить автозапуск по появлению питания, автозапуск сервиса adb. Через него кстати потом я переключаю режим симки на only LTE, чтоб 3g не мешался.

    Hidden text
    #Переключаем на 4G
    adb shell "
    settings put global preferred_network_mode 11,11;
    settings put global preferred_network_mode1 11;
    settings put global airplane_mode_on 1;
    am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true;
    sleep 5;
    settings put global airplane_mode_on 0;
    am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false;
    "

    Вообще роутер охватывающий сигналом всю дачу, да еще и с линуксом на борту это имба. У меня есть модуль с esp32, на который я напаял два реле и теперь могу, если надо, за сотни км включать светодиодный прожектор, чтоб подсветить всю дачу ночью (если ИК не отрубить на камере, там летом такой рой насекомых летает перед объективом). Ну и на втором реле у меня сигнализация визгунская стоит. В планах поставить на двери герконы и детектить открытие дверей зимой например и отсылать смс через curl-запрос себе на телефон, ну и вообще много чего можно придумать.


    1. SpiderEkb
      28.11.2023 07:32
      +1

      Ну есть и промышленные роутеры. У меня стоит Teltonika RUT950.

      2 симки (я использую одну), можно подключить внешнюю антенну (у меня 2xMIMO с X-поляризацией, ориентирована на вышку)

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

      SMS сервис - выполнение удаленных команд, отчеты о событиях.

      "Умеет" MODBUS, MQTT. Есть один цифровой вход и один цифровой выход (on/off).

      На борту - RUTOS на базе OpenWRT которая по сути Linux (кроме вебморды есть еще CLI через SSH).

      Есть достаточное количество готовых пакетов, есть бесплатный SDK с документацией - можно что-то свое писать кто умеет в линукс.

      Но это уже серьезная железяка и стоит серьезно...


      1. rendov
        28.11.2023 07:32
        +2

        У меня стоит Teltonika RUT950.

        Ого, ну это уже не "доступная система видеонаблюдения на дачу", а полноценная организация сети интернет в загородный коттедж за кучу денег. Тогда уже лучше не отъедать ресурсы роутера, а использовать готовое решение типа ICO100-839-N3350-DC, которое вешается на DIN-рейку и по сути мини-комп которому не страшны морозы и жара.


        1. SpiderEkb
          28.11.2023 07:32

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

          Роутеров, кстати, на всякий случай две штуки купил :-) Один в запасе лежит. Они тогда еще по 15тр были (сейчас от 30-ти, а новые модели с гигабитными портами еще дороже).

          Ну и брал с расчетом "а вдруг с MQTT для домашней автоматизации захочется поиграться..." Но вот уже 3 года живу, а руки так и не дошли...

          Вообще, вся эта инженерка - или самому делать, но времени куча уйдет (у меня столько нет его), или покупать, но все дорого - резерв по электропитанию - 30тр инвертор + 2 аккума по 25тр к нему... :-( Но комфорт, конечно, обеспечивает :-)


      1. Javian
        28.11.2023 07:32

        off Для тех кто посмотрел на цену промышленного роутера и не готов платить столько, рекомендую поискать б/у отечественные. Например я очень удачно с рук взял за 500 руб IRZ RUH2b Router с блоком питания. Используются в банкоматах.
        И на котором у меня организован канал для видео наблюдения. До этого городил свое решение на USB модеме и столкнулся с зависанием линка раз в месяц, решение которого только как описано на Хабре - отключением питания USB порта ( https://habr.com/ru/articles/324436/ https://habr.com/ru/articles/184940/ ).

        Крепится на DIN-рейку. Две SIM. Разъемы: SMA антенны, USB, COM, Ethernet. Модем можно заменить, есть прошивка OpenWrt.

        Функционал штатного программного обеспечения: OpenVPN,IPSec, Firewall, GRE, DHCP, Port Forwarding, Static Routes, Watchdog, Reserve Link, USB-LAN, Alias, Daily Reboot, VRRP, SSH, SNMP, Ping Test, Startup Script, IP-Up Script, IP-Down Script, Send SMS, NTP / Clock/ Server.


        1. SpiderEkb
          28.11.2023 07:32
          +1

          Ну это уже совсем специфическое иэделие... Во-первых, оно 3G. Не LTE. Во-вторых, там нет WiFi (т.е. еще точку доступа ставить надо будет).

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

          Что у меня сейчас:

          • Основной канал - оптика (100MBit, реально 90-95 стабильных, можно выше, но порты на роутере не потянут, впрочем, хватает), резервный LTE (50-70MBit со внешней антенной, летом в выходные ближе к 50, зимой в будни ближе к 70)

          • На роутере 1 WAN и 3 LAN порта. На LAN висят два ноута (мой основной и жены) + коммутатор на 4 порта от которого протяну FTP для IPTV - 4 точки (розетки) - в гостиной на первом этаже и 3 в спальнях на втором). В детской на втором еще один коммутатор - там IPTV + точка доступа (внук жаловался что WiFi слабовато достает - поставил вторую ТД на второй этаж)

          • На WiFi висит: 15 термостатов, робот-пылесос, мой второй ноут. Это постоянно. Такая вот картинка

          Роутер все это тянет вообще не напрягаясь. Ну и автоматическое переключение с основного канала на резерв и обратно - я это замечаю только когда смска с уведомлением приходит.

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


    1. CaptGg
      28.11.2023 07:32
      +1

      Туда ffmpeg в режиме копирования потока пишет видео с WiFi-камеры установленной на цоколе дома кусками по 10 секунд (если писать на воткнутую флешку, а не tmpfs, она быстро помрет)

      Тут как-то само собой напрашивается сохранять эти куски в MPEG TS контейнер (вместо текущего MKV) и обновлять m3u8 плейлист рядом с ними. Получится HLS поток, который может забирать тот же ffmpeg (или headless VLC) на другом конце по ссылке на m3u8 и сохранять или воспроизводить. Можно даже веб-страницу с HLS.js плеером сделать. Можно смотреть напрямую хоть с телефона.

      FFmpeg умеет генерировать и плейлист HLS вместе с сегментами:
      -f hls \
      -hls_time 10 \
      -hls_flags independent_segments \
      -hls_segment_type mpegts \
      -hls_segment_filename stream_%v/data%02d.ts \
      -var_stream_map "v:0,a:0" stream_%v/stream.m3u8

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


  1. LeMaX
    28.11.2023 07:32

    Взял ББП-60 на него подключен роутер с модемом + xiaomi magnetic камера. Камера на улице, ббп в неотапливаемом доме.


  1. Snejinka-Mi
    28.11.2023 07:32

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


  1. ovn83
    28.11.2023 07:32

    Китайскую камеру за 4 тыс купил с бесплатным облаком, на карту тоже пишет.


  1. LiVN
    28.11.2023 07:32
    +1

    Зачем? Давно в продаже есть миникамеры WiFi котору можно подключить к интернету, с датчиком движения и инфокрасным ночным видением, используем например программы iCookyCam под андроид и на смартфоне у нас появляется и видео и фото и звук, в камере есть ещё и флешка для дублирования записи, а также встроенный аккумулятор, хватает на три часа, запитывается все это по microUSB от блока питания на 5V 2mA. Размеры такой камеры, кубик 22х25х20, например Camix SQ23. Настроить можно на срабатывания датчика движения запись идёт на смартфон и флешкарту ёмкостью до 64 Гб. Разрешение видео до FHD 1920×1080. Всё просто и компактно.


  1. a_poval
    28.11.2023 07:32

    Начало прочитал и изучал. Спасибо за статью. Попозже уже все детали изучу и очень даже может быть что возьму и сделаю себе что-то такое же. Спасибо!


  1. jean79
    28.11.2023 07:32
    +1

    Поставил охранную систему с ГБР в Новой Москве. Ни разу никого не поймала, зато по причине выхода из строя датчиков, ГБР регулярно приезжает и обносит грядки, особенно любят почему-то клубнику и зелёный горошек. И при этом почему-то не любят ходить по дорожкам, идут напрямую через грядки. Жаловались начальству, приносят извинения, но никто так и не купил ребёнку клубнику взамен съеденной. Нафиг не надо этих ГБР.


  1. deepalarm
    28.11.2023 07:32

    А зачем городить черничные костыли??? Не судьба взять простой роутер типа kenetic он сегодня может все, от маршрута до nas хранилища.....это будет м дешевле и проще и удобнее... Не лумаю, что дачники, дедушки и бабушки вообще поймут что такое Unix системы.....

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

    .. Не только камера и реле.... Но и розетки, обогрев... И тд

    Статья ради статьи... Ну тоже вариант