NEWS
Скрипт контроля отопления
-
Чуток подправил скрипт, проблемы остались прежними. Народ 45 просмотров и не одного комментария?
В скрипте появился треугольник с надписью "Too many errors 81% scanhed" в чем ошибки, сам скрипт работает.
-
В скрипте появился треугольник с надписью "Too many errors 81% scanhed" в чем ошибки, сам скрипт работает.
filename="screencapture-192-168-1-11-8081-1460455685460.png" index="0">~~ `
попробуй замени в IFах == на === и != на !== -
в javascript читает сразу весь скрипт и выдаёт лог по скрипту, но в скрипте по худу есть всякие if с условиями и сравнениями и могут быть путаница.
Используй callback
и -
В скрипте появился треугольник с надписью "Too many errors 81% scanhed" в чем ошибки, сам скрипт работает.
filename="screencapture-192-168-1-11-8081-1460455685460.png" index="0">~~попробуй замени в IFах == на === и != на !==
Попробовал, результат тот же. -
в javascript читает сразу весь скрипт и выдаёт лог по скрипту, но в скрипте по худу есть всякие if с условиями и сравнениями и могут быть путаница.
Используй callback
и `
Если тебя не затруднит, хоть пару строчек на моем скрипте :oops: -
Подключение работает, средние значение всего столбца считает, каждый id тоже считает. Есть столбец ts с какими то цифрами даты и времени, как его расшифровать ? в других базах у меня форма 2016-04-14 21:56:32
createState('test','',{type:'number',role:'value',read:true}); createState('test_1','',{type:'number',role:'value',read:true}); createState('test_2','',{type:'number',role:'value',read:true}); createState('test_3','',{type:'number',role:'value',read:true}); createState('test_4','',{type:'number',role:'value',read:true}); var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '*********', database: 'iobroker', socketPath: '/var/run/mysqld/mysqld.sock' }); //создаем подключение к базе connection.connect(function(err) { if (err) { log('error connecting: ' + err.stack); return; } log('connected as id ' + connection.threadId); }); //function start () { schedule("* * * * *", function () { connection.query('SELECT AVG(val) AS id FROM ts_number', function(err, res_id, fields) { if (err) throw err; log('AVR: ' + (res_id[0].id).toFixed(2)); setState('test', (res_id[0].id).toFixed(2)); }); connection.query('SELECT AVG(val) AS id FROM ts_number WHERE id=1', function(err, res, fields) { if (err) throw err; log('Test_1: ' + (res[0].id).toFixed(2)); setState('test_1', (res[0].id).toFixed(2)); }); connection.query('SELECT AVG(val) AS id FROM ts_number WHERE id=2', function(err, res, fields) { if (err) throw err; log('Test_2: ' + (res[0].id).toFixed(2)); setState('test_2', (res[0].id).toFixed(2)); }); connection.query('SELECT AVG(val) AS id FROM ts_number WHERE id=3', function(err, res, fields) { if (err) throw err; log('Test_3: ' + (res[0].id).toFixed(2)); setState('test_3', (res[0].id).toFixed(2)); }); connection.query('SELECT AVG(val) AS id FROM ts_number WHERE id=4', function(err, res, fields) { if (err) throw err; log('Test_4: ' + (res[0].id).toFixed(2)); setState('test_4', (res[0].id).toFixed(2)); }); log('AVR: ' + getState('javascript.2.test').val + '; ' + 'Test_1: ' + getState('javascript.2.test_1').val + '; ' + 'Test_2: ' + getState('javascript.2.test_2').val + '; ' + 'Test_3: ' + getState('javascript.2.test_3').val + '; ' + 'Test_4: ' + getState('javascript.2.test_4').val); }); //} //setInterval ( function () { // start (); //},60000 );
-
Haus , из описания скриптов https://github.com/iobroker/ioBroker.ja … /README.md
! Parameters:
! date: number of seconds from state.ts or state.lc (Number seconds from 1970.01.01 00:00:00) or javascript new Date() object or number of milliseconds from (new Date().getTime())
! format: Can be "null", so the system time format will be used, elsewise
! YYYY, JJJJ, ГГГГ - full year, e.g 2015
! YY, JJ, ГГ - short year, e.g 15
! MM, ММ(cyrillic) - full month, e.g. 01
! M, М(cyrillic) - short month, e.g. 1
! DD, TT, ДД - full day, e.g. 02
! D, T, Д - short day, e.g. 2
! hh, SS, чч - full hours, e.g. 03
! h, S, ч - short hours, e.g. 3
! mm, мм(cyrillic) - full minutes, e.g. 04
! m, м(cyrillic) - short minutes, e.g. 4
! ss, сс(cyrillic) - full seconds, e.g. 05
! s, с(cyrillic) - short seconds, e.g. 5
! isSeconds: If date seconds from state.ts ot state.lc or milliseconds from (new Date().getTime())
! Example
! formatDate(new Date(), "YYYY-MM-DD") => Date "2015-02-24" formatDate(new Date(), "hh:mm") => Hours and minutes "17:41" formatDate(state.ts) => "24.02.2015" formatDate(state.ts, "JJJJ.MM.TT SS:mm:ss) => "2015.02.15 17:41:98"т.е. тебе надо использовать команду formatDate
-
в javascript читает сразу весь скрипт и выдаёт лог по скрипту, но в скрипте по худу есть всякие if с условиями и сравнениями и могут быть путаница.
Используй callback
иЕсли тебя не затруднит, хоть пару строчек на моем скрипте :oops:
ну например самый простой вариант:// Средняя температура в помещении за 30 минут request ( 'http://192.168.1.11/avr_temp_in_stair_hall.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( shaid, body ); } }); request ( 'http://192.168.1.11/avr_temp_in_sf.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( sfaid, body ); } });
// Средняя температура в помещении за 30 минут request ( 'http://192.168.1.11/avr_temp_in_stair_hall.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( shaid, body ); request ( 'http://192.168.1.11/avr_temp_in_sf.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( sfaid, body ); } }); } });
второй request выполнится только после первого.
PS ПРЯЧЬТЕ ДЛИННЫЙ КОД ПОД СПОЙЛЕР
-
Используй callback
и
Если тебя не затруднит, хоть пару строчек на моем скрипте :oops: `
ну например самый простой вариант:второй request выполнится только после первого.
PS ПРЯЧЬТЕ ДЛИННЫЙ КОД ПОД СПОЙЛЕР `
Этот вариант я уже побывал. Проблема в том что из за долгого выполнения request не успевает обновить данные переменных и дальше идущий код использует старые данные из переменных.
// Средняя температура в помещении за 30 минут request ( 'http://192.168.1.11/cur_temp.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( ctid, body ); log(body); request ( 'http://192.168.1.11/avr_temp_in_stair_hall.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( shaid, body ); log(body); } }); } }); log('Расчет: ' + temp_base + ', Сред: ' + temp_in + ', Тек: ' + cur_temp );
то есть первым он выводит log('Расчет: ' + tem…. а потом меняются данные и появляется log(body); и log(body);
20:25:40.405 [info] javascript.1 script.js.Heat_Demo: Расчет: 20.00, Сред: 19.80, Тек: 19.63 20:25:40.436 [info] javascript.1 script.js.Heat_Demo: 19.63 20:25:40.534 [info] javascript.1 script.js.Heat_Demo: 19.80 20:26:10.432 [info] javascript.1 script.js.Heat_Demo: Расчет: 20.00, Сред: 19.80, Тек: 19.63 Вот тут Сред: 19.80 20:26:10.469 [info] javascript.1 script.js.Heat_Demo: 19.63 20:26:10.545 [info] javascript.1 script.js.Heat_Demo: 19.73 Вот тут Сред: 19.73 20:26:40.440 [info] javascript.1 script.js.Heat_Demo: Расчет: 20.00, Сред: 19.73, Тек: 19.63 20:26:40.488 [info] javascript.1 script.js.Heat_Demo: 19.63 20:26:40.574 [info] javascript.1 script.js.Heat_Demo: 19.73
-
Этот вариант я уже побывал. Проблема в том что из за долгого выполнения request не успевает обновить данные переменных и дальше идущий код использует старые данные из переменных. `
Ну вот так же тогда// Средняя температура в помещении за 30 минут request ( 'http://192.168.1.11/cur_temp.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( ctid, body ); log(body); request ( 'http://192.168.1.11/avr_temp_in_stair_hall.php', function ( error, response, body ) { if ( !error && response.statusCode == 200 ) { setState ( shaid, body ); log(body); } log('Расчет: ' + temp_base + ', Сред: ' + temp_in + ', Тек: ' + cur_temp ); }); } });
Можно обернуть остальной код в функцию и вызывать ее после последнего реквеста.