Вопросы по написанию скриптов

Вопросы и информация о скриптах для ioBroker
Benutzeravatar
instalator
guru
Beiträge: 1258
Registriert: 09.11.2014, 16:50
Wohnort: Барнаул
Kontaktdaten:

Re: Вопросы по написанию скриптов

Beitrag von instalator » 23.08.2017, 17:35

Adav hat geschrieben:
instalator hat geschrieben:
spectrekr hat geschrieben:Ну как вариант через readfile читать лог файл и парсить, при обнаружении ошибки выполнять уже необходимые действия.
лучше сделать доработку драйвера чтобы создавался объект еррор например и в него писать что нет данных от бесперебойника
Это было бы идеально, но тут вопрос к разработчику... Как вариант - отслеживать состояние сервиса непосредственно на удаленной машине bash скриптом, но тут я тоже не тяну сделать самостоятельно. По идее можно делать запрос upsc и если нет данных - перегружать сервис.
Задай ему вопрос на гитхабе https://github.com/Apollon77/ioBroker.nut/issues
Высокий уровень Децибел вреден для здоровья!
Мой блог

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

Re: Вопросы по написанию скриптов

Beitrag von Adav » 01.09.2017, 15:12

Вернулся к вопросу с рестартом сервиса nut (о чем выше). Спасибо spectrekr и instalator за два варианта решения проблемы. Но я нашел третий вариант, на мой взгляд проще. Отслеживается одна из переменных (в принципе любая, но лучше константа), приходящих от драйвера nut, и если она не обновлялась дольше, чем два цикла опроса (в моем случае цикл 5 сек), то идет команда на рестарт сервиса на удаленном сервере. Вроде работает... В скрипте это так (может кому пригодится):

Code: Alles auswählen

//---------------------------Restart nut------------------
var nut_timer_timeout_ms = 12 * 1000;
var nut_timer_id = null;

on({id: "nut.0.input.transfer-low", change: "eq"}, function (obj) { 
if (nut_timer_id) {
    clearTimeout(nut_timer_id);
                  }
    nut_timer_id = setTimeout(function () {
       exec('ssh root@192.168.118.115 service nut-driver restart');       
       sendTo('telegram.0', {
          text:'Сервис NUT на сервере System завис и перезагружен.',
          disable_notification:   true
    });          
    nut_timer_id = null;   
   	}, nut_timer_timeout_ms);      
});

andrey99986
professional
Beiträge: 198
Registriert: 24.08.2016, 11:12

Re: Вопросы по написанию скриптов

Beitrag von andrey99986 » 28.09.2017, 05:56

Есть ли возможность активировать и дезактивировать запись значений в БД (драйвер sql) объекта по условию - в зависимости от состояния другого объекта?
Например есть объект "Security" и "megad.0.Sensor1".
Надо чтобы состояние объекта "megad.0.Sensor1" писалось в БД только когда getState("Security").val == true.

Haba
starter
Beiträge: 56
Registriert: 29.03.2016, 13:07

Re: Вопросы по написанию скриптов

Beitrag von Haba » 29.09.2017, 09:16

оно?

Code: Alles auswählen

{
  "_id": "mysensors.0.61.255_ARDUINO_NODE.I_BATTERY_LEVEL",
  "common": {
    "name": "2.2.0-beta.I_BATTERY_LEVEL",
    "type": "number",
    "role": "value",
    "min": 0,
    "max": 100,
    "unit": "%",
    "def": 100,
    "read": true,
    "write": false,
    "custom": {
      "sql.0": {
"enabled": true,

Code: Alles auswählen

       "changesOnly": true,
        "debounce": 1000,
        "retention": 31536000,
        "changesRelogInterval": 0,
        "changesMinDelta": "",
        "storageType": ""
      }
    }
  },
  "native": {
    "id": "61",
    "childId": "255",
    "subType": "S_ARDUINO_NODE",
    "subTypeNum": 17,
    "varType": "I_BATTERY_LEVEL",
    "varTypeNum": 0
  },
  "type": "state",
  "acl": {
    "object": 1638,
    "state": 1638
  }
}

