суббота, 17 июня 2017 г.

Концевик по Ethernet без МК? Легко


В предыдущих наших выпусках вы узнали как превратить микрофонный вход в датчик температуры [1], как передать нажатия кнопки по Bluetooth без использования МК путем генерации импульсов на UART over HC-хх или Bluetooth-гарнитуры [2], как отследить состояние концевика на микрофонном входе и даже как превратить аудиокарту в многофункциональный измеритель комплексного импенданса и получения значений RLC цепей без мультиметра [3]. Напомним, что мы даже сделали из аудиокарты генератор случайных чисел [4], используя шумящие биты АЦП. А сегодня покажем, как подключить концевик по Ethernet. Да-да, вы не ослышались, простую кнопку можно отследить по сети без задействования LAN контроллера на ее конце. Данный способ подойдет, если в вашем удаленном коммутаторе остался хотя бы один свободный порт. Так можно отслеживать, например, состояние двери шкафа автоматики, не забыли ли его закрыть КИПовцы. Предлагаемое решение не является панацеей и целесообразно при необходимости неспешного мониторинга состояния какого-либо дискретного канала при минимуме затрат.

Предпосылки реализации...

Вы наверняка знаете, что многие роутеры-коммутаторы имеют возможность отслеживания* состояния порта – подключен ли кабель или отключен. Это визуализируется аппаратно светодиодными индикаторами и даже на мнемонической схеме состояний портов в некоторых роутерах в WEB-интерфейсе:

* Функцией VCT Info (Virtual Cable Tester) для отслеживания Link Status - снабжены практически все роутеры/маршрутизаторы D-Link (даже в модели начального уровня DIR-100), некоторые TP-Link и Cisco.
Все дело в так называемом механизме тестирования ЛС для проверки соединения и последующего согласования. В стандарте 10Base-T при отсутствии сетевого трафика раз в 16 мс отсылается один 100нс импульс (Normal Link Pulse - NLP), в Fast Ethernet уже идет фрейм из 33 чередующихся импульсов тактов и DATA. Для сохранения обратной совместимости фрейм идет тоже раз в 16 мс с той длительностью для каждого импульса.


Если мы подключим концевик, скажем на TX- & RX-, а TX+ на RX+ через импульсный или ВЧ диод, то он Link-импульсы пропустит, но не пропустит DATA, тем самым мы избежим коллизии. В имеющемся куске UTP кабеля использованы пины: 1 (TX+), 2 (TX-), 3 (RX+) и 6 (RX-) и кнопка, имитирующая концевик. Можно написать скрипт на Python, PHP [5],  залезть в WEB-интерфейс роутера и получить состояние порта.

Функция VCT в роутере


Benchmark KEY.ETH (для сетевой карты)

В случае локальной сетевой карты все даже проще – используя Internet Protocol Helper API interface был набросан примитивный бенчмарк мониторинга состояния Lanstate [6]. Отслеживание отключения (разрыва) производится мгновенно, скорость обнаружения подключения обусловлена настройками сетевухи в вашей ОС:



Ресурсы по тематике
  1. Микрофонный вход как датчик температуры или кнопка
  2. Блютуз-гарнитура в домашней автоматизации
  3. Измеритель RLC из 6 деталей на базе звуковой карты (лайфхак) 
  4. Аппаратно-программный ГСЧ (генератор случайных чисел) из аудиокарты
  5. Пример мониторинга для коммутатора DES-3052 на PHP
  6. Benchmark KEY.ETH для локальной сетевой карты (альтернативная ссылка)

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.