sql.0 не сохраняются данные

Сообщите об ошибках в ioBroker
select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

sql.0 не сохраняются данные

Beitrag von select2 » 29.10.2017, 19:26

Добрый день!
Окружение: iobroker установлен на debian 7 на Intel Atom 2G RAM. БД - mysql.
В сети есть Beckhoff bc9000, подключенный по modbus и owfs-сервер, подключенный как внешний owfs-сервер.
Данные собираются корректно - в закладке "Объекты" видны периодически изменяющиесяданные с актуальными значениями (рис.1)
pic1.jpg
Настройки modbus - объекта на рис.2
pic2.jpg
При этом, значения с owfs-сервера попадают в БД, а значения, получаемые по modbus - не всегда! (рис.3)
pic3.jpg
Видно, что иногда всего два раза в час значения записаны в БД.
При этом, значения полученные от owfs-драйвера в базе присутствуют: рис.4.
pic4.jpg
Пытался включить логи, но ошибок я тут не увидел (рис.5)
pic5.jpg
Смена периодов опроса результата не дала. Однажды мне показалось, что я нажал "сохранить" и после этого график заполнялся до тех пор, когда я изменил период записи. Но повторно воспроизвести ситуацию мне не удалось.
Подскажите пожалуйста, как это исправить?

p.s. На скринах коллег на форуме я вижу, что закладок в админке намного больше. Возможно дело в установке? Может что-то не установлено до конца? У меня отсутствовал Flot - пришлось добавлять его руками. Может не хватает еще чего то?

Benutzeravatar
aurodionov
professional
Beiträge: 396
Registriert: 14.07.2014, 16:39
Wohnort: Россия, Тюмень
Kontaktdaten:

Re: sql.0 не сохраняются данные

Beitrag von aurodionov » 30.10.2017, 04:43

Нажми на карандаш сверху справа и добавь вкладки по желанию

Отправлено с моего Nexus 5 через Tapatalk
Пишу с пульта....

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 30.10.2017, 06:25

Спасибо! Добавил вкладки - вижу что события есть:

Code: Alles auswählen

stateChange	modbus.0.holdingRegisters.16407_DATETIME	168778231	true	modbus.0	2017-10-30 11:16:01.602	2017-10-30 11:16:01.602
stateChange	modbus.0.holdingRegisters.16393_ТЕМP	366	true	modbus.0	2017-10-30 11:16:01.563	2017-10-30 11:16:01.563
stateChange	modbus.0.holdingRegisters.16407_DATETIME	168122871	true	modbus.0	2017-10-30 11:15:51.534	2017-10-30 11:15:51.534
stateChange	modbus.0.holdingRegisters.16393_ТЕМP	368	true	modbus.0	2017-10-30 11:15:51.494	2017-10-30 11:15:51.494
stateChange	modbus.0.holdingRegisters.16407_DATETIME	167467511	true	modbus.0	2017-10-30 11:15:41.466	2017-10-30 11:15:41.466
stateChange	modbus.0.holdingRegisters.16393_ТЕМP	366	true	modbus.0	2017-10-30 11:15:41.427	2017-10-30 11:15:41.427
stateChange	modbus.0.holdingRegisters.16407_DATETIME	166812151	true	modbus.0	2017-10-30 11:15:31.378	2017-10-30 11:15:31.378
stateChange	modbus.0.holdingRegisters.16393_ТЕМP	367	true	modbus.0	2017-10-30 11:15:31.338	2017-10-30 11:15:31.338
а в таблице значений объекта - пропуски:

Code: Alles auswählen

367	true	modbus.0	2017-10-30 11:03:25.529	
367	true	modbus.0	2017-10-30 10:56:11.989	
368	true	modbus.0	2017-10-30 10:35:12.301	
368	true	modbus.0	2017-10-30 10:35:12.300	
368	true	modbus.0	2017-10-30 10:34:42.075	
368	true	modbus.0	2017-10-30 10:34:01.765	
368	true	modbus.0	2017-10-30 10:33:11.424	
368	true	modbus.0	2017-10-30 10:32:21.045	
366	true	modbus.0	2017-10-30 10:31:30.705	
367	true	modbus.0	2017-10-30 10:30:40.366	
369	true	modbus.0	2017-10-30 10:29:49.986	
369	true	modbus.0	2017-10-30 10:28:59.626	
368	true	modbus.0	2017-10-30 10:28:09.247	
370	true	modbus.0	2017-10-30 10:27:59.179	
369	true	modbus.0	2017-10-30 10:27:08.799	
369	true	modbus.0	2017-10-30 10:26:18.420	
368	true	modbus.0	2017-10-30 10:25:58.266	
368	true	modbus.0	2017-10-30 10:25:17.954	
368	true	modbus.0	2017-10-30 10:24:37.681	
368	true	modbus.0	2017-10-30 10:23:47.321	
Есть какие-либо идеи?

Haus
professional
Beiträge: 531
Registriert: 12.05.2015, 16:49
Wohnort: Lithuania, Vilnius

Re: sql.0 не сохраняются данные

Beitrag von Haus » 30.10.2017, 07:22

select2 hat geschrieben: Есть какие-либо идеи?
Измени минимальный интервал с 60000 на 1000 в настройках sql, ну и Store as на Automatic. Данных будет много, нужна ли история за год?
js-controller: 1.4.2 / node.js: v6.14.3 / npm: 3.10.10
admin: 3.5.1
javascript: 3.6.4
web: 2.4.1 vis: 1.1.7
cloud: 2.6.2

Server: DELL FX170 / linux: Debian 9.5 Stretch
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 30.10.2017, 09:55

Данных действительно будет много, поэтому я и установил мин. интервал в 1 минуту. И фиксирую только изменения.
Похоже проблема где-то на стыке с драйвером modbus.
Попытался подойти с другой стороны: написал скрипт, который мониторит изменение modbus-объекта:

Code: Alles auswählen

createState("test2", function () {
});
on({id: "modbus.0.holdingRegisters.16393_ТЕМP"/*Т теплоносителя*/, change: "ne"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  setState("javascript.0.test2"/*test2*/, (getState("modbus.0.holdingRegisters.16393_ТЕМP").val / 10));
});
Скрипт работает. Появился объект javascript.0.test2. Но у него не сохраняется история изменений вообще: ни в sql.0, ни в history.0. В логе пишет: enabled logging of javascript.0.test2, а в таблице истории пишет : no data.

Можно ли в принципе хранить историю javascript-объектов?

Haus
professional
Beiträge: 531
Registriert: 12.05.2015, 16:49
Wohnort: Lithuania, Vilnius

Re: sql.0 не сохраняются данные

Beitrag von Haus » 30.10.2017, 11:36

select2 hat geschrieben:Данных действительно будет много, поэтому я и установил мин. интервал в 1 минуту. И фиксирую только изменения.
Похоже проблема где-то на стыке с драйвером modbus.
Попытался подойти с другой стороны: написал скрипт, который мониторит изменение modbus-объекта:

Code: Alles auswählen

createState("test2", function () {
});
on({id: "modbus.0.holdingRegisters.16393_ТЕМP"/*Т теплоносителя*/, change: "ne"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  setState("javascript.0.test2"/*test2*/, (getState("modbus.0.holdingRegisters.16393_ТЕМP").val / 10));
});
Скрипт работает. Появился объект javascript.0.test2. Но у него не сохраняется история изменений вообще: ни в sql.0, ни в history.0. В логе пишет: enabled logging of javascript.0.test2, а в таблице истории пишет : no data.

Можно ли в принципе хранить историю javascript-объектов?
Историю можно хранить любых объектов.
Твой скрипт у меня работает, всё сохраняет MySQL ошибок нет.
js-controller: 1.4.2 / node.js: v6.14.3 / npm: 3.10.10
admin: 3.5.1
javascript: 3.6.4
web: 2.4.1 vis: 1.1.7
cloud: 2.6.2

Server: DELL FX170 / linux: Debian 9.5 Stretch
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 30.10.2017, 16:53

Похоже нашел причину: в настройках истории выставляю Минимальный интервал(ms) в 1000 - и все начинает работать - валит каждую секунду. Достаточно увеличить это интервал до 10 секунд (значение 10000) - и значения начинают проваливаться - пишутся нерегулярно и непредсказуемо.

Проверь пожалуйста - выставь 60000 - 1 минуту.

