ioBroker Forum


Nutzungsbedingungen |Datenschutzrichtlinie
Cloud |Dokumentation
Aktuelle Zeit: 20.02.2018, 15:58

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 356 Beiträge ]  Gehe zu Seite Vorherige 113 14 15 16 17 18 Nächste
Autor Nachricht
BeitragVerfasst: 26.02.2017, 10:28 
Offline
professional

Registriert: 26.12.2014, 09:40
Beiträge: 252
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal
Раз вы руками создали в корне, то из скрипта уберите CreateState


Nach oben
   
BeitragVerfasst: 26.02.2017, 13:26 
Offline
starter

Registriert: 08.11.2014, 13:07
Beiträge: 77
Hat sich bedankt: 1 Mal
spectrekr hat geschrieben:
Раз вы руками создали в корне, то из скрипта уберите CreateState

Да я все понял. Я чего хотел показать - что используя одинаковый ID в случае с getState ищется первое вхождение с корня объектов
а для createState игнорируется все что выше Javascript.X


Nach oben
   
BeitragVerfasst: 26.02.2017, 13:39 
Offline
guru
Benutzeravatar

Registriert: 09.11.2014, 16:50
Beiträge: 1238
Wohnort: Барнаул
Hat sich bedankt: 15 Mal
Danksagung erhalten: 41 Mal
kID hat geschrieben:
spectrekr hat geschrieben:
Раз вы руками создали в корне, то из скрипта уберите CreateState

Да я все понял. Я чего хотел показать - что используя одинаковый ID в случае с getState ищется первое вхождение с корня объектов
а для createState игнорируется все что выше Javascript.X

Это так работает функция createState. Создает переменные в инстанции Javascript драйвера.

_________________
Высокий уровень Децибел вреден для здоровья!
Мой блог


Nach oben
   
BeitragVerfasst: 27.04.2017, 09:28 
Offline
starter

Registriert: 28.12.2016, 09:27
Beiträge: 63
Hat sich bedankt: 3 Mal
Появилась задача включать выключать драйвер из скрипта. Необходимость возникла по следующей причине - драйвер, работающий с оборудованием, в случае отключения оборудования продолжает пытаться до него достучаться и слать ошибки в логи. Оборудование не всегда должно быть включенным. Поэтому логично с выключением оборудования принудительно отключать и драйвер, занимающийся его опросом.

Управление драйвером пробовал делать через setState, к примеру в тесте управления включением-выключением history:

setState("system.adapter.history.0.alive", true); и setState("system.adapter.history.0.alive", false);

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

history.0 2017-04-27 11:22:54.125 info starting. Version 1.6.2 in /opt/iobroker/node_modules/iobroker.history, node: v4.8.2
host.AdavHome 2017-04-27 11:22:53.290 info instance system.adapter.history.0 started with pid 11319
host.AdavHome 2017-04-27 11:22:23.277 info Restart adapter system.adapter.history.0 because enabled
host.AdavHome 2017-04-27 11:22:23.276 error instance system.adapter.history.0 terminated with code 7 (Adapter already running)
host.AdavHome 2017-04-27 11:22:22.402 info instance system.adapter.history.0 started with pid 11285
host.AdavHome 2017-04-27 11:22:22.402 info "system.adapter.history.0" enabled
host.AdavHome 2017-04-27 11:22:22.402 info object change system.adapter.history.0

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

Может есть какой-то способ сделать это иначе или я что-то не так делаю?


Nach oben
   
BeitragVerfasst: 27.04.2017, 16:18 
Offline
professional

Registriert: 12.05.2015, 16:49
Beiträge: 513
Wohnort: Lithuania, Vilnius
Hat sich bedankt: 17 Mal
Danksagung erhalten: 38 Mal
Adav hat geschrieben:
Появилась задача включать выключать драйвер из скрипта. Необходимость возникла по следующей причине - драйвер, работающий с оборудованием, в случае отключения оборудования продолжает пытаться до него достучаться и слать ошибки в логи. Оборудование не всегда должно быть включенным. Поэтому логично с выключением оборудования принудительно отключать и драйвер, занимающийся его опросом.

Управление драйвером пробовал делать через setState, к примеру в тесте управления включением-выключением history:

setState("system.adapter.history.0.alive", true); и setState("system.adapter.history.0.alive", false);

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

history.0 2017-04-27 11:22:54.125 info starting. Version 1.6.2 in /opt/iobroker/node_modules/iobroker.history, node: v4.8.2
host.AdavHome 2017-04-27 11:22:53.290 info instance system.adapter.history.0 started with pid 11319
host.AdavHome 2017-04-27 11:22:23.277 info Restart adapter system.adapter.history.0 because enabled
host.AdavHome 2017-04-27 11:22:23.276 error instance system.adapter.history.0 terminated with code 7 (Adapter already running)
host.AdavHome 2017-04-27 11:22:22.402 info instance system.adapter.history.0 started with pid 11285
host.AdavHome 2017-04-27 11:22:22.402 info "system.adapter.history.0" enabled
host.AdavHome 2017-04-27 11:22:22.402 info object change system.adapter.history.0

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