andrey99986
professional
Beiträge: 198
Registriert: 24.08.2016, 11:12

Re: Вопросы по написанию скриптов

Beitrag von andrey99986 » 29.09.2017, 10:34

Haba hat geschrieben:оно?

"sql.0": {
"enabled": true,
Похоже что да. Как менять этот параметр в скрипте js ?

Haba
starter
Beiträge: 56
Registriert: 29.03.2016, 13:07

Re: Вопросы по написанию скриптов

Beitrag von Haba » 05.10.2017, 06:40

Получилось?
Предполагаю что так: https://github.com/iobroker/ioBroker.ja ... #setobject
или https://github.com/iobroker/ioBroker.ja ... tendobject
сам не пробовал, но скорей всего так:

Code: Alles auswählen

extendObject('mysensors.0.63.255_ARDUINO_NODE.I_BATTERY_LEVEL', {common: {custom: {sql.0 {enabled: false}}}});

andrey99986
professional
Beiträge: 198
Registriert: 24.08.2016, 11:12

Re: Вопросы по написанию скриптов

Beitrag von andrey99986 » 10.10.2017, 14:10

Haba hat geschrieben:Получилось?
Предполагаю что так: https://github.com/iobroker/ioBroker.ja ... #setobject
или https://github.com/iobroker/ioBroker.ja ... tendobject
сам не пробовал, но скорей всего так:

Code: Alles auswählen

extendObject('mysensors.0.63.255_ARDUINO_NODE.I_BATTERY_LEVEL', {common: {custom: {sql.0 {enabled: false}}}});
Вот так заработало:

Code: Alles auswählen

extendObject('megad.0.p0', {common: {custom: {"sql.0":{enabled: false}}}});

smoker_vvo
professional
Beiträge: 126
Registriert: 17.06.2016, 21:56
Wohnort: Владивосток

Re: Вопросы по написанию скриптов

Beitrag von smoker_vvo » 16.10.2017, 08:32

Уважаемые коллеги по увлечению, прошу оказать помощь в решении следующей задачи:
Система автоматически отправляет сообщения о своем статусе, о работе системы и температуру, но возникла необходимость получать некую сводку о состоянии охраны, насосов и прочего, при восстановлении пром сети.
Сообщение о том что свет отключили Соня успевает отправить, а при включении - получаю сообщение Бот запущен.
Работаем с Телеграммом.
Ну и совсем фантастика - как бы научить Соню озвучивать события разными текстами, ну типа при включении насоса проговаривать текст из какого то списка.... Типа: Насос включен, Я тут насос запустила, У вас закончилась вода, решила подкачать......
Хочу что бы при событии текст отличался от предыдущего... ;) ;) ;)

Benutzeravatar
electric
starter
Beiträge: 64
Registriert: 09.05.2016, 19:35

Re: Вопросы по написанию скриптов

Beitrag von electric » 16.10.2017, 08:58

smoker_vvo hat geschrieben:Ну и совсем фантастика - как бы научить Соню озвучивать события разными текстами, ну типа при включении насоса проговаривать текст из какого то списка.... Типа: Насос включен, Я тут насос запустила, У вас закончилась вода, решила подкачать......
Хочу что бы при событии текст отличался от предыдущего... ;) ;) ;)
Мою Катя зовут.
Я пользуюсь драйвером text2command.
Вот ссылка на гитхаб, там самое последнее описание.
Скриншот вопросов и ответов и настройки в самом text2command прикрепил.
В тексте подтверждения через слэш варианты накидываешь...
Dateianhänge
pic_280.jpg
pic_279.jpg

Benutzeravatar
electric
starter
Beiträge: 64
Registriert: 09.05.2016, 19:35

Re: Вопросы по написанию скриптов