Haus
professional
Beiträge: 531
Registriert: 12.05.2015, 16:49
Wohnort: Lithuania, Vilnius

Re: sql.0 не сохраняются данные

Beitrag von Haus » 30.10.2017, 18:43

select2 hat geschrieben:Похоже нашел причину: в настройках истории выставляю Минимальный интервал(ms) в 1000 - и все начинает работать - валит каждую секунду. Достаточно увеличить это интервал до 10 секунд (значение 10000) - и значения начинают проваливаться - пишутся нерегулярно и непредсказуемо.

Проверь пожалуйста - выставь 60000 - 1 минуту.
Если стоит "0" то данные пишутся сразу после получения.
Если стоит "10000" или "60000" то данные пишутся по истечению таймера исходя из данных в тот момент в переменной. Какие то траблы там есть, выставив "60000" данные какое то время пишутся исправно иногда проскакивают интервалы в 30сек(приходят данные в переменную).
js-controller: 1.4.2 / node.js: v6.14.3 / npm: 3.10.10
admin: 3.5.1
javascript: 3.6.4
web: 2.4.1 vis: 1.1.7
cloud: 2.6.2

Server: DELL FX170 / linux: Debian 9.5 Stretch
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 31.10.2017, 04:37

А у меня, вместе с 30-секундными данными, появляются еще провалы - 30-40 МИНУТ!
График при этом выглядит просто потрясающе!
Ну и управление отоплением при такой дискретизации, конечно не построишь.

Haus
professional
Beiträge: 531
Registriert: 12.05.2015, 16:49
Wohnort: Lithuania, Vilnius

Re: sql.0 не сохраняются данные

Beitrag von Haus » 31.10.2017, 07:18

select2 hat geschrieben:А у меня, вместе с 30-секундными данными, появляются еще провалы - 30-40 МИНУТ!
График при этом выглядит просто потрясающе!
Ну и управление отоплением при такой дискретизации, конечно не построишь.
Если не ошиваюсь у тебя данные приходят каждые 10сек, нельзя ли изменить интервал опроса modbas? В OWFS на каждый датчик можно установить свой интервал опроса. Если нет пиши все данные в базу только сократи время хранения до минимума тебе нужного.
js-controller: 1.4.2 / node.js: v6.14.3 / npm: 3.10.10
admin: 3.5.1
javascript: 3.6.4
web: 2.4.1 vis: 1.1.7
cloud: 2.6.2

Server: DELL FX170 / linux: Debian 9.5 Stretch
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 31.10.2017, 08:59

Интервал опроса стоит 1 сек. Изменить можно. Уже пробовал. Но у меня освещение на этом же контроллере (BC9000) - в случае увеличения интервала опроса не работает vis: нажал на элемент, фактически он отработал (свет погас, к примеру), а в форме он до следующего опроса горит.
Индивидуально у каждого объекта период опроса изменить не могу.
А то, что это явный баг, у автора нет возможности его исправить? Он еще тут бывает?

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 31.10.2017, 09:18

Уважаемый Haus!
Может я в принципе не прав и есть другое решение? Опишу свои пожелания, а вы может что и подскажете.
Про свою структуру я писал: внешний owfs-сервер для мониторинга температуры и modbus-контроллер в качестве исполнительного модуля. Мне нужно:
1. Сбор разнородных даныын из разных источников в одно место. Это работает!
2. Реализация сложных алгоритмов, в т.ч. прогнозных - на основании анализа данных за предыдущие периоды, для управления отоплением. Это работает частично - с анализом предыдущих данных пока вопрос. Хотя что-то и есть для анализа.
3. Визуализация температурных данных: несколько источников на одном графике, разный временной масштаб. Этого пока нет.

Haus
professional
Beiträge: 531
Registriert: 12.05.2015, 16:49
Wohnort: Lithuania, Vilnius

Re: sql.0 не сохраняются данные

Beitrag von Haus » 31.10.2017, 15:36

select2 hat geschrieben: А то, что это явный баг, у автора нет возможности его исправить? Он еще тут бывает?
У драйвера три автора и только Bluefox иногда заглядывает к нам и читает по русски :)
Можешь задать вопрос по немецки у них в ветке.
js-controller: 1.4.2 / node.js: v6.14.3 / npm: 3.10.10
admin: 3.5.1
javascript: 3.6.4
web: 2.4.1 vis: 1.1.7
cloud: 2.6.2

