Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Categories:

USB-HID релюшка

В целях простейшего управления небольшими нагрузками в сети ~220В, чтобы в очередной раз не городить самопальную розетку в случае, когда нет нужды заморачиваться с измерением тока или защитой релюшек симисторами, решил купить на али простую розетку на два канала. Предварительно погуглив, нашел, что под линукс есть как минимум два варианта управления ею, т.е. ломать протокол, как в случае HSFW, не придется.
Конечно, китайцы — те еще кадры! Вот зачем, спрашивается, нужно было городить HID, если CDC намного удобней? Был бы этот релюшкомодуль на CDC, можно было бы сразу воткнуть его и работать. Но нет, нужно пиликать какую-нибудь простецкую утилиту.
А еще забавно, что здесь "тинька" используется: не лень же было кому-то софтовый USB пилить для нее! Странно, что не поставили какой-нибудь дешевый CH554. Опять в лужу сели китайцы, которые вроде как везде пытаются сэкономить!

Мне не понравилось, что в обоих вариантах с гитхаба было довольно-таки много лишнего, да и использовались всякие сторонние библиотеки вроде libhidapi (пришлось ставить ее исключительно для того, чтобы эти финтифлюшки проверить). Поэтому, взяв за основу простейший пример работы с HID из ядра, а в качестве протокола расковыряв вот это, сделал наипростейшую управлялку модулем реле. Единственная библиотека, от которой зависит эта утилитка — мои usefull_macros (добавил только для разбора командной строки), но при желании можно и это выкинуть, разбирая стандартным getopt_long вручную.
Ключи:
-d — имя устройства (/dev/hidrawX), его нужно вводить ручками (можно, в принципе, поиск сделать, пробегаясь по всем /dev/hidrawXX, пока не кончится нумерация);
-h - help;
-q - пресечь лишний вывод на терминал;
-r - выключить данный канал (можно указывать несколько этих ключей подряд, по одному на каждый канал);
-s - включить данный канал (аналогично).

Скажем, чтобы в моем двухрелюшечном модуле включить обе релюхи, нужно написать: ./relay_manage -d /dev/hidraw4 -s1 -s2.
Без ключа -q выводится всякая информация, скажем, для вышеупомянутой команды будет:
Raw Name: www.dcttech.com USBRelay2

N relays = 2
RESET: 1

RESET: 2

Relay serial: HW343
Relay0=0
Relay1=0

Тут где-то навставлял лишних пробелов, но лень уже в исходники лезть и коммит делать.
Забавно, что этот модуль сразу после включения идентифицирует себя как "HURTM", однако, буквально со второго обращения его "серийник" уже "HW343" ☺
Никому нельзя верить! А разработчики вышеупомянутых утилит предлагают по "серийнику" к релюшкам обращаться (если их несколько подключено).
Tags: c, железяки
Subscribe

  • Липовые STM32F303CBT6

    Купили недавно на али на работу десяток вышеупомянутых МК (причем, недешево: около 600р за штучку при красной цене в 200р!). И вот, сижу, на своей…

  • А еще "пони экспресс" сливает данные!

    Вот уже второй день на мой мегафоновский номер (который является резервным и используется лишь для того, чтобы можно было мне дозвониться, когда я на…

  • И о "пони экспресс"

    В июне для ремонта вакуумного поста заказал датчик Пирани и блок питания. В районе 20 числа посылочку отправили "Пони экспресс", отдав за доставку аж…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 12 comments

  • Липовые STM32F303CBT6

    Купили недавно на али на работу десяток вышеупомянутых МК (причем, недешево: около 600р за штучку при красной цене в 200р!). И вот, сижу, на своей…

  • А еще "пони экспресс" сливает данные!

    Вот уже второй день на мой мегафоновский номер (который является резервным и используется лишь для того, чтобы можно было мне дозвониться, когда я на…

  • И о "пони экспресс"

    В июне для ремонта вакуумного поста заказал датчик Пирани и блок питания. В районе 20 числа посылочку отправили "Пони экспресс", отдав за доставку аж…