NEWS
Вопросы по написанию скриптов
-
ну как же проблема не в скрипте когда срабатывает конкретная секция, о чем пишет в лог? может и не в скрипте проблема, может глубже. но я не понимаю куда дальше смотреть `
Так я понимаю что скрипт стопали, а свет все равно мигал? Причем тут скрипт тогда? И как он выдает данные в лог если он остановлен? -
Совершенно на оборот. если остановить скрипт то ничего не включается.
Речь то о том, что срабатывает событие на которое я подписался каждые 30 сек (ну и когда фактически есть само событие движения тоже срабатывает)
Два сообщения вверх есть лог сработки каждые 30 сек
-
Может так. А код для включения от выключателя существует? Примерно, как вторая часть у моего скрипта?
var timer; on({id: "megad.1.p1_Движение_гостинная"/*Движение_гостинная*/, change: 'ne'}, function (obj) { if (!obj.state.ack) return; // this shoould not happen var svetOn = parseInt(getState('svetOn').val) || 0; var onSensor = parseInt(getState('onSensor').val) || 0; var isMotion = obj.newState.val === 'true' || obj.newState.val === true || obj.newState.val === '1' || obj.newState.val === 1; log('svetOn: ' + svetOn + ', p1_Движение_гостинная: ' + isMotion + '[ack: ' + obj.state.ack + '], onSensor: ' + onSensor); // svetOn: 3, p1_Движение_гостинная: false[ack: true], onSensor: 1 // if motion and sensor enabled and light is OFF or switched on by motion detector if (isMotion && onSensor === 1 && (svetOn === 0 || svetOn === 3)) { // Output of brightness in kitchen. Just for debug log(getState('megad.1.p10_Свет_гостинная'/*Свет_гостинная*/).val); // if light was off => we switch the light on because of motion detector. Start timer setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 255); setState('svetOn', 3); log("Включен свет по движению"); // start timer for 5 seconds to switch the light off log('запускаем таймер отключения на 30000\. старый стираем'); if (timer) clearTimeout(timer); timer = setTimeout(function() { timer = null; setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 0); setState('svetOn', 0); log("выкл свет по таймеру"); }, 5000); } }); on({id: "megad.1.px_выключатель света", change: 'ne'}, function (obj) { // manual mode => ignore motion timer if (timer) clearTimeout(timer); timer = null; var obj.state.val = obj.newState.val === 'true' || obj.newState.val === true || obj.newState.val === '1' || obj.newState.val === 1; if (obj.state.val) { // somebody pressed on button => switch the light on setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 255); setState('svetOn', 1); } else { // somebody pressed off button => switch the light off setState("megad.1.p10_Свет_гостинная"/*Свет_гостинная*/, 0); setState('svetOn', 0); } });
-
Вс равно блин каждые 30 сек зажигается свет:
16:02:24.820 [info] javascript.0 script.js.common.test_on: svetOn: 0, p1_Движение_гостинная: true[ack: true], onSensor: 1 16:02:24.820 [info] javascript.0 script.js.common.test_on: 0 16:02:24.820 [info] javascript.0 script.js.common.test_on: Включен свет по движению 16:02:24.820 [info] javascript.0 script.js.common.test_on: запускаем таймер отключения на 30000\. старый стираем 16:02:24.926 [info] javascript.0 script.js.common.test_on: svetOn: 3, p1_Движение_гостинная: false[ack: true], onSensor: 1 16:02:29.821 [info] javascript.0 script.js.common.test_on: выкл свет по таймеру 16:02:54.836 [info] javascript.0 script.js.common.test_on: svetOn: 0, p1_Движение_гостинная: true[ack: true], onSensor: 1 16:02:54.836 [info] javascript.0 script.js.common.test_on: 0 16:02:54.836 [info] javascript.0 script.js.common.test_on: Включен свет по движению 16:02:54.836 [info] javascript.0 script.js.common.test_on: запускаем таймер отключения на 30000\. старый стираем 16:02:54.922 [info] javascript.0 script.js.common.test_on: svetOn: 3, p1_Движение_гостинная: false[ack: true], onSensor: 1 16:02:59.843 [info] javascript.0 script.js.common.test_on: выкл свет по таймеру
-
У тебя p1_Движение_гостинная каждые 30 сек присылает true.
` > 16:02:24.820 [info] javascript.0 script.js.common.test_on: svetOn: 0, p1_Движение_гостинная: true[ack: true], onSensor: 1
16:02:54.836 [info] javascript.0 script.js.common.test_on: svetOn: 0, p1_Движение_гостинная: true[ack: true], onSensor: 1 `
И скрипт отрабатывает всё правильно.
Что выдаёт скрипт в течении 3 минут?
on({id: "megad.1.p1_Движение_гостинная"/*Движение_гостинная*/, change: 'any'}, function (obj) { console.log(JSON.stringify(obj.state)); });
-
Вс равно блин каждые 30 сек зажигается свет:
16:02:24.820 [info] javascript.0 script.js.common.test_on: svetOn: 0, p1_Движение_гостинная: true[ack: true], onSensor: 1 16:02:24.820 [info] javascript.0 script.js.common.test_on: 0 16:02:24.820 [info] javascript.0 script.js.common.test_on: Включен свет по движению 16:02:24.820 [info] javascript.0 script.js.common.test_on: запускаем таймер отключения на 30000\. старый стираем 16:02:24.926 [info] javascript.0 script.js.common.test_on: svetOn: 3, p1_Движение_гостинная: false[ack: true], onSensor: 1 16:02:29.821 [info] javascript.0 script.js.common.test_on: выкл свет по таймеру 16:02:54.836 [info] javascript.0 script.js.common.test_on: svetOn: 0, p1_Движение_гостинная: true[ack: true], onSensor: 1 16:02:54.836 [info] javascript.0 script.js.common.test_on: 0 16:02:54.836 [info] javascript.0 script.js.common.test_on: Включен свет по движению 16:02:54.836 [info] javascript.0 script.js.common.test_on: запускаем таймер отключения на 30000\. старый стираем 16:02:54.922 [info] javascript.0 script.js.common.test_on: svetOn: 3, p1_Движение_гостинная: false[ack: true], onSensor: 1 16:02:59.843 [info] javascript.0 script.js.common.test_on: выкл свет по таймеру ```` `
Отключил объемник
-
Готово
!
20:35:34.143 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:35:34.143 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479334138,"ack":true,"lc":1474479334138,"from":"system.adapter.megad.1"} 20:35:34.244 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:35:34.244 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479334239,"ack":true,"lc":1474479334239,"from":"system.adapter.megad.1"} 20:35:37.399 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:35:37.399 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479337396,"ack":true,"lc":1474479337396,"from":"system.adapter.megad.1"} 20:35:37.500 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:35:37.501 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479337497,"ack":true,"lc":1474479337497,"from":"system.adapter.megad.1"} 20:35:49.257 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:35:49.257 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479349252,"ack":true,"lc":1474479349252,"from":"system.adapter.megad.1"} 20:35:49.355 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:35:49.356 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479349352,"ack":true,"lc":1474479349352,"from":"system.adapter.megad.1"} 20:36:04.770 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:04.770 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479364766,"ack":true,"lc":1474479364766,"from":"system.adapter.megad.1"} 20:36:04.872 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:04.872 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479364867,"ack":true,"lc":1474479364867,"from":"system.adapter.megad.1"} 20:36:07.400 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:07.401 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479367397,"ack":true,"lc":1474479367397,"from":"system.adapter.megad.1"} 20:36:07.503 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:07.503 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479367499,"ack":true,"lc":1474479367499,"from":"system.adapter.megad.1"} 20:36:21.801 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:21.801 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479381790,"ack":true,"lc":1474479381790,"from":"system.adapter.megad.1"} 20:36:21.892 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:21.893 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479381889,"ack":true,"lc":1474479381889,"from":"system.adapter.megad.1"} 20:36:29.213 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:29.214 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479389208,"ack":true,"lc":1474479389208,"from":"system.adapter.megad.1"} 20:36:29.312 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:29.313 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479389309,"ack":true,"lc":1474479389309,"from":"system.adapter.megad.1"} 20:36:31.897 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:31.898 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479391893,"ack":true,"lc":1474479391893,"from":"system.adapter.megad.1"} 20:36:32.008 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:32.009 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479391997,"ack":true,"lc":1474479391997,"from":"system.adapter.megad.1"} 20:36:34.856 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:34.857 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479394853,"ack":true,"lc":1474479394853,"from":"system.adapter.megad.1"} 20:36:34.958 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:34.959 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479394953,"ack":true,"lc":1474479394953,"from":"system.adapter.megad.1"} 20:36:37.411 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:37.412 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479397405,"ack":true,"lc":1474479397405,"from":"system.adapter.megad.1"} 20:36:37.501 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:37.502 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479397498,"ack":true,"lc":1474479397498,"from":"system.adapter.megad.1"} 20:36:41.742 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:36:41.742 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479401732,"ack":true,"lc":1474479401732,"from":"system.adapter.megad.1"} 20:36:41.841 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:36:41.841 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479401833,"ack":true,"lc":1474479401833,"from":"system.adapter.megad.1"} 20:37:02.262 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:02.264 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479422255,"ack":true,"lc":1474479422255,"from":"system.adapter.megad.1"} 20:37:02.361 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:02.362 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479422355,"ack":true,"lc":1474479422355,"from":"system.adapter.megad.1"} 20:37:07.409 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:07.410 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479427405,"ack":true,"lc":1474479427405,"from":"system.adapter.megad.1"} 20:37:07.512 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:07.513 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479427509,"ack":true,"lc":1474479427509,"from":"system.adapter.megad.1"} 20:37:07.942 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:07.944 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479427935,"ack":true,"lc":1474479427935,"from":"system.adapter.megad.1"} 20:37:08.039 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:08.042 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479428035,"ack":true,"lc":1474479428035,"from":"system.adapter.megad.1"} 20:37:10.819 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:10.820 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479430810,"ack":true,"lc":1474479430810,"from":"system.adapter.megad.1"} 20:37:10.919 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:10.920 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479430913,"ack":true,"lc":1474479430913,"from":"system.adapter.megad.1"} 20:37:14.094 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:14.095 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479434089,"ack":true,"lc":1474479434089,"from":"system.adapter.megad.1"} 20:37:14.191 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:14.192 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479434188,"ack":true,"lc":1474479434188,"from":"system.adapter.megad.1"} 20:37:16.631 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:16.631 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479436625,"ack":true,"lc":1474479436625,"from":"system.adapter.megad.1"} 20:37:16.738 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:16.738 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479436732,"ack":true,"lc":1474479436732,"from":"system.adapter.megad.1"} 20:37:20.461 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:20.463 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479440454,"ack":true,"lc":1474479440454,"from":"system.adapter.megad.1"} 20:37:20.562 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:20.563 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479440556,"ack":true,"lc":1474479440556,"from":"system.adapter.megad.1"} 20:37:24.479 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: true[ack: true], onSensor: 0 20:37:24.480 [info] javascript.0 script.js.common.test_on: {"val":true,"ts":1474479444473,"ack":true,"lc":1474479444473,"from":"system.adapter.megad.1"} 20:37:24.581 [info] javascript.0 script.js.common.test_on: svetOn: 1, p1_Движение_гостинная: false[ack: true], onSensor: 0 20:37:24.583 [info] javascript.0 script.js.common.test_on: {"val":false,"ts":1474479444575,"ack":true,"lc":1474479444575,"from":"system.adapter.megad.1"} !
-
Ну ты то хоть понимаешь, что ты видишь? Как бы ты это интерпретировал?
-
Да у меня блин стоит в настройке "при размыкании" вот и шлёт постоянно true, а false при сработке (
-
Да у меня блин стоит в настройке "при размыкании" вот и шлёт постоянно true, а false при сработке ( `
А почему каждые 5 секунд? Может выключение света вызывать срабатывание движения? -
Да у меня блин стоит в настройке "при размыкании" вот и шлёт постоянно true, а false при сработке ( `
Посади порт на землю, тоже самое? -
Добавил ещё один драйвер javascript.
Как создавать и переносить скрипты в новый драйвер js? Не могу найти переключение в админке.
Хочу чтобы часть скриптов (потенциально опасных) работало под одним,
Другая часть - отлаженных и отвечающих за безопасность дома под другим.
Так как уже неоднократно ошибки в скриптах "ложили" драйвер со всеми другими скриптами.
Надеюсь что при этом глобальные переменные останутся доступны в обоих драйверах.
-
Добавил ещё один драйвер javascript.
Как создавать и переносить скрипты в новый драйвер js? Не могу найти переключение в админке.
Хочу чтобы часть скриптов (потенциально опасных) работало под одним,
Другая часть - отлаженных и отвечающих за безопасность дома под другим.
Так как уже неоднократно ошибки в скриптах "ложили" драйвер со всеми другими скриптами.
Надеюсь что при этом глобальные переменные останутся доступны в обоих драйверах. `
В вкладке скрипты возле названия скрипта у тебя "0" поменяй ” на "1" -
Добавил ещё один драйвер javascript.
Как создавать и переносить скрипты в новый драйвер js? Не могу найти переключение в админке.
Хочу чтобы часть скриптов (потенциально опасных) работало под одним,
Другая часть - отлаженных и отвечающих за безопасность дома под другим.
Так как уже неоднократно ошибки в скриптах "ложили" драйвер со всеми другими скриптами.
Надеюсь что при этом глобальные переменные останутся доступны в обоих драйверах.
В вкладке скрипты возле названия скрипта у тебя "0" поменяй ” на "1"
Понял, спасибо. -
Можно ли из скрипта изменить значение свойства "unit" существующего объекта?
Пример - хочу выводить на экран свободное место на диске и, в зависимости от его значения прописывать в unit Gb, Mb, Kb.
-
@Ho Hum:Можно ли из скрипта изменить значение свойства "unit" существующего объекта?
Пример - хочу выводить на экран свободное место на диске и, в зависимости от его значения прописывать в unit Gb, Mb, Kb. `
в vis выводи Gb, Mb, Kb. отдельным виджетом с формулой. Или создай скрипт и добавляй к цифрам нужное и сохраняй в другой объект -
Да, про это я тоже думал, просто хотелось сделать покрасивее
Спасибо.
-
Для управления контентом в vis надо использовать readFile, writeFile.
А что использовать для корректного удаления файла?
Ситуация такая:
удалил файл:
fs.unlinkSync(small_img);
в файловой системе файла нет. В проводнике редактора Vis-а тоже нет.
В браузере (на котором ни разу к этому урлу не обращались, то есть дело не в кэше клиента) на клиенте файл-картинка загружается.
Перезапускал драйвер vis, web - не помогает.
-
Странности с indexof
! ````
var arr_name = [], arr_work = [];
! sendTo('sql.0', 'query', "SELECT name FROM work.work GROUP BY name", function(res) {
if (res.error) {
console.error(res.error);
}
for (var a in res.result) {
arr_name.push(res.result[a].name);
}
! if(prev_command === name_cust && arr_work.indexOf(command) < 0){
for (var a in arr_work) {
log(arr_work[a]);
}
log(typeof(arr_work));
log(arr_work.indexOf(command));возвращает -1, хо 1 элемент в массиве, хоть несколько. Правда элементы кириллический текст.
-
Странности с indexof
! var arr_name = [], arr_work = [];
! sendTo('sql.0', 'query', "SELECT name FROM work.work GROUP BY name", function(res) {
! if (res.error) {
! console.error(res.error);
! }
! for (var a in res.result) {
! arr_name.push(res.result[a].name);
! }
! if(prev_command === name_cust && arr_work.indexOf(command) < 0){
! for (var a in arr_work) {
! log(arr_work[a]);
! }
! log(typeof(arr_work));
! log(arr_work.indexOf(command));возвращает -1, хо 1 элемент в массиве, хоть несколько. Правда элементы кириллический текст. `
Что пишет в лог?! ```
var arr_name = [], arr_work = []; ! sendTo('sql.0', 'query', "SELECT name FROM work.work GROUP BY name", function(res) { if (res.error) { console.error(res.error); } for (var a in res.result) { arr_name.push(res.result[a].name); } log('Масиив = ' + JSON.stringify(arr_name)); ! if(prev_command === name_cust && ~arr_work.indexOf(command)){ for (var b in arr_work) { log(arr_work[b]); } log(typeof(arr_work)); log(arr_work.indexOf(command)); } ! });
[/b]