Beitrag von electric » 16.10.2017, 09:02

smoker_vvo hat geschrieben:Система автоматически отправляет сообщения о своем статусе, о работе системы и температуру, но возникла необходимость получать некую сводку о состоянии охраны, насосов и прочего, при восстановлении пром сети.
Сообщение о том что свет отключили Соня успевает отправить, а при включении - получаю сообщение Бот запущен.
Работаем с Телеграммом.
Ну попробуй организовать скрипт, который будет подписан на переменную подключения к телеграмму.
Как только переменная в true (телеграмм подключился) - отправляешь всю сводку...

smoker_vvo
professional
Beiträge: 126
Registriert: 17.06.2016, 21:56
Wohnort: Владивосток

Re: Вопросы по написанию скриптов

Beitrag von smoker_vvo » 16.10.2017, 09:17

Ну если немного в историю..... ТО
И звали ее Алисой и работала она с Мажордомом..... Целых 6 лет.... А потом она оглохла и ослепла.....
И слепил я себе Соню..... На уровень выше и стабильнее... ;) :D :D :D :D
А вообще - Хочется стремиться к С.А.Р.А...... (Self Actuated Residential Automated Habitat) Сериал "Эврика"
:P

smoker_vvo
professional
Beiträge: 126
Registriert: 17.06.2016, 21:56
Wohnort: Владивосток

Re: Вопросы по написанию скриптов

Beitrag von smoker_vvo » 16.10.2017, 09:23

Не шибко силен в скриптах... Как контролировать подключение к телеграмму?

Benutzeravatar
electric
starter
Beiträge: 64
Registriert: 09.05.2016, 19:35

Re: Вопросы по написанию скриптов

Beitrag von electric » 16.10.2017, 09:26

smoker_vvo hat geschrieben:И звали ее Алисой и работала она с Мажордомом..... Целых 6 лет.... А потом она оглохла и ослепла.....
И слепил я себе Соню..... На уровень выше и стабильнее...
О_о, тогда коллеги! Тоже жил с Алисой года так 3-4 назад, потом переехал на CCU.IO (это папа iobroker) и далее на iobroker.

Benutzeravatar
electric
starter
Beiträge: 64
Registriert: 09.05.2016, 19:35

Re: Вопросы по написанию скриптов

Beitrag von electric » 16.10.2017, 09:30

smoker_vvo hat geschrieben:Не шибко силен в скриптах... Как контролировать подключение к телеграмму?
Попробуй подписать на переменную connection.
По идее она true когда драйвер подключен к боту и false в противном случае...
Dateianhänge
pic_281.jpg

smoker_vvo
professional
Beiträge: 126
Registriert: 17.06.2016, 21:56
Wohnort: Владивосток

Re: Вопросы по написанию скриптов

Beitrag von smoker_vvo » 16.10.2017, 09:38

8-) все мы с чего то начинали.....
Спасибо, буду пробовать

Benutzeravatar
Alex1808
professional
Beiträge: 355
Registriert: 21.06.2015, 08:57
Kontaktdaten:

Re: Вопросы по написанию скриптов

Beitrag von Alex1808 » 21.01.2018, 12:09

Bluefox hat geschrieben:
andrey99986 hat geschrieben:Написал на Blockly программу, первая строка кода:

Code: Alles auswählen

on({id: 'javascript\\.0\\.gsm7_1_статус', change: "any"}, function (obj) {
Этот код не срабатывает, наверно из-за неверного экранирования точек.
На js программа работает с таким кодом:

Code: Alles auswählen

on({id: "javascript.0.gsm7_1_статус", change: "any"}, function (obj) {
На гите поправлено. Сегодня вечером будет исправление. Думаю.
Похожая проблемка и с \

невозможно в тексте передать команду телеграму для переноса строки \n
Экранируется на
text: (String('Eingang \\n - Cam'))
и телеграмм уже не видит функции

Antworten