ioBroker Forum


Nutzungsbedingungen |Datenschutzrichtlinie
Cloud |Dokumentation
Aktuelle Zeit: 22.02.2018, 12:13

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 356 Beiträge ]  Gehe zu Seite Vorherige 112 13 14 15 1618 Nächste
Autor Nachricht
BeitragVerfasst: 16.02.2017, 00:14 
Offline

Registriert: 25.01.2017, 23:44
Beiträge: 8
Hat sich bedankt: 2 Mal
Столкнулся с проблемой. При попытке использовать getState, драйвер выдаёт ошибку.
Пробую как в примерах
Spoiler: Show hidden text
Dateianhang:
Get3.PNG
Get3.PNG [ 126.74 KiB | 2347 mal betrachtet ]

При этом драйвер начинает ругаться
Spoiler: Show hidden text
Dateianhang:
Get4.PNG
Get4.PNG [ 71.91 KiB | 2347 mal betrachtet ]


Пробую с колбеком,и в нём менять значение
Spoiler: Show hidden text
Dateianhang:
Get6.PNG
Get6.PNG [ 174.25 KiB | 2347 mal betrachtet ]


Но если добавить вывод в лог, в колбеке, то работает
Spoiler: Show hidden text
Dateianhang:
Gat5.PNG
Gat5.PNG [ 25.93 KiB | 2347 mal betrachtet ]


Если сделать так
Code:
 t = setInterval(function () {
    console.log(getState('javascript.0.temp', function (err, state){}).val);
}, 1000);

То в лог сыпятся ошибки
Spoiler: Show hidden text
Dateianhang:
Get7.PNG
Get7.PNG [ 79.44 KiB | 2347 mal betrachtet ]


Где допускаю ошибку? Гугл толком не помог.
Заранее спасибо


Nach oben
   
BeitragVerfasst: 16.02.2017, 12:35 
Offline
professional

Registriert: 26.12.2014, 09:40
Beiträge: 252
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal
Izzm hat geschrieben:
Столкнулся с проблемой. При попытке использовать getState, драйвер выдаёт ошибку.
Пробую как в примерах

Где допускаю ошибку? Гугл толком не помог.
Заранее спасибо


А почему не так?
Code:
setInterval(function () {
    console.log(getState('javascript.0.temp').val);
}, 1000);


Хотя и так работает.

Code:
var t;

t = setInterval(function() {
    console.log(getState("mqtt.0.SpectreKr.podval.signaling").val)
}, 18000);


Может интервал сильно маленький?


Nach oben
   
BeitragVerfasst: 16.02.2017, 12:57 
Offline

Registriert: 25.01.2017, 23:44
Beiträge: 8
Hat sich bedankt: 2 Mal
Попробовал ваш вариант

Независимо от интервала, в логе сообщение
Code:
14:55:00.860   [error]   javascript.0 script.js.Скрипт1: Cannot use sync getState, use callback instead getState("javascript.0.temp", function (err, state){});


И драйвер выдаёт в лог целый ворох ошибок, так же как и раньше
Code:
Server-Izzm   2017-02-16 14:55:00.894   error   instance system.adapter.javascript.0 terminated with code 0 (OK)
javascript.0   2017-02-16 14:55:00.862   info   terminating
javascript.0   2017-02-16 14:55:00.854   error   at Timer.listOnTimeout (timers.js:92:15)
javascript.0   2017-02-16 14:55:00.854   error   at wrapper [as _onTimeout] (timers.js:279:11)
javascript.0   2017-02-16 14:55:00.854   error   at ontimeout [as _repeat] (timers.js:263:34)
javascript.0   2017-02-16 14:55:00.854   error   at null. (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2044:44)
javascript.0   2017-02-16 14:55:00.854   error   at Object. (script.js.Скрипт1:2:46)
javascript.0   2017-02-16 14:55:00.854   error   TypeError: Cannot read property 'val' of undefined
javascript.0   2017-02-16 14:55:00.848   error   uncaught exception: Cannot read property 'val' of undefined
javascript.0   2017-02-16 14:55:00.837   error   script.js.Скрипт1: Cannot use sync getState, use callback instead getState("javascript.0.temp", function (err, state){});


Nach oben
   
BeitragVerfasst: 16.02.2017, 15:28 
Offline
professional

Registriert: 26.12.2014, 09:40
Beiträge: 252
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal
А вообще этот объект существует? В нем какие-то данные есть?


Nach oben
   
BeitragVerfasst: 16.02.2017, 15:35 
Offline
guru
Benutzeravatar

Registriert: 09.11.2014, 16:50
Beiträge: 1238
Wohnort: Барнаул
Hat sich bedankt: 15 Mal
Danksagung erhalten: 41 Mal
Izzm hat geschrieben:
Попробовал ваш вариант

Независимо от интервала, в логе сообщение
Code:
14:55:00.860   [error]   javascript.0 script.js.Скрипт1: Cannot use sync getState, use callback instead getState("javascript.0.temp", function (err, state){});


И драйвер выдаёт в лог целый ворох ошибок, так же как и раньше
Code:
Server-Izzm   2017-02-16 14:55:00.894   error   instance system.adapter.javascript.0 terminated with code 0 (OK)
javascript.0   2017-02-16 14:55:00.862   info   terminating
javascript.0   2017-02-16 14:55:00.854   error   at Timer.listOnTimeout (timers.js:92:15)
javascript.0   2017-02-16 14:55:00.854   error   at wrapper [as _onTimeout] (timers.js:279:11)
javascript.0   2017-02-16 14:55:00.854   error   at ontimeout [as _repeat] (timers.js:263:34)
javascript.0   2017-02-16 14:55:00.854   error   at null. (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2044:44)
javascript.0   2017-02-16 14:55:00.854   error   at Object. (script.js.Скрипт1:2:46)
javascript.0   2017-02-16 14:55:00.854   error   TypeError: Cannot read property 'val' of undefined
javascript.0   2017-02-16 14:55:00.848   error   uncaught exception: Cannot read property 'val' of undefined
javascript.0   2017-02-16 14:55:00.837   error   script.js.Скрипт1: Cannot use sync getState, use callback instead getState("javascript.0.temp", function (err, state){});

Code:
var t;

t = setInterval(function() {
   var v = getState('javascript.0.temp').val;
    log(v);
}, 2000);

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


Nach oben
   
BeitragVerfasst: 16.02.2017, 15:49 
Offline
professional

Registriert: 26.12.2014, 09:40
Beiträge: 252
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal
Вариант, но смысл добавлять еще переменную? И так прекрасно выводит.


Nach oben
   
BeitragVerfasst: 16.02.2017, 17:32 
Offline

Registriert: 25.01.2017, 23:44
Beiträge: 8
Hat sich bedankt: 2 Mal
Читаю другое свойство, которое точно существует
Spoiler: Show hidden text
Dateianhang:
Gate8.PNG
Gate8.PNG [ 6.56 KiB | 2326 mal betrachtet ]

Код взял из сообщения instalator.
Code:
var t;
t = setInterval(function() {
   var v = getState('javascript.0.RealTemp.temp').val;
    log(v);
}, 2000);

Вывод в лог в редакторе скриптов
Code:
19:30:57.235   [info]   javascript.0 Start javascript script.js.script
19:30:57.235   [info]   javascript.0 script.js.script: setInterval(ms=2000)
19:30:57.236   [info]   javascript.0 script.js.script: registered 0 subscriptions and 0 schedules
19:30:59.255   [error]   javascript.0 script.js.script: Cannot use sync getState, use callback instead getState("javascript.0.RealTemp.temp", function (err, state){});

В глобальном логе
Code:
Server-Izzm   2017-02-16 19:30:59.273   info   Restart adapter system.adapter.javascript.0 because enabled
host.Server-Izzm   2017-02-16 19:30:59.273   error   instance system.adapter.javascript.0 terminated with code 0 (OK)
javascript.0   2017-02-16 19:30:59.257   info   terminating
javascript.0   2017-02-16 19:30:59.248   error   at Timer.listOnTimeout (timers.js:92:15)
javascript.0   2017-02-16 19:30:59.248   error   at wrapper [as _onTimeout] (timers.js:279:11)
javascript.0   2017-02-16 19:30:59.248   error   at ontimeout [as _repeat] (timers.js:263:34)
javascript.0   2017-02-16 19:30:59.248   error   at null. (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2044:44)
javascript.0   2017-02-16 19:30:59.248   error   at Object. (script.js.script:4:67)
javascript.0   2017-02-16 19:30:59.248   error   TypeError: Cannot read property 'val' of undefined
javascript.0   2017-02-16 19:30:59.242   error   uncaught exception: Cannot read property 'val' of undefined
javascript.0   2017-02-16 19:30:59.233   error   script.js.script: Cannot use sync getState, use callback instead getState("javascript.0.RealTemp.temp", function (err, state){});


