Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Скрипт счетчика

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Скрипт счетчика

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
13 Beiträge 3 Kommentatoren 3.1k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    Pooh
    schrieb am zuletzt editiert von
    #1

    Попытался вникнуть в настройки http://www.iobroker.net/docu/?page_id=3550&lang=de счетчика. Знаний немецкого явно не хватает, гугл преподносит чушь какую-то…

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

    спасибо!

    сейчас счетчик электричества аппаратно сделан так: импульсный выход счетчика заведен на Mega2561. скрипт набросал такой:

    createState('PowerMeter_count_summ',0);
    createState('PowerMeter_count_day',0);
    createState('PowerMeter_count_night',0);
    createState('PowerMeter_KWH_summ',0);
    createState('PowerMeter_KWH_DAY',0);
    createState('PowerMeter_KWH_NIGHT',0);
    createState('PowerMeter_WATT_current',0);
    
    var watt = null;
    var lastValue = null;
    var newBlink = null;
    var lastBlink = (new Date().getTime());
    var interval = null;
    var powerPulseFactor = 2000;
    var ppwh = powerPulseFactor / 1000;
    
    on("megadd.0.p35_P35_counter", function (obj) {
        if (compareTime("07:00", "23:00", "between")) {
            // initialisation
            if (lastValue === null) {
            lastValue = obj.state.val;
            return;
            }
    
            // Megadd have been restarted
            if (lastValue > obj.state.val) {
            setState('PowerMeter_count_day', getState('PowerMeter_count_day').val + obj.state.val, true);
            } else if (obj.state.val != lastValue) {
            setState('PowerMeter_count_day', getState('PowerMeter_count_day').val + (obj.state.val - lastValue), true);
            } else {
            return;
            }
    
        } else {
            // initialisation
            if (lastValue === null) {
            lastValue = obj.state.val;
            return;
            }
    
            // Megadd have been restarted
            if (lastValue > obj.state.val) {
            setState('PowerMeter_count_night', getState('PowerMeter_count_night').val + obj.state.val, true);
            } else if (obj.state.val != lastValue) {
            setState('PowerMeter_count_night', getState('PowerMeter_count_night').val + (obj.state.val - lastValue), true);
            } else {
            return;
            }
    
        }
    
        setTimeout(function() {
            setState('PowerMeter_count_summ', ((getState('PowerMeter_count_day').val) + (getState('PowerMeter_count_night').val)), true);
        }, 15);   //без этой задержки берется предыдущее значение!
        lastValue = obj.state.val;
    
        setState('PowerMeter_KWH_summ', (getState('PowerMeter_count_summ').val / powerPulseFactor), true);
        setState('PowerMeter_KWH_DAY', (getState('PowerMeter_count_day').val / powerPulseFactor), true);
        setState('PowerMeter_KWH_NIGHT', (getState('PowerMeter_count_night').val / powerPulseFactor), true);
    
        newBlink = (new Date().getTime());
        interval = newBlink - lastBlink;
    
        watt = (3600000 / interval) / ppwh;
        setState('PowerMeter_WATT_current', Math.round(watt), true);
    
        lastBlink = newBlink;
    
    });
    
    

    плз, покритикуйке мой говнокод, посоветуйте как его оптимизировать…

    https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
    https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
    https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
    https://www.timestope.com/freepooh - witness code: freepooh

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      Pooh
      schrieb am zuletzt editiert von
      #2

      Мой код настолько ужасен, что не хочется его комментировать?

      Или он настолько хорош, что нечего добавить?

      Меня смущает введение задержки, вот этот кусок:

      setTimeout(function() {
              setState('PowerMeter_count_summ', ((getState('PowerMeter_count_day').val) + (getState('PowerMeter_count_night').val)), true);
      }, 15);   //без этой задержки берется предыдущее значение!
      
      

      может быть можно изящнее сделать?

      еще не нравится расчет временного интервала между импульсами и подсчет "мгновенного" потребления:

          newBlink = (new Date().getTime());
          interval = newBlink - lastBlink;
          watt = (3600000 / interval) / ppwh;
          setState('PowerMeter_WATT_current', Math.round(watt), true);
          lastBlink = newBlink;
      
      

      https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
      https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
      https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
      https://www.timestope.com/freepooh - witness code: freepooh

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        instalator
        schrieb am zuletzt editiert von
        #3

        @Pooh:

        Мой код настолько ужасен, что не хочется его комментировать?

        Или он настолько хорош, что нечего добавить?

        Меня смущает введение задержки, вот этот кусок:

        setTimeout(function() {
                setState('PowerMeter_count_summ', ((getState('PowerMeter_count_day').val) + (getState('PowerMeter_count_night').val)), true);
        }, 15);   //без этой задержки берется предыдущее значение!
         
        

        может быть можно изящнее сделать?

        еще не нравится расчет временного интервала между импульсами и подсчет "мгновенного" потребления:

            newBlink = (new Date().getTime());
            interval = newBlink - lastBlink;
            watt = (3600000 / interval) / ppwh;
            setState('PowerMeter_WATT_current', Math.round(watt), true);
            lastBlink = newBlink;
        
        ```` `  
        

        Это игрушки

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

        http://blog.instalator.ru/

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          Pooh
          schrieb am zuletzt editiert von
          #4

          @instalator:

          ..Это игрушки `
          Вся наша жизнь - игра…

          но хотелось бы услышать конкретную критику и советы по скрипту (железо определено, дополнительную ардуину чисто на счетчики ставить не планирую)

          https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
          https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
          https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
          https://www.timestope.com/freepooh - witness code: freepooh

          1 Antwort Letzte Antwort
          0
          • I Offline
            I Offline
            instalator
            schrieb am zuletzt editiert von
            #5

            @Pooh:

            Мой код настолько ужасен, что не хочется его комментировать?

            Или он настолько хорош, что нечего добавить?

            Меня смущает введение задержки, вот этот кусок:

            setTimeout(function() {
                    setState('PowerMeter_count_summ', ((getState('PowerMeter_count_day').val) + (getState('PowerMeter_count_night').val)), true);
            }, 15);   //без этой задержки берется предыдущее значение!
             
            

            может быть можно изящнее сделать?

            еще не нравится расчет временного интервала между импульсами и подсчет "мгновенного" потребления:

                newBlink = (new Date().getTime());
                interval = newBlink - lastBlink;
                watt = (3600000 / interval) / ppwh;
                setState('PowerMeter_WATT_current', Math.round(watt), true);
                lastBlink = newBlink;
            
            ```` `  можно изящнее, вместо задержки подписаться на изменение
            

            PowerMeter_count_day и PowerMeter_count_night. А чем интервал не нравится?

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

            http://blog.instalator.ru/

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              Pooh
              schrieb am zuletzt editiert von
              #6

              @instalator:

              можно изящнее, вместо задержки подписаться на изменение

              PowerMeter_count_day и PowerMeter_count_night. `
              спасибо, попробую
              @instalator:

              А чем интервал не нравится? `
              для электросчетчика пойдет ибо он всегда тикает, для водяных счетчиков надо что-то другое, т.к. в основном они "молчат" и "мгновенное" потребление превращается в "последнее измеренное"

              https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
              https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
              https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
              https://www.timestope.com/freepooh - witness code: freepooh

              1 Antwort Letzte Antwort
              0
              • I Offline
                I Offline
                instalator
                schrieb am zuletzt editiert von
                #7

                @Pooh:

                @instalator:

                можно изящнее, вместо задержки подписаться на изменение

                PowerMeter_count_day и PowerMeter_count_night. `
                спасибо, попробую
                @instalator:

                А чем интервал не нравится? для электросчетчика пойдет ибо он всегда тикает, для водяных счетчиков надо что-то другое, т.к. в основном они "молчат" и "мгновенное" потребление превращается в "последнее измеренное" так а как для воды рассчитать мгновенное если один импульс это 10 литров в среднем? Да и нужно ли оно для воды.

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

                http://blog.instalator.ru/

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  Pooh
                  schrieb am zuletzt editiert von
                  #8

                  первое что приходит - просто по расписанию запускать тот кусок с интервалом и проверять счетчик, если не изменился - обнулять "мгновенное потребление"

                  https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
                  https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
                  https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
                  https://www.timestope.com/freepooh - witness code: freepooh

                  1 Antwort Letzte Antwort
                  0
                  • I Offline
                    I Offline
                    instalator
                    schrieb am zuletzt editiert von
                    #9

                    @Pooh:

                    первое что приходит - просто по расписанию запускать тот кусок с интервалом и проверять счетчик, если не изменился - обнулять "мгновенное потребление" `
                    А проще по-моему просто ловить изменение счётчика (импульс) это и будет означать что вот вот утек стакан воды

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

                    http://blog.instalator.ru/

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      Pooh
                      schrieb am zuletzt editiert von
                      #10

                      а как зафиксировать, что кран закрыли и импульсов в ближайшее время не предвидится?

                      https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
                      https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
                      https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
                      https://www.timestope.com/freepooh - witness code: freepooh

                      1 Antwort Letzte Antwort
                      0
                      • I Offline
                        I Offline
                        instalator
                        schrieb am zuletzt editiert von
                        #11

                        @Pooh:

                        а как зафиксировать, что кран закрыли и импульсов в ближайшее время не предвидится? `
                        Рассчитать максимальное время между импульсами при минимальном потоке воды и через это время обнулять значение якобы мгновенного расхода. Либо делить его на это время

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

                        http://blog.instalator.ru/

                        1 Antwort Letzte Antwort
                        0
                        • R Offline
                          R Offline
                          radon
                          schrieb am zuletzt editiert von
                          #12

                          Счётчик воды работает конечно импульсно, но! У него контакт замыкается каждые 10 литров, при этом если вы в это время воду прекратили расходовать, он будет замкнут и постоянно включён!

                          Так как у меня контроллер Wago и, по сути, вся логика на нём, то счётчики воды реализованы через Функциональный блок 'инкрементный счетчик' (CTU), а уже от него передаются в ioBroker/

                          1 Antwort Letzte Antwort
                          0
                          • P Offline
                            P Offline
                            Pooh
                            schrieb am zuletzt editiert von
                            #13

                            @radon:

                            ..он будет замкнут и постоянно включён!.. `
                            ну и что, я-то подписываюсь на изменение значения счетчика, на не состояние порта..

                            https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
                            https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
                            https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
                            https://www.timestope.com/freepooh - witness code: freepooh

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            664

                            Online

                            32.5k

                            Benutzer

                            81.7k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe