-
Notifications
You must be signed in to change notification settings - Fork 14
Zabbuino in Russian (for release 1.1.x)
Внимание, данное руководство относится к Zabbuino v1.1.0.
- Обзор
- Системные требования
- Компиляция и настройка
- Использование
- Команды Zabbuino
- Zabbix Agent
- Системные метрики
- Настройки и состояние системы
- Язык программирования Arduino
- Коммуникационные шины (1-Wire, I2C)
- Датчики окружающей среды
- Исполнительные устройства и устройства индикации
- Интеграция с системой мониторинга Zabbix
- Оптимизация для ENC28J60
Zabbuino - это прошивка, превращающая Arduino в устройство, работающее по протоколу Zabbix (v1.x, v2.x, v.3.x без шифрования). С его помощью Zabbix-сервер через сеть Ethernet может общаться с окружающим миром, используя оборудование (датчики, индикаторы, исполнительные и самостоятельные устройства), которое возможно присоединить к Arduino.
Ключевой особенностью данной разработки является практически полное отсутствие привязки внешних компонентов к выводам Arduino, что позволяет производить логическое конфигурирование работающей системы в одной точке - WEB-интерфейсе Zabbix.
Пример подключения периферийных устройств к Zabbuino, укомплектованного Ethernet Shield.
Сразу стоит отметить, что исходный код Zabbuino написан с учетом применения на микроконтроллерах семейства AVR и под иные, встречающиеся в в платах Arduino архитектуры (ARM, ARC, x86 и т.п.) не адаптировался.
В начальных выпусках Zabbuino допускалось использование микроконтроллера ATMega168, но на данный момент он не обеспечивает необходимого для хранения ядра прошивки размера Flash-памяти. Хотя, при определенных стараниях, путем исключения части кода, Zabbuino можно уместить в ATMega168, но навряд ли эти усилия будут экономически оправданы.
Таким образом, минимальным требованием является использование AVR микроконтроллера ATMega328 и одного из поддерживаемых сетевых модулей. Хотя необходимые испытания не проводились, но нет явных препятствий по использованию Zabbuino и на старших представителях семейства ATmega, таких как ATmega2560.
Рекомендуемым минимумом периферийных устройств является (см. схему выше):
- Индикатор состояния устройства (State led), подключенный к пину D9;
- Кнопка сброса настроек EEPROM (Factory RST), подключенная к пину D8.
Сетевые модули:
- Ethernet Shield, построенный на базе Wiznet W5100 и совместимые с ним;
- Microchip ENC28J60.
Датчики:
- Температуры - семейства DS18x20;
- Давления - BMP085/BMP180/BMP280;
- Влажности - BME280, SHT21, DHT11/DHT21/DHT22/DHT33/DHT44/AM2301/AM2302 и совместимые с ними;
- Освещенности - BH1750;
- Расстояния - HC-SR04;
- Сотрясения/наклона - SW-520D и аналогичные;
- Любые датчики, опрашиваемые через цифровые и аналоговые входы Arduino при помощи команд digitalRead, analogRead;
- Иные простые датчики, подключаемые по шине I2C.
Индикаторы и исполнительные устройства:
- Светодиодные матрицы и цифровые индикаторы, управляемые контроллером MAX7219;
- Табло, шкалы и иные устройства, построенные на сдвиговых регистрах (например 74HC595);
- Одно-, двух- и четырехстрочные алфавитно-цифровые индикаторы на базе контроллера HD44780 и подключенные через I2C-расширитель PC8574;
- Адресуемые (пиксельные) светодиодные модули, использующие чипы WS2801 и WS2812;
- Инфракрасные cветодиодные излучатели для эмуляции соответствующих пультов управления;
- Любые индикаторы и релейные модули, управляемые напрямую через цифровые выходы Arduino при помощи команд digitalWrite, analogWrite, portWrite или через расширитель типа PC8574, подключенный по шине I2C.
Самостоятельные устройства:
- Блоки бесперебойного питания APC серии Smart (через UART-конвертор);
- Вольт-ампер-ваттметр Peacefair PZEM-004.
Заметьте, что одновременная поддержка всех устройств неосуществима вследствие недостатка Flash-памяти применяемого микроконтроллера. Для решения данной проблемы предусмотрена возможность программного исключения из прошивки поддержки устройств, которые не планируется подключать к Zabbuino. Данный вопрос будет рассмотрен дополнительно в разделе Компиляция и настройка.
Рекомендуемыми сетевыми модулями являются модули на базе WizNet, драйверы которых занимают меньше Flash-память, что позволяет увеличить количество типов одновременно подключенных устройств.
Применение сетевых модулей, базирующихся на Microchip ENC28J60, для обеспечения стабильной работы может потребовать более сложных схемотехнических решений, тонкую настройку сетевого оборудования и сетевого драйвера. Так же, это уменьшит доступную Flash-память на ~7кб (~1/4 часть объёма, доступного в микроконтроллере ATMega328), а доступное ОЗУ на ~700 байт (~1/3 часть объёма, доступного в микроконтроллере ATMega328). Возможные способы оптимизации исходного кода для решений на базе ENC28J60 можно найти в разделе "Оптимизация для ENC28J60".
Обратите внимание на то, что мнение о том, что дешевый микроконтроллер не требует вложений в дорогие дополнительные компоненты, зачастую ошибочно. Напротив - дешевизна Arduino требует осмысленного и взвешенного подхода к планированию окружающей ее среды и последующему монтажу модулей, линий питания, шин подключения датчиков, исполнительных устройств и прочих элементов.
Так же, необдуманное применение компонентов, особенно невысокого качества (включая соединительные провода Dupont и беспаечные макетные платы), не способствует быстрому вводу Zabbuino в эксплуатацию, но зачастую вводит в заблуждение по поводу корректности работы прошивки и заставляет с головой погружаться в анализ исходного кода.
Так, например:
- Подключенные датчики могут постоянно или периодически выдавать некорректные (или неожиданные) показания;
- Несколько работающих по отдельности I2C модулей могут перестать работать, будучи подключенными к одной I2C шине;
- Датчик, вынесенный на несколько метров от основной платы, может произвольно и непериодически отключаться при проведении цикла измерения;
- Индикатор может показывать мусор вместо полезной информации.
Компиляцию скетча следует проводить в выпусках Arduino IDE 1.5.x (до Zabbuino v1.0 включительно), 1.6.x (для Zabbuino старше, чем v1.0) и выше, под выпуски IDE 1.0.x исходный код не адаптирован.
Все библиотеки, подключаемые к исходному коду, входят в состав IDE. Исключение составляет UIPEthernet, обеспечивающая поддержку сетевого модуля ENC28J60. Данную библиотеку необходимо установить дополнительно. Наиболее стабильной в работе себя показала ветка fix_errata12.
Настройка большинства параметров, необходимых для функционирования Zabbuino, осуществляется на этапе компиляции. Для этого необходимо произвести действия, которые могут быть вам знакомы из ранее полученного опыта работы с Arduino IDE: отключение или подключение макро-определений (#define) путем комментирования и раскомментирования соответствующих строк, изменение в них, а так же в настроечных константах, числовых и символьных значений. Основные параметры находятся в заголовочном файле basic.h. Для дополнительной, более тонкой настройки, обратитесь к заголовочному файлу src\tune.h
Минимально необходимое конфигурирование системы заключается в указании:
- W5100_ETHERNET_SHIELD или ENC28J60_ETHERNET_SHIELD - типа подключенного сетевого модуля;
- NET_DEFAULT_MAC_ADDRESS - MAC-адреса, который будет присвоен сетевому модулю и должен быть уникален в вашей физической Ethernet сети;
- constNetDefaultUseDHCP - флага использования протокола DHCP для автоматического получения сетевых настроек;
- NET_DEFAULT_IP_ADDRESS - IP-адрес;
- NET_DEFAULT_NETMASK - маски сети;
- NET_DEFAULT_GATEWAY - адреса маршрутизатора;
- ZBX_AGENT_DEFAULT_HOSTNAME , _ZBX_AGENT_DEFAULT_DOMAIN - сетевого имени и имени домена Zabbuino;
- Параметров инициализации пинов Arduino в массивах port_protect, port_mode, port_pullup.
В момент включения микроконтроллера, его пины будут находится в состоянии, которое, возможно, не подойдет для решения поставленной перед Zabbuino задачи. Для того, чтобы перевести их в необходимый режим (INPUT/OUTPUT) и состояние (HIGH/LOW), возможно придется изменить настройки пинов, хранящиеся в массивах port_mode, port_pullup файла src\tune.h.
Элементы массивов задают значения регистров портов ввода-вывода, а те, в свою очередь, изменяют режим и состояние соответствующего пина. Заметьте, что для разных моделей Arduino существует свой набор портов, выбираемый на этапе компиляции и зависящий от макро-определений, автоматически создаваемых Arduino IDE.
Так, для Arduino Duemilanove или Arduino Nano средой программирования Arduino будут созданы макро-определения ARDUINO_AVR_DUEMILANOVE или ARDUINO_AVR_NANO соответственно. Эти платформы построены на одном и том же микроконтроллере, имеющем три действующих порта ввода-вывода: PORTB, PORTC, PORTD, которые определяют состояния пинов D8-D13, A0-A7, D0-D7 соответственно. Состояние порта задается однобайтовым числом, каждый бит которого связан с определенным пином. Изменение значения какого-либо бита влечет за собой и изменение режима пина (0 - INPUT, 1 - OUTPUT) или его состояния (0 - LOW, 1 - HIGH).
В примере, приведенном ниже, задаются режимы работы пинов D9-D13, A1-A7 и D0-D7 как OUTPUT, а пинов D8, A0 - как INPUT.
const uint8_t port_mode[PORTS_NUM] = {
B00000000, // not a port
B00000000, // not a port
// Bits 6, 7 have not correspondented pins in Arduino Mini Pro / Freeduino 2009
B00111110, /* PORTB
D13 -^ ^- D8 <- pins */
B11111110, /* PORTC
^-A7 ^-A0 <- pins */
B11111111 /* PORTD
^-D7 ^-D0 <- pins */
}
Состояние пинов D9-D13, A0-A7 и D2-D7 определяется как LOW, а пинов D8, D0 и D1 - как HIGH.
const uint8_t port_pullup[PORTS_NUM] = {
B00000000, // not a port
B00000000, // not a port
// Bits 6, 7 have not correspondented pins in Arduino Mini Pro / Freeduino 2009_
B00000001, /* PORTB
D13 -^ ^- D8 <- pins */
B00000000, /* PORTC
^-A7 ^-A0 <- pins */
B00000011 /* PORTD
^-D7 ^-D0 <- pins */
}
Помимо этого, в Zabbuno введено понятие защиты пина, при установке которой, операции над ним не производятся. Эта функциональность может быть полезна в том случае, когда состояние порта изменяется целиком командой portWrite, а на ряд пинов изменяемого порта возложены функции системного характера - обеспечения работы шин I2C или SPI, используемой сетевым модулем и вмешательство в работу которой приведёт к "зависанию" устройства. Установка защиты пинов осуществляется по тем же правилам, что и их режимов/состояний - через связанный с портами массив - port_protect. Например, установка защиты на пины D10-D13, так как они используются под шину SPI, а также на пины D0-D1 для обеспечения непрерывной работы аппаратного UART производится следующим образом:
const uint8_t port_protect[PORTS_NUM] = {
B00000000, // not a port
B00000000, // not a port
// Pins D10, D11, D12, D13 is protected by setting 2, 3, 4, 5 bits, due its used to SPI (ethernet shield)
// Pin D9 is used by Timer1 and can't be used for PWM (analogWrite) when system metric was gathered on Timer1 interrupt
// Bits 6, 7 have not correspondented pins in Arduino Mini Pro / Freeduino 2009
B11111110, /* PORTB
D13 -^ ^- D8 <- pins */
B00000000, /* PORTC
^-A7 ^-A0 <- pins */
// Pins D0, D1 is protected by settings bits #0 and #1, due its used to RX/TX lines of UART and make it possible to transmit data to Serial Monitor
B00000011 /* PORTD
^-D7 ^-D0 <- pins */
Внимание! Установка защиты влечет за собой невозможность получения показаний с датчиков, подключенных к защищенным пинам или работы исполнительных устройств и устройств индикации.
Однако, в ряде случаев (например, если плата является клоном или ее описание добавлено в IDE самостоятельно) необходимые для автоматического формирования и подключения массивов port_mode, port_pullup и port_protect макросы могут не существовать и компиляция будет завершена с ошибкой. В этом случае необходимо самостоятельно создать макрос, позволяющий сопоставить ваш экземпляр Arduino с каким-либо стандартным и повторить компиляцию. Определить его можно в самом начале скетча zabbuino.ino: #define ARDUINO_AVR_DUEMILANOVE
Как уже было упомянуто в разделе Системные требования, Zabbuino придерживается концепции блочной компиляции для экономии ресурсов микроконтроллера (Flash-память и ОЗУ) за счет исключения из прошивки кода поддержки неиспользуемых датчиков и исполнительных устройств.
Для подключения или отключения блоков тех или иных функций достаточно раскомментировать или закомментировать в файле basic.h следующие определения для:
- FEATURE_NET_DHCP_ENABLE - поддержки протокола DHCP;
- FEATURE_NET_DHCP_FORCE - активации протокола DHCP вне зависимости от производимых при помощи команды set.network изменений в сетевых настройках или настроек по умолчанию;
- FEATURE_NET_USE_MCUID - генерация "уникального" имени экземпляра Zabbuino и изменение последних октетов MAC- и IP-адресов, основывающееся на ID микроконтроллера;
- FEATURE_TONE_ENABLE - использования команд tone, noTone;
- FEATURE_RANDOM_ENABLE - использования команд randomSeed, random;
- FEATURE_SHIFTOUT_ENABLE - использования команды shiftOut;
- FEATURE_EXTERNAL_INTERRUPT_ENABLE - использования команд extInt.*;
- FEATURE_INCREMENTAL_ENCODER_ENABLE - использования команд incEnc.*;
- FEATURE_OW_ENABLE - включения поддержки шины 1-Wire и активации команды OW.scan;
- FEATURE_DS18X20_ENABLE - включения поддержки цифровых термометров семейства DS18x20;
- FEATURE_I2C_ENABLE - включения поддержки шины I2C и активации команд I2C.*;
- FEATURE_BMP_ENABLE - включения поддержки цифровых датчиков семейства BMP (085/180/280);
- SUPPORT_BMP180_INCLUDE - подключения функций BMP085/180;
- SUPPORT_BMP280_INCLUDE - подключения функций BMP280;
- SUPPORT_BME280_INCLUDE - подключения функций BME280 (BMP280 с дополнительным датчиком влажности);
- FEATURE_SHT2X_ENABLE - включения поддержки цифровых датчиков семейства SHT2X;
- FEATURE_BH1750_ENABLE - включения поддержки цифрового датчика освещенности BH1750;
- FEATURE_PCF8574_LCD_ENABLE - включения поддержки алфавитно-цифровых дисплеев, подключенных через расширитель PCF8574;
- FEATURE_MAX7219_ENABLE - включения поддержки контроллера устройств индикации MAX7219;
- FEATURE_DHT_ENABLE - включения поддержки цифровых датчиков DHT11/21/22/33/44 и AM2301/2302;
- FEATURE_ULTRASONIC_ENABLE - включения поддержки датчика расстояния HC-SR04;
- FEATURE_IR_ENABLE - включения возможности симуляции пультов управления по инфракрасному каналу;
- FEATURE_WS2812_ENABLE - включения поддержки адресуемых светодиодных модулей WS2812;
- FEATURE_PZEM004_ENABLE - включения поддержки устройства Peacefair PZEM-004 energy meter;
- FEATURE_UPS_APCSMART_ENABLE - включения поддержки блоков бесперебойного питания APC Smart;
- FEATURE_AREF_ENABLE - разрешения использования пина AREF и связанных с ним функции. Будьте внимательны - необдуманные действия с пином AREF могут привести к повреждению микроконтроллера;
- FEATURE_WATCHDOG_ENABLE - активации поддержки таймера аварийной перезагрузки. Будьте осторожны - не все загрузчики Arduino корректно работают с данным таймером. В ряде случаев вероятна потеря возможности легкой замены прошивки микроконтроллера (can't upload sketch - led13 blinking rapidly);
- FEATURE_EEPROM_ENABLE - активации возможности хранения сетевых настроек Zabbuino в EEPROM;
- FEATURE_PASSWORD_PROTECTION_FORCE - активации контроля доступа к изменениям настроек системы вне зависимости от попыток его отключения при помощи команды set.sysprotection;
- FEATURE_DEBUG_COMMANDS_ENABLE - включения команд, полезных для отладки Zabbuino: sys.vcc*, sys.ram* и пр.;
- FEATURE_DEBUG_TO_SERIAL[LOW/MIDDLE/HIGH]_ - активации вывода отладочных сообщений заданной подробности в UART-порт Arduino (Serial Monitor);
- FEATURE_SERIAL_LISTEN_TOO - разрешения ввода команд Zabbuino через UART-порт Arduino (Serial Monitor). Это позволяет проверить работу присоединенного датчика без обязательного прохождения запроса через сетевой модуль.
- USE_TEXT_ERROR_MESSAGES - отсылки пользователю текстовых сообщений в случае возникновении ошибки. В противном случае будут отосланы цифровые коды, которые, кстати, могут быть заданы самостоятельно в файле src\tune.h;
- GATHER_METRIC_USING_TIMER_INTERRUPT - назначения вызова процедуры актуализации системных метрик на прерывание таймера. В противном случае сбор происходит один раз за программный цикл. В первом случае метрики собираются гораздо реже и точнее, во втором - процессы сбора данных не приостанавливаются на время сбора метрик, что важно для датчиков, чувствительных к временным интервалам.
Внимание! При использовании прерывания таймера для вызова процедуры сбора системных метрик пользоваться командой analogWrite применительно к PWM-пину, обслуживаемому таймером #1 (D9 для Arduino Duemilanove / Nano / Mini Pro и т.п.), настоятельно не рекомендуется. В случае необходимости получения функции PWM на указанном пине, следует использовать метод сбора метрик в программном цикле.
Перед использованием, к системе Zabbuino следует присоединить датчики окружающей среды, исполнительные устройства и устройства индикации, поддержка которых была включена в прошивку микроконтроллера. Схемотехнические решения по подключению периферийных устройств не являются оригинальными и полностью совпадают с теми, которые обычно применяются в Arduino. Однако, при выборе выводов подключения, стоит убедиться, что соответствующие им входы и выходы микроконтроллера будут правильно проинициализированы при подаче питания (см. раздел Компиляция и настройка). В противном случае результат работы устройства может разойтись с вашими ожиданиями.
При первом запуске Zabbuino системные параметры, такие как пароль или настройки сети, будут записаны в энергонезависимую память (но только в том случае если поддержка EEPROM не была отключена на этапе компиляции) и при последующих запусках будут считываться из нее. Это позволит в дальнейшем изменять данные настройки удаленно с помощью команды set.network, set.password и т.п. Если же поддержка EEPROM не была включена в прошивку, все необходимые для функционирования данные будут каждый раз считываться из неизменяемой Flash-памяти, а команды удаленного конфигурирования будут недоступны.
В процессе эксплуатации может возникнуть необходимость сброса настроек хранимых в EEPROM (сетевой адрес, пароль и пр.) к значениям по умолчанию. Для этого в Zabbuino предусмотрена возможность подключения кнопки "Заводской сброс". Достаточно нажать ее перед включением системы и удерживать в течении 5 сек (см. константу constHoldTimeToFactoryReset) - до того момента, как индикатор состояния системы начнет быстро мигать. Это будет означать, что в EEPROM скопированы настройки неизменяемой Flash-памяти. После этого необходимо отпустить кнопку для продолжения работы системы.
Если подключение кнопки затруднено или нецелесообразно - достаточно замкнуть пин D8 (см. константу constFactoryResetButtonPin) на вывод GND. Вследствие использования внутреннего подтягивающего резистора дополнительные электронные компоненты для проведения этой операции не нужны. Однако, на всякий случай (например - удаленное изменение режима работы пина, определенного в constFactoryResetButtonPin на OUTPUT и возможность последующего случайного нажатия кнопки "Заводской сброс"), рекомендуется включить последовательно с кнопкой сопротивление (для ATMega328 - 220 Ом и более), которое ограничит текущий через вывод микроконтроллера ток до безопасных значений.
Эксплуатация настроенной системы Zabbuino не представляет труда, но имеет некоторые оговорки. Первая и самая главная - в микроконтроллере отсутствует многозадачность. В связи с этим не стоит навешивать на систему все датчики, которыми вы обладаете, задавать самый малый период опроса и ожидать от нее быстродействия, схожего с трехъядерным сервером.
Для планирования количества подключаемых датчиков необходимо принимать во внимание следующие факторы:
- время обработки запроса варьируется в зависимости от запрашиваемой точности результата (например, цифровой термометр DS18B20 при разрешении в 9 бит затрачивает на замер (конверсию) минимум 93.75 мс, а при разрешении в 12 бит - уже минимум 750 мс);
- во время работы с датчиком иные сетевые запросы не обрабатываются, но удерживаются в течении определенного времени. Таймаут ожидания может быть переопределен, как в операционной системе, с которой выполняется запрос, так и в настройках сервера Zabbix, поэтому прогнозируем крайне недостоверно;
Таким образом, правила работы с Zabbuino формулируются следующим образом:
- запросы должны быть разнесены во времени насколько это возможно;
- метрики не должны запрашиваться с избыточной частотой (например, уровень атмосферного давления, влажности в обычных условиях не имеет смысла получать каждые 10 секунд);
- таймауты ожидания обработки сетевого соединения в настройках Zabbix-сервера и, возможно, операционной системы, должны быть увеличены при возникновении отвергнутых Zabbuino соединений (на графиках Zabbix появляются пропуски).
Так, как Zabbuino поддерживает протокол Zabbix, то для взаимодействия подходят соответствующие инструменты этой системы мониторинга, в частности утилита zabbix_get. Описание ее работы можно найти в страницах помощи Zabbix. Ключ Zabbix, указываемый в параметре командной строки -k является командой Zabbuino. Перечень поддерживаемых команд и примеры использования приведены в разделе Команды Zabbuino.
Обратите внимание на то, что в командах не применяются мнемонические обозначения. Такие значения, как, например HIGH и LOW записываются как 1 и 0 соответственно. Номера пинов также задаются в цифровом виде: D9 - как 9, A0 как 14 и т.д.
Кроме утилиты zabbix_get возможно использование утилиты netcat или иного самостоятельно разработанного программного обеспечения, способного осуществлять обмен по протоколу TCP/IP. В силу такой особенности Zabbuino можно применять в системах мониторинга, отличных от Zabbix - Cacti, Nagios, RRDTool.
Осуществление запроса при помощи утилиты netcat ничуть не сложнее, чем с использованием zabbix_get:
zabbix_get -s 192.168.0.1 -k "agent.hostname"
zabbuino.local.net
echo "agent.hostname" | nc 192.168.0.1 10050
zabbuino.local.net
Параметры: не требуются.
Возвращаемое значение: '1'
zabbix_get -s 192.168.0.1 -k "agent.ping"
1
Параметры: не требуются.
Возвращаемое значение: имя узла.
Примечание: имя узла может быть изменено как в исходном коде, так и командой set.hostname.
zabbix_get -s 192.168.0.1 -k "agent.hostname"
zabbuino.local.net
Параметры: не требуются.
Возвращаемое значение: версия агента.
zabbix_get -s 192.168.0.1 -k "agent.version"
Zabbuino 1.1.0
Параметры: не требуются.
Возвращаемое значение: время, прошедшее с момента включения устройства.
Единица измерения: секунда.
zabbix_get -s 192.168.0.1 -k "sys.uptime"
4060
Параметры: не требуются.
Возвращаемое значение: количество команд, обработанных (не возвративших ZBX_NOTSUPPORTED) с момента включения устройства.
zabbix_get -s 192.168.0.1 -k "sys.cmd.count"
551
Параметры:
- resetCounter - флаг сброса счетчика.
Действие: при наличии параметра resetCounter, отличного от пустой строки, производится сброс счётчика.
Возвращаемое значение: максимальное, с момента включения устройства, время выполнения команды.
Примечание: Временные затраты на обработку сетевых соединения и разбор запроса не учитываются.
zabbix_get -s 192.168.0.1 -k "delay[1032]"
1
zabbix_get -s 192.168.0.1 -k "sys.cmd.timemax"
1034
zabbix_get -s 192.168.0.1 -k "sys.cmd.timemax[a]"
0
Параметры: не требуются.
Возвращаемое значение: объем свободной оперативной памяти контроллера (размер области памяти, расположенной между концом кучи/heap и началом стека/stack), полученный при периодическом сборе системных метрик.
Единица измерения: байт.
zabbix_get -s 192.168.0.1 -k "sys.ram.free"
1067
Параметры: не требуются.
Возвращаемое значение: зафиксированный в процессе периодического сбора системных метрик минимальный объем свободной оперативной памяти микроконтроллера.
Единица измерения: байт.
zabbix_get -s 192.168.0.1 -k "sys.ram.freeMin"
1050
Параметры: не требуются.
Возвращаемое значение: текущее значение напряжения на входе VCC микроконтроллера.
Единица измерения: mV.
Примечание: при подключении источника питания к пину RAW (VIn), измеряемое значение будет отличаться от подаваемого на величину падения напряжения стабилизатора питания.
zabbix_get -s 192.168.0.1 -k "sys.vcc"
4630
Параметры: не требуются.
Возвращаемое значение: зафиксированное в процессе периодического сбора системных метрик минимальное значение напряжения на входе VCC микроконтроллера.
Единица измерения: mV.
Примечание: при подключении источника питания к пину RAW (VIn), измеряемое значение будет отличаться от подаваемого на величину падения напряжения стабилизатора питания.
zabbix_get -s 192.168.0.1 -k "sys.vccMin"
4611
Параметры: не требуются.
Возвращаемое значение: зафиксированное в процессе периодического сбора системных метрик максимально значение напряжения на входе VCC микроконтроллера.
Единица измерения: mV.
Примечание: при подключении источника питания к пину RAW, измеряемое значение будет отличаться от подаваемого на величину падения напряжения стабилизатора питания.
zabbix_get -s 192.168.0.1 -k "sys.vccMax"
4669
Параметры: не требуются.
Возвращаемое значение: мнемоническое имя микроконтроллера.
Примечание: имя определяется в заголовочном файле avr_cpunames.h
zabbix_get -s 192.168.0.1 -k "sys.mcu.name"
ATmega328P
Параметры: не требуются.
Возвращаемое значение: уникальный идентификатор экземпляра микроконтроллера (если доступен).
zabbix_get -s 192.168.0.1 -k "sys.mcu.id"
573439323733FF09130A
Параметры: не требуются.
Возвращаемое значение: сигнатура модели микроконтроллера (если доступна).
zabbix_get -s 192.168.0.1 -k "sys.mcu.sign"
1E950F
Параметры: не требуются.
Возвращаемое значение: мнемоническое имя сетевого модуля.
Примечание: имя определяется в зависимости от заданного макро-определением типа сетевого модуля и может быть изменено самостоятельно в заголовочном файле src\network.h
zabbix_get -s 192.168.0.1 -k "sys.net.module"
W5100
Параметры:
- password - пароль, используемый для изменения свойств системы;
- hostname - новое имя узла.
Действие: при условии совпадения параметра password с системным паролем и заполнения параметра hostname, устанавливается и сохраняется в EEPROM новое имя узла.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в basic.h).
zabbix_get -s 192.168.0.1 -k "agent.hostname"
zabbuino.local.net
zabbix_get -s 192.168.0.1 -k "set.hostname[1234,my.little.agent]"
1
zabbix_get -s 192.168.0.1 -k "agent.hostname"
my.little.agent
Параметры:
- oldPassword - пароль, используемый для изменения свойств системы;
- newPassword - вновь устанавливаемый пароль.
Действие: при условии совпадения параметра oldPassword с системным паролем и заполнения параметра newPassword, устанавливается и сохраняется в EEPROM новый пароль.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в basic.h).
zabbix_get -s 192.168.0.1 -k "set.hostname[1234,my.little.agent]"
1
zabbix_get -s 192.168.0.1 -k "set.password[1234,4321]"
1
zabbix_get -s 192.168.0.1 -k "set.hostname[1234,zabbuino.local.net]"
0
Параметры:
- password - пароль, используемый для изменения свойств системы;
- protection - флаг установки защиты паролем. '1' - защита включена, любое иное - защита отменена.
Действие: при условии совпадения параметра password с системным паролем и заполнения параметра protection, изменяется и сохраняется в EEPROM значение конфигурационного параметра netConfig.useProtection.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в basic.h)
zabbix_get -s 192.168.0.1 -k "set.hostname[1234,my.little.agent]"
1
zabbix_get -s 192.168.0.1 -k "set.password[1234,4321]"
1
zabbix_get -s 192.168.0.1 -k "set.hostname[1234,zabbuino.local.net]"
0
zabbix_get -s 192.168.0.1 -k "set.sysprotect[4321,0]"
1
zabbix_get -s 192.168.0.1 -k "set.hostname[1234,zabbuino.local.net]"
1
zabbix_get -s 192.168.0.1 -k "agent.hostname"
zabbuino.local.net
Параметры:
- password - пароль, используемый для изменения свойств системы;
- useDHCP - флаг, задающий использование DHCP при запуске системы, 1 - разрешено, 0 - запрещено. Не учитывается при использовании прошивки, собранной без поддержки DHCP, игнорируется при компиляции с опцией FEATURE_NET_DHCP_FORCE;
- macAddress - MAC-адрес, задается в шестнадцатеричной форме: 0xAABBCCDDEEFF;
- ipAddress - IP-адрес, задается в шестнадцатеричной форме: http://www.miniwebtool.com/ip-address-to-hex-converter/ ;
- ipNetmask - сетевая маска, задается в шестнадцатеричной форме: -"-"-;
- ipGateway - адрес шлюза по умолчанию, задается в шестнадцатеричной форме: -"-"-.
Действие: при условии совпадения параметра password с системным паролем и корректности данных, изменяются сетевые настройки, производится их запись в EEPROM.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в basic.h).
Примечание: применение новых настроек происходит после нового включения или перезагрузки системы, см. команду reboot.
zabbix_get -s 192.168.0.1 -k "set.network[1234,0,0xDEADBEEFFEED,0xC0A80001,0xFFFFFF00,0xC0A800FE]"
1
zabbix_get -s 192.168.0.1 -k "reboot[1234]"
1
Параметры:
- password - пароль, используемый для изменения свойств системы.
Действие: при условии совпадения параметра password с системным паролем микроконтроллер начинает выполнять программу заново с адреса 0x00 (мягкая перезагрузка).
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в basic.h).
zabbix_get -s 192.168.0.1 -k "reboot[1234]"
1
Параметры:
- pin - цифровое обозначение пина;
- value - значение скважности, которое требуется задать для данного пина (0..255).
Действие: изменяется скважность PWM для заданного пина.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является оберткой функции analogWrite(). Если пин не является PWM-совместимым, на нем выставляется значение HIGH. Если пин защищен (массив port_protect
), изменения режима не происходит.
Внимание! Функция analogWrite() самостоятельно устанавливает пин в режим работы OUTPUT.
zabbix_get -s 192.168.0.1 -k "analogWrite[6,127]"
1
**светодиод, подключенный к PWM-выводу D6, включен на половину яркости**
Параметры:
- pin - цифровое обозначение пина;
- analogReferenceSource - источник опорного напряжения (0..N). Значения можно найти в заголовочном файле Arduino.h (необязателен);
- mapToLow, mapToHigh - нижняя и верхняя граница диапазона масштабирования (необязательны).
Возвращаемое значение: величина (0..1023), полученная от АЦП, подключенного к pin.
Примечание: если параметр analogReferenceSource определен, то перед чтением устанавливается источник опорного напряжения. При указании границ диапазона масштабирования полученное от АЦП значение будет пересчитано при помощи функции Arduino map().
Примечание: команда является расширением функции analogRead(). Данная команда имеет смысл только для аналоговых пинов. Состояние INPUT и INPUT_PULLUP для пина должно быть задано значениями элементов массивов port_mode, port_pullup. В противном случае совпадения считываемых данных с ожидаемыми может не произойти.
Примечание: номер пина должен быть системным - не 0 (для A0), а 14.
zabbix_get -s 192.168.0.1 -k "analogRead[14,,0,8]"
6
Параметры:
- source - источник опорного напряжения (0..N). Значения можно найти в заголовочном файле Arduino.h.
Действие: устанавливается источник опорного напряжения относительно которого происходят аналоговые измерения.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является оберткой функции analogReference().
zabbix_get -s 192.168.0.1 -k "analogReference[0]"
1
**в качестве источника опорного напряжения задан внешний источник, подключенный к выводу AREF**
zabbix_get -s 192.168.0.1 -k "analogReference[2]"
1
**для системы на базе микроконтроллера ATmega2560 в качестве источника опорного напряжения задан внутренний источник напряжения 1.1V**
Параметры:
- time - время паузы.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: выполняется задержка длительностью в time миллисекунд.
Примечание: команда является оберткой функции delay().
time zabbix_get -s 192.168.0.1 -k "delay[1001]"
1005
Параметры:
- pin - цифровое обозначение пина;
- value - значение, которое требуется выставить на заданном пине;
- testPin - цифровое обозначение пина, используемого для контроля;
- testValue - значение, считанное с testPin при котором проверка считается пройденной.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: изменяется состояние пина.
Примечание: команда является оберткой функции digitalWrite(). Если пин защищен, изменения режима не происходит.
Примечание: параметры testPin и testValue могут быть применены для контроля срабатывания блока реле, путем считывания значения с пина, подключенного к паре контактов, работающих параллельно с той, что коммутирует основную нагрузку.
zabbix_get -s 192.168.0.1 -k "digitalWrite[7,1]"
1
**на выводе D7 установлено значение лог. 1**
Параметры:
- pin - цифровое обозначение пина.
Возвращаемое значение: значение, "считанное" с пина (HIGH/LOW).
Примечание: команда является оберткой функции digitalRead(). Состояние INPUT для пина должно быть определено в коде скетча. В противном случае совпадения считываемых данных с ожидаемыми может не произойти.
zabbix_get -s 192.168.0.1 -k "digitalRead[4]"
0
Параметры:
- pin - цифровое обозначение пина, к которому подключено устройство сигнализации;
- frequency - частота сигнала;
- duration - продолжительность сигнала (необязателен).
Действие: на указанном пине начинается генерация сигнала "прямоугольная волна" заданной частоты продолжительностью duration миллисекунд (если параметр задан).
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является оберткой функции tone(). Состояние OUTPUT для пина должно быть задано в коде скетча. Если пин защищен, изменения режима не происходит.
zabbix_get -s 192.168.0.1 -k "tone[6,11000]"
1
**устройство, подключенное к пину D6 получает сигнал "прямоугольная волна" частотой 11кГц**
Параметры:
- pin - цифровое обозначение пина, к которому подключено устройство сигнализации.
Действие: на указанном пине завершается генерация сигнала "прямоугольная волна".
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является оберткой функции noTone(). Состояние OUTPUT для пина должно быть задано в коде скетча. Если пин защищен, изменения режима не происходит.
zabbix_get -s 192.168.0.1 -k "noTone[6]"
1
**устройство, подключенное к пину D9 прекращает получать сигнал "прямоугольная волна"**
Параметры:
- value - начальное число ряда псевдослучайных значений.
Действие: инициализируется генератор псевдослучайных чисел.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является оберткой функции randomSeed().
zabbix_get -s 192.168.0.1 -k "randomSeed[91]"
1
**генератор ПСЧ инициализирован числом 91**
Параметры:
- min - нижняя граница генератора псевдослучайных значений;
- max - верхняя граница генератора псевдослучайных значений.
Возвращаемое значение: очередной член ряда псевдослучайных чисел.
Примечание: команда является оберткой функции random().
zabbix_get -s 192.168.0.1 -k "random[6,77]"
38
Параметры:
- dataPin - цифровое обозначение пина вывода данных;
- clockPin - цифровое обозначение пина вывода синхронизации;
- latchPin - цифровые обозначения пина вывода защелки;
- bitOrder - последовательность вывода бит;
- data значение для вывода.
Действие: Значение параметра data бит за битом выводится на dataPin в порядке, определяемом параметром bitOrder. После вывода каждого бита происходит синхронизация при помощи clockPin. Если задан latchPin, то он приводится в состояние LOW перед началом вывода и в состояние HIGH по его окончанию.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является расширением функции shiftOut(). Параметр data может быть задан как в десятичной и шестнадцатеричной форме (с префиксом 0x). При указании в команде shiftOut[] числа в десятичной форме практически невозможно использовать каскадируемые сдвиговые регистры, так как функция Arduino shiftOut() оперирует размерностью выводимого значения, равным byte. Т.е. управлять в этом случае более, чем восемью исполнительными устройствами или устройствами индикации невозможно. Для обхода данного ограничения в команде Zabbuino может применяться шестнадцатеричная форма записи числа. Его размер примерно ограничен размером задаваемого в скетче буфера (см #define ARGS_PART_SIZE ..). Состояние OUTPUT для пинов должно быть задано в коде скетча. Если пины защищены, вызова соответствующих функций не происходит.
zabbix_get -s 192.168.0.1 -k "shiftOut[3,4,5,0,85]"
1
**в сдвиговый регистр с защелкой, подключенный выводами _dataPin_, _clockPin_ и _latchPin_ к D3, D4, D5 соответственно, выведено значение 85, При выводе использован порядок LSBFIRST**
zabbix_get -s 192.168.0.1 -k "shiftOut[3,4,,1,0x6246]"
1
**в сдвиговый регистр без защелки, подключенный выводами _dataPin_ и _clockPin_ к D3 и D4 соответственно, выведено значение 0x6246. При выводе использован порядок MSBFIRST**
Параметры:
- pin - цифровое обозначение пина, к которому подключены устройства 1-Wire.
Возвращаемое значение: список устройств 1-Wire, найденных на шине, подключенной к pin.
zabbix_get -s 192.168.0.1 -k "OW.scan[2]"
0x2888D8D401000091
0x284AE0D4010000DA
0x28D1A0D40100007A
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C.
Возвращаемое значение: список устройств I2C, найденных на шине, подключенной к sdaPin и sclPin.
Примечание: Значения sdaPin, sclPin на данный момент не имеют используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "I2C.Scan[18,19]"
0x77
0x23
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- register - регистр устройства I2C, необязательный параметр;
- bitNumber - номер записываемого бита;
- value - значение бита.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: в считанном из заданного регистра I2C устройства значении изменяется определенный соответствующим параметром бит, итог записывается обратно в I2C устройство.
Примечание: Значения sdaPin, sclPin на данный момент не имеют используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "I2C.BitWrite[18,19,0x20,,5,1]"
1
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- register - регистр устройства I2C, необязательный параметр;
- bitNumber - номер читаемого бита.
Возвращаемое значение: состояние заданного бита - 1 или 0.
Примечание: Значения sdaPin, sclPin на данный момент не имеют используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "I2C.BitRead[18,19,0x20,,5]"
1
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- register - регистр устройства I2C, необязательный параметр;
- data - данные, посылаемые в устройство I2C;
- numBytes - количество пересылаемых байт.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: в заданный регистр I2C устройства записывается numBytes байт данных.
Примечание: Значения sdaPin, sclPin на данный момент не имеют используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "I2C.BitWrite[18,19,0x20,,38,1]"
1
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- register - регистр устройства I2C, необязательный параметр;
- dataLength - размер считываемых с устройства I2C данных, 1..4 байта;
- numberOfReadings - количество считываний с устройства.
Возвращаемое значение: число, полученное от устройства I2C .
Примечание: Значения sdaPin, sclPin на данный момент не имеют используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
Примечание: Манипулируя параметром numberOfReadings можно произвести несколько считываний, получив усредненный результат. Если значение numberOfReadings определено, то будет произведено предварительное неучитываемое считывание значения, что позволит получить актуальные данные от датчиков, которые возвращают результат предыдущего измерения (например BH1750). В противном случае осуществляется однократный запрос данных.
zabbix_get -s 192.168.0.1 -k "I2C.Read[18,19,0x20,,1]"
38
Параметры:
- pin - цифровое обозначение пина, к которому подключен термометр DS18x20;
- resolution - разрешение термометра - 9..12 бит;
- id - идентификатор (адрес) термометра. Адрес указывается в шестнадцатеричной форме с префиксом 0x.
Возвращаемое значение: значение температуры, полученное с цифрового термометра.
Единица измерения: градус Цельсия.
Примечание: Точность показаний (1/2 ... 1/16 C) зависит от параметра resolution. От него, также, зависит время выполнения команды. Максимальный временной промежуток замера температуры датчиком - 825ms (resolution = 12bit). При отсутствии в команде параметра id опрашивается первый найденный на шине термометр. Идентификатор (адрес) термометра можно получить при помощи команды OW.Scan. Состояние INPUT для пина должно быть задано в коде скетча. При возникновении какой-либо ошибки в процедуре считывания (невозможности получить данные с термометра вследствие ошибки подсоединения или ошибочно указанном ID) может быть возвращен код ошибки. Коды ошибки можно найти в файле src\tune.h (#define MSG_DEVICE_ERROR ...).
zabbix_get -s 192.168.0.1 -k "DS18x20.Temperature[2,9,0x284bd6d4010000f5]"
25.5000
Параметры:
- pin - цифровое обозначение пина, к которому подключен цифровой датчик DHT/AM;
- model - идентификатор модели датчика - 11 (DHT11), 21 (DHT21, AM2301), 22 (DHT22, AM2302).
Возвращаемое значение: значение температуры, полученное с цифрового датчика.
Единица измерения: градус Цельсия.
Примечание: Значение -127 выдается при возникновении какой-либо ошибки в процедуре считывания - например несовпадении CRC. Если модель датчика не указана или указана неверно, то расчет температуры производится по формуле, применяемой для DHT22. Команда самостоятельно устанавливает состояние INPUT/OUTPUT пина. В целях безопасности стоит инициализировать пин как OUTPUT+LOW.
zabbix_get -s 192.168.0.1 -k "DHT.Temperature[4,22]"
26.5
Параметры:
- pin - цифровое обозначение пина, к которому подключен цифровой датчик DHT/AM/...;
- model - идентификатор модели датчика - 11 (DHT11), 21 (DHT21, AM2301), 22 (DHT22, AM2302), 33 (DHT33), 44 (DHT44).
Возвращаемое значение: величина относительной влажности, полученная с цифрового датчика.
Единица измерения: процент.
Примечание: При возникновении какой-либо ошибки в процедуре считывания (например несовпадении CRC) может быть возвращен код ошибки. Коды ошибки можно найти в файле src\tune.h (#define MSG_DEVICE_ERROR ...). Если модель датчика не указана или указана неверно, то расчет температуры производится по формуле, применяемой для DHT22. Команда самостоятельно устанавливает состояние INPUT/OUTPUT пина. В целях безопасности стоит инициализировать пин как OUTPUT+LOW.
zabbix_get -s 192.168.0.1 -k "DHT.Humidity[4,22]"
43.1
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства.
Возвращаемое значение: величина относительной влажности, полученная с цифрового датчика семейства SHT2X (например, SHT21 с чипом SI7021).
Единица измерения: процент.
Примечание: Значения sdaPin, sclPin на данный момент не используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "SHT2X.Humidity[18,19,0x40]"
53.10
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства.
Возвращаемое значение: значение температуры, полученное с цифрового датчика семейства SHT2X (например, SHT21 с чипом SI7021).
Единица измерения: градус Цельсия.
Примечание: Значения sdaPin, sclPin на данный момент не используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "SHT2X.Temperature[18,19,0x40]"
26.60
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- overSampling - значение, определяющее точность и длительность измерения. Применяется только для датчиков BMP280/BME280. Обратитесь к описанию датчика для получения подробной информации: "Datasheet BMP280 Digital Pressure Sensor", раздел "3.3.2 Temperature measurement".
Возвращаемое значение: значение температуры, полученное с цифрового датчика BMP085/BMP180.
Единица измерения: градус Цельсия.
Примечание: точность датчика - 0,1C. Значения sdaPin, sclPin на данный момент не используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "BMP.Temperature[18,19,0x77]"
24.6
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- overSampling - значение, определяющее точность и длительность измерения. Обратитесь к описанию датчика для получения подробной информации;
- filterCoef - значение коэффициента IIR-фильтра, применяющегося для получения информации в быстро меняющихся условиях. Обратитесь к описанию датчика для получения подробной информации: "Datasheet BMP280 Digital Pressure Sensor", раздел "3.3.3 IIR filter".
Возвращаемое значение: значение величины атмосферного давления, полученное с цифрового датчика BMP085/BMP180.
Единица измерения: Паскаль.
Примечание: Значения sdaPin, sclPin на данный момент не используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов. Популярные в России мм. ртутного столба возможно получить через Calculated Item по формуле last(BMP.Pressure[...])/133.3 или используя мультипликатор в элементе данных Zabbix.
zabbix_get -s 192.168.0.1 -k "BMP.Pressure[18,19,0x77,3]"
99478
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- overSampling - значение, определяющее точность и длительность измерения. Обратитесь к описанию датчика для получения подробной информации;
- filterCoef - значение коэффициента IIR-фильтра, применяющегося для получения информации в быстро меняющихся условиях. Обратитесь к описанию датчика для получения подробной информации: "Datasheet BMP280 Digital Pressure Sensor", раздел "3.3.3 IIR filter".
Возвращаемое значение: величина относительной влажности, полученная с цифрового датчика.
Единица измерения: процент.
Примечание: функция измерения влажности предусмотрена только в датчике BME280.
Примечание: Значения sdaPin, sclPin на данный момент не используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "BME.Humidity[18,19,0x76,3,4]"
46.0
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- mode - значение, определяющее режим измерения. "Continuously H-Resolution Mode" - 0x10, "Continuously L-Resolution Mode" - 0x13 и т.п. Обратитесь к описанию датчика для получения подробной информации.
Возвращаемое значение: величина освещенности, полученная с цифрового датчика.
Единица измерения: люкс.
Примечание: Используйте Continuously-режимы для получения более достоверных показаний датчика. Уровень освещённости может быть так же получен считыванием RAW-значения с датчика командой i2c.read[] и использованием мультипликатора 0,8333 (lux = raw / 1.2) в элементе данных Zabbix.
Примечание: Значения sdaPin, sclPin на данный момент не используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
zabbix_get -s 192.168.0.1 -k "BH1750.light[18,19,0x23,0x10]"
5932
Параметры:
- intPin - цифровое обозначение пина, на которое назначено (или должно быть назначено) внешнее прерывание;
- mode - режим прерывания: 0 - LOW, 1 - CHANGE, 2 - FALLING, 3 - RISING.
Возвращаемое значение: значение счетчика внешнего прерывания, зарегистрированных с момента его активации.
Примечание: активация прерывания происходит при первой обработке данной команды. При получении команде с отличающимся от прежнего значения параметром mode, происходит деактивация прерывания и активация с новым режимом. При этом счетчик срабатываний обнуляется. К сожалению, на данный момент нет возможности отличить возвращаемое значение счетчика "0" от результата операции "0", возникающего при ошибке выполнения команды.
zabbix_get -s 192.168.0.1 -k "extInt.count[2,0,3]"
305
Параметры:
- terminalAPin - цифровое обозначение пина, к которому подключен один из выходов энкодера. Этот пин должен быть связан с обработкой внешних прерываний;
- terminalBPin - цифровое обозначение пина, к которому подключен второй выход энкодера. Может быть связан с любым цифровым входом микроконтроллера;
- initialValue - начальное число.
Возвращаемое значение: число, изменяемое инкрементальным энкодером.
Примечание: число имеет размерность в 32 бита и является знаковым (тип int32_t).
Примечание: активация прерывания, связанного с пином, к которому подключен вывод энкодера, происходит при первой обработке данной команды. Увеличение или уменьшение числа задается направлением вращения ручки энкодера. К сожалению, на данный момент нет возможности отличить возвращаемое число "0" от результата операции "0", возникающего при ошибке выполнения команды.
zabbix_get -s 192.168.0.1 -k "incEnc.count[2, 5, 0, 1024]"
999
Параметры:
- triggerPin - цифровое обозначение пина, к которому подключен выход Trig модуля HC-SR04;
- echoPin - цифровое обозначение пина, к которому подключен выход Echo модуля HC-SR04.
Возвращаемое значение: расстояние до объекта или 6551 в случае, если расстояние выходит за пределы разрешенного диапазона (объект слишком близко или слишком далеко).
Единица измерения: миллиметр.
Примечание: разрешающая способность датчика HC-SR04 - 3мм. Диапазон измеряемых расстояний 20..4000 мм (2см - 4м).
Параметры:
- port - символьное обозначение порта ввода/вывода (B,C,D,...);
- value - значение, которое требуется записать в заданный порт ввода/вывода.
Действие: изменяется состояние порта ввода/вывода (PORTB, PORTC, PORTD,...), если он подлежит изменению.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: этот способ задания состояния выводов сработает на порядок быстрее, чем несколько команд digitalWrite[].
Примечание: Количество портов для каждой сборки определяется автоматически в src\tune.h на основании макросов создаваемых Arduino IDE при компиляции. Более подробно об этом написано в разделе Компиляция и настройка.
zabbix_get -s 192.168.0.1 -k "portWrite[c,21]"
1
**На пинах A0, A3, A5, относящихся к PORTC, одновременно устанавливается состояние HIGH**
Параметры:
- dataPin - цифровое обозначение пина вывода данных (DIN);
- clockPin - цифровое обозначение пина синхронизации (CLK);
- loadPin - цифровое обозначение пина загрузки (CS);
- intensity - яркость свечения элементов индикатора (0..15);
- data - значение для вывода.
Действие: устанавливается соответствующее параметру data состояние элементов индикатора, подключенного к МС MAX7219.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: на текущий момент команда проверялась с применением с одной светодиодной матрицы 8x8, подключенной к контроллеру MAX7219. Команда не производит очистку не затронутых значением data элементов индикатора. Параметр data может быть задан как в ASCII (ограниченный набор символов), так и в шестнадцатеричной форме (с префиксом 0x), его длина ограничена размером внутреннего буфера. Состояние OUTPUT для пинов управления должно быть задано в коде скетча. Если пины защищены, вызова соответствующих функций не происходит.
Строки матрицы заполняются последовательно, используя значения из value (например: 0x6666001818817E00) следующим образом:
Строка 1 => 0x66 => B01100110 => - + + - - + + -
Строка 2 => 0x66 => B01100110 => - + + - - + + -
Строка 3 => 0x00 => B00000000 => - - - - - - - -
Строка 4 => 0x18 => B00011000 => - - - + + - - -
Строка 5 => 0x18 => B00011000 => - - - + + - - -
Строка 6 => 0x81 => B10000001 => + - - - - - - +
Строка 7 => 0x7E => B01111110 => - + + + + + + -
Строка 8 => 0x00 => B00000000 => - - - - - - - -
Пример:
zabbix_get -s 192.168.0.1 -k "max7219.write[5,6,7,1,0x6666001818817E00]"
1
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- lcdBacklight - состояние подсветки индикатора, '0' - выключена, иное - включена;
- lcdType - тип индикатора: 801, 1601, 802, 1202, 1602, 2002, 2402, 4002, 1604, 2004, 4004;
- data - данные, содержащие коды символов, предназначенные для отображения на индикаторе и команды управления. Могут быть заданы как в ASCII так и в шестнадцатеричной (HEX) форме. Подробное описание ниже.
Действие: на символьном дисплее, построенном на базе чипа HD44780 (или совместимом с ним), который подключен через I2C экспандер PCF8574, отображаются символы, находящиеся в data. При обнаружении в data команд управления, выполняются соответствующие действия. Обнаруженные представления символов в шестнадцатеричной форме перед выводом преобразуются в ASCII-код (см. таблицу символов индикатора).
Поддерживаемые команды HD44780:
- \x00 - отключить дисплей. Для включения необходимо послать любую другую HD44780 команду;
- \x01 - очистить экран;
- \x02 - переместить курсор на начальную позицию (левую верхнюю);
- \x04 - выводить символы справа налево (анимированные примеры можно увидеть на http://www.dinceraydin.com/lcd/commands.htm);
- \x05 - выводить символы справа налево с одновременным сдвигом экрана;
- \x06 - выводить символы слева направо (значение по умолчанию);
- \x07 - выводить символы слева направо с одновременным сдвигом экрана;
- \x08 - скрыть данные на экране не очищая его;
- \x0C - выключить видимый курсор;
- \x0E - включить видимый курсор в форме подчеркивания;
- \x0F - включить видимый курсор в форме мигающего черного знакоместа;
- \x10 - сдвинуть курсор влево на одно знакоместо;
- \x14 - сдвинуть курсор вправо на одно знакоместо;
- \x18 - сдвинуть экран влево на одно знакоместо;
- \x1E - сдвинуть экран вправо на одно знакоместо.
Дополнительные команды:
- \x03 - мигнуть подсветкой дважды;
- \\ - вывести обратный слеш '';
- \" - вывести двойные кавычки;
- \x09 или \t - вывести четыре пустых знакоместа (упрощенный "tab");
- \x0A или \n - перевод строки, переход в позицию 0 следующей строки;
- \x80..\x9F - установка курсора на позицию (N - 0x80). Т.е. 0x80 - установка на позицию 0 (первое знакоместо), \x81 - установка на позицию 1 (второе знакоместо) и т.д.;
Примечание: Значения sdaPin, sclPin на данный момент не имеют используются (применяются штатные для библиотеки Wire пины) и зарезервированы для внедрения SoftTWI интерфейсов.
Примечание: преобразовать символы из формата ASCII в HEX можно на http://www.asciitohex.com.
Примечание: вы должны установить значение константы constArgsPartSize в tune.h в соответствии с предполагаемой длиной параметра data. В противном случае строка будет усечена
Примеры:
zabbix_get -s 192.168.0.1 -k "PCF8574.LCDPrint[18,19,0x20,1,2002,"\x06\x01\x0FHello\n\tJust \"testing\""]"
1
\x06 \x01 \x0F Hello \n \t Just \" testing \"
вывод слева направо очистка экрана Мигающий блок Hello перевод строки табуляция Just " testing "
Параметры:
- dataPin - цифровое обозначение пина вывода данных (DIN);
- data - данные для вывода.
Действие: на адресуемый светодиодный модуль (модули) WS2812 отправляется значение(я), определяющее его(их) цвет.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: параметр data задается в шестнадцатеричной форме (с префиксом 0x) и кодирует конечный цвет модуля в GRB порядке группой из шести HEX чисел - два числа (8 бит) на каждый цвет. Количество групп должно быть равно количеству подключенных модулей. Number of HEX groups is equal to number of leds in stripe. 8 leds bar example: zabbix_get.exe -s 192.168.0.1 -k ""
zabbix_get -s 192.168.0.1 -k "ws2812.sendraw[5,0x00FF00 001100 0000FF 000011 FF0000 110000 003333 330033]"
1
**Модули отображают заданные цвета - максимально красный, минимально красный, максимально синий, минимально синий и т.д.)**
- rxPin - цифровое обозначение пина приема данных;
- txPin - цифровое обозначение пина передачи данных;
- command - команда протокола APC SmartUPS;
Действие: на подключенный блок бесперебойного питания по протоколу APC SmartUPS отправляется запрос или команда.
Возвращаемое значение: возвращается значение метрики или выполняется соответствующее действие (например - запускается тестирование или UPS отключается). При удачном выполнении команды возвращается - '1', при неудачном - '0', в случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: блок бесперебойного питания должен быть подключен к Arduino через соответствующий преобразователь уровней UART, такой, как, например, MAX232.
Примечание: команды протокола APC SmartUPS могут быть найдены на странице networkupstools - APC’s smart protocol. Допускается использование шестнадцатеричной формы (с префиксом 0x) для параметра command.
zabbix_get -s 192.168.0.1 -k "ups.apcsmart[2,3,0x6E]"
AS0607112014
**возвращается серийный номер APC SmartUPS**
- rxPin - цифровое обозначение пина приема данных (TX на PZEM004);
- txPin - цифровое обозначение пина передачи данных (RX на PZEM004);
- address - адрес устройства. Задается в виде 4-байтного числа, записанного в шестнадцатеричной (HEX) форме. Адрес по умолчанию: 0xC0A80101 (192.168.1.1);
Действие: с вольт-ампер-ваттметра Peacefair PZEM-004 считывается значение метрики - напряжение (voltage), сила тока (current), потребляемая мощность (power) или накопленный итог потребленной мощности с момента обнуления (energy).
Возвращаемое значение: возвращается значение метрики. В случае возникновения ошибки - ее код.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: TTL-уровень Peacefair PZEM-004 - 5V, поэтому при применении платформы Arduino с напряжением питания 3.3V линии премопередачи должны быть согласованы с помощью соответствующих схем.
Примечание: Допускается параллельное подключение нескольких устройств PZEM004 к одним и тем же rxPin, txPin при следующей модификации: у всех экземпляров, за исключением одного, должны быть удалены удалены R15 в цепях оптрона вывода RX. Устройства должны иметь разные значения параметра address, которые могут быть заданы предварительно при помощи команды pzem004.setAddr[]. Без подобной модификации допустимо объединение линий RX всех экземпляров устройства на один txPin и разнесение линий TX по нескольким rxPin. В этом случае смены адресов устройств не требуется.
zabbix_get -s 192.168.0.1 -k "PZEM004.voltage[5,6]"
226.3
zabbix_get -s 192.168.0.1 -k "PZEM004.voltage[7,6]"
221.8
- rxPin - цифровое обозначение пина приема данных;
- txPin - цифровое обозначение пина передачи данных;
- address - новый адрес устройства. Задается в виде 4-байтного числа, записанного в шестнадцатеричной (HEX) форме. Адрес по умолчанию: 0xC0A80101 (192.168.1.1);
Действие: в EEPROM вольт-ампер-ваттметра Peacefair PZEM-004 записывается новый адрес.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: TTL-уровень Peacefair PZEM-004 - 5V, поэтому при применении платформы Arduino с напряжением питания 3.3V линии премопередачи должны быть согласованы с помощью соответствующих схем.
Примечание: команда установки адреса направляется всем устройствам, подключенным к одному SoftSerial-порту.
zabbix_get -s 192.168.0.1 -k "PZEM004.setAddr[5,6,0xC0A80105]"
1
zabbix_get -s 192.168.0.1 -k "PZEM004.voltage[5,6,0xC0A80105]"
219.4
Zabbuino не имеет никаких отличий от стандартного агента Zabbix в вопросе интеграции с системой мониторинга при соблюдении всех оговоренных ранее принципов взаимодействия:
- имена команд Zabbuino являются именами ключей агента Zabbix;
- запросы должны быть разнесены во времени насколько это возможно;
- метрики не должны запрашиваться с избыточной частотой;
- таймауты ожидания обработки сетевого соединения в настройках Zabbix-сервера и, возможно, операционной системы, должны быть увеличены при возникновении отвергнутых Zabbuino соединений.
Внимание Zabbuino не поддерживает режим Zabbix agent (active).
Подробную инструкцию по настройке элементов данных, триггеров и других компонентов Zabbix можно найти в официальной документации.
Вследствие того, что сетевой контроллер Microchip ENC28J60 не содержит реализованного на уровне микросхемы транспортного слоя (TCP и UDP) модели OSI, его обеспечение поручается программному драйверу, компилирующемуся вместе с исходным кодом Zabbuino. На текущий момент в качестве такого драйвера использован UIPEthernet.
Несомненно, что как и любой программный код, драйвер использует ресурсы микроконтроллера - Flash-память и ОЗУ. К сожалению, это ограничивает количество поддерживаемых датчиков. Однако, UIPEthernet содержит несколько настроек, позволяющих избежать излишнего резервирования ресурсов под неиспользуемую функциональность драйвера.
Исключив из UIPEthernet поддержку протокола UDP можно сэкономить ~4Kb Flash-памяти и ~190b ОЗУ. Это можно сделать в настроечном файле библиотеки: UIPEthernet\utility\uipethernet-conf.h . Макрос UIP_CONF_UDP должен быть установлен в значение 0.
Zabbuino, в силу своей однопоточности, в сущности не использует более одного сокета. Поэтому можно сократить объём ОЗУ, зарезервированной под их буферы. Это позволит высвободить ~97b на каждый сокращенный сокет (на самом деле размер буфера может быть иным - см. UIP_CONF_BUFFER_SIZE в UIPEthernet\utility\uip-conf.h). Изменить их количество можно макросом UIP_CONF_MAX_CONNECTIONS в настроечном файле: UIPEthernet\utility\uipethernet-conf.h). Но, как установлено экспериментальным путем, при уменьшении количества сокетов до одного, отзывчивость системы снижается при осуществлении со стороны сервера мониторинга непрерывных опросов в несколько потоков.