Server: DELL FX170 / linux: Debian 9.5 Stretch
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)

Haus
professional
Beiträge: 531
Registriert: 12.05.2015, 16:49
Wohnort: Lithuania, Vilnius

Re: sql.0 не сохраняются данные

Beitrag von Haus » 31.10.2017, 15:40

select2 hat geschrieben:Уважаемый Haus!
Может я в принципе не прав и есть другое решение? Опишу свои пожелания, а вы может что и подскажете.
Про свою структуру я писал: внешний owfs-сервер для мониторинга температуры и modbus-контроллер в качестве исполнительного модуля. Мне нужно:
1. Сбор разнородных даныын из разных источников в одно место. Это работает!
2. Реализация сложных алгоритмов, в т.ч. прогнозных - на основании анализа данных за предыдущие периоды, для управления отоплением. Это работает частично - с анализом предыдущих данных пока вопрос. Хотя что-то и есть для анализа.
3. Визуализация температурных данных: несколько источников на одном графике, разный временной масштаб. Этого пока нет.
Как временное решение данные в базу каждую минуту

Code: Alles auswählen

schedule("* * * * *", function(){
    setState("javascript.0.test2"/*test2*/, (getState("modbus.0.holdingRegisters.16393_ТЕМP").val / 10));
});
js-controller: 1.4.2 / node.js: v6.14.3 / npm: 3.10.10
admin: 3.5.1
javascript: 3.6.4
web: 2.4.1 vis: 1.1.7
cloud: 2.6.2

Server: DELL FX170 / linux: Debian 9.5 Stretch
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 01.11.2017, 06:56

Спасибо!
Я проверил - работает как часы ).
Отличный вариант!

Попутно подобрал параметры для классического варианта:
Минимальный интервал 1000
Только изменения - отметить
Запись неизменённых значений каждые 0
Минимальная разница с последним записанным значением = 0,5

В результате имеем записи при изменении температуры минимум на 0,5 градуса. Что меня устраивает. Вот результат:

Code: Alles auswählen

34.5	false		2017-11-01 10:47:48.086	
35	false		2017-11-01 08:42:13.806	
35.5	false		2017-11-01 07:10:20.039	
36	false		2017-11-01 05:42:36.986	
36.5	false		2017-11-01 03:59:58.551	
37	false		2017-11-01 01:51:16.586	
37.5	false		2017-11-01 01:34:22.830	
37	false		2017-11-01 01:04:23.098	
36.5	false		2017-11-01 00:28:10.194	
36	false		2017-10-31 23:53:24.717	
36.5	false		2017-10-31 23:44:09.962	
36	false		2017-10-31 23:37:51.404	
36.5	false		2017-10-31 23:35:45.342	
37	false		2017-10-31 23:33:25.658	
37.5	false		2017-10-31 23:31:11.227	
38	false		2017-10-31 23:30:16.509	
38.6	false		2017-10-31 23:29:45.502	
39.1	false		2017-10-31 23:29:11.433	
39.6	false		2017-10-31 23:28:42.472
Понаблюдаю еще за работой и выберу наиболее стабильный из этих вариантов.
А шедулер много системных ресурсов потребляет?

Adav
starter
Beiträge: 67
Registriert: 28.12.2016, 09:27

Re: sql.0 не сохраняются данные

Beitrag von Adav » 10.11.2017, 09:57

select2 hat geschrieben:
Попутно подобрал параметры для классического варианта:
Минимальный интервал 1000
Я еще летом в теме по influxdb писал про ту же проблему. Можете посмотреть. И тоже путем подбора пришел к тому, что стабильная работа идет только при секундной или меньше записи. Причем со старой версией драйвера такой проблемы нет. Поэтому и не обновляю, оставаясь на 1.3.4. Пробовал и sql с postgresql - все то же самое. Разработчики большого интереса к проблеме не проявили. Странно, что проблема не массовая, возможно люди не заморачиваются объемом хранения и оставляют секунду по умолчанию. Модбас тут совершенно ни при чем, поскольку у меня данные для базы берутся не только оттуда с теми же проблемами. Хотя и к драйверу модбаса тоже у меня немало претензий и тоже никакого интереса у разработчиков.