Может есть какой-то способ сделать это иначе или я что-то не так делаю?

alive - это ка бы индикатор для чтения
В драйвере Javascript включи опцию Разрешить команду "setObject"
Code:
var obj = getObject("system.adapter.history.0");
obj.common.enabled = false;  //or true
setObject("system.adapter.history.0", obj);

_________________
js-controller: 1.2.0 / node.js: v4.8.6 / npm: 2.15.11
admin: 3.0.1
javascript: 3.5.0
web: 2.1.7 vis: 1.0.4
cloud: 2.0.5

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


Nach oben
   
BeitragVerfasst: 27.04.2017, 16:37 
Offline
starter

Registriert: 28.12.2016, 09:27
Beiträge: 63
Hat sich bedankt: 3 Mal
Разобрался, все работает, спасибо!


Nach oben
   
BeitragVerfasst: 27.04.2017, 16:48 
Offline
professional

Registriert: 12.05.2015, 16:49
Beiträge: 513
Wohnort: Lithuania, Vilnius
Hat sich bedankt: 17 Mal
Danksagung erhalten: 38 Mal
Adav hat geschrieben:
Function "setObject" is not allowed. Use adapter settings to allow it.

В каком месте у адаптера это разрешается?

В админке драйвера Javascript включи опцию Разрешить команду "setObject"

_________________
js-controller: 1.2.0 / node.js: v4.8.6 / npm: 2.15.11
admin: 3.0.1
javascript: 3.5.0
web: 2.1.7 vis: 1.0.4
cloud: 2.0.5

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


Nach oben
   
BeitragVerfasst: 27.04.2017, 16:53 
Offline
starter

Registriert: 28.12.2016, 09:27
Beiträge: 63
Hat sich bedankt: 3 Mal
Оказалось можно одной строкой при той же идее, проверил - нормально!
extendObject('system.adapter.history.0', {common: {enabled: false}});

ну и соответственно true
Еще раз спасибо! :)


Nach oben
   
BeitragVerfasst: 27.04.2017, 21:26 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Доброго дня. Поможите советом: как запустить скрипт по нажатию кнопки и то же самое по времени.


Nach oben
   
BeitragVerfasst: 27.04.2017, 21:59 
Offline
professional

Registriert: 12.05.2015, 16:49
Beiträge: 513
Wohnort: Lithuania, Vilnius
Hat sich bedankt: 17 Mal
Danksagung erhalten: 38 Mal
smoker_vvo hat geschrieben:
Доброго дня. Поможите советом: как запустить скрипт по нажатию кнопки и то же самое по времени.

В vis, виджет кнопка, ID объекта javascript.0.scriptEnabled.scriptname

Code:
var volumeId = "sayit.0.tts.volume";
// Устанавливаем в 6:59 громкость 90
schedule("59 6 * * *", function(){
    setState(volumeId,90,function(){
       log('Установлена громкость '+ getState(volumeId).val);
    });
});

или так
Code:
// Скрипт запускается каждые 10 сек.
function temperatur() {
    сам скрипт
}
schedule('*/10 * * * * *', temperatur);
temperatur();

_________________
js-controller: 1.2.0 / node.js: v4.8.6 / npm: 2.15.11
admin: 3.0.1
javascript: 3.5.0
web: 2.1.7 vis: 1.0.4
cloud: 2.0.5

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


Nach oben
   
BeitragVerfasst: 28.04.2017, 01:59 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Ага, спасиб. По времени интересует типа отправить в 7, 12 и 17 часов, а еще сообщить о событии через 30 минут после его начала.
Типа включился насос и если через 30 минут он не выключился - ТРЕВОГА...... А если выключился - то молчим в тряпочку.


Nach oben
   
BeitragVerfasst: 28.04.2017, 02:14 
Offline
guru
Benutzeravatar

Registriert: 09.11.2014, 16:50
Beiträge: 1238
Wohnort: Барнаул
Hat sich bedankt: 15 Mal
Danksagung erhalten: 41 Mal
smoker_vvo hat geschrieben:
Ага, спасиб. По времени интересует типа отправить в 7, 12 и 17 часов, а еще сообщить о событии через 30 минут после его начала.
Типа включился насос и если через 30 минут он не выключился - ТРЕВОГА...... А если выключился - то молчим в тряпочку.

Ищи на форуме скрипт часов

_________________
Высокий уровень Децибел вреден для здоровья!
Мой блог


Nach oben
   
BeitragVerfasst: 28.04.2017, 07:00 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Угум-с и так уже начинаю немецкий изучать :lol: :lol: :lol:


