zbx-sadman / zabbuino

Zabbix agent for Arduino
92 stars 14 forks source link

Явное указание пина не требуется? #5

Closed RealVaVa closed 7 years ago

RealVaVa commented 7 years ago

Правильно ли я понял, что при настройке Zabbuino явного задания пина для датчика не требуется, достаточно просто выставить его в положение INPUT в базовой настройке? Например, я хочу мониторить 3 датчика DHT11, цепляю и[ на A0, A1 и А2, ставлю им значение B11110000 в разделе port_mode, и всё?

zbx-sadman commented 7 years ago

Нет. Строго говоря - пин в запросе нужен всегда, так как нет никакой возможности отличить DHT11 от DS18B20. На текущий момент исключение составляют команды I2C, с номерами пинов которых разбирается библиотека Wire. Но и тут указание пинов рекомендовано, так как планируется интегрировать в Zabuino SoftTWI,

Массивы _portmode и _portpullup задают состояние пинов, в которые они должны быть приведены перед тем, как начать обслуживание сетевых запросов. Это сделано для того, чтобы после включения, например, не дожидаясь команды извне, щелкнуть релюшкой, подавая питание на какой-нибудь индикатор или исполнительный механизм.

Ну и, конечно, если есть планы по использованию аналоговых входов в качестве цифровых выходов - лучше их перевести сразу в этот режим, хотя, в принципе, большинство функций сами выставляют нужные режимы перед считыванием, но всегда есть нюансы. Например, тот же DHT требует держать пин в состоянии OUTPUT+HIGH где-то полсекунды перед тем, как начинать обмен данными. Т.е. первое считывание будет происходить чуть дольше, если пины не были ранее проинициализированы соответствующим образом. Однако, с другой стороны, это особо не скажется на общем быстродействии.

zbx-sadman commented 7 years ago

Наверное я отвечал на какой-то другой вопрос.

Вобщем, так: на этапе компиляции прошивки пины к датчикам привязывать нет необходимости, Zabbuino будет пытаться работать с пином (пинами), переданными в запросе.

Конкретно для DHT - лучше всего выставить режим для планируемых для подключения пинов в OUTPUT (мало ли чего там на вывод прилетит).

RealVaVa commented 7 years ago

Да, вопрос был про этап компиляции. Спасибо. Я предполагал, что если на момент запроса явно указываются пины и модели датчиков, то в конфиг их вписывать не требуется, но хотел удостовериться. А вот про OUTPUT даже не догадался бы, за что ещё одно "спасибо". Я думал, что если данные получаются откуда-то, то они должны приходить на вход (INPUT) Arduino. Но, полагаю, это мои прорехи в скудных знаниях.