Nach oben
   
BeitragVerfasst: 16.02.2017, 17:36 
Offline
guru
Benutzeravatar

Registriert: 09.11.2014, 16:50
Beiträge: 1238
Wohnort: Барнаул
Hat sich bedankt: 15 Mal
Danksagung erhalten: 41 Mal
Izzm hat geschrieben:
Читаю другое свойство, которое точно существует
Spoiler: Show hidden text
Gate8.PNG

Код взял из сообщения instalator.
Code:
var t;
t = setInterval(function() {
   var v = getState('javascript.0.RealTemp.temp').val;
    log(v);
}, 2000);

Вывод в лог в редакторе скриптов
Code:
19:30:57.235   [info]   javascript.0 Start javascript script.js.script
19:30:57.235   [info]   javascript.0 script.js.script: setInterval(ms=2000)
19:30:57.236   [info]   javascript.0 script.js.script: registered 0 subscriptions and 0 schedules
19:30:59.255   [error]   javascript.0 script.js.script: Cannot use sync getState, use callback instead getState("javascript.0.RealTemp.temp", function (err, state){});

В глобальном логе
Code:
Server-Izzm   2017-02-16 19:30:59.273   info   Restart adapter system.adapter.javascript.0 because enabled
host.Server-Izzm   2017-02-16 19:30:59.273   error   instance system.adapter.javascript.0 terminated with code 0 (OK)
javascript.0   2017-02-16 19:30:59.257   info   terminating
javascript.0   2017-02-16 19:30:59.248   error   at Timer.listOnTimeout (timers.js:92:15)
javascript.0   2017-02-16 19:30:59.248   error   at wrapper [as _onTimeout] (timers.js:279:11)
javascript.0   2017-02-16 19:30:59.248   error   at ontimeout [as _repeat] (timers.js:263:34)
javascript.0   2017-02-16 19:30:59.248   error   at null. (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2044:44)
javascript.0   2017-02-16 19:30:59.248   error   at Object. (script.js.script:4:67)
javascript.0   2017-02-16 19:30:59.248   error   TypeError: Cannot read property 'val' of undefined
javascript.0   2017-02-16 19:30:59.242   error   uncaught exception: Cannot read property 'val' of undefined
javascript.0   2017-02-16 19:30:59.233   error   script.js.script: Cannot use sync getState, use callback instead getState("javascript.0.RealTemp.temp", function (err, state){});

А так?
Code:
var t;
t = setInterval(function() {
   getState("javascript.0.RealTemp.temp", function (err, state){
      log(JSON.stringify(state));
   });
}, 2000);

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


Nach oben
   
BeitragVerfasst: 16.02.2017, 18:06 
Offline

Registriert: 25.01.2017, 23:44
Beiträge: 8
Hat sich bedankt: 2 Mal
Вывод в лог. У state в val есть нужное значение.
Code:
19:56:08.143   [info]   javascript.0 Start javascript script.js.script
19:56:08.144   [info]   javascript.0 script.js.script: setInterval(ms=2000)
19:56:08.144   [info]   javascript.0 script.js.script: registered 0 subscriptions and 0 schedules
19:56:10.147   [info]   javascript.0 script.js.script: {"val":24.5,"ack":true,"ts":1487264169069,"q":0,"from":"system.adapter.javascript.0","lc":1487263250738}


И так работает
Code:
var t;
var vv;
t = setInterval(function() {
   getState("javascript.0.RealTemp.temp", function (err, state){
      log(JSON.stringify(state.val));
      vv=state.val;
   });
   log(vv);
}, 2000);

Code:
20:05:09.423   [info]   javascript.0 Start javascript script.js.script
20:05:09.424   [info]   javascript.0 script.js.script: setInterval(ms=2000)
20:05:09.424   [info]   javascript.0 script.js.script: registered 0 subscriptions and 0 schedules
20:05:11.424   [info]   javascript.0 script.js.script: undefined
20:05:11.426   [info]   javascript.0 script.js.script: 24.5
20:05:13.429   [info]   javascript.0 script.js.script: 24.5
20:05:13.432   [info]   javascript.0 script.js.script: 24.5


Nach oben
   
BeitragVerfasst: 17.02.2017, 07:23 
Offline
Site Admin
Benutzeravatar

Registriert: 13.07.2014, 14:42
Beiträge: 7712
Hat sich bedankt: 290 Mal
Danksagung erhalten: 829 Mal
В настройках javascript есть свойство - Оптимизация состояний. Если убрать его, то getState (bla).val заработает.