select2
Beiträge: 9
Registriert: 29.10.2017, 17:55

Re: sql.0 не сохраняются данные

Beitrag von select2 » 13.11.2017, 05:11

Adav, с версией драйвера sql 1.3.4. у вас работает без этих проблем, я правильно понял?
C драйвером modbus я помучился при настройке, но в работе он показал себя неплохо. Вопросов к modbus нет.

Adav
starter
Beiträge: 67
Registriert: 28.12.2016, 09:27

Re: sql.0 не сохраняются данные

Beitrag von Adav » 13.11.2017, 12:58

select2 hat geschrieben:Adav, с версией драйвера sql 1.3.4. у вас работает без этих проблем, я правильно понял?
C драйвером modbus я помучился при настройке, но в работе он показал себя неплохо. Вопросов к modbus нет.
Я использую influxdb, со старой версией работает не только на секунде. Гляньте ветку по influxdb - я там подробно описал. A sql я пробовал чисто ради интереса последнюю - с ней та же беда, старую не проверял. Подозреваю, что тут будет все то же самое. Очень похоже, что сделали какое-то новшество во всех этих драйверах одновременно. С modbus у меня есть пара проблем - есть девайс, где дискретные входы идут не подряд, с пропусками - там ошибки всегда (как я понял, драйвер по-любому считывает сразу 8), несколько устройств на одной шине не работают (точнее работают, но постоянно конфликтуют с ошибками в логах). Ни при прямом подключении на USB-485, ни через 485-Ethernet конвертер. А вообще у меня modbus устройств немало, но вот такое неудобство... Сначала хотел перенести опрос напрямую с iobroker, но после такой фигни оставил почти все как было (за исключением нескольких устройств) - опрос modbus через WB5 и уже с него на iobroker через mqtt. Это касается 485. Есть устройство с TCP modbs - тут все нормально. Но оно типовое (универсальные входы-выходы) и негде ему конфликтовать на одной 485 шине.

Benutzeravatar
Bluefox
Site Admin
Beiträge: 8052
Registriert: 13.07.2014, 14:42
Kontaktdaten:

Re: sql.0 не сохраняются данные

Beitrag von Bluefox » 13.11.2017, 13:34

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

modbus - да я его писал. Но железа у меня нет и я пользуюсь симуляторами.
sql - Apollon не понимает по русски и именно он поддерживает sql/influx/history

Я не в состоянии прочитать и ответить на 50 сообщений в день в форуме. А ещё есть telegram, whatsapp, email, facebook, github, trello.

И потом у меня работа и двое детей с женой в придачу, а ведь надо фиксить баги и добавлять новые фичи, поддерживать сайт и 2 облака, а то все пользователи разбегутся :)

Adav
starter
Beiträge: 67
Registriert: 28.12.2016, 09:27

Re: sql.0 не сохраняются данные

Beitrag von Adav » 13.11.2017, 14:02

Bluefox hat geschrieben:Если есть проблемы, то я очень советую создать issue на github (причём на английском)

modbus - да я его писал. Но железа у меня нет и я пользуюсь симуляторами.
sql - Apollon не понимает по русски и именно он поддерживает sql/influx/history

Я не в состоянии прочитать и ответить на 50 сообщений в день в форуме. А ещё есть telegram, whatsapp, email, facebook, github, trello.

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

Вообщем-то на старой версии influx прекрасно работает, и действительно эта проблема возникла после обновлений от Apollon.

С modbus эмулятором наверное можно попробовать повторить ошибку с дискретными регистрами. Попробуйте дискретные входы (или выходы) задать на эмуляторе не подряд. Скажем, адреса регистров 0,1,3,4,5,6,7,8,10 и попробовать такое считать. Понимаю, такой "бардак" с адресацией не типичен, но вот мне досталось именно такое устройство. Такое происходит только с дискретными, с input или c holding такой проблемы нет. С несколькими устройствами на шине 485, как я понимаю, с эмулятором не получится повторить. В меру моего разумения, проблема в том, что нет очереди при использовании разных драйверов на опрос разных устройств на одной 485 шине с разными ID. Вот и возникает конфликт при опросе.

Antworten