-
Notifications
You must be signed in to change notification settings - Fork 14
Zabbuino in Russian (for release 1.5.x)
Внимание, данное руководство относится к Zabbuino v1.5.x.
Идёт редактирование
- Обзор
- Системные требования
- Компиляция и настройка
- Пользовательские модули
- Использование
- Системная индикация
- Команды Zabbuino
- Формат команды
- Zabbix Agent
- Системные метрики
- Настройки и состояние системы
- Язык программирования Arduino (Wiring)
- Коммуникационные шины (1-Wire, I2C)
- Датчики окружающей среды
- Исполнительные устройства и устройства индикации
- Интеграция с системой мониторинга Zabbix
- Интеграция с RRDTool
- Советы
- Как узнать адрес/пароль устройства
Zabbuino - это прошивка, превращающая плату Arduino в устройство, работающее по протоколу Zabbix (v1.x, v2.x, v3.x, v4.x, шифрование не поддерживается). С его помощью Zabbix-сервер через сеть Ethernet или Wi-Fi(начиная с выпуска v1.5) может общаться с окружающим миром, используя оборудование (датчики, индикаторы, исполнительные и самостоятельные устройства), которое возможно присоединить к Arduino.
Ключевой особенностью данной разработки является практически полное отсутствие привязки внешних компонентов к выводам Arduino, что позволяет производить логическое конфигурирование работающей системы в одной точке - WEB-интерфейсе Zabbix.
Пример подключения периферийных устройств к Zabbuino, укомплектованного Ethernet Shield.
Сразу стоит отметить, что исходный код Zabbuino написан с учетом применения на микроконтроллерах семейства AVR и модифицировался для микроконтроллеров ESP8266/ESP32. Под иные, встречающиеся в платах Arduino архитектуры (ARM, ARC, x86 и т.п.) адаптация не производилась.
Внимание! При использовании МК семейства ESP доступна не вся функциональность
Минимальным требованием является использование AVR микроконтроллера ATMega328 и одного из поддерживаемых сетевых модулей. Основная функциональность Zabbuino так же проверялась на старших представителях семейства ATmega, таких как ATmega2560.
Рекомендуемым минимумом периферийных устройств является (см. схему выше):
- Индикатор состояния устройства (State led), подключенный к пину D9;
- Кнопка сброса настроек, хранимых в EEPROM (Factory RST), подключенная к пину D8.
Сетевые модули:
- Ethernet Shield, построенный на базе Wiznet W5100 и совместимые с ним;
- Ethernet Shield 2, построенный на базе Wiznet W5500 и совместимые с ним (см.примечание ниже);
- Microchip ENC28J60.
- Expressif ESP8266/ESP32.
Датчики:
- Температуры - семейства DS18x20, АЦП для термопар - MAX6675, бесконтактные - MLX90614;
- Давления - BMP085/BMP180/BMP280;
- Влажности - BME280, SHT21, DHT11/DHT21/DHT22/DHT33/DHT44/AM2301/AM2302/AM2320 и совместимые с ними;
- Освещенности - BH1750, MAX44009, TSL2561;
- Цвета - ADPS-9960;
- Ультрафиолетового излучения - VEML6070;
- Газов - Telaire T6307 / Winsen MH-Z19, ZE08-CH2O, ZE14-O3 (ZE25-O3, ZE27-O3), ZP14 (ZC05), ZE15-CO, ZE16-CO / Sensirion SGP-30 и совместимые с ними;
- Уровня пыли (PM2.5) - Plantower PMS-A003 / Wuhan Cubic PM2012 / iNovaFitness SDS011 и совместимые с ними;
- Расстояния - HC-SR04;
- Параметров электрической цепи - INA219;
- Вибрации/наклона - SW-520D и аналогичные;
- Любые датчики, опрашиваемые через цифровые и аналоговые входы Arduino при помощи команд digitalRead, analogRead;
- Иные простые датчики, подключаемые по шине I2C.
Индикаторы и исполнительные устройства:
- Светодиодные матрицы и цифровые индикаторы, управляемые контроллером MAX7219;
- Табло, шкалы и иные устройства, построенные на сдвиговых регистрах (например 74HC595);
- Одно-, двух- и четырехстрочные алфавитно-цифровые индикаторы на базе контроллера HD44780 и подключенные через I2C-расширитель PCF8574;
- Адресуемые (пиксельные) светодиодные модули, использующие чипы WS2801 и WS2812/WS2811;
- ШИМ контроллер PCA9685;
- Инфракрасные cветодиодные излучатели для эмуляции соответствующих пультов управления;
- Любые индикаторы и релейные модули, управляемые напрямую через цифровые выходы Arduino при помощи команд digitalWrite, analogWrite, portWrite или через расширитель типа PCF8574, подключенный по шине I2C.
Самостоятельные устройства:
- Блоки бесперебойного питания APC серии Smart (через UART-конвертор);
- Блоки бесперебойного питания, поддерживающие протокол Megatec;
- Вольт-ампер-ваттметр Peacefair PZEM-004 (ревизия v1.0).
Иное:
- EEPROM семейства AT24CXX;
- Часы реального времени - DS3231, PCF8563;
Заметьте, что одновременная поддержка всех устройств может быть неосуществима вследствие недостатка Flash-памяти применяемого микроконтроллера. Для решения данной проблемы предусмотрена возможность исключения на этапе сборки программного кода для поддержки устройств, которые не планируется подключать к Zabbuino. Данный вопрос будет рассмотрен дополнительно в разделе "Компиляция и настройка".
Рекомендуемыми сетевыми модулями являются модули на базе WizNet, драйвера которых являются более компактными, что позволяет увеличить количество типов одновременно подключенных устройств. Однако, чип Wiznet W5500 имеет архитектурную особенность, которая не позволяет его рекомендовать для применения в сценариях, требующих частых одновременных запросов к агенту мониторинга: самостоятельный сброс TCP соединений, открываемых одновременно сверх лимита (8 шт), что может приводить к возникновению состояния ошибки Элементов данных Zabbix и иным неприятным эффектам.
Применение сетевых модулей на базе Microchip ENC28J60 для обеспечения стабильной работы может потребовать более сложных схемотехнических решений, тонкой настройки сетевого оборудования и сетевого драйвера. Так же, это уменьшит доступную Flash-память на ~7кб (~1/4 часть объёма, доступного в микроконтроллере ATMega328), а доступное ОЗУ на ~700 байт (~1/3 часть объёма, доступного в микроконтроллере ATMega328).
Обратите внимание на то, что бытующее мнение о том, что дешевый микроконтроллер не требует вложений в дорогие дополнительные компоненты, зачастую ошибочно. Напротив - дешевизна Arduino требует осмысленного и взвешенного подхода к планированию окружающей ее среды и последующему монтажу модулей, линий питания, шин подключения датчиков, исполнительных устройств и прочих элементов.
Так же, необдуманное применение компонентов, особенно невысокого качества (включая соединительные провода Dupont и беспаечные макетные платы), не способствует быстрому вводу Zabbuino в эксплуатацию, но зачастую вводит в заблуждение по поводу корректности работы прошивки и заставляет с головой погружаться в анализ исходного кода.
Так, например:
- Подключенные датчики могут постоянно или периодически выдавать некорректные (или неожиданные) показания;
- Несколько работающих по отдельности I2C модулей могут перестать работать, будучи подключенными к одной I2C шине;
- Датчик, вынесенный на несколько метров от основной платы, может произвольно и непериодически отключаться при проведении цикла измерения;
- Индикатор может показывать мусор вместо полезной информации.
Компиляцию скетча следует проводить в выпусках Arduino IDE 1.5.x (до Zabbuino v1.0 включительно), 1.6.x (для Zabbuino старше, чем v1.0) и выше, под выпуски IDE 1.0.x исходный код не адаптирован. Обратите внимание на то, что размер прошивки может отличаться при компиляции в различных выпусках IDE в большую или меньшую сторону.
Тестирование кода для ESP8266/ESP32 производилось Arduino IDE 1.8.9 и Arduino Wiring-based Framework (ESP8266 Core) 2.4.7 / Espressif Arduino core for the ESP32 1.0.4.
Все библиотеки, подключаемые к исходному коду, входят в состав IDE. Библиотеки сетевых модулей WizNet и Microchip ENC28J60, а так же OneWire, SoftwareWire и EspSoftwareSerial интегрированы в исходный код Zabbuino.
Настройка большинства параметров, необходимых для функционирования Zabbuino, осуществляется на этапе компиляции. Для этого необходимо произвести действия, которые могут быть вам знакомы из ранее полученного опыта работы с Arduino IDE: отключение или подключение макро-определений (#define) путем комментирования и раскомментирования соответствующих строк, изменение в них, а так же в настроечных константах, числовых и символьных значений. Основные параметры находятся в заголовочном файле cfg_basic.h. Для дополнительной, более тонкой настройки, обратитесь к заголовочному файлу src/cfg_tune.h
Минимально необходимое конфигурирование системы заключается в указании:
- NETWORK_ETHERNET_W5100 или иное - типа подключенного сетевого модуля;
- constDefaultMacAddress - MAC-адреса, который будет присвоен сетевому модулю и должен быть уникален в вашей физической Ethernet сети;
- constNetDefaultUseDHCP - флага использования протокола DHCP для автоматического получения сетевых настроек;
- constDefaultIPAddress - IP-адреса;
- constDefaultNetmask - маски сети;
- constDefaultGateway - адреса маршрутизатора;
- constZbxAgentDefaultHostname, constZbxAgentDefaultDomain - сетевого имени и имени домена Zabbuino;
- constWiFiSsid / constWiFiPsk - учетные данные для подключения к сети Wi-Fi при использовании МК семейства ESP;
- Параметров инициализации пинов 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).
В примере, приведенном ниже, задаются режимы работы выводов D8-D13, A1-A7 и D0-D7 как INPUT, а пинов D9, A0 - как OUTPUT.
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
B00000010, /* PORTB
D13 -^ ^- D8 <- pins */
B00000001, /* PORTC
^-A7 ^-A0 <- pins */
B00000000 /* PORTD
^-D7 ^-D0 <- pins */
}
Состояние пинов D9-D13, A0-A7 и D2-D7 определяется как LOW, а пинов D8, D0 и D1 - как HIGH. Установка состояния HIGH в режиме порта INPUT переводит соответствующий вывод в состояние INPUT_PULLUP.
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-память и ОЗУ) за счет исключения из прошивки кода поддержки неиспользуемых датчиков и исполнительных устройств.
Для подключения или отключения блоков тех или иных функций достаточно раскомментировать или закомментировать в файле cfg_basic.h следующие определения:
Макроопределение | Активируемые команды | Описание функционала |
---|---|---|
FEATURE_NET_DHCP_ENABLE | Поддержка протокола DHCP | |
FEATURE_NET_DHCP_FORCE | Активация протокола DHCP вне зависимости от производимых при помощи команды set.network изменений в сетевых настройках или настроек по умолчанию | |
FEATURE_NET_USE_MCUID | Генерация "уникального" имени экземпляра Zabbuino и изменение последних октетов MAC- и IP-адресов, основывающееся на ID микроконтроллера | |
FEATURE_USER_FUNCTION_PROCESSING | Подключение механизма поддержки пользовательских функций (см. plugin.ino) | |
FEATURE_ARDUINO_BASIC_ENABLE | analogWrite, analogRead, etc, | Подключение обёрток "базовых" функций Arduino |
FEATURE_TONE_ENABLE | tone, noTone | Подключение обертки соответствующих функций Arduino |
FEATURE_RANDOM_ENABLE | randomSeed, random | -"-"-"- |
FEATURE_SHIFTOUT_ENABLE | shiftOut | Подключение расширенной реализации функций Arduino shiftout() |
FEATURE_EXTERNAL_INTERRUPT_ENABLE | extInt.count | Обслуживание датчиков, использующих внешние прерывания MCU |
FEATURE_INCREMENTAL_ENCODER_ENABLE | incEnc.value | Обслуживание инкрементальных энкодеров, использующих внешние прерывания MCU |
FEATURE_OW_ENABLE | OW.scan | Общие процедуры для устройств 1-Wire, например - сканирование адресов подключенных устройств |
FEATURE_DS18X20_ENABLE | DS18x20.Temperature | Поддержка цифровых термометров семейства DS18x20 |
FEATURE_I2C_ENABLE | I2C.scan, I2C.write, I2C.read, I2C.bitWrite, I2C.bitRread, | Общие процедуры для устройств I2C: сканирование адресов, прямое чтение регистров и запись в них |
FEATURE_BMP180_ENABLE | BMP.pressure, BMP.temperature | Поддержка I2C датчиков BMP085/180 |
FEATURE_BMP280_ENABLE | BMP.pressure, BMP.temperature | Поддержка I2C датчиков BMP280 |
FEATURE_BME280_ENABLE | BMP.pressure, BMP.temperature, BME.humidity | Поддержка I2C датчиков BME280 (BMP280 с дополнительным датчиком влажности) |
FEATURE_BH1750_ENABLE | BH1750.light | Поддержка I2C датчика освещенности BH1750 |
FEATURE_MAX44009_ENABLE | MAX44009.light | -"-"-"-"- MAX44009 |
FEATURE_TSL2561_ENABLE | TSL2561.light | -"-"-"-"- TSL2561 |
FEATURE_VEML6070_ENABLE | VEML6070.uva,VEML6070.uvi | Поддержка I2C датчика ультрафиолетового излучения VEML6070 |
FEATURE_ADPS9960_ENABLE | _ADPS9960.ambient, _ADPS9960.red, _ADPS9960.green, _ADPS9960.blue | Поддержка I2C датчика общей освещенности и цвета (RGB) ADPS9960 |
FEATURE_PCF8574_LCD_ENABLE | PCF8574.LCDprint | Поддержка алфавитно-цифровых дисплеев, подключенных через расширитель PCF8574 |
FEATURE_SHT2X_ENABLE | SHT2X.temperature, SHT2X.humidity | Поддержка I2C датчиков семейства SHT2X |
FEATURE_INA219_ENABLE | INA219.busVoltage, INA219.current, INA219.power | Поддержка I2C монитора питания INA219 |
FEATURE_PCA9685_ENABLE | PCA9685.write | Поддержка I2C ШИМ-контроллера PCA9685 |
FEATURE_AT24CXX_ENABLE | AT24CXX.write, AT24CXX.read | Поддержка I2C чипа EEPROM семейства AT24CXX |
FEATURE_SGP30_ENABLE | SGP30.CO2e, SGP30.TVOC | Поддержка датчика газов Sensirion SGP-30 |
FEATURE_T67XX_ENABLE | T67xx.I2C.CO2 | Поддержка датчиков CO2 Telaire 67xx |
FEATURE_MLX90614_ENABLE | mlx90614.temperature | Поддержка инфракрасного термометра MLX90614 |
FEATURE_MAX7219_ENABLE | MAX7219.write | Поддержка контроллера устройств индикации MAX7219 |
FEATURE_PZEM004_ENABLE | PZEM004.voltage, PZEM004.current, PZEM004.power, PZEM004.energy, PZEM004.setaddr | Поддержка устройства Peacefair PZEM-004 energy meter |
FEATURE_MHZXX_PWM_ENABLE | MHZxx.PWM.CO2 | Поддержка датчиков CO2, совместимых с Winsen MH-Z19 и использующих PWM |
FEATURE_MHZXX_UART_ENABLE | MHZxx.UART.CO2 | Поддержка датчиков CO2, совместимых с Winsen MH-Z19 и подключенных по шине UART |
FEATURE_DFPLAYER_ENABLE | DFPlayer.run | Поддержка медиаплеера DFPlayer Mini |
FEATURE_UPS_APCSMART_ENABLE | UPS.APCSmart | Поддержка блоков бесперебойного питания APC Smart |
FEATURE_UPS_MEGATEC_ENABLE | UPS.Megatec | Поддержка блоков бесперебойного питания, работающих по протоколу Megatec |
FEATURE_PLANTOWER_PMSXX_ENABLE | PMSxx.all, PMSxx.epm, PMSxx.spm | Поддержка датчиков PM2.5 Plantower PMS-XXXX |
FEATURE_NOVA_FITNESS_SDS_ENABLE | SDS.all, SDS.epm | Поддержка датчика PM2.5 iNovaFitness SDS011 |
FEATURE_WUHAN_CUBIC_PM_UART_ENABLE | WCPM.UART.All | Поддержка датчика PM2.5 Wuhan Cubic PM2012 подключенного по шине UART |
FEATURE_WUHAN_CUBIC_PM_I2C_ENABLE | WCPM.I2C.All | Поддержка датчика PM2.5 Wuhan Cubic PM2012 подключенного по шине I2C |
FEATURE_WINSEN_ZE08_CH2O_ENABLE | ZE08.CH2O | Поддержка датчика ZE08-CH2O |
FEATURE_WINSEN_ZE14_O3_ENABLE | ZE14.O3 | Поддержка датчика ZE14-O3 (ZE25-O3, ZE27-O3) |
FEATURE_WINSEN_ZP14_ENABLE | ZP14 | Поддержка датчика ZP14 (ZC05) |
FEATURE_WINSEN_ZE15_CO_ENABLE | ZE15-CO | Поддержка датчика ZE15-CO |
FEATURE_WINSEN_ZE16_CO_ENABLE | ZE16-CO | Поддержка датчика ZE16-CO |
FEATURE_DHT_ENABLE | DHT.all, DHT.humidity, DHT.temperature | Поддержка цифровых датчиков DHT11/21/22/33/44 и AM2301/2302/AM2320 |
FEATURE_ULTRASONIC_ENABLE | ultrasonic.distance | Поддержка датчика расстояния HC-SR04 |
FEATURE_IR_ENABLE | IR.send, IR.sendRaw | Симуляции пультов управления по инфракрасному каналу |
FEATURE_WS281x_ENABLE | WS281x.sendRaw | Поддержка адресуемых светодиодных модулей WS281x |
FEATURE_MAX6675_ENABLE | MAX6675.Temperature | Поддержка адаптера термопары K-типа MAX6675 |
FEATURE_SERVO_ENABLE | Servo.turn | Поддержка цифровых серводвигателей |
FEATURE_RELAY_ENABLE | relay, pulse | Поддержка операций с релейными блоками |
FEATURE_REMOTE_COMMANDS_ENABLE | system.run | Подключение команды, используемой для выполнения Zabbix Action |
FEATURE_WATCHDOG_ENABLE | Поддержка таймера аварийной перезагрузки. Будьте осторожны - не все загрузчики Arduino корректно работают с данным таймером. В ряде случаев вероятна потеря возможности легкой замены прошивки микроконтроллера (can't upload sketch - led13 blinking rapidly) | |
FEATURE_AREF_ENABLE | Использования пина AREF и связанных с ним действий. Будьте внимательны - необдуманные действия с пином AREF могут привести к повреждению микроконтроллера | |
FEATURE_EEPROM_ENABLE | set.hostname, set.network, set.password, set.sysprotect, set.localtime | Хранение настроек Zabbuino в EEPROM |
FEATURE_PASSWORD_PROTECTION_FORCE | Контроль доступа к изменениям настроек системы вне зависимости от попыток его отключения при помощи команды set.sysprotection | |
FEATURE_SYSINFO_ENABLE | sys.vcc*, sys.ram*, sys.cmd*, system.hw.* net.phy.* и др. | Предоставление системной информации |
FEATURE_SYSTEM_RTC_DS3231_ENABLE | system.localtime, set.localtime | Поддержка чипа DS3231 часов точного времени |
FEATURE_SYSTEM_RTC_PCF8563_ENABLE | system.localtime, set.localtime | Поддержка чипа PCF8563 часов точного времени |
FEATURE_DEBUG_MESSAGING_LEVEL | Вывод отладочных сообщений заданной подробности (0..2 - none..max) в UART-порт Arduino (Serial Monitor) | |
FEATURE_SERIAL_LISTEN_TOO | Прием команд Zabbuino через UART-порт Arduino (IDE 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 v1.2.0, введена возможность подключения пользовательского кода. Он может оперировать практически всеми внутренними механизмами системы - получать значения сенсоров, управлять исполнительными устройствами и устройствами индикации. В связи с тем, что подобное направление развития не входило в первоначальный замысел, на данный момент концептуальные нестыковки урегулированы не лучшим образом, внутреннее API не приведено к какой-либо строгой системе. Поэтому, на данном этапе существования Zabbuino от пользователя, желающего создать автономную систему, требуются определенные знания и навыки программирования и анализа программного кода. Примеры пользовательских модулей будут размещаться в каталоге examples по мере их создания, либо предоставления.
Взаимодействие основной системы с пользовательским кодом происходит через следующих подпрограмм, расположенных в файле plugin.h:
- initStageUserFunction();
- netPrepareStageUserFunction();
- preLoopStageUserFunction();
- loopStageUserFunction();
- alarmStageUserFunction();
- executeCommandUserFunction();
- userFunctionButtonActivate();
- userFunctionButtonDeactivate();
Каждой из этих подпрограмм передается указатель на системный буфер, размером в constBufferSize байт (см. src/cfg_tune.h). Этот буфер может быть использован для временного хранения численных массивов, формирования строк, выводимых на подключенные дисплеи и пр. Все данные, помещенные в буфер, по окончании выполнения подпрограммы могут быть заменены иными или утеряны. _alarmStageUserFunction(), executeCommandUserFunction() получают дополнительные параметры.
Хранение пользовательских данных, таких как места (пины) подключения датчиков, их режимы работы и пр. может быть осуществлено во внешней EEPROM семейства AT24CXX. Содержимое EEPROM может быть в дальнейшем прочитано/модифицировано без замены прошивки готового устройства командами AT24CXX.write, AT24CXX.read.
Предназначена для осуществления однократных действий, производимых на этапе запуска Zabbuino (до анализа состояния пользовательской кнопки, ранее бывшей "Заводской сброс"). В момент выполнения initStageUserFunction() недоступны некоторые системные параметры. В частности - настройки сети, считываемые из EEPROM. В этой подпрограмме рекомендуется осуществлять инициализацию сенсоров, исполнительных устройств, устройств индикации.
Вызывается после инициализации сетевого модуля, но до начала работы с ним (установки адресов, произведения DHCP-запроса).
Вызывается перед входом в основной цикл работы. На этом этапе все системные устройства иницализированы.
Предназначена для осуществления периодических действий в периоды отсутствия сетевых запросов. Обратите внимание на то, что обслуживание сетевых запросов является более приоритетной задачей и строгая периодичность вызова подпрограммы loopStageUserFunction() не гарантирована. Так же необходимо учитывать, что на время выполнения данной подпрограммы приостанавливается выполнение основной задачи. Поэтому применение программных решений, ведущих к продолжительному или избыточному исполнению функций (продолжительный delay(), длинные циклы, излишне частые опросы датчиков и пр.) категорически не рекомендовано.
Вызывается периодически в основном цикле работы при обнаружении ошибки. В подпрограмму дополнительно передается код ошибки. Может быть использована для подсчета и анализа возникающих проблем, а так же особых способов информирования: звукового, светового и пр.
Получает управление при поступлении команды user.run[]. Применяется для нереализованных в системе функций по работе с перифирией/внутренними данными.
Вызывается при активации пользовательской (ранее - "Заводской сброс") кнопки (см. constUserFunctionButtonPin). Может быть применено для сброса на установки по-умолчению систем типа Sonoff TH10/TH16 с кнопкой, придоединенной к GPIO0, которая переводит их в режим перепрошивки, будучи нажатой в процессе загрузки.
Вызывается при деактивации пользовательской (ранее - "Заводской сброс") кнопки (см. constUserFunctionButtonPin).
Текущее состояние Zabbuino возможно определить по индикатору состояния устройства, подключаемому по умолчанию к пину D9:
- Включен на время выполнения команды;
- Ритмично мигает с частотой 2Гц при отсутствии входящих команд на протяжении 60 сек. Это может свидетельствовать о потере связи или "зависании" сетевого модуля. Предельное время ожидания самокоррекции ошибки может быть задано в файле src/cfg_tune.h, константа constNetIdleTimeout;
- Мигает в режиме ~150ms вкл, ~850ms выкл при обнаружении проблем с получением/обновлением адреса по DHCP;
- Ритмично мигает с частотой 20Гц после записи в EEPROM настроек по умолчанию.
Перед использованием, к системе 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
В силу того, что Zabbuino создавался по образу Zabbix Agent, - команда является ключом в терминах Zabbix и их формат практически эквивалентен. За подробностями вы можете обратиться к руководству Zabbix: Ключ элемента данных. Отличия заключаются в том, что параметры команды не могут быть гибкими, а так же содержать Unicode-символы и массивы.
Параметры: не требуются.
Возвращаемое значение: '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.5.0
Параметры: не требуются.
Возвращаемое значение: сводная системная информация в формате JSON.
zabbix_get -s 192.168.0.1 -k "sys.all"
{"upTime":5695, "sysRamFree":48784, "sysRamFreeMin":45336, "sysVcc":2502, "sysVccMin":840, "sysVccMax":2659, "sysCmdCount":38940, "lwipVersion":1.4, "netPHYReinits":17, "wifiRssi":-48, "resetReason":"External System"}
Параметры: не требуются.
Возвращаемое значение: время, прошедшее с момента включения устройства.
Единица измерения: секунда.
Примечание: при отсутствии подключенного к Zabbuino чипа реального времени, время работы вычисляется исходя из значения, возвращаемого функцией millis(). Это значение может быть искажено в силу ряда причин системного характера и, при продолжительной работе, отличаться от ожидаемого на часы, дни и недели. Данная метрика в таком виде поддерживается для определения факта и момента перезагрузки устройства.
zabbix_get -s 192.168.0.1 -k "system.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
Параметры:
- metric - требуемая метрика: id, model, name(по умолчанию).
Возвращаемое значение: уникальный идентификатор экземпляра микроконтроллера (если доступен), модель (сигнатура) или мнемоническое имя.
Примечание: мнемоническое имя определяется в заголовочном файле avr_cpunames.h
zabbix_get -s 192.168.0.1 -k "system.hw.cpu"
ATmega328P
zabbix_get -s 192.168.0.1 -k "system.hw.cpu[id]"
573439323733FF09130A
zabbix_get -s 192.168.0.1 -k "system.hw.cpu[model]"
1E950F
Параметры: не требуются.
Возвращаемое значение: мнемоническое имя платы Arduino, определенное в src/platforms.h.
zabbix_get -s 192.168.0.1 -k "system.hw.chassis"
Duemilanove
Параметры: не требуются.
Возвращаемое значение: UTC время в формате Unix Epoch (timestamp)
Примечание: хотя команда, сообразно ее названию, должна возвращать локальное время с учетом временной зоны, однако в соответствии с действием аналогичной команды Zabbix Agent, пользователю возвращается UTC.
Примечание: команда будет выполнена корректно только при активации макроопределений FEATURE_SYSTEM_RTC_DS3231_ENABLE или FEATURE_SYSTEM_RTC_PCF8563_ENABLE, а так же подключении соответствующего модуля к пинам, заданным в constSystemRtcSDAPin, constSystemRtcSCLPin (см. SYSTEM HARDWARE SECTION в src/cfg_tune.h)
zabbix_get -s 192.168.0.1 -k "system.localtime"
1492000439
Параметры: не требуются.
Возвращаемое значение: мнемоническое имя сетевого модуля.
Примечание: имя определяется в зависимости от заданного макро-определением типа сетевого модуля и может быть изменено самостоятельно в заголовочном файле _src/net_platforms.h
zabbix_get -s 192.168.0.1 -k "net.phy.name"
W5100
Параметры:
- password - пароль, используемый для изменения свойств системы;
- hostname - новое имя узла.
Действие: при условии совпадения параметра password с системным паролем и заполнения параметра hostname, устанавливается и сохраняется в EEPROM новое имя узла.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в cfg_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 в cfg_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 в cfg_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 в cfg_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 - пароль, используемый для изменения свойств системы;
- ssid - имя (SSID) беспроводной точки доступа, к которой будет пытаться присоединиться Zabbuino при включении;
- passphrase - пароль для точки доступа ssid.
Действие: при условии совпадения параметра password с системным паролем и корректности данных, изменяются настройки Wi-Fi, производится их запись в EEPROM.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в cfg_basic.h).
Примечание: применение новых настроек происходит после нового включения или перезагрузки системы, см. команду reboot.
zabbix_get -s 192.168.0.1 -k "set.wifi[1234,ZNetworkPoint,\"pAsSw0Rd\"]"
1
zabbix_get -s 192.168.0.1 -k "reboot[1234]"
1
Параметры:
- password - пароль, используемый для установки времени;
- unixTimestamp - устанавливаемое время в формате Unix Epoch (timestamp);
- tzOffset - смещение в секундах локального времени относительно UTC (часовой пояс).
Действие: при условии совпадения параметра password с системным паролем и корректности данных, производится корректировка часов реального времени, производится запись в EEPROM значения tzOffset.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в cfg_basic.h).
Примечание: команда будет выполнена корректно только при активации макроопределений FEATURE_SYSTEM_RTC_DS3231_ENABLE или FEATURE_SYSTEM_RTC_PCF8563_ENABLE, а так же подключении соответствующего модуля к пинам, заданным в constSystemRtcSDAPin, constSystemRtcSCLPin (см. SYSTEM HARDWARE SECTION в src/cfg_tune.h)
zabbix_get -s 192.168.0.1 -k "set.localtime[1234,1492000521,-3600]"
1
** Установлено время 04/12/2017 @ 12:35pm (UTC) с локальным часовым поясом UTC-1.
Параметры:
- password - пароль, используемый для изменения свойств системы.
Действие: при условии совпадения параметра password с системным паролем микроконтроллер начинает выполнять программу заново с адреса 0x00 (мягкая перезагрузка).
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: проверка пароля происходит только при установленном в значение '1' ('true') конфигурационном параметре netConfig.useProtection (см команду set.sysprotect, константу constSysDefaultProtection в cfg_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), полученная от АЦП, подключенного к заданному входу.
Примечание: если параметр analogReferenceSource определен, то перед чтением устанавливается источник опорного напряжения. При указании границ диапазона масштабирования полученное от АЦП значение будет пересчитано при помощи функции Arduino map().
Примечание: команда является расширением функции analogRead(). Данная команда имеет смысл только для "аналоговых" входов.
Примечание: мнемонические имена входов не поддерживаются, следует использовать сквозную нумерацию: A0 - 14, A0 - 15 и т.д.
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 - значение, которое требуется выставить на заданном выходе;
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: изменяется состояние выхода.
Примечание: команда является оберткой функции digitalWrite().
Примечание: перед выполнением команды выход переводится в режим OUTPUT. Возврата к предыдущему режиму не происходит. Если пин защищен, изменения режима не происходит.
zabbix_get -s 192.168.0.1 -k "digitalWrite[7,1]"
1
**на выводе D7 установлено значение лог. 1**
Параметры:
- pin - цифровое обозначение пина (входа).
- mode - режим работы входа: 0 или отсутствует - INPUT, 1 - INPUT_PULLUP.
Возвращаемое значение: значение, "считанное" со входа - 1 (лог.1) или 0 (лог 0).
Примечание: команда является оберткой функции 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(). Если пин защищен, изменения режима не происходит.
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 - последовательность вывода бит;
- compressionType - метод сжатия (0 - без сжатия; 1 - сжатие типа 'repeat', каждый символ удваивается, например FD3 => FFDD33);
- data значение для вывода.
Действие: Распакованное в соответствии compressionType, значение параметра data бит за битом выводится на выход dataPin в порядке, определяемом параметром bitOrder. После вывода каждого бита происходит синхронизация при помощи выхода clockPin. Если задан выход latchPin, то он приводится в состояние LOW перед началом вывода и в состояние HIGH по его окончанию.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: команда является расширением функции shiftOut(). Параметр data может быть задан как в десятичной и шестнадцатеричной форме (с префиксом 0x). При указании в команде shiftOut[] числа в десятичной форме практически невозможно использовать каскадируемые сдвиговые регистры, так как функция Arduino shiftOut() оперирует размерностью выводимого значения, равным byte. В этом случае управлять более, чем восемью исполнительными устройствами или устройствами индикации, невозможно. Для обхода данного ограничения в команде Zabbuino может применяться шестнадцатеричная форма записи числа. Его размер примерно ограничен размером задаваемого в скетче буфера (см constArgsPartSize в src/cfg_tune.h).
Примечание: перед выполнением команды выходы переводится в режим OUTPUT. Возврата к предыдущему режиму не происходит. Если пины защищены, вызова соответствующих функций не происходит.
zabbix_get -s 192.168.0.1 -k "shiftOut[3,4,5,0,0,85]"
1
**в сдвиговый регистр с защелкой, подключенный выводами _dataPin_, _clockPin_ и _latchPin_ к D3, D4, D5 соответственно, выведено значение 85, При выводе использован порядок LSBFIRST, сжатие не использовалось**
zabbix_get -s 192.168.0.1 -k "shiftOut[3,4,,1,0,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.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "I2C.Scan[18,19]"
0x77
0x23
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- register (опционально) - регистр устройства I2C;
- bitNo - номер записываемого бита;
- value - значение бита.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: в считанном из заданного регистра I2C устройства значении изменяется определенный соответствующим параметром бит, итог записывается обратно в I2C устройство.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
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;
- bitNo - номер читаемого бита.
Возвращаемое значение: состояние заданного бита - 1 или 0.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
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 - размер data в байтах.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: в заданный регистр I2C устройства записывается numBytes байт данных.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
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;
- numBytes - размер считываемых с устройства I2C данных, 1..4 байта;
- numberOfReadings - количество считываний с устройства.
Возвращаемое значение: число, полученное от устройства I2C .
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
Примечание: Манипулируя параметром 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. При возникновении какой-либо ошибки в процедуре считывания (невозможности получить данные с термометра вследствие ошибки подсоединения или ошибочно указанном ID) может быть возвращен код ошибки. Коды ошибки можно найти в файле src/cfg_tune.h (#define MSG_DEVICE_ERROR ...).
zabbix_get -s 192.168.0.1 -k "DS18x20.Temperature[2,9,0x284bd6d4010000f5]"
25.5
Параметры:
- pin - цифровое обозначение пина, к которому подключен цифровой датчик DHT/AM;
- model - идентификатор модели датчика - 11 (DHT11), 21 (DHT21, AM2301), 22 (DHT22, AM2302, AM2320), 33 (DHT33), 44 (DHT44).
Возвращаемое значение: значение температуры и влажности в формате JSON, полученное с цифрового датчика.
Единица измерения: градус Цельсия, процент.
Примечание: Значение -135 выдается при возникновении ошибки соединения с датчиком, а -134 - в случае приема неверных данных (ошибка контрольной суммы). Другие коды ошибок можно найти в файле src/cfg_tune.h (#define MSG_DEVICE_ERROR ...). Если модель датчика не указана или указана неверно, то расчет температуры производится по формуле, применяемой для DHT22. Команда самостоятельно устанавливает режим работы (INPUT/OUTPUT) пина.
Примечание: В силу специфики работы датчиков DHT/AM производится задержка при обнаружении уровня LOW на pin: для DHT21/AM2301 - 2 сек, для остальных - 1 сек. Избежать задержки перед первым, после включения устройства, опросом позволяет предварительная установка pin в режим OUTPUT+HIGH при помощи массивов port_mode, port_pullup (src/cfg_tune.h_).
Примечание: Не все датчики DHT/AM снабжены внутрисхемным pull-up резистором, поэтому вы можете обнаружить, что часть датчиков работает по упрощенной схеме (без резистора между VCC и DQ), а часть - нет.
Примечание: при использовании данных команд совместно с AM2320 необходимо произвести подключение по стандартной однопроводной схеме. I2C присоединение такового датчика на данный момент не поддерживается.
zabbix_get -s 192.168.0.1 -k "DHT.All[4,22]"
{"h":31.9,"t":25.4}
Параметры:
- pin - цифровое обозначение пина, к которому подключен цифровой датчик DHT/AM;
- model - идентификатор модели датчика - 11 (DHT11), 21 (DHT21, AM2301), 22 (DHT22, AM2302, AM2320), 33 (DHT33), 44 (DHT44).
Возвращаемое значение: значение температуры, полученное с цифрового датчика.
Единица измерения: градус Цельсия.
Примечание: Значение -135 выдается при возникновении ошибки соединения с датчиком, а -134 - в случае приема неверных данных (ошибка контрольной суммы). Другие коды ошибок можно найти в файле src/cfg_tune.h (#define MSG_DEVICE_ERROR ...). Если модель датчика не указана или указана неверно, то расчет температуры производится по формуле, применяемой для DHT22. Команда самостоятельно устанавливает режим работы (INPUT/OUTPUT) пина.
Примечание: В силу специфики работы датчиков DHT/AM производится задержка при обнаружении уровня LOW на pin: для DHT21/AM2301 - 2 сек, для остальных - 1 сек. Избежать задержки перед первым, после включения устройства, опросом позволяет предварительная установка pin в режим OUTPUT+HIGH при помощи массивов port_mode, port_pullup (src/cfg_tune.h_).
Примечание: Не все датчики DHT/AM снабжены внутрисхемным pull-up резистором, поэтому вы можете обнаружить, что часть датчиков работает по упрощенной схеме (без резистора между VCC и DQ), а часть - нет.
Примечание: при использовании данных команд совместно с AM2320 необходимо произвести подключение по стандартной однопроводной схеме. I2C присоединение такового датчика на данный момент не поддерживается.
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, AM2320), 33 (DHT33), 44 (DHT44).
Возвращаемое значение: величина относительной влажности, полученная с цифрового датчика.
Единица измерения: процент.
Примечание: Значение -135 выдается при возникновении ошибки соединения с датчиком, а -134 - в случае приема неверных данных (ошибка контрольной суммы). Другие коды ошибок можно найти в файле src/tune.h (#define MSG_DEVICE_ERROR ...). Если модель датчика не указана или указана неверно, то расчет температуры производится по формуле, применяемой для DHT22. Команда самостоятельно устанавливает режим работы (INPUT/OUTPUT) пина.
Примечание: В силу специфики работы датчиков DHT/AM производится задержка при обнаружении уровня LOW на pin: для DHT21/AM2301 - 2 сек, для остальных - 1 сек. Избежать задержки перед первым, после включения устройства, опросом позволяет предварительная установка pin в режим OUTPUT+HIGH при помощи массивов port_mode, port_pullup (tune.h).
Примечание: Не все датчики DHT/AM снабжены внутрисхемным pull-up резистором, поэтому вы можете обнаружить, что часть датчиков работает по упрощенной схеме (без резистора между VCC и DQ), а часть - нет.
Примечание: при использовании данных команд совместно с AM2320 необходимо произвести подключение по стандартной однопроводной схеме. I2C присоединение такового датчика на данный момент не поддерживается.
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).
Единица измерения: процент.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
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).
Единица измерения: градус Цельсия.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "SHT2X.Temperature[18,19,0x40]"
26.60
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства.
- zone - зона измерения: 0 - окружающая среда, 1 - зона #1, 2 - зона #2.
Возвращаемое значение: значение температуры, полученное с бесконтактного термометра.
Единица измерения: градус Цельсия.
Примечание: Зона измерения #2 доступна не во всех моделях датчиков. Обратитесь к описанию датчика для получения подробной информации.
zabbix_get -s 192.168.0.1 -k "MLX90614.temperature[18, 19, 0x5A, 1]"
36.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. Взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
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.
Единица измерения: Паскаль.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
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.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "BME.Humidity[18,19,0x76,3,4]"
46.0
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных;
- particleSize - размерность частиц (канал): 0.3um (PM0.3) - 3, 0.5um (PM0.5) - 5, 1um (PM1) - 10, 2.5um (PM2.5) - 25, 5um (PM5) - 50, 10um (PM10) - 100.
Возвращаемое значение: для команды PMSxx.all[] - JSON-объект, содержащий значения Standart PM Concentration, Environment PM Concentration и Paricles Quantity для каждого канала измерения (0.3..10um). Для команд PMSxx.epm[] и PMSxx.spm[] - концентрация частиц указанной размерности, ug/m^3. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Примечание: при работе в "активном режиме" датчики PMS-xxxx самостоятельно и периодически отсылают данные по UART, поэтому подключение только выхода TX датчика на rxPin является достаточным для получения значений метрик.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
zabbix_get -s 192.168.0.1 -k "PMS.epm[2, 3, 25]"
14
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных;
- particleSize - размерность частиц (канал): 1um (PM1) - 10, 2.5um (PM2.5) - 25.
Возвращаемое значение: для команды SDSxx.all[] - JSON-объект, содержаший значения Environment PM Concentration и Paricles Quantity для каждого канала измерения (1..2.5um). Для команды SDS.epm[] - концентрация частиц указанной размерности, ug/m^3. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Примечание: при работе в "активном режиме" датчик SDS011 самостоятельно и периодически отсылает данные по UART, поэтому подключение только выхода TX датчика на rxPin является достаточным для получения значений метрик.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
zabbix_get -s 192.168.0.1 -k "SDS.epm[2, 3, 25]"
14
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных.
Возвращаемое значение: JSON-объект, содержаший значения Environment PM Concentration и Paricles Quantity для каждого канала измерения (0.3..10um), а так же статус датчика. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Примечание: при работе в "активном режиме" датчик PM2012 самостоятельно и периодически отсылает данные по UART, поэтому подключение только выхода TX датчика на rxPin является достаточным для получения значений метрик.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
zabbix_get -s 192.168.0.1 -k "WCPM.UART.All[2, 3]"
{"SPM10":6,"SPM25":7,"SPM100":7,"EPM10":6,"EPM25":7,"EPM100":7,"PRT03":510,"PRT05":118,"PRT10":35,"PRT25":1,"PRT50":0,"PRT100":0,"STATUS":0}
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства.
Возвращаемое значение: JSON-объект, содержаший значения Environment PM Concentration и Paricles Quantity для каждого канала измерения (0.3..10um), а так же статус датчика. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "WCPM.I2C.All[18, 19]"
{"SPM10":6,"SPM25":7,"SPM100":7,"EPM10":6,"EPM25":7,"EPM100":7,"PRT03":510,"PRT05":118,"PRT10":35,"PRT25":1,"PRT50":0,"PRT100":0,"STATUS":0}
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства.
Возвращаемое значение: величина CO2eq (carbon dioxide equivalent), рассчитанная датчиком.
Единица измерения: PPM (parts per million).
Примечание: рассчитываемая величина CO2e не всегда отражает реальную концентрацию CO2 в анализируемой смеси газов.
Примечание: для правильного расчёта значения метрики требуется поправка на актуальную температуру и влажность в точке измерения. Это может быть достигнуто через пользовательские функции реализованные в плагине (plugin.ino).
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "SGP30.CO2e[18, 19]"
670
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства.
Возвращаемое значение: величина TVOC (total volatile organic compounds), рассчитанная датчиком.
Единица измерения: PPB (parts per billion).
Примечание: для правильного расчёта значения метрики требуется поправка на актуальную температуру и влажность в точке измерения. Это может быть достигнуто через пользовательские функции реализованные в плагине (plugin.ino).
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "SGP30.TVOC[18, 19]"
3
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства.
Возвращаемое значение: величина CO2 (carbon dioxide), измеренная датчиком.
Единица измерения: PPM (parts per million).
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "T67xx.I2C.CO2[18, 19]"
682
Параметры:
- pwmPin - цифровое обозначение пина, к которому подключен PWM выход датчика;
- range - диапазон измерения, на который откалиброван датчик (2000PPM, 5000PPM, etc).
Возвращаемое значение: величина CO2 (carbon dioxide), измеренная датчиком.
Единица измерения: PPM (parts per million).
zabbix_get -s 192.168.0.1 -k "MHZxx.PWM.CO2[2,5000]"
695
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных.
Возвращаемое значение: величина CO2 (carbon dioxide), измеренная датчиком.
Единица измерения: PPM (parts per million).
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
zabbix_get -s 192.168.0.1 -k "MHZxx.PWM.CO2[2,3]"
408
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных.
Возвращаемое значение: концентрация CH2O (formaldehyde), измеренная датчиком. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Единица измерения: PPM (parts per million).
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
zabbix_get -s 192.168.0.1 -k "ZE08.CH2O[2,3]"
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных.
Возвращаемое значение: концентрация O3 (ozone), измеренная датчиком. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Единица измерения: PPM (parts per million).
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: модуль ZE14-O3 совместим на уровне протокола данных с модулями ZE25-O3, ZE27-O3.
zabbix_get -s 192.168.0.1 -k "ZE14.O3[2,3]"
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных.
Возвращаемое значение: концентрация натурального/горючего газа (methane), измеренная датчиком. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Единица измерения: PPM (parts per million).
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: модуль ZP14 совместим на уровне протокола данных с модулем ZC05.
zabbix_get -s 192.168.0.1 -k "ZP14.NG[2,3]"
Параметры:
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных.
Возвращаемое значение: концентрация угарного газа (сarbon monoxide), измеренная датчиком. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT. При несовпадении контрольной суммы - код, заданный в MSG_DEVICE_ERROR_CHECKSUM.
Единица измерения: PPM (parts per million).
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
zabbix_get -s 192.168.0.1 -k "ZE15.CO[2,3]"
zabbix_get -s 192.168.0.1 -k "ZE16.CO[2,3]"
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства;
Возвращаемое значение: величина освещенности, полученная с цифрового датчика.
Единица измерения: люкс.
Примечание: Уровень освещённости может быть так же получен считыванием RAW-значения с датчика командой i2c.read[] и использованием мультипликатора 0,8333 (lux = raw / 1.2) в элементе данных Zabbix.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "BH1750.light[18,19,0x23]"
5932
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства;
- mode - опционально. Значение, определяющее режим измерения (периодичность). "Continuous mode" - 0x80, "Default Mode (every 800ms)" - 0x00. Обратитесь к описанию датчика для получения подробной информации.
- integrationTime - опционально. Время, затрачиваемое на однократное измерение. Обратитесь к описанию датчика для получения подробной информации: "MAX44009 Industry’s Lowest-Power Ambient Light Sensor with ADC", таблица "Table 7. Integration Time".
Возвращаемое значение: величина освещенности, полученная с цифрового датчика.
Единица измерения: люкс.
Примечание: при отсутствии параметров integrationTime и mode производится автоматический аппаратный подбор необходимых параметров замера.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "MAX44009.light[18,19,0x4A]"
398
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - - опционально. I2C адрес устройства;
- integrationTime - время, в течении которого датчик будет собирать данные: 13, 101, 402 мс;
- gain - коэффициент усиления: 1, 16.
Возвращаемое значение: величина освещенности, полученная с цифрового датчика.
Единица измерения: люкс.
Примечание: автоматический подбор параметров integrationTime и gain на данный момент не реализован.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "TSL2561.light[18,19,0x39,402,1]"
457
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- integrationFactor - опционально. Условный временной интервал, в течении которого датчик будет собирать данные: 1 - 1T, 2 - 2T, 4 - 4T;
- rSet - опционально. Сопротивление резистора в кОм, подключенного к входу #4 датчика. По-умолчанию - 270кОм (модуль от AdaFruit).
Возвращаемое значение: интенсивность ультрафиолетового излучения, фиксируемая датчиком.
Единица измерения: mW/cm^2.
Примечание: реальное время сбора данных зависит от параметра integrationFactor и подключенного к входу #4 датчика сопротивления Rset. Обратитесь к таблице #7 документации "VEML6070 - UVA Light Sensor with I2C Interface" для получения подробной информации.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "VEML6070.uva[18,19,1,360]"
3
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- integrationFactor - опционально. Условный временной интервал, в течении которого датчик будет собирать данные: 1 - 1T, 2 - 2T, 4 - 4T;
- rSet - опционально. Сопротивление резистора в кОм, подключенного к входу #4 датчика. По-умолчанию - 270кОм (модуль от AdaFruit).
Возвращаемое значение: индекс ультрафиолетового излучения (UV Index)[https://en.wikipedia.org/wiki/Ultraviolet_index#Index_usage].
Примечание: реальное время сбора данных зависит от параметра integrationFactor и подключенного к входу #4 датчика сопротивления Rset. Обратитесь к таблице #7 документации "VEML6070 - UVA Light Sensor with I2C Interface" для получения подробной информации.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "VEML6070.uvi[18,19,1,360]"
1
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства;
- integrationTime - опционально. Время, в течении которого датчик будет собирать данные: 3..712 мс.
- gain - опционально. Коэффициент усиления: 1, 4, 16, 64.
Возвращаемое значение: величина освещенности, полученная с цифрового датчика - общей (ambient), лиюо составляющей красного, синего или зеленого цветов.
Единица измерения: люкс.
Примечание: при отсутствии опциональных параметров используются значения по-умолчанию: integrationTime = 103 мс и gain = 4.
Примечание: для получения подробной информации обратитесь к описанию датчика : "APDS-9960 Digital Proximity, Ambient Light, RGB and Gesture Sensor".
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "ADPS9960.ambient[18,19,0x39]"
781
Параметры:
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - опционально. I2C адрес устройства;
- voltageRange - опционально. Диапазон измеряемого напряжение, вольт: 16 или 32.
- maxCurrent - опционально. Максимальная ожидаемая сила тока в цепи измерения, mA: 400 (только для maxVoltage = 16V), 1000, 2000, 3000.
Возвращаемое значение: величина напряжения/силы тока/мощности, полученная с датчика (монитора) параметров электрической цепи INA219.
Единица измерения: mV, mA, mW.
Внимание! Максимальное измеряемое напряжение - 26V, параметр "диапазон измеряемого напряжение" применяется только для корректного расчета.
Примечание: параметры voltageRange и maxCurrent не могут иметь произвольные значения, так как в целях оптимизации исходного кода используется предварительно рассчитанная на основании вышеуказанных величин таблица калибровочных значений датчика. Значения по умолчанию - 32V, 3000mA.
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "INA219.BusVoltage[18,19,0x40,16,1000]"
4876
Параметры:
- intPin - цифровое обозначение пина (входа), на которое назначено (или должно быть назначено) внешнее прерывание;
- mode - режим прерывания для AVR: 0 - LOW, 1 - CHANGE, 2 - FALLING, 3 - RISING. Для ESP8266/ESP32: RISING - 1, FALLING - 2, CHANGE - 3, LOW - 4, HIGH - 5.
Возвращаемое значение: количество событий на выводе, обслуживающем внешнее прерывание, зарегистрированных с момента его активации.
Примечание: возвращаемое значение имеет размерность в 32 бита и является беззнаковым (тип uint32_t).
Примечание: на данный момент внешние прерывания могут быть привязаны только к определенным выводам микроконтроллера (см. описание функции attachInterrupt для получения дополнительной информации).
Примечание: активация прерывания происходит при первой обработке данной команды. При получении команде с отличающимся от прежнего значения параметром mode, происходит деактивация прерывания и активация с новым режимом. При этом счетчик срабатываний обнуляется. К сожалению, на данный момент нет возможности отличить возвращаемое значение счетчика "0" от результата "0", возникающего при ошибке выполнения команды.
zabbix_get -s 192.168.0.1 -k "extInt.count[2,3]"
305
Параметры:
- terminalAPin - цифровое обозначение пина (входа), к которому подключен один из выходов энкодера. Этот пин должен быть связан с обработкой внешних прерываний;
- terminalBPin - цифровое обозначение пина (входа), к которому подключен второй выход энкодера. Может быть связан с любым цифровым входом микроконтроллера;
- initialValue - начальное число.
Возвращаемое значение: число, изменяемое инкрементальным энкодером.
Примечание: число имеет размерность в 32 бита и является знаковым (тип int32_t).
Примечание: на данный момент внешние прерывания могут быть привязаны только к определенным выводам микроконтроллера (см. описание функции attachInterrupt для получения дополнительной информации).
Примечание: активация прерывания, связанного с пином, к которому подключен вывод "A" энкодера, происходит при первой обработке данной команды. Увеличение или уменьшение числа, заданного в параметре initialValue определяется направлением вращения ручки энкодера. К сожалению, на данный момент нет возможности отличить возвращаемое число "0" от результата "0", возникающего при ошибке выполнения команды.
zabbix_get -s 192.168.0.1 -k "incEnc.count[2, 5, 1024]"
999
Параметры:
- triggerPin - цифровое обозначение пина (выхода), к которому подключен вход Trig модуля HC-SR04;
- echoPin - цифровое обозначение пина (входа), к которому подключен выход Echo модуля HC-SR04.
Возвращаемое значение: расстояние до объекта или 6551 в случае, если расстояние выходит за пределы разрешенного диапазона (объект слишком близко или слишком далеко).
Единица измерения: миллиметр.
Примечание: разрешающая способность датчика HC-SR04 - 3мм. Диапазон измеряемых расстояний 20..4000мм (2см - 4м).
zabbix_get -s 192.168.0.1 -k "ultrasonic.distance[4, 5]"
2138
Параметры:
- port - символьное обозначение порта ввода/вывода (B,C,D,...);
- value - значение, которое требуется записать в заданный порт ввода/вывода.
Действие: изменяется состояние порта ввода/вывода (PORTB, PORTC, PORTD,...), если он подлежит изменению.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: этот способ задания состояния выводов сработает на порядок быстрее, чем несколько команд digitalWrite[].
Примечание: количество портов для каждой модели Arduino определяется автоматически с помощью данных, находящихся в src/cfg_tune.h и на основании макросов создаваемых Arduino IDE при компиляции. Более подробно об этом написано в разделе "Компиляция и настройка".
Примечание: команда не изменяет режим порта. Вам необходимо проделать это предварительно, изменив содержимое массива port_mode, определяемого в src/cfg_tune.h.
zabbix_get -s 192.168.0.1 -k "portWrite[c,21]"
1
**На пинах (выходах) A0, A3, A5, относящихся к PORTC, одновременно устанавливается состояние HIGH**
Параметры:
- servoPin - цифровое обозначение пина (выхода), к которому подключен управляющий вход сервомеханизма;
- targetAnglePulseWidth (опционально) - длительность импульса в микросекундах, подаваемого на сервомеханизм для перехода в заданную позицию;
- turnTime - продолжительность подачи импульсов, в миллисекундах;
- holdTime - время (в миллисекундах) нахождения в состоянии, заданном параметром targetAnglePulseWidth;
- returnAnglePulseWidth (опционально) - длительность импульса в микросекундах, подаваемого на сервомеханизм для возврата в исходную позицию;
Действие: на servoPin в течении turnTime подаются импульсы длительностью targetAnglePulseWidth в интервале 20 мс для вывода сервомеханизма на заданную позицию и удержании на ней в течении holdTime. Затем, для возврата на исходную позицию, на servoPin в течении turnTime подаются импульсы длительностью returnAnglePulseWidth, если таковой задан. При отсутствии returnAnglePulseWidth возврата не происходит.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: перед выполнением команды выход servoPin переводится в режим OUTPUT автоматически. После завершения операции возврата прежде установленного режима не производится.
zabbix_get -s 192.168.0.1 -k "servo.turn[5, 1500, 500, 2000, 540]"
1
**Сервомеханизм, подключенный к пину #5 поворачивается на 90 градусов в течении 500мс, удерживается на позиции 2000мс и возвращается на 0 градусов**
Параметры:
- relayPin - цифровое обозначение пина (выхода), к которому подключен управляющий механизм (например реле);
- relayState - состояние, устанавливаемое на выходе relayPin: 1 - HIGH, 0 - LOW;
- testPin - цифровое обозначение пина (входа), к которому подключен механизм, контролирующий срабатывание (например NO /normal open/ контактная группа реле);
- testState - состояние, проверяемое на testPin: 1 - HIGH, 0 - LOW;
- testPinMode - режим testPin, устанавливаемое перед считыванием состояния: 2 - INPUT_PULLUP, иные - INPUT
Действие: relayPin устанавливается в режим relayState , после чего testPin переводится в режим testPinMode и проверяется на соответствие testState.
Возвращаемое значение: при удачном выполнении (соответствии testPin состоянию testPinMode) - '1', в противном случае - '0'.
Примечание: перед выполнением команды выход relayPin переводится в режим OUTPUT автоматически. После завершения операции возврата прежде установленного режима не производится.
zabbix_get -s 192.168.0.1 -k "relay[5, 1, 6, 0, 2]"
0
**Реле, подключенное к пину #5 не сработало - на входе #6 не зарегистрировано состояние LOW**
Параметры:
- targetPin - цифровое обозначение пина (выхода), к которому подключен управляющий механизм (например реле);
- targetState - состояние, устанавливаемое на выходе в начале операции: 1 - HIGH, 0 - LOW;
- holdTime - время (в миллисекундах) удержания выхода в targetState;
- returnState - состояние, устанавливаемое на выходе в конце операции: 1 - HIGH, 0 - LOW.
Действие: targetPin переводится в режим targetState, удерживается в течении в течении holdTime и переводится в returnState.
Возвращаемое значение: '1'.
Примечание: перед выполнением команды выход targetPin переводится в режим OUTPUT автоматически. После завершения операции возврата прежде установленного режима не производится.
zabbix_get -s 192.168.0.1 -k "pulse[5, 1, 250, 0]"
1
**Пин #5 переходит в состояние HIGH на 250мс и, затем, возвращается в состояние LOW**
Параметры:
- dataPin - цифровое обозначение пина (выхода) вывода данных (DIN);
- clockPin - цифровое обозначение пина (выхода) синхронизации (CLK);
- loadPin - цифровое обозначение пина (выхода) загрузки (CS);
- intensity - яркость свечения элементов индикатора (0..15);
- data - значение для вывода.
Действие: устанавливается соответствующее параметру data состояние элементов индикатора, подключенного к МС MAX7219.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: Команда не производит очистку не затронутых значением data элементов индикатора. Параметр data может быть задан как в ASCII ('0'..'9', '-', 'c', 'C', 'h', 'H', 'E', 'L', 'P', 'n', 'o', 'r', точка и пробел), так и в шестнадцатеричной форме (с префиксом 0x), его длина ограничена размером внутреннего буфера. Состояние OUTPUT для выходов управления устанавливается автоматически. Если пины защищены, выполнения команды не происходит.
Строки матрицы заполняются последовательно, используя значения из data (например: 0x6666001818817E00) следующим образом:
Строка 1 => 0x66 => B01100110 => - X X - - X X -
Строка 2 => 0x66 => B01100110 => - X X - - X X -
Строка 3 => 0x00 => B00000000 => - - - - - - - -
Строка 4 => 0x18 => B00011000 => - - - X X - - -
Строка 5 => 0x18 => B00011000 => - - - X X - - -
Строка 6 => 0x81 => B10000001 => X - - - - - - X
Строка 7 => 0x7E => B01111110 => - X X X X X X -
Строка 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 адрес устройства;
- outputIdx (опционально) - номер канала;
- onTime - отсчет (тик) на котором выход указанного канала переводится в состояние HIGH;
- offTime - отсчет (тик) на котором выход указанного канала переводится в состояние LOW.
Действие: на заданном канале ШИМ-контроллера PCA9685 устанавливается режим, определяемый значениями onTime и offTime. Для получения информации о принципе работы контроллера обратитесь к руководству "PCA9685 16-channel, 12-bit PWM Fm+ I2C-bus LED controller".
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: при отсутствии параметра outputIdx режим устанавливается для всех каналов.
Примечание: в качестве частоты PWM используется значение по-умолчанию - 200Hz
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
Пример:
zabbix_get -s 192.168.0.1 -k "PCA9685.write[18,19,0x40,5,1234,3210]"
1
**На канале #5 ШИМ-кнтроллера устанавливается режим: переход в HIGH на тике #1234 и в LOW на тике #3210**
Параметры:
- 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 (второе знакоместо) и т.д.;
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
Примечание: преобразовать символы из формата ASCII в HEX можно на http://www.asciitohex.com.
Примечание: вы должны установить значение константы constArgsPartSize в src/cfg_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);
- speed - скорость вывода данных (bitrate), 400 для 400КГц, 800 или ничего для 800КГц;
- compressionType - метод сжатия (0 - без сжатия; 1 - сжатие типа 'repeat', каждый символ удваивается, например FD3 => FFDD33);
- data - данные для вывода.
Действие: на адресуемый светодиодный модуль (модули) WS281x отправляется значение(я), определяющее его(их) цвет.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Примечание: параметр data задается в шестнадцатеричной форме (с префиксом 0x) и кодирует конечный цвет модуля в GRB порядке группой из шести (трех) HEX чисел - два (одно) числа (о) на каждый цвет. Количество групп должно быть равно количеству подключенных модулей.
zabbix_get -s 192.168.0.1 -k "ws281x.sendraw[5,800,0,0x00FF00 001100 0000FF 000011 FF0000 110000 003333 330033]"
1
zabbix_get -s 192.168.0.1 -k "ws281x.sendraw[5,,1,0x0F0 010 00F 001 F00 100 033 303]"
1
**Модули отображают заданные цвета - максимально красный, минимально красный, максимально синий, минимально синий и т.д.), первая команда не использует сжатие, вторая - использует**
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных;
- command - команда протокола APC SmartUPS;
Действие: на подключенный блок бесперебойного питания по протоколу APC SmartUPS отправляется запрос или команда.
Возвращаемое значение: возвращается значение метрики или выполняется соответствующее действие (например - запускается тестирование или UPS отключается). При удачном выполнении команды возвращается - '1', при неудачном - '0', в случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: блок бесперебойного питания должен быть подключен к Arduino через соответствующий преобразователь уровней сигналов, такой, как, например, 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 - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных;
- command - команда протокола Megatec;
- fieldNumber - номер поля, в ответе UPS, которое должно быть возвращено пользователю;
Действие: на подключенный блок бесперебойного питания по протоколу Megatec отправляется запрос или команда.
Возвращаемое значение: возвращается значение метрики из поля fieldNumber ответа, возвращенного UPS. В случае возникновения ошибки приемо-передачи - ее код, заданный в макро-определении MSG_DEVICE_ERROR_TIMEOUT.
Примечание: взаимодействие с устройствами, работающими по шине UART, реализовано с помощью технологии SoftSerial, в связи с чем rxPin / txPin не обязательно должны быть отнесены к аппаратному UART Arduino.
Примечание: блок бесперебойного питания должен быть подключен к Arduino через соответствующий преобразователь уровней сигналов, такой, как, например, MAX232.
Примечание: команды протокола Megatec могут быть найдены на странице networkupstools - Megatec Protocol information. Допускается использование шестнадцатеричной формы (с префиксом 0x) для параметра command.
zabbix_get -s 192.168.0.1 -k "ups.megatec[2,3,Q1,0]"
208.4
**возвращается значение поля I/P voltage из ответа на команду Q1**
- rxPin - цифровое обозначение пина (входа) приема данных;
- txPin - цифровое обозначение пина (выхода) передачи данных;
- 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 линии премопередачи должны быть согласованы с помощью соответствующих схем.
Примечание: Обратите внимание на то, что аппаратные выводы RX/TX микроконтроллера в Arduino имеют ограничительные резисторы величиной 1кОм. Видится разумным применение таких же мер защиты для иных выводов, используемых для соединения с устройством PZEM-004.
Примечание: Допускается параллельное подключение нескольких устройств 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
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- cellAddress - адрес начальной ячейки;
- data - данные, записываемые в EEPROM, задаются в шестнадцатеричной форме.
Возвращаемое значение: при удачном выполнении - '1', в противном случае - '0'.
Действие: в EEPROM, подключенный по шине I2C, начиная с cellAddress записываются данные, полученные преобразованием из строки data, записанной в шестнадцатеричной форме (с префиксом 0x). Размер строки ограничен размером внутреннего буфера (см constArgsPartSize в src/cfg_tune.h).
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "AT24CXX.write[18,19,0x56,1,0x12 13 23 10 14 02 A8]"
1
- sdaPin - цифровое обозначение пина SDA шины I2C;
- sclPin - цифровое обозначение пина SCL шины I2C;
- i2cAddress - I2C адрес устройства;
- cellAddress - адрес начальной ячейки;
- numCells - количество считываемых ячеек (байт).
Возвращаемое значение: при удачном выполнении - строка данных в шестнадцатеричной форме, в противном случае - '0'.
Действие: из EEPROM, подключенного по шине I2C, начиная с cellAddress считываются numCells байт данных, которые затем возвращаются пользователю в виде строки в шестнадцатеричной форме (с префиксом 0x).
Примечание: взаимодействие с устройствами, работающими по шине I2C, реализовано с помощью технологии SoftwareWire, в связи с чем sdaPin / sclPin не обязательно должны быть отнесены к аппаратному I2C интерфейсу Arduino.
zabbix_get -s 192.168.0.1 -k "AT24CXX.read[18,19,0x56,1,7]"
0x121323101402A8
Zabbuino не имеет никаких отличий от стандартного агента Zabbix в вопросе интеграции с системой мониторинга при соблюдении всех оговоренных ранее принципов взаимодействия:
- имена команд Zabbuino являются именами ключей агента Zabbix;
- запросы должны быть разнесены во времени насколько это возможно;
- значения метрик не должны запрашиваться с избыточной частотой;
- таймауты ожидания обработки сетевого соединения в настройках Zabbix-сервера и, возможно, операционной системы, должны быть увеличены при возникновении отвергнутых Zabbuino соединений.
Внимание Zabbuino не поддерживает режим Zabbix agent (active).
Подробную инструкцию по настройке элементов данных, триггеров и других компонентов Zabbix можно найти в официальной документации.
Для небольших инсталляций не требующих активных действий, основанных на значениях метрик датчиков, необязательно использовать полноценную систему мониторинга. Zabbix вполне может быть заменен несколькими легковесными shell-сценариями, взаимодействующими с RRDTool и выполняющимися на одноплатном компьютере типа Raspberry Pi, Orange Pi и т.п.
Пример обновления предварительно созданной RRD для хранения параметров окружающей среды в спальной комнате. Данный сценарий необходимо периодически вызывать, например, с помощью cron.
#!/bin/bash
# Получаем температуру с датчика DHT22, подключенного к пину D6
BEDROOM_HUMIDITY = `echo "DHT.Humidity[6,22]" | nc -w 2 192.168.0.1 10050 | tr -d '\r\n'`
# Интервал между запросами к DHT не должен быть короче, чем 1-2 сек.
# Поэтому между двумя запросами к DHT опросим сенсор освещения
BEDROOM_LIGHT = `echo "BH1750.light[4,5,0x23,0x10]" | nc -w 2 192.168.0.1 10050 | tr -d '\r\n'`
# Получаем температуру с DHT22
BEDROOM_TEMPERATURE = `echo "DHT.Temperature[6,22]" | nc -w 2 192.168.0.1 10050 | tr -d '\r\n'`
# Запись значений в базу данных
rrdtool update stat_bedroom.rrd N:${BEDROOM_HUMIDITY}:${BEDROOM_TEMPERATURE}:${BEDROOM_LIGHT}
Данная информация выводится при запуске устройства через UART порт. Вывод отладочных сообщений любой подробности должен быть активирован.