0
Beantwoord
GPIO Raspberry Pi3
Добрый день.
Интересует возможность чтения портов GPIO в проекте сервера.
По этому обсуждению понял как устанавливать порты в нужное значение, но как быть с чтением? В примере тип драйвера указан как IR.DEVICE_CUSTOM_STREAM, опять же не нашел информации по этому типу.
Customer support service by UserEcho
Добрый день.
В проекте есть событие EVENT_RECEIVE_DATA. там будет текущее значение.
TestGPIO.sirpz
Приветствую.
Это событие инициируется только при инициализации драйвера?
Если драйвер создался, то он будет считывать файл в цикле. EVENT_RECEIVE_DATA сработает если файл изменится.
что-то у меня так не работает... считывает только один раз и потом файл меняется, но не в цикле не считывается ни при изменении...
Добрый день.
Дело в правах.
Попробуйте создать не скриптом, а руками:
sudo su
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
Затем что-нибудь отправьте туда:echo 1 > /sys/class/gpio/gpio17/value
Этот код:
IR.AddListener(IR.EVENT_START,0,function(){
выведет в лог полученное значение.device = IR.CreateDevice(IR.DEVICE_CUSTOM_STREAM, "RPI_GPIO", {FileName:'/sys/class/gpio/gpio17/value'});
IR.AddListener(IR.EVENT_ONLINE, device, function()
{
IR.Log("ONLINE");
});
IR.AddListener(IR.EVENT_RECEIVE_TEXT, device, function(text)
{
IR.Log('received text = ' + text);
});
});
Проверить в консоли текущее значение:
cat /sys/class/gpio/gpio17/value
Значение будет совпадать с тем, что получил драйвер в Иридиум.
Столкнулся с такой же проблемой:
Raspberry Pi 3 Model B+
Raspbian Buster Lite (по ссылке из wiki)
Порты инициализурую shell скриптом с sudo правами, при загрузке RPi.
Управляется без проблем.
Но, IR.EVENT_RECEIVE_TEXT и EVENT_RECEIVE_DATA срабатывают только один раз при инициализации драйвера.
Подскажите, в какую сторону ещё можно копнуть.
Добрый день.
Мы проверили на версии Raspberry 3B с Jessie.
При отправке из shell слушатель с EVENT_RECEIVE_TEXT и EVENT_RECEIVE_DATA отслеживает данные:
Аналогично работает и на 3B+ с Buster. Убедитесь, что пин настроен как out.
Проверил. Согласен. При отправке данных из shell слушатель работает.
Я, просто, управлял из проекта. И в проекте же хотел получить данные.
Отсюда 2 вопроса:
1. Т.е., если управлять пинами через проект, то слушатель и не должен работать?
2. Пины direction in слушать не получится?
Отправку из проекта мы проверяем в данный момент. Решение предложим в этом обсуждении чуть позже.
Пины in записать не получится. Можете проверить из shell - увидите результат (нет прав). При попытке записать из iRidium Server будет то же самое.
Я не хочу писать пины in - я хочу навесить туда датчики и слушать.
Но, событие отрабатывает только один раз при старте системы.
т.е. меняю сосотояние пина in - перезапускаю проект - состояние считывается, но дальше, сколько не меняй - тишина.
Добрый день.
Приложите ваш проект. Можете перед этим удалить из него всё, что не связано с пинами.
Серверный проект:
PB_ShowRoom (Server).sirpz
Shell скрипт инициализации портов:
start
Выполняется при загрузке (пробовал и с sudo и без).
Добрый день.
Исправление в работе. Сообщим по готовности.
Сможете сориентировать по срокам?
Добрый день.
Изменения запланированы на следующий после 1.3.19 релиз.
Мы сообщим, когда будет готово.
Изменения доступны в релизе 1.3.22.
Можно попросить пример слушателя. В веб интерфейс в system-gpio вижу, что считывает состояние, а забрать в проект никак не получается.
Добрый день.
Пример (проверялось на версии 1.3.24):
Результат выполнения команд приходит на пин. Посмотреть в shell можно через:
Результат выполнения команды из shell также видит iRidium Server (выделено на скриншоте).
GPIO_RPI.sirpz
Добрый день! Оно работает только в случае если GPIO назначен как выход, а если как ВХОД, то данные при изменении файла не приходят!!!! Проверьте пожалуйста этот момент!!!
И в добавок слушатель принимает значения только в случае изменения состоянии из иридиума, и более никак