Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Скрипт контроля отопления

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Скрипт контроля отопления

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Haus last edited by

      Чуток подправил скрипт, проблемы остались прежними. Народ 45 просмотров и не одного комментария? 😢

      В скрипте появился треугольник с надписью "Too many errors 81% scanhed" в чем ошибки, сам скрипт работает.
      443_screencapture-192-168-1-11-8081-1460455685460.png

      1 Reply Last reply Reply Quote 0
      • I
        instalator last edited by

        @Haus:

        В скрипте появился треугольник с надписью "Too many errors 81% scanhed" в чем ошибки, сам скрипт работает.
        filename="screencapture-192-168-1-11-8081-1460455685460.png" index="0">~~ `
        попробуй замени в IFах == на === и != на !==

        1 Reply Last reply Reply Quote 0
        • I
          instalator last edited by

          @Haus:

          в javascript читает сразу весь скрипт и выдаёт лог по скрипту, но в скрипте по худу есть всякие if с условиями и сравнениями и могут быть путаница. Используй callbackи

          1 Reply Last reply Reply Quote 0
          • H
            Haus last edited by

            @instalator:

            @Haus:

            В скрипте появился треугольник с надписью "Too many errors 81% scanhed" в чем ошибки, сам скрипт работает.
            filename="screencapture-192-168-1-11-8081-1460455685460.png" index="0">~~ попробуй замени в IFах == на === и != на !==
            Попробовал, результат тот же.

            1 Reply Last reply Reply Quote 0
            • H
              Haus last edited by

              @instalator:

              @Haus:

              в javascript читает сразу весь скрипт и выдаёт лог по скрипту, но в скрипте по худу есть всякие if с условиями и сравнениями и могут быть путаница. Используй callbackи `
              Если тебя не затруднит, хоть пару строчек на моем скрипте :oops:

              1 Reply Last reply Reply Quote 0
              • H
                Haus last edited by

                Подключение работает, средние значение всего столбца считает, каждый 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 );
                
                1 Reply Last reply Reply Quote 0
                • H
                  Haba last edited by

                  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

                  1 Reply Last reply Reply Quote 0
                  • I
                    instalator last edited by

                    @Haus:

                    @instalator:

                    @Haus:

                    в 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 ПРЯЧЬТЕ ДЛИННЫЙ КОД ПОД СПОЙЛЕР

                    1 Reply Last reply Reply Quote 0
                    • H
                      Haus last edited by

                      @instalator:

                      @Haus:

                      @instalator:

                      Используй 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
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • I
                        instalator last edited by

                        @Haus:

                        Этот вариант я уже побывал. Проблема в том что из за долгого выполнения 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 );
                           	    });
                                }
                            });
                        
                        

                        Можно обернуть остальной код в функцию и вызывать ее после последнего реквеста.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        829
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        3
                        11
                        4226
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo