Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Скрипт для счётчика

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

      Здравствуйте есть вопрос по созданию скрипта для учёта потребляемой энергии.

      Исходные данные:

      каждую секунду (или долю секунды, не важно) снимается мгновенная мощность, т.е. есть потребление и интервалы записи потребления

      Нужно:

      Просуммировать все получаемые данные.

      Попоробовал в NodeRed, т.к. все данные всё равно через него идут, не вышло, видимо он как-то потоками считает, поэтому цикл do в функции просто не работает.

      Пробовал скриптами, там не вышлоо вообще ничего, так и не понял как с ними работать, даже такой пример:

      var pp, pp2, pp3;

      pp = 'admin.0.Энергия.Мощность';

      pp2 = 10;

      pp3 = pp2 + 0;

      setState("admin.0.info.p"/p/, pp3);

      и тот не работает.

      Вопрос в том, как реализовать данный счётчик.

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

        @radon:

        Здравствуйте есть вопрос по созданию скрипта для учёта потребляемой энергии.

        Исходные данные:

        каждую секунду (или долю секунды, не важно) снимается мгновенная мощность, т.е. есть потребление и интервалы записи потребления

        Нужно:

        Просуммировать все получаемые данные.

        Попоробовал в NodeRed, т.к. все данные всё равно через него идут, не вышло, видимо он как-то потоками считает, поэтому цикл do в функции просто не работает.

        Пробовал скриптами, там не вышлоо вообще ничего, так и не понял как с ними работать, даже такой пример:

        var pp, pp2, pp3;

        pp = 'admin.0.Энергия.Мощность';

        pp2 = 10;

        pp3 = pp2 + 0;

        setState("admin.0.info.p"/p/, pp3);

        и тот не работает.

        Вопрос в том, как реализовать данный счётчик. `
        Доставка получаемых данных гарантируется? если нет то счетчик надо делать обособленно чтобы работал независимо от всех систем а просто передавал свои показания уже серверу

        1 Reply Last reply Reply Quote 0
        • R
          radon last edited by

          > Доставка получаемых данных гарантируется? если нет то счетчик надо делать обособленно чтобы работал независимо от всех систем а просто передавал свои показания уже серверу
          Данные передаются по modbus через nodered с контроллера wago, так что можно сказать что гарантируются, хотя конечно можно напрямую в codesys это запрограммировать и уже потом передавать.

          Но всё же можно это реализовать силами iobroker?

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

            @radon:

            > Доставка получаемых данных гарантируется? если нет то счетчик надо делать обособленно чтобы работал независимо от всех систем а просто передавал свои показания уже серверу
            Данные передаются по modbus через nodered с контроллера wago, так что можно сказать что гарантируются, хотя конечно можно напрямую в codesys это запрограммировать и уже потом передавать.

            Но всё же можно это реализовать силами iobroker? ` данные в каком виде представленны? Это конкретные значения или импульсы?

            1 Reply Last reply Reply Quote 0
            • R
              radon last edited by

              Но всё же можно это реализовать силами iobroker?данные в каком виде представленны? Это конкретные значения или импульсы?

              В виде конкретных значений каждую секунду (в принципе время настраивается) продаются значения мощности, силы тока, напряжения и частоты в виде чисел, например 220Вт, 220в, 1а, соответственно каждую секунду эти данные обновляются. Кроме того они пишутся в базу history.

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

                @radon:

                Но всё же можно это реализовать силами iobroker? ` данные в каком виде представленны? Это конкретные значения или импульсы?

                В виде конкретных значений каждую секунду (в принципе время настраивается) продаются значения мощности, силы тока, напряжения и частоты в виде чисел, например 220Вт, 220в, 1а, соответственно каждую секунду эти данные обновляются. Кроме того они пишутся в базу history.

                не понятна задача.

                Зачем их суммировать? вывести среднее?

                createState('test', '');
                createState('Srednee', '');
                var summa = getState('test').val;
                var i = 0;
                on({id: 'power', change: 'any'}, function (obj) {
                    if (obj.newState.val){
                        i++;
                        summa += obj.newState.val;
                        setState ('Srednee', summa/i);
                    }
                });
                

                Можно данные взять и за прошлый период из базы данных.

                Вообщем не понятна задача

                1 Reply Last reply Reply Quote 0
                • R
                  radon last edited by

                  ` > Можно данные взять и за прошлый период из базы данных.

                  Вообщем не понятна задача `
                  Мне нужны данные которые показывает счётчик, т.е. КВт*час, у меня есть данные по мощности Вт, и времени съёма мощности, каждую секунду

                  Я хочу в итоге получить то, что показывает счётчик, т.е. потреблённую энергию в КВт*часах

                  идея такова:

                  P=мощность Вт

                  t = время c

                  E =P*t потреблённая энергия энергия

                  программа

                  E=начальное значение энергии

                  цикл. каждую секунду

                  E=E+P*t - потреблённая энергия за всё время

                  Теперь более понятно?

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

                    @radon:

                    ` > Можно данные взять и за прошлый период из базы данных.

                    Вообщем не понятна задача `
                    Мне нужны данные которые показывает счётчик, т.е. КВт*час, у меня есть данные по мощности Вт, и времени съёма мощности, каждую секунду

                    Я хочу в итоге получить то, что показывает счётчик, т.е. потреблённую энергию в КВт*часах

                    идея такова:

                    P=мощность Вт

                    t = время c

                    E =P*t потреблённая энергия энергия

                    программа

                    E=начальное значение энергии

                    цикл. каждую секунду

                    E=E+P*t - потреблённая энергия за всё время

                    Теперь более понятно? `
                    Понятно что ничего не понятно, если сервер перезагрузить или драйвер то у тебя уже будут расхождения показаний. Считать все-таки надо в независимом устройстые, а из него уже отдавать данные в иоб. у меня счетчик правда импульсы выдает но тебе тоже нужно что-то подобное http://blog.instalator.ru/archives/140

                    1 Reply Last reply Reply Quote 0
                    • S
                      smoker_vvo last edited by

                      instalator: Подскажи как забрать данные от счетчика по MQTT, Счетчик дает импульсы, значит твой скрипт и используем. Пока буду проверять на MEga2560

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

                        @smoker_vvo:

                        instalator: Подскажи как забрать данные от счетчика по MQTT, Счетчик дает импульсы, значит твой скрипт и используем. Пока буду проверять на MEga2560 `
                        Не совсем я тебя понимаю. Что значит как забрать? Считать данные со счетчика ардуиной например и по MQTT отдавать.

                        А какой именно мой скрипт используем?

                        Вот https://github.com/instalator/Counter_MQTT считает импульсы и отдает данные по MQTT

                        1 Reply Last reply Reply Quote 0
                        • S
                          smoker_vvo last edited by

                          что-то подобное http://blog.instalator.ru/archives/140

                          Ну вот, а говоришь не понимаешь… ссылочка что надо. Ща попробую проверить.....

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

                            @smoker_vvo:

                            что-то подобное http://blog.instalator.ru/archives/140

                            Ну вот, а говоришь не понимаешь… ссылочка что надо. Ща попробую проверить..... `
                            Имей ввиду что там Ethernet на W5500 и библиотека под нее же.

                            1 Reply Last reply Reply Quote 0
                            • S
                              smoker_vvo last edited by

                              у меня 5100

                              1 Reply Last reply Reply Quote 0
                              • S
                                smoker_vvo last edited by

                                #include <ethernet2.h>- вот эта для 5500</ethernet2.h>

                                1 Reply Last reply Reply Quote 0
                                • S
                                  smoker_vvo last edited by

                                  такк… Вопрос. Как я понял ты собрал отдельный контроллер для этого, я жеж использую MEGA2560, я правильно понимаю что сигнал от счетчика надо подавать на А0 и желательно с подтяжкой 10кОм

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    smoker_vvo last edited by

                                    Залил код на Ардуину, в ЙоБе, записи появились, но результаты по 0…... Где грабли.....

                                    и еще, подключаю ко входу счетчик Энергомера СЕ101 3200имп.кВТ.ч.....

                                    Похоже что то не так делаю... Прошу помощщи....

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

                                      @smoker_vvo:

                                      Залил код на Ардуину, в ЙоБе, записи появились, но результаты по 0…... Где грабли.....

                                      и еще, подключаю ко входу счетчик Энергомера СЕ101 3200имп.кВТ.ч.....

                                      Похоже что то не так делаю... Прошу помощщи.... `
                                      Не могу сказать где грабли не видя кода.

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        smoker_vvo last edited by

                                        Код использовался https://github.com/instalator/Counter_MQTT от сюда, соответственно поменял IP а все остальное как было.

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          smoker_vvo last edited by

                                          для проверки использую Arduino 2560 и сетевуху 5100, там же стоит SD

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

                                            @smoker_vvo:

                                            Код использовался https://github.com/instalator/Counter_MQTT от сюда, соответственно поменял IP а все остальное как было. `
                                            Так ты изменил код то? Сконфигурирован его для входов не намур? И вообще он не для электросчётчиков.

                                            Для электросчётчиков тут https://github.com/instalator/Electro_C … /README.md

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            886
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            70
                                            12342
                                            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