Ad Widget

Collapse

Zabbix+Arduino=...

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #31
    Originally posted by Today
    Вот двое суток у меня проработало нормально.Вчера подцепил второй датчик ds18b20 и подвисло все через час.
    Многое от схемы и качества соединений зависит. Типичная ошибка - питать всё от Arduino board. Потому что очень соблазнительно взять 3.3v с ардуины и подать на ENC. Но, к сожалению, чудес не бывает и Arduino стабилизирует 5v в пределах ампера (если китайцы не сэкономили на стабилизаторе), а 3,3V только для виду. На датчики хватит, а вот на питание сетевого модуля - нет. Вешаться будет произвольно вне зависимости от качества кода и мощности БП.
    Выход только один - брать ENC с набортным 3.3V стабилизатором (такие есть) и питать оба модуля с одной точки.

    Ну, и многие пытаются сделать долговременный стенд на Breadbord-e. Это путь никуда. Надо паять.

    Вот интересует вопрос.Можно ли напряжение так считывать аккумуляторов ?
    Которых? Их немало в современной промышленности.

    Comment

    • Today
      Junior Member
      • Sep 2016
      • 4

      #32
      Питаю ENJ отдельно через стабилизатор 3.3v.
      Есть бесперебойник для коммутатора 24v.Там два 12v аккумулятора последовательно подключены.С них снимать показания.
      Так же думаю как наличие входного 220v мониторить.

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #33
        Originally posted by Today
        Питаю ENJ отдельно через стабилизатор 3.3v.
        У меня ENC с набортным стабилизатором - не вешается пока что. Только вот электрики не дают аптайм наращивать.
        Code:
        sys.uptime   Zabbix agent	2016-10-04 15:58:07	12 days, 02:11:54
        В ЛС можете показать схемку - может что в глаза бросится сразу.

        Не исключено зависание при недостатке ОЗУ (много вкомпилено).

        Но вот так работает:
        Code:
        sys.ram.freemin   Zabbix agent	2016-10-04 15:59:55	144 b
        Ну и температура чипа повышенная может быть... Радиатор можно приклеить. Но, опять же:
        Code:
        DS near ENC28J60 chip    Zabbix agent	2016-10-04 16:01:08	57.5 C
        Есть бесперебойник для коммутатора 24v.Там два 12v аккумулятора последовательно подключены.С них снимать показания.
        Тут, наверное, нужно на профильных форумах спрашивать, я боюсь, что моих знаний будет недостаточно, чтобы все нюансы учесть.

        Навскидку могу придумать, к примеру, схему на модуле YL-40 (с АЦП PCF8591), через делитель (делители) подать на вход (входы) AIN* сниженное до границ VCC модуля (5V) напряжение с аккумулятора (аккумуляторов). Далее по I2C получать условные единицы в Zabbix и умножать на коэффициент делителя. Сам модуль запитать отдельно, через стабилизатор.

        Конечно, не исключена возможность дать с делителя напряжение напрямую в аналоговый вход Ардуины, но я этого избегаю. Во-первых можно припалить контроллер в случае ошибки, во-вторых у АЦП должно быть известное и точное напряжение для понимания цены деления. К сожалению показания АЦП на уже собранной Ардуине будут зависеть от работы ее цифровой части (VCC и AVCC соединены). Правда, есть различные схемотехнические способы компенсировать этот дефект. Можете поэкспериментировать и рассказать.

        Так же думаю как наличие входного 220v мониторить.
        Это самое простое. Вход оптопары через ограничивающее сопротивление в 220v (ну или через зарядку телефона/трансформатор/etc запитать, если опасаетесь высокого напряжения), выход приделать к арудуине как любую механическую кнопку. Проверять через digitalRead[].

        Comment

        • Today
          Junior Member
          • Sep 2016
          • 4

          #34
          Для теста поместил все в коробку от rg45.
          Колхоз конечно.Но все влезло.
          Attached Files

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #35
            Originally posted by Today
            Для теста поместил все в коробку от rg45.
            Колхоз конечно.Но все влезло.
            Идея интересная, но реализована "на грани". С учетом того, что ENC-ом обогреваться можно зимой, то в такой плотной упаковке я его поведение предсказать не могу. С W5100 Mini module можно так вольно обойтись, но с ENC... не знаю.

            Впрочем, есть ещё одно предположение у меня. Где-то я читал, что проблема ENC - это поднятие прерывания ошибки при очень большой (для чипа) скорости поступления пакетов. Спасались от этого выставлением фильтра на уровне чипа (т.е. всё, что не подходит под маску - просто не принимается в обработку). И, насколько я понял из исходников UIP - фильтр, в сущности, стоит только на TCP. На UDP его нет, в комментария висит "TODO: ...". И, насколько я понимаю, как только по сети идут какие-нибудь UDP-бродкасты - чипу сразу становится дурно и он может поднять прерывание и перестать работать до принудительной переинициализации.

            UDP в данном случае нужен только для того, чтобы ловить ответы от DHCP-сервера. Если эту функциональность не использовать, то можно избавиться от UDP и, наверное, выключить потенциально опасное поведение. Заодно можно и памяти высвободить (как Flash, так и RAM).
            Так что стоит в "C:\Program Files (x86)\Arduino\libraries\UIPEthernet\utility\uipeth ernet-conf.h" -> задизейблить #define UIP_CONF_UDP и перекомпилиться/перешиться. Не исключено, что полегчает. Если нет, то придется что-то придумывать по периодической ре-инициализации этого гадкого ENC.

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #36
              Неуёмным рукоделам, планирующим новогодние мероприятия заранее, предлагаю познакомится с Zabbuino v1.1.0. Со внешней стороны добавилось немногое, основные работы были проведены в плане реорганизации исходного кода (так что, возможно, что-то вылезет боком).




              Итак, что нового:
              - Выполняются команды, полученные из Действий Zabbix-а;
              - Переработано сетевое взаимодействие. Возможно радикальное ускорение получения ответа;
              - Конфигурация осуществляется на двух уровнях - базовом и расширенном (тюнинг);
              - Команды Zabbuino принимаются не только через сеть, но и через Serial Monitor в Arduino IDE;
              - Введены уровни подробности отладочной информации - LOW/MIDDLE/HIGH;
              - Функции чтения/записи конфигурации пытаются обнаружить сбойные ячейки в EEPROM и выбрать другую область хранения;
              - Доступно получение новых метрик микроконтроллера: ID, сигнатуры;
              - Имя "агента" и его MAC/IP могут генерироваться с учетом ID микроконтроллера;
              - Реализована передача в формате ASCII данных для вывода на LCD-дисплее и индикаторе на базе MAX7219;
              - Список поддерживаемых LED-модулей расширен чипом WS2812;
              - Возможно получение метрик с ампер-вольт-метра Peacefair PZEM-004;
              - Так же доступно управление блоками бесперебойного питания APC серии Smart (с интерфейсом RS232 или любым иным, конвертируемым в UART);
              - Улучшена обработка данных с простых I2C устройств;
              - Создано несколько шаблонов для Zabbix 2.4.

              Забирать как всегда тут: https://github.com/zbx-sadman/Zabbuino

              Не забывайте заглядывать в Wiki - это может сохранить вам множество нервных клеток и свободного времени.
              Last edited by sadman; 13-12-2016, 18:25.

              Comment

              • zverek06
                Member
                • Oct 2016
                • 51

                #37
                В новых шаблонах не нашел на датчики ds18x20 шаблона ((

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #38
                  Originally posted by zverek06
                  В новых шаблонах не нашел на датчики ds18x20 шаблона ((
                  Не представляю как шаблонировать DS-ки. Ключи всё равно уникальные получаются для каждого экземпляра (ID) - типа DS18x20.temperature[4,9,0x284AE0D4010000DA]

                  Если есть мысль, как красиво это в шаблон оформить - подскажите.

                  Comment

                  • zverek06
                    Member
                    • Oct 2016
                    • 51

                    #39
                    Ну так и на других же тоже уникальный ключи на номер пина завязанно. Можно и добавить как образец типа DS18x20.temperature[4,9,ID-key]
                    Это конечно можно и в WiKi найти, то и из шаблона дернуть например, чтобы не выискивать и не создавать, а из шаблона дернуть )

                    Comment

                    • sadman
                      Senior Member
                      • Dec 2010
                      • 1611

                      #40
                      Originally posted by zverek06
                      Ну так и на других же тоже уникальный ключи на номер пина завязанно. Можно и добавить как образец типа ds18x20.temperature[4,9,id-key]
                      На других хотя бы по нескольку метрик считывается с датчика. А тут будет шаблон с одним айтемом и чужим id. Больше вопросов возникнет по поводу того, что шаблон подключён, а сенсор не отвечает - был уже случай.

                      Но вы создайте, как видите, а я подложу на гитхаб

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #41
                        Zabbuino v1.2.0 несет в ваш дом весну и новые фичи.

                        Работа функции контроля сетевого модуля:


                        А так же:
                        - Интегрированные и немного оптимизированные сетевые драйвера Wiznet и Microchip ENC28J60;
                        - Функцию контроля сетевого модуля, которая будет стараться исправить его "зависание";
                        - Внедренный функционал SoftWire для обеспечения работы I2C устройств на любых выводах Arduino;
                        - Поддержку часов реального времени DS3231;
                        - Поддержку внешнего EEPROM на базе семейства AT24CXX для хранения пользовательских данных;
                        - Возможность внедрения собственного кода в виде своеобразного "плагина" для построения автономных устройств, использующих подключенные датчики и исполнительные устройства;
                        - Поддержку датчика освещения MAX44009;
                        - Ряд команд, облегчающих инвентаризацию экземпляров Zabbuino средствами Zabbix: system.hw.cpu, system.hw.chassis и пр.;
                        - Возможность подключения нескольких устройств PZEM004 на один SoftSerial UART;
                        - Поддержку модуля мониторинга параметров (напряжение/ток/мощность) низковольтной электрической цепи INA219;
                        - Всякие исправления и оптимизацию кода.

                        Поживиться исходниками можно здесь: https://github.com/zbx-sadman/Zabbuino

                        Обновленные шаблоны лежат рядом: https://github.com/zbx-sadman/Zabbui...bbix_Templates

                        Русскоязычное руководство в Wiki: https://github.com/zbx-sadman/Zabbuino/wiki

                        P.S. Желавшие помониторить аккумуляторы для коммутаторов могут воспользоваться функционалом INA219 Zerø-Drift, Bidirectional Current/Power Monitor

                        Comment

                        • zverek06
                          Member
                          • Oct 2016
                          • 51

                          #42
                          Originally posted by sadman
                          Не представляю как шаблонировать DS-ки. Ключи всё равно уникальные получаются для каждого экземпляра (ID) - типа DS18x20.temperature[4,9,0x284AE0D4010000DA]

                          Если есть мысль, как красиво это в шаблон оформить - подскажите.
                          Ну вот наконец то я купил себе Ethernet shield и собрал проект, все датчики работают отлично, только теперь остался вопрос.. у меня есть 2 DS18.20, как узнать их key? Заливать другой скетч, смотреть кей через com порт и потом снова заливать zabbuino? других вариантов нет?

                          Comment

                          • sadman
                            Senior Member
                            • Dec 2010
                            • 1611

                            #43
                            Варианты такие:

                            1) Компилировать с FEATURE_OW_ENABLE и затем использовать ow.scan[pin] (при компиляции с FEATURE_SERIAL_LISTEN_TOO можно прямо в Arduino IDE Serial Monitor этот ключ скормить);
                            2) Раскидать термометры по разным пинам и не указывать ID. Тогда по ключу DS18x20.Temperature[] должен будет опрашиваться первый найденный на шине.

                            Comment

                            • zverek06
                              Member
                              • Oct 2016
                              • 51

                              #44
                              Originally posted by sadman
                              Варианты такие:

                              1) Компилировать с FEATURE_OW_ENABLE и затем использовать ow.scan[pin] (при компиляции с FEATURE_SERIAL_LISTEN_TOO можно прямо в Arduino IDE Serial Monitor этот ключ скормить);
                              2) Раскидать термометры по разным пинам и не указывать ID. Тогда по ключу DS18x20.Temperature[] должен будет опрашиваться первый найденный на шине.
                              Спасибо! Сделал по 1-му варианту, все отлично. Теперь пытаюсь вкурить, как подключить BMP280. В 1 мануале на аналоговые порты нарисованно, в другом - на цифровые.... я запутался...

                              Вот такой. Не поможешь новичку? )

                              Comment

                              • sadman
                                Senior Member
                                • Dec 2010
                                • 1611

                                #45
                                Originally posted by zverek06
                                Спасибо! Сделал по 1-му варианту, все отлично. Теперь пытаюсь вкурить, как подключить BMP280. В 1 мануале на аналоговые порты нарисованно, в другом - на цифровые.... я запутался...
                                BMP280 рассчитан на 3.3V, так что если на нем нет никаких элементов кроме резисторов, его нужно подключать через согласователь TTL уровней и питать через стабилизатор на 3.3V, иначе он пшикнет и всё на этом. На aliexpress сейчас таких валом и недорого. Правильный, на 5V, вот такой

                                По пинам. BMP280 - это датчик, подключаемый по I2C. Для ATmega328 шина I2C выведена на A4/A5 (SDA/SCL). Но с тех пор, как в исходный код интегрирована библиотека SoftWire, I2C датчики можно подключать на любые пины, которые могут быть использованы как цифровые (т.е. все, кроме A6 и A7). Эти выводы должны быть указаны в команде. Например BMP.Pressure[18,19,...] - для A4/A5, BMP.Pressure[5,6,...] - для D5/D6.

                                Comment

                                Working...