Nach oben
   
BeitragVerfasst: 17.02.2017, 09:11 
Offline
professional

Registriert: 26.12.2014, 09:40
Beiträge: 252
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal
Пытаюсь из строки выбрать IP адрес, сделал регулярное выражение и парсю строку.

Spoiler: Show hidden text
Code:
var reg_ip = new RegExp ('(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])');
var ip;
var str = "first L2TP UDP packet received from 217.15.203.52";
//var str = "error: WARNING: cannot find message with id = 27946818";
ip = reg_ip.exec(str);
    if(ip){
        log("IP: " + ip[0]);
    }

Из первой строки выводит только первые две декты IP, а из второй все число, хотя на IP оно и близко не похоже.


Nach oben
   
BeitragVerfasst: 17.02.2017, 14:12 
Offline
Site Admin
Benutzeravatar

Registriert: 13.07.2014, 14:42
Beiträge: 7712
Hat sich bedankt: 290 Mal
Danksagung erhalten: 829 Mal
Будь проще :)
Code:
var str = "first L2TP UDP packet received from 217.15.203.52";
var ip = str.match(/\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b/);
if(ip){
    log("IP: " + ip[1]);
}


Nach oben
   
BeitragVerfasst: 17.02.2017, 22:21 
Offline

Registriert: 25.01.2017, 23:44
Beiträge: 8
Hat sich bedankt: 2 Mal
Большое спасибо.
А то я уже такие костыли понастроил.


Nach oben
   
BeitragVerfasst: 22.02.2017, 12:59 
Offline
professional

Registriert: 26.12.2014, 09:40
Beiträge: 252
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal
Все сдаюсь, "обожаю" асинхронность JS. Есть цикл, надо сообщения выводит с задежркой, чтоб телеграмм не заблочил.

Spoiler: Show hidden text
Code:
for (var a in res.result) {
            if(res.result[a].work.indexOf('/1') > 0){
                str = res.result[a].work.replace(new RegExp('/1','g'),' _очень низкий_');
               
            }else
            if(res.result[a].work.indexOf('/2') > 0){
                str = res.result[a].work.replace(new RegExp('/2','g'),' _низкий_');
            }else
            if(res.result[a].work.indexOf('/3') > 0){
                str = res.result[a].work.replace(new RegExp('/3','g'),' _средний_');
            }else
            if(res.result[a].work.indexOf('/4') > 0){
                str = res.result[a].work.replace(new RegExp('/4','g'),' _высокий_');
            }else
            if(res.result[a].work.indexOf('/5') > 0){
                str = res.result[a].work.replace(new RegExp('/5','g'),' _очень высокий_');
            }
            sendTo('telegram.0', {user:   us, text:   '*' + res.result[a].name + '*' + '\n' + str, parse_mode: 'Markdown'});
        }


Nach oben
   
BeitragVerfasst: 25.02.2017, 16:00 
Offline
starter

Registriert: 08.11.2014, 13:07
Beiträge: 77
Hat sich bedankt: 1 Mal
Пытаюсь проделать следующий финт:
На закладке объектов создать в корне папку и наполнить ее разными объектами.
Например создать папку Flags и там различные объекты к которым могу обращаться из различных инстанций Javascript.0 или Javascript.1
Зачем это. Ну просто обособить свои объекты. Насоздавал например объектов в Javascript.1, а затем нечаяно грохнул его и все потерялось. А так все на месте и к ним можно обратиться из Javascript.0. И соответственно скрипты рассчитанные на одновременную работу с данными могут находится в разных инстанциях.
Но почему то не могу создать первоначальную папку в корне, куда потом прятать все содержимое. Позволяет только создать состояние|канал|устройство. Но если создавать любой из этих объектов, то все дочерние визуально лежат рядом.
Чего я неправильно делаю
Dateianhang:
Скриншот 2017-02-25 21.53.53.png
Скриншот 2017-02-25 21.53.53.png [ 55.09 KiB | 2146 mal betrachtet ]


Nach oben
   
BeitragVerfasst: 25.02.2017, 18:23 
Offline
professional
Benutzeravatar

Registriert: 14.07.2014, 16:39
Beiträge: 380
Wohnort: Россия, Тюмень
Hat sich bedankt: 5 Mal
Проще создать нужные объекты скриптом
CreateState('папка.объект', " ");

Пишу с пульта....

_________________
Пишу с пульта....


Nach oben
   
BeitragVerfasst: 26.02.2017, 04:18 
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:
Пытаюсь проделать следующий финт:
На закладке объектов создать в корне папку и наполнить ее разными объектами.
Например создать папку Flags и там различные объекты к которым могу обращаться из различных инстанций Javascript.0 или Javascript.1
Зачем это. Ну просто обособить свои объекты. Насоздавал например объектов в Javascript.1, а затем нечаяно грохнул его и все потерялось. А так все на месте и к ним можно обратиться из Javascript.0. И соответственно скрипты рассчитанные на одновременную работу с данными могут находится в разных инстанциях.
Но почему то не могу создать первоначальную папку в корне, куда потом прятать все содержимое. Позволяет только создать состояние|канал|устройство. Но если создавать любой из этих объектов, то все дочерние визуально лежат рядом.
Чего я неправильно делаю Скриншот 2017-02-25 21.53.53.png

Создай сразу всю ветку. Например kitchen.flag

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


Nach oben
   
BeitragVerfasst: 26.02.2017, 06:27 
Offline
starter

Registriert: 08.11.2014, 13:07
Beiträge: 77
Hat sich bedankt: 1 Mal
aurodionov hat geschrieben:
Проще создать нужные объекты скриптом
CreateState('папка.объект', " ");

Но ведь тогда объект создается в той инстанции откуда скрипт запущен
т.е скрип
createState('flag.alarm_10min', false);
createState('flag.alarm_10min', false );
запущенный из javascript.0 создаст эти объекты в дереве javascript.0

instalator hat geschrieben:
Создай сразу всю ветку. Например kitchen.flag

Я чувствую что не догоняю.
Только что понял: Корневое название должно состоять из двух частей разделённых точкой. Тогда оно при дальнейшем наполнении становится родителем. Я же просто создавал "Flag" и оно периодами вообще терялось из списка объектов, потом при обновлении появлялось, и главное к нему не цеплялись дочерние объекты, они просто лежали рядом. Хотя к названию дочерних цеплялся Flag.


Nach oben
   
BeitragVerfasst: 26.02.2017, 08:24 
Offline
starter

Registriert: 08.11.2014, 13:07
Beiträge: 77
Hat sich bedankt: 1 Mal
Ну чего-то наворотил, но все же работает как-то не так.
Скрипт
Code:
reateState('Flag.0.Alarm_10min', false);
createState('Flag.0.Alarm_5min', false);
createState('Flag.0.test', 10);

setState (("Flag.0.Alarm_5min"), true, true);
setState (("Flag.0.test"/*test*/), 20, true);
log("Значение" + getState("Flag.0.test").val);

Если таких объектов нигде нет, то все создается в дереве javascript.0
И далее с этими объектами работаем как обычно
Но если я заранее в корне создаю эти объекты
то получаю следующее
Dateianhang:
полуторный объект.jpg
полуторный объект.jpg [ 28.37 KiB | 2119 mal betrachtet ]

или так
Dateianhang:
двойной объект.jpg
двойной объект.jpg [ 25.46 KiB | 2119 mal betrachtet ]

Т.е создается объект в дереве javascript.0 а работаем уже с объектом из корня.

Я так понимаю что ситуация как в анекдоте:
- Чего-то меня последнее время Гондурас беспокоит
- А вы его поменьше чешите
Т.е. в корне создавать объекты нельзя!!


Nach oben
   
BeitragVerfasst: 26.02.2017, 08:57 
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:
Ну чего-то наворотил, но все же работает как-то не так.
Скрипт
Code:
reateState('Flag.0.Alarm_10min', false);
createState('Flag.0.Alarm_5min', false);
createState('Flag.0.test', 10);

setState (("Flag.0.Alarm_5min"), true, true);
setState (("Flag.0.test"/*test*/), 20, true);
log("Значение" + getState("Flag.0.test").val);

Если таких объектов нигде нет, то все создается в дереве javascript.0
И далее с этими объектами работаем как обычно
Но если я заранее в корне создаю эти объекты
то получаю следующее
полуторный объект.jpg
или так
двойной объект.jpg
Т.е создается объект в дереве javascript.0 а работаем уже с объектом из корня.

Я так понимаю что ситуация как в анекдоте:
- Чего-то меня последнее время Гондурас беспокоит
- А вы его поменьше чешите
Т.е. в корне создавать объекты нельзя!!

Руками можно

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


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 112 13 14 15 1618 Nächste

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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