Hello!
new container and problem
i dont stop iobroker
!
<link_text text="https://image.prntscr.com/image/1DOPTWl ... yCc6Yg.png">https://image.prntscr.com/image/1DOPTWluTqiEHBjgyCc6Yg.png</link_text>" />
Hello!
new container and problem
i dont stop iobroker
!
<link_text text="https://image.prntscr.com/image/1DOPTWl ... yCc6Yg.png">https://image.prntscr.com/image/1DOPTWluTqiEHBjgyCc6Yg.png</link_text>" />
Please add to iob container 'cifs-utils'
I want mount folder.
Thx!!! `
I'm sorry. As long as no Adapter requires this package, I will not add this to the image.But you can install it manually as you want using "apt-get install" at the commandline of the container.
If you wannt to mount folders between the container and diskstation there is a described way using the docker webinterface of the synology diskstation. Maybe it is also possible to share the mounted diskstation folder to access it from the network…
regards,
André `
~~http://prntscr.com/fllf8w" />
After this command:
Unable to apply new capability set.~~
Please add to default to iob container 'cifs-utils'
I want mount folder.
Thx!!!
Особенности:
Камера(-ы) подключены к Synology, соответственно путь к файлам на диске динамический. Название папок и самих файлов привязано к дате создания этого видеофайла.
Я одну из камер назвал door_rtsp. (поток rtsp от домофонной камеры двери)
http://fastpic.ru/view/89/2017/0301/aa73d6599a313d565fdd19e9eed0d13b.png.html ~~Так как у меня сервер на Linux, то нужно командой:
sudo mount -t cifs //192.168.1.110/surveillance/door_rtsp /mnt/ -o username=admin,password=pass,iocharset=utf8,file_mode=0777,dir_mode=0777
смонтировать внешнюю сетевую папку где хранятся видеоизображения.
В результате получим на сервере iobroker каталог равный каталогу на Synology:
http://fastpic.ru/view/89/2017/0301/3b8c1f8c4de13d70e4f5f6c7d237338e.png.html ~~Применение:
Нижеуказанный код у меня используется внутри другого скрипта (кода). Скрипт отслеживает нажатие кнопки вызова видеодомофона и отправляет изображение с камеры видеодомофона, верхней камеры (показывает общую обстановку) и через определенно время видео.
Собственно сам код:
`var folder;
var filepath;
var last; // номер последний файл в директории
setTimeout(getdate, 100);
setTimeout(file, 200);
setTimeout(sendMP4, 300);
function getdate() {
var date = new Date();
var time = date.getTime(); // Дата вида миллисекунд от 1970 года
var year = date.getFullYear(); // Год
var month = date.getMonth()+1; // Месяц
var dd = date.getDate(); // Дата-число
var hh = date.getHours(); // Часы
var AMPM = 'PM';
if (hh < 12) AMPM = 'AM';
if (month < 10) month = '0'+(date.getMonth()+1); //Месяц добавляем 0 перед цифрой
if (dd < 10) dd = '0'+date.getDate();
if (hh < 10) hh = '0'+date.getHours(); //Часы добавляем 0 перед цифрой
folder = year+month+dd+AMPM
log('folder = '+folder );
} //end getdate
function file() {
var fs = require('fs');
var path = '/mnt/door_rtsp/'+folder; //начальный путь, менять для другой камеры.
if (path.length <= 2) {
log("Usage: " + __filename + " path/to");
process.exit(-1);
}
/*Здесь мы используем метод readdir класса fs, который получает путь и функцию-коллбек в качестве параметров.
Метод читает содержимое директории в память, а когда чтение завершено, то вызывает коллбек с двумя параметрами. */
fs.readdir(path, function(err, items) {
log(items);
last = items.length; // номер последнего файла директории
log(last);
for (var i=0; i<items.length; i++)/{/log(items[i]);/}/filepath="items[last-1];" log('filepath="+filepath);
});
} //end file
function sendMP4() {
mp4 = " mnt/door_rtsp/'+folder+'/'+filepath;/log(mp4);/sendto('telegram.0',/{text:/mp4,/user:/'artem',/disable_notification:/true});/end/sendmp4/<e=""></items.length;>`[/i]
```~~~~
А мне нравится что там Имя устройства.
getObject('ping.0.raspberrypi.192_168_1_110').common.name этой командой отправляю имя в переменную, а затем в Телеграмм или куда надо.
А когда этот новый попадет в список драйверов?
Данный код при разницы времени больше 5 минут между текущим временем и временем обновления данных, вешает сервер, и через полминуты сервер остается с 3% оперативки, далее не отвечает вообще.
Код не полный, ниже еще функция sendMessage();, но она точно не влияет. Все работало, пока цикл while не написал.
Моя логика какая- считываем данные, если данные старее чем 5 минут, то обновляем запрос setTimeout (600, pusk()); После запроса считываем опять время полученное от сервера Apple, через драйвер find-my-iphone.
! on({id: 'javascript.0.find_my_iphone.irina', change: 'any'}, function (obj) {
! var date = new Date();//
! var time = date.getTime(); // время в миллисикунндах от 1970 года
! var timeStamp = getState("find-my-iphone.0.iPhone_Ira.timeStamp").val; // время последнего обновления данных в миллисикунндах от 1970 года
! var diftime = time - timeStamp;
! while (diftime > 300000) { //1000 - секунда 60000 - минута 1800000 - 30 минут - стоит 5 минут = 300000
! timeStamp = getState("find-my-iphone.0.iPhone_Ira.timeStamp").val;
! diftime = time - timeStamp;
! log ('while '+diftime);
! setTimeout (600, pusk()); //именно ира
! }
! if (obj.newState.val === true || obj.newState.val === 'true'){
! setState('javascript.0.find_my_iphone.irina', 'false');
! setState("find-my-iphone.0.refresh", true);
! sendMessage();
! }
! });
! function pusk() {
! setState("find-my-iphone.0.iPhone_Ira.refresh", true); //именно ира
! }
Хочется разобраться с написанием скриптов и принципов работы сторонних модулей.
Поставил сторонний модуль
https://www.npmjs.com/package/ffmpeg
Прописал его в настройках JS.
Хотелка от модуля: делать снимок с потокового видео RTSP. Штука полезная, зная ссылку на сетевой поток, можно снимать изображение со многих камер, даже сторонних.
В данном скрипте от автора модуля и добавленным var ffmpeg = require('ffmpeg') модуль не создает файл в директории tmp, там пусто. И ошибок нету.
Куда смотреть и копать?
Скрипт
! ````
var ffmpeg = require('ffmpeg') //самая первая строка
var process = new ffmpeg('rtsp://192.168.1.120:554/11');
process.then(function (video) {
// Callback mode
video.fnExtractFrameToJPG('/tmp/', {
frame_rate : 1,
number : 5,
file_name : 'my_frame_%t_%s'
}, function (error, files) {
if (!error)
log('Frames: ' + files);
});
}, function (err) {
log('Error: ' + err);
});
Установлен драйвер MySQL.
Данные пишутся во внешнюю БД.
Скрипт
! ` > var mysql = require('mysql');
var connection = mysql.createConnection({
host: '192.168.1.110',
user: 'iobroker',
password: 'iobroker',
database: 'iobroker',
//socketPath: '/var/run/mysqld/mysqld.sock'
});
//создаем подключение к базе
connection.connect(function(err) {
if (err) {
log('error connecting: ' + err.stack);
return;
}
log('connected as id ' + connection.threadId);
}); `
Выдает ошибку:
! javascript.0 script.js.My.sql: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/node_modules/mysql' at script.js.My.sql:1:13
! javascript.0 script.js.My.sql: TypeError: Cannot read property 'createConnection' of undefined at script.js.My.sql:3:23
Берите лучше сразу железяку с 2Gb Ram. 512Mb только на поиграться, 1 Gb пустить слюну и не очень много драйверов поставить. Так что оперативки надо много.
Смотрю в сторону Pi2 Plus.