Nach oben
   
BeitragVerfasst: 28.04.2017, 07:25 
Offline
professional

Registriert: 12.05.2015, 16:49
Beiträge: 513
Wohnort: Lithuania, Vilnius
Hat sich bedankt: 17 Mal
Danksagung erhalten: 38 Mal
smoker_vvo hat geschrieben:
Угум-с и так уже начинаю немецкий изучать :lol: :lol: :lol:

На русском, в немецкой ветке примеров конечно пабольше :) :)
viewtopic.php?f=26&t=495

_________________
js-controller: 1.2.0 / node.js: v4.8.6 / npm: 2.15.11
admin: 3.0.1
javascript: 3.5.0
web: 2.1.7 vis: 1.0.4
cloud: 2.0.5

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


Nach oben
   
BeitragVerfasst: 28.04.2017, 22:18 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
О как! Использую скрипт от electric69 а вот этот топик как то пропустил... Ща попробуем.


Nach oben
   
BeitragVerfasst: 03.05.2017, 22:08 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
вопрос. почему этот скрипт шлет сообщения каждую минуту, где я накосячил?
schedule("* 7,12,17 * * *", function () {
log("Сообщение о температуре дома");
//setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °');
sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °');

});

По идее должен отправлять в 7, 12 и 17 часов. начинает слать в 7 и потом ежеминутно пока не выключишь. меня хватает на 5 мин. :(


Nach oben
   
BeitragVerfasst: 03.05.2017, 22:11 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
лог:

javascript.0 2017-05-04 07:11:00.960 info script.js.Статус_Дома.Отчет_о_температуре: Сообщение о температуре дома
mqtt.0 2017-05-04 07:10:02.572 info send2Server sayit.0.tts.playing[sayit/0/tts/playing]
sayit.0 2017-05-04 07:10:01.867 info saying: 7:10 Пора выходить на работу!
javascript.0 2017-05-04 07:10:00.972 info script.js.Статус_Дома.Отчет_о_температуре: Сообщение о температуре дома
mqtt.0 2017-05-04 07:10:00.865 info send2Server sayit.0.tts.playing[sayit/0/tts/playing]
sayit.0 2017-05-04 07:10:00.849 info saying: C:\ioBroker\node_modules\iobroker.sayit/scifi.mp3
mqtt.0 2017-05-04 07:10:00.834 info send2Server sayit.0.tts.text[sayit/0/tts/text]


Nach oben
   
BeitragVerfasst: 04.05.2017, 01:41 
Offline
guru
Benutzeravatar

Registriert: 09.11.2014, 16:50
Beiträge: 1238
Wohnort: Барнаул
Hat sich bedankt: 15 Mal
Danksagung erhalten: 41 Mal
smoker_vvo hat geschrieben:
вопрос. почему этот скрипт шлет сообщения каждую минуту, где я накосячил?
schedule("* 7,12,17 * * *", function () {
log("Сообщение о температуре дома");
//setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °');
sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °');

});

По идее должен отправлять в 7, 12 и 17 часов. начинает слать в 7 и потом ежеминутно пока не выключишь. меня хватает на 5 мин. :(

Потому что код на форуме надо оборачивать в соответствующий тэг, подправьте. https://crontab.guru

_________________
Высокий уровень Децибел вреден для здоровья!
Мой блог


Nach oben
   
BeitragVerfasst: 04.05.2017, 05:19 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Code:
schedule("* 7,12,17 * * *", function () {
log("Сообщение о температуре дома");
//setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °');
sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °');

});


Учел исправил, за ссылку Зенкуем!! Понял где проблема.


Nach oben
   
BeitragVerfasst: 05.05.2017, 10:57 
Offline
professional

Registriert: 17.06.2016, 21:56
Beiträge: 123
Wohnort: Владивосток
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Доброго времени! Ну я опять с вопросом. вот код:
Code:
schedule("0 7/5 * * *", function () {
    log("Сообщение о температуре дома");
//setState (idSayIt, volume+';'+hour+':'+min+';Температура на улице:'+temp2.val+' °');
    sendTo("telegram.0", "Температура на улице: " +getState("mqtt.0.myhome.Temp.Street").val+' °'+", в Зале: " +getState("mqtt.0.myhome.Temp.Zal").val+' °'+", в Гараже: " +getState("mqtt.0.myhome.Temp.Garage").val+' °'+", на Кухне: " +getState("mqtt.0.myhome.Temp.Kitchen").val+' °'+", на Мансарде :" +getState("mqtt.0.myhome.Temp.Mansarda").val+' °');
       
});

С учетом последних ссылок должно работать в 7, 12, 17 часов... НО! в 7 уведомление получаю, а далее - ни чего. Где искать??


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 356 Beiträge ]  Gehe zu Seite Vorherige 113 14 15 16 17 18 Nächste

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu Forum:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de