Меню сайта
Категории раздела
Борьба с запахом [6]
Средства и устройства для борьбы с запахом и очистки воздуха.
Материалы, инструменты и оборудование [20]
Расходники, инструменты, приспособления и материалы, которые могу быть полезны для сооружения гроубокса.
Источники CO2 [9]
Углекислый газ необходим растениям для фотосинтеза, помогает растениям расти быстрее и потенциально дать больший урожай.
Гидропоника/Аэропоника [4]
Вода/воздух в качестве субстрата
Полив [5]
Ирригационные системы
Контроль [16]
Системы мониторинга
Освещение [11]
Источники света для растений
Гроубоксы [12]
Помещения для выращивания
Субстраты [11]
Среды для выращивания
Удобрения [9]
Средства для улучшения урожая
Электроника [47]
Софт [1]
Полезные советы [6]
Выращивание грибов [15]
Саморазвитие и бизнес [2]
Гроурепорты [1]
Статистика

Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа
Главная » Статьи » Электроника

SNMP и arduino
Для того, чтобы настроить мониторинг по SNMP используя arduino, можно воспользоваться бесплатной библиотекой agentuino. Официальная страница проекта находится здесь. Информация берется с сайта https://code.google.com/p/agentuino/

В актуальной на момент написания статьи (февраль 2014) Arduino IDE v1.0.5 нет самой библиотеки Agentuino Library (скачать можно тут или с оф.сайта: http://agentuino.googlecode.com/svn/trunk/) и некоторых дополнительных библиотек необходимых для реализации SNMP протокола, а именно:
1. Streaming Library ( http://arduiniana.org/libraries/streaming/ );
2. Flash Library ( http://arduiniana.org/libraries/flash/ );
3. MemoryFree Library ( http://www.arduino.cc/playground/Code/AvailableMemory );

их надо скачать и установить.


На этой странице можно скачать пример стандартного скетча (Agent.pde), а здесь чувак дополнил свой скетч для SNMP мониторинга.

В коде желательно если используете
Ethernet.begin вместо Ethernet.begin(mac, ip) использовать Ethernet.begin(mac, ip, subnet, gateway). Это избавит от возможно ситуации когда вдруг слетит gateway.

Он всего навсего добавил свой OID:

// custom OIDs
static char AnalogPin0[] PROGMEM   = "1.3.6.1.3.2009.0.3.0";  // Analog pin 0 Level (0-1023)


Что означает что сейчас есть OID "1.3.6.1.3.2009.0.3.0".

В разделе void loop он добавил строки которые вычисляют эту самую температуру:

float temperature = getTemperature(temperaturePin);
  v_AnalogPin0 = (temperature-.5) * 10000; // correct for offset and 10mv per degree

теперь в переменной
v_AnalogPin0 хранится значение температуры.

И добавил строки:

else if ( strcmp_P(oid, AnalogPin0 ) == 0 ) // Analog Pin 0 Level request
    {
      // handle sysName (set/get) requests
      if ( pdu.type == SNMP_PDU_SET )
      {
        // response packet from set-request - object is read-only
        pdu.type = SNMP_PDU_RESPONSE;
        pdu.error = SNMP_ERR_READ_ONLY;
      }
      else
      {
        // response packet from get-request - AnalogPin0
        status = pdu.VALUE.encode(SNMP_SYNTAX_INT32, v_AnalogPin0);
        pdu.type = SNMP_PDU_RESPONSE;
        pdu.error = status;
      }
      Serial << "v_AnalogPin0..." << v_AnalogPin0 << " " << pdu.VALUE.size << endl;
    } 

которые как раз таки и отвечают за передачу данных от OID.

Временный скетч для проверки.
Категория: Электроника | Добавил: kimih (2014-02-10)
Просмотров: 6221 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Реклама