Site Loader

Простой КВ приемник на радиолюбительские диапазоны (5 транзисторов КТ315)

Начинающему радиолюбителю — коротковолновику, на первом этапе, требуется КВ-радиоприёмник, при помощи которого можно наблюдать за работой других радиолюбителей. Желательно, чтобы это было очень простое устройство, выполненное на самой доступной элементной базе, простое в настройке, но обеспечивающее неплохие характеристики.

Описываемый в данной статье приемник как раз из таких. Он выполнен по очень простой схеме на самой доступной, на сегодняшний день, элементной базе. Приемник построен по схеме прямого преобразования. Он принимает телеграфные и телефонные радиолюбительские станции (CW и SSB).

Приемник, в принципе, может работать в любом из радиолюбительских КВ-диапазонов, — все зависит от параметров входного и гетеродинного контура. В статье приводятся данные этих контуров для диапазонов 160М, 80М и 40М. На других диапазонах приемник не испытывался.

Принципиальная схема приемника

Чувствительность приемника около 8 mkV, работает он на несогласованную антенну, представляющую собой отрезок монтажного провода, протянутый по диагонали комнаты под потолком. Роль заземления выполняет труба водопроводной или отопительной системы дома. К трубе при помощи металлического хомута крепится контакт, провод от этого контакта подключается к клемме Х4, а снижение антенны — к Х1.

Принципиальная схема показана на рисунке 1. Входной сигнал выделяется контуром L1-С1, который настроен на середину принимаемого диапазона. Далее сигнал поступает на смеситель, выполненный на двух транзисторах VT1 и VT2, в диодном включении, включенных встречно-параллельно.

Напряжение гетеродина подается на смеситель через конденсатор С2 от гетеродина выполненного на транзисторе /Т5. Гетеродин работает на частоте в два раза ниже частоты входного сигнала.

Рис.1. Принципиальная схема КВ приемника на пяти транзисторах КТ315.

На выходе смесителя, в точке подключения С2 образуется продукт пребразования, — сигнал разности входной частоты и удвоенной частоты гетеродина. Поскольку, величина частоты этого сигнала не должна быть более 3 кГц, то после смесителя включен ФНЧ на дросселе L2 и конденсаторе С3, подавляющий сигналы частотой выше 3 кГц.

Благодаря этому достигается высокая избирательность приемника и возможность приема CW и SSB. Сигналы AM и FM практически не принимаются, но это к не нужно, так как в любительских диапазонах, в основном используются CW и SSB.

Выделенный НЧ сигнал поступает на двухкаскадный низкочастотный усилитель на VT3 и VT4, на выходе которого включаются высокоомные головные электромагнитные телефоны типа «ТОН-2». Низкоомные динамические телефоны можно подключать только через переходной трансформатор, например, от однопрограммной радиотрансляционной точки.

Если параллельно С7 включить резистор сопротивлением 1-2 кОм, то сигнал с коллектора VT4 через конденсатор емкостью 0,1-10 мкФ можно подать на вход любого УНЧ с динамиком и регулятором громкости. Тогда будет возможно громкоговорящее прослушивание. Напряжение питания гетеродина стабилизировано стабилитроном VD1.

Детали и конструкция

В приемнике можно использовать разные переменные конденсаторы, например, с перестройкой емкости 10-495 пф, 5-240 пФ или 7-180 пФ. Желательно чтобы это были конденсаторы с воздушным диэлектриком, но можно и с твердым.

Для намотки контурных катушек используются каркасы диаметром 8 мм с резьбовыми подстроечными сердечниками из карбонильного железа. Заготовкой для каркасов служат каркасы контуров ПЧ старых ламповых или лампово-полупроводниковых телевизоров (УЛТ, УНТ, УЛППТ и др.). Каркасы разбираются, разматываются и от них отпиливается цилиндрическая часть по длине 30 мм.

Каркасы устанавливаются в отверстия в печатной плате приемника и фиксируются там густым эпоксидным клеем клеем. Схематическое изображение каркаса с катушкой и способ его крепления приводится на рисунке 2.

Рис.2. Конструкции и крепление катушек.

На этом же рисунке показан способ крепления катушки L2, выполненной на ферритовом кольце. Эта катушка тоже крепится через отверстие в плате, но посредством винта М3 с гайкой, который вставляется в отверстие кольца. Под винт подкладывается изоляционная шайба.

Рис.3. Печатная плата КВ приемника на транзисторах Кт315.

Рис. 4. Расположение деталей на плате КВ приемника.

Теперь намоточные данные. Как уже отмечалось выше, намоточные данные приводятся для трех диапазонов (см. таблицу). Кроме намоточных данных приводится для трех диапазонов и данные емкостей С1, С9, С8.

Кроме того, емкость С8 приводятся для разных переменных конденсаторов. Если имеющийся в вашем распоряжении переменный конденсатор не такой емкости, как указано в таблице (10-495, 5-240 или 7-180), то выбирайте данные по наиболее близкой максимальной емкости. Например, если есть конденсатор 7-270 пФ, то берите данные емкости для переменного конденсатора 5-240 пф.

Намотка катушек L1 и L3 выполняется виток к витку, проводом ПЭВ 0,12. Фиксируются обмотки каплями расплавленного парафина (от свечки).

Катушка L2 — намотана на ферритовом кольце диаметром 10-20 мм, она содержит 200 витков, намотанных в навал, но равномерно. Катушку L2 можно намотать и на другом сердечнике, например, на СБ.

В этом случае, её наматывают на каркасе СБ и затем помещают его внутрь броневых чашек СБ. Чашки склеивают эпоксидным клеем, им же клеят катушку к плате.

Конденсаторы С1, С8, С9, С11, С12, С13 должны быть керамическими, трубчатыми или дисковыми. Если это импортные дисковые конденсаторы, то нужно знать как обозначается их емкость, — первые две цифры обозначают емкость, а третья — множитель. Множитель обозначается цифрами 1, 2, 3, 4.

Если 1 = х10, 2 = х100, 3 = х1000, 4 = Х10000.

Например, «47» — 47 пф, «471» — 470 пф, ”472″ -4700 пф, «473” — 47000 пф (0,047т), ”474» — 0,47m.

Печатная плата сделана из фольгированного стеклотекстолита. Расположение печатных дорожек только с одной стороны. Рисунок дорожек и монтажная схема приводятся на рисунках 3 и 4.

 

160М

80М

40М

L1

10+39 вит.

8+25 вит.

6+14 вит.

L3

38+72 вит.

25+48 вит.

15+30 вит.

C1

68 p

36 p

20 p

C9

100 p

75 p

56 p

10-495p

C8

27 p

24 p

20 p

5-240p

C8

30 p

27 p

22 p

7-180p

C8

33 p

30 p

24 p

Налаживание

Низкочастотный усилитель приемника, при безошибочном монтаже и исправных деталях работает сразу после первого включения. Режимы работы транзисторов VT3-VT4 устанавливаются автоматически, так что налаживания УНЧ не требуется. Поэтому, в основном, налаживание приемника заключается в налаживании гетеродина.

Сначала нужно проверить наличие генерации по наличию ВЧ напряжения на отводе катушки L3. Ток коллектора VT5 должен быть в пределах 1,5-3 мА (устанавливается резистором R4). Генерацию можно проверить по изменению этого тока при прикосновении руками к гетеродинному контуру.

Подстройкой гетеродинного контура нужно обеспечить нужное перекрытие гетеродина по частоте, на диапазоне 160 М частота гетеродина должна перестраиваться в пределах 0,9-0,99 МГц, на диапазоне 80М -1,7-1,85 МГц, на диапазоне 40М — 3,5-3,6 МГц. Проще всего это сделать измеряя частоту на отводе катушки L3 при помощи частотомера, способного измерять частоту до 4 МГц. Но можно воспользоваться и резонансным волномером или генератором ВЧ (методом биений).

Если вы пользуетесь генератором ВЧ, то можно одновременно настроить и входной контур. Полайте на вход приемника сигнал от ГВЧ (например, расположите провод, подключенный к Х1 рядом с выходным кабелем генератора).

Генератор ВЧ нужно перестраивать в пределах частот в два раза больших, чем указано выше (например, на диапазоне 160М — 1,8-1,98 МГц), а контур гетеродина подстроить так, чтобы при соответствующем положении C10 в телефонах прослушивался звук частотой около 0,5-1 кГц. Затем, настройте генератор на центральную частоту диапазона, настройте на неё приемник и подстройте контур L1-С1 по максимальной чувствительности приемника. По тому же генератору откалибруйте шкалу приемника.

Откалибровать шкалу приемника можно и по частотомеру, измеряя частоту на отводе L3 и умножая показания частотомера на 2. При отсутствии генератора ВЧ входной контур можно настроить принимая сигнал радиолюбительской станции, работающей ближе к середине диапазона.

В процессе настройки контуров может потребоваться небольшая корректировка числа витков катушек L1 и L3 или емкостей С1 и С9.

Андреев С.

ЗАОЧНАЯ ШКОЛА РАДИОЭЛЕКТРОНИКИ Простой КВ-приемник . Юный техник, 2011 № 03

Интереснее всего сделать KB-радиоприемник своими руками, и пусть он для начала уступит по некоторым параметрам фабричным, но лиха беда начало! Следующие ваши радиоприемники, несомненно, будут намного лучше. Какую схему выбрать? Супергетеродин довольно сложен, и вряд ли следует начинать с его постройки. Приемники прямого усиления проще, но у них на КВ маловата избирательность. Простой приемник должен быть одноконтурным, поскольку даже два контура одновременно перестраивать по частоте сложно — нужно использовать многосекционные конденсаторы переменной емкости (КПЕ) и много труда потратить на сопряжение настроек.

Тем не менее, полоса пропускания приемника В, даже многоконтурного, все равно остается на КВ широкой. Для колебательного контура В = f/Q, где Q — добротность контура, она зависит от качества катушки, и ее трудно сделать более 100…200. Тогда на частоте, скажем, 10 МГц полоса пропускания получается как минимум 50 кГц. Это слишком много, ведь сетка частот радиостанций на КВ регламентом связи и вещания принята равной 5 кГц. Принимать одновременно до десятка станций неинтересно. Выход один — надо повысить добротность контура с помощью регенерации.

В радиолюбительской литературе описано довольно много регенеративных KB-приемников, выполненных как на лампах, так и на транзисторах и интегральных микросхемах. Схема одного из самых простых КВ-регенераторов, разработанная автором еще в 80-е годы, показана на рисунке 1.

Первый регенеративный каскад выполнен на транзисторе VT1, работающем в так называемом «барьерном» режиме, когда потенциалы коллектора и базы равны. В данном случае база и коллектор по постоянному току соединены через катушку L1 с общим проводом. Питание подается на эмиттер через токоограничивающие резисторы R1 и R2. В таком режиме высокочастотные кремниевые транзисторы способны усиливать сигналы с амплитудой до десятых долей вольта, а больше в нашем случае и не нужно.

Колебательный контур регенератора содержит катушку L1 и конденсаторы С2, СЗ. Антенна слабо связана с контуром (для уменьшения ее влияния на частоту настройки) через конденсатор С1. Обратная связь достигается включением небольшой (1/3… 1/4) части витков катушки в цепь базы. Как видим, схема каскада со впадает со схемой генератора — индуктивной «трехточки» (схема Хартли). Однако регулировкой тока питания каскада (резистором R1) можно установить недовозбужденный режим, при котором генерации еще нет, но происходит регенеративное усиление сигналов, принятых антенной. В этом же каскаде амплитудно-модулированные (AM) сигналы радиовещательных станций детектируются, и в цепи питания появляется ток звуковых частот (ЗЧ). Через разделительный конденсатор С5 сигнал ЗЧ снимается для дальнейшего усиления. Конденсатор С4 замыкает высокочастотный ток на общий провод.

УЗЧ приемника выполнен на транзисторах VT2 и VT3 по схеме с непосредственной связью между каскадами. Для стабилизации режима смещение на базу первого транзистора подается из эмиттерной цепи второго, для чего там установлен резистор R5, зашунтированный по переменному току конденсатором С7 (ООС, снижающая усиление, здесь нам не нужна).

УЗЧ нагружен на высокоомные головные телефоны. Если подобрать для первого каскада УЗЧ-транзистор с высоким статическим коэффициентом передачи тока (Вст) из серии КТ315 или КТ3102, то общее усиление может достигать 10 000, учитывая высокое полное сопротивление телефонов. Низкоомные телефоны (от плеера, например) целесообразно подключить через понижающий трансформатор любого типа (от старых транзисторных приемников, от сетевых адаптеров и т. д.).

Коэффициент трансформации желательно выбрать 20…30. Налаживание УЗЧ сводится к подбору резистора R4 таким, чтобы напряжение на эмиттере VT3 составляло 0,7…0,9 В. То же можно сделать и по максимальной громкости и качеству звука.

Диапазон приемника определяется индуктивностью и емкостью его единственного колебательного контура. При указанных на схеме емкостях приемник будет работать в диапазоне 19 м, причем настройка получается плавной (растянутой), поскольку емкость переменного конденсатора (КПЕ) С3 намного меньше емкости постоянного конденсатора С2. Катушка наматывается проводом ПЭЛ 0,6…0,8 на каркасе диаметром 20…25 мм. Число витков — 12 с отводом от 3-го витка. Намотка ведется с шагом порядка 1… 1,5 мм. Наилучший вариант — керамический каркас (можно ребристый) и посеребренный провод без изоляции, но теперь это дефицит… В любом случае, даже с каркасом из пропарафинированной бумажной гильзы, катушка должна быть механически жесткой, а витки прочно закреплены. Можно использовать подстроечный сердечник, но обязательно из высокочастотного магнитодиэлектрика с малыми потерями (карбонильное железо, альсифер, ВЧ-феррит). НЧ-ферриты непригодны.

КПЕ связи с антенной С1 и настройки СЗ выполнены на базе воздушных подстроечных, типа КПВ. Первый содержит одну неподвижную и одну подвижную пластины, а второй — две неподвижных и одну подвижную. На месте СЗ допустимо использовать и КПЕ большей емкости, что увеличит перекрытие по частоте, но тогда понадобится верньер, потому что настройка станет слишком острой. Ось КПЕ С1 желательно надставить диэлектрической втулкой, чтобы руки меньше влияли на настройку.

Для КПЕ С2 это не столь существенно, поскольку его ротор заземлен. Годятся также миниатюрные КПЕ плавной настройки, используемые в некоторых транзисторных приемниках.

Несколько советов по конструкции приемника.

Металлическая или металлизированная передняя панель обязательна — это общий провод, или «земля» приемника. На передней панели устанавливают оба КПЕ и переменный резистор регулировки обратной связи R1. Он может быть любого типа, но желательно с плавным ходом и удобной ручкой. Ручку настройки желательно выбрать большого диаметра. Контурную катушку надо жестко закрепить рядом с КПЕ настройки С1, а остальные детали регенеративного каскада разместить около них, соединив в соответствии со схемой короткими жесткими проводниками.

Требования к монтажу УЗЧ менее жесткие, и расположение деталей не столь важно. УЗЧ допустимо выполнить как на печатной плате, так и навесным монтажом. Для питания годится любая батарея с напряжением 3…6 В или аккумулятор от сотового телефона. Потребляемый ток — менее миллиампера.

Пример конструктивного выполнения КВ-регенератора, выпускаемого за рубежом в виде набора для самостоятельной постройки радиолюбителями, под названием Scout Regen Receiver, показан на фото.

Хотя его схема намного сложнее нашей, общая идеология конструктивного исполнения понятна из фотографий. Антенной может служить любой провод, от полуметра и длиннее. Специального регулятора громкости в приемнике нет — при необходимости громкость уменьшают ослаблением связи с антенной (уменьшением емкости С1). Это улучшает и селективность приемника. Критическая точка возникновения генерации легко находится по изменению характера шума и появлению биений с несущими частотами радиостанций. Чувствительность приемника максимальна как раз вблизи критической точки. Критическая точка должна находиться примерно в среднем положении движка резистора R1. Если это не так, следует подобрать сопротивление R2.

«Вогнать» частоты настройки приемника в желаемый радиовещательный диапазон можно при прослушивании станций, изменяя число витков катушки, сжимая или растягивая всю обмотку по каркасу, или с помощью подстроенного сердечника.

При желании настроить приемник на другие диапазоны надо изменить число витков катушки пропорционально длине волны, сохранив ее геометрические размеры. Для хорошего приема на ВЧ-диапазонах 16, 13 и 11 м желательно в регенеративный каскад поставить более высокочастотный транзистор, например КТ3109, КТ363 или другой, подобный.

Хорошо выполненный конструктивно и правильно налаженный, этот приемник позволит слушать те же самые станции, что и более сложный и дорогой аппарат.

В. ПОЛЯКОВ, профессор

Как будет выглядеть базовая электронная установка самолета?

Главное, что вам нужно, это двигатель, аккумулятор, электронный регулятор скорости (ESC) и сервоприводы.

Регулятор скорости находится между аккумулятором и двигателем, а также имеет более тонкий кабель, который идет к приемнику. Провода от ESC часто маркируются, но если нет, то на одном конце будет два больших провода, которые являются входом от аккумулятора (красный для плюса, черный для минуса), и три больших провода на другом конце, которые питают двигатель. . Провода двигателя могут быть любого цвета, и не имеет большого значения, как вы их подключите. Если двигатель вращается назад, поменяйте местами любые два провода двигателя. Кабель к приемнику будет состоять из трех проводов, соединенных вместе в ленту, аналогично кабелю на сервоприводах (и с такой же вилкой)

Регулятор скорости также обеспечивает 5 В для питания приемника и сервоприводов. Все положительные и отрицательные контакты приемника соединены. Часть ESC, которая делает это, известна как BEC или «цепь выпрямителя батареи», потому что «в прошлом» вам требовалась отдельная батарея 5 В для радио.

Сервокабели имеют три провода: положительный, отрицательный и сигнальный. Положительный находится посередине, поэтому подключение наоборот не вызовет короткого замыкания. Заглушки сервоприводов довольно стандартны, хотя у некоторых есть небольшой язычок на одной стороне, чтобы предотвратить их переворачивание, но для этого требуется, чтобы в приемнике был слот для язычка (а у многих его нет, и язычки обрезаются).

Вилки сервопривода маленькие, и для их изготовления требуется специальный обжимной инструмент, поэтому они почти всегда изготавливаются за вас — и все они используют одни и те же контакты, поэтому разные марки совместимы.

Возможно, вам также понадобятся штекеры для соединения мотора и ESC, либо потому, что конструкция прокладывает провода мотора через брандмауэр, либо чтобы вы могли перемещать компоненты между моделями. Штекерные разъемы 3,5 мм здесь довольно стандартны, с вилками на двигателе (так что вы можете безопасно включать ESC без двигателя).

Если вы будете делать покупки внимательно, вы, вероятно, сможете найти ESC и двигатель со всеми соответствующими разъемами, но многие из них имеют только разъем сервопривода, либо для снижения стоимости, либо для предоставления вам большего выбора. Если он идет без штекеров, или вам нужно поменять штекер, вам нужно будет припаять.

Tiny Trainer почти способен использовать маленькие красные разъемы батареи JST, которые используют те же контакты, что и разъемы сервоприводов, но это прямо на пределе, а старые разъемы имеют тенденцию перегреваться, плавиться и замыкаться. Вилки XT30 были бы более безопасным выбором. Вилки XT60 намного больше, чем вам нужно, но это общий стандарт для зарядных устройств и более крупных моделей. Есть много других типов вилок, которые сейчас наиболее распространены.

Имейте в виду, что для таких разъемов, как штекер двигателя или штекер аккумулятора XT60, требуется паяльник большего размера, чем паяльник мощностью 20 Вт, который обычно продается для хобби-электроники. Кроме того, если вы паяете, вам понадобится термоусадочная трубка, чтобы закрыть соединение. Диаметр 5 мм подходит для разъемов двигателя XT60 и 3,5 мм. Не забудьте надеть трубку на провод, прежде чем припаивать соединение, и сдвиньте ее подальше от источников тепла, иначе она сожмется раньше, чем вы будете готовы.

Если вам посчастливилось иметь местный магазин товаров для хобби, они обычно очень помогают в поиске деталей, которые будут работать вместе. Возьмите список рекомендуемого снаряжения, и они найдут эквиваленты, и, возможно, даже сделают пайку за небольшую плату.

В магазине товаров для хобби купите несколько запасных реквизитов, рояльную проволоку для толкателей, рожки и держатели для качелей, чтобы упростить крепление толкателей, а также ремешок на липучке, чтобы удерживать батарею на месте. И зарядное устройство (с блоком питания). И несколько винтов для крепления двигателя к брандмауэру.

『无题』 » Архив блога » Приемник телеметрии от UDP+KV-GPB

В статье показывать только следующим образом (потому что легко показать как работать):

Протокол: UDP; Порт: 5234

Кодировка: KV-GPB

Для получения более подробной информации вы можете обратиться к GitHub моего коллеги, который содержит больше примеров, например GRPC.

AlexFengCisco / Telemetry_Receiver

Информация об обновлении GRPC:

Если вы используете GRPC, а не TCP/UDP, это будет иметь стандартную функцию, вам не нужно будет писать «DECODE_FN_MAP…», функция будет сгенерирована автоматически, сразу для использования. Простой список шагов:

  1. Получить протокол GRPC (например, «mdt_grpc_dialout») от cisco/bigmuddy-network-telemetry-proto
  2. Установите/используйте инструменты компиляции, предложите установить виртуальную среду python, вы можете указать 在MacOS中部署Python虚拟开发环境
 (протокол телеметрии) [[электронная почта защищена] протокол телеметрии]# python -V
Питон 3.6.8
(протокол телеметрии) [[email protected] протокол телеметрии]# easy_install pip
(протокол телеметрии) [[email protected] протокол телеметрии]# pip install grpcio
(протокол телеметрии) [[email protected] протокол телеметрии]# pip install protobuf
(протокол телеметрии) [[email protected] протокол телеметрии]# pip install grpcio_tools
(протокол телеметрии) [[email protected] протокол телеметрии]# python -m grpc_tools. protoc -I. --python_out=. --grpc_python_out=. cisco_grpc_dialout.proto
(протокол телеметрии) [[email protected] протокол телеметрии]# ls -l|grep cisco
-rw-r--r--. 1 корень корень 2695 авг. 10 16:16 cisco_grpc_dialout_pb2_grpc.py #сгенерировано
-rw-r--r--. 1 корень root 3805 10 августа 16:16 cisco_grpc_dialout_pb2.py #generated
-rw-r--r--. 1 root root 485 10 августа 16:15 cisco_grpc_dialout.proto #прото файл 
Следуйте всему файлу, если вам нужен протокол grpc:
 [[электронная почта защищена] grpc-dailout]# ls -l
всего 36
-rw-r--r--. 1 root root 2695, 10 августа, 16:16 cisco_grpc_dialout_pb2_grpc.py # Содержит класс заглушки сервера и класс заглушки клиента, а также реализуемый интерфейс службы RPC.
-rw-r--r--. 1 root root 3805 10 августа 16:16 cisco_grpc_dialout_pb2.py #классы сериализации сообщений
-rw-r--r--. 1 корень корень 484 10 августа 15:36 mdt_grpc_dialout.proto
-rw-r--r--. 1 корень root 3722 10 августа 16:11 service_grpc_dialout_no_tls.py #service python
-rw-r--r--. 1 корень корень 19220, 10 августа, 15:58 telemetry_pb2. py # декодировать сообщения gpb-kv, генерировать, как показано ниже 
grpc-dailout.zip

Установите Protobuf версии python

Подробную информацию можно найти в официальном документе Google: Основы протокольного буфера: Python и Загрузка протокольных буферов.

 [[электронная почта защищена] протокол телеметрии]# wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.4/protobuf-python-3.12.4.zip
[[электронная почта защищена] протокол телеметрии] # распаковать protobuf-python-3.12.4.zip
[[электронная почта защищена] протокол телеметрии]# cd protobuf-3.12.4/
[[электронная почта защищена] protobuf-3.12.4]# ./configure
[[электронная почта защищена] protobuf-3.12.4]# сделать
[[email protected] protobuf-3.12.4]# сделайте проверку
......
ПРОЙДИТЕ: protobuf-тест
ПРОЙДИТЕ: protobuf-ленивый-дескриптор-тест
ПРОЙДИТЕ: protobuf-lite-test
ПРОХОД: google/protobuf/compiler/zip_output_unittest.sh
ПРОЙДИТЕ: protobuf-lite-arena-test
ПРОШЕЛ: тест без предупреждений
================================================== ===========================
Сводка набора тестов для протокольных буферов 3. 12.4
================================================== ===========================
# ВСЕГО: 6
# ПРОХОД: 6
# ПРОПУСТИТЬ: 0
# СБОЙ: 0
# НЕУДАЧА: 0
# XPASS: 0
# ОШИБКА: 0
================================================== ===========================
[[email protected] protobuf-3.12.4]# make install
[[электронная почта защищена] protobuf-3.12.4]# cd ./python/
[[email protected] python]# сборка python3 setup.py
[[email protected] python]# тест python3 setup.py
[[email protected] python]# установка python3 setup.py
[[электронная почта защищена] python]# протокол --version
либпроток 3.12.4 

Компилировать прото-файл

В примере показывать только KV-GPB, поэтому требуется только 1 прото-файл (telemetry.proto) для всех путей датчика, если вы используете GPB для кодирования, для каждого пути датчика требуется 1 прото-файл. Файл XR Proto скачать по официальной ссылке: cisco/bigmuddy-network-telemetry-proto

 [[email protected] telemetry-protocol]# protoc -I=./ --python_out=. / ./telemetry.proto
[[электронная почта защищена] протокол телеметрии]# ls -l
всего 6340
drwxr-xr-x. 13 корень корень 4096 авг 9 15:58 protobuf-3.12.4
-rw-r--r--. 1 корень root 6100223 29 июля 07:58 protobuf-python-3.12.4.zip
-rw-r--r--. 1 корень корень 7493 9 августа 15:34 telemetry_server_udp_gpb-kv.py
-rw-r--r--. 1 корень корень 19220 9 августа 16:28 telemetry_pb2.py <<<
-rw-r--r--. 1 корень корень 8187 9 авг 16:27 телеметрия.прото
-rw-r--r--. 1 tcpdump tcpdump 344548 9 августа 15:15 telemetry-udp.pcap 

Конфигурация телеметрии на XR

Как получить путь датчика, см. мой последний блог: Как получить путь датчика телеметрии для команды show cmd на IOS XR?

 модель телеметрии
 NMS группы назначения
  семейство адресов ipv4 10.75.37.91 порт 5432
   кодирование с самоописанием-gpb
   протокол udp
  !
 !
 интерфейс сенсорной группы
  путь датчика Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface[interface-name='GigabitEthernet0/0/0/1']
 !
 подписка
  строгий таймер интерфейса Sensor-Group-ID
  Интервал выборки интерфейса идентификатора группы датчиков 20000
  NMS-идентификатор назначения
  исходный интерфейс GigabitEthernet0/0/0/2
 !
! 

UDP-сервер телеметрии от Python

Источник: AlexFengCisco / Telemetry_Receiver

 [[email protected] протокол телеметрии]# more telemetry_server_udp_gpb-kv. py
'''
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
     | ТИП глутамата натрия | КОДИРОВАНИЕ_ТИП |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
     | MSG_ВЕРСИЯ | ФЛАГИ |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
     | MSG_LENGTH |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
     ~ ~
     ~ ПОЛЕЗНАЯ НАГРУЗКА (MSG_LENGTH байт) ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
     ТИП СООБЩЕНИЯ (2 байта) = 1 (для MDT)
     ENCODING_TYPE (2 байта) = 1 (GPB), 2 (JSON)
     MSG_VERSION (2 байта) = 1
     ФЛАГИ (2 байта) = 0
     MSG_LENGTH (4 байта)
'''
импортировать сокет, структуру
импортировать json
из google.protobuf.descriptor импортировать FieldDescriptor
время импорта
импорт pprint
импортировать телеметрию_pb2
из google.protobuf.json_format импортировать MessageToJson
DECODE_FN_MAP = {
    FieldDescriptor.TYPE_DOUBLE: с плавающей запятой,
    FieldDescriptor. TYPE_FLOAT: с плавающей запятой,
    FieldDescriptor.TYPE_INT32: целое,
    FieldDescriptor.TYPE_INT64: целое, #long
    FieldDescriptor.TYPE_UINT32: целое,
    FieldDescriptor.TYPE_UINT64: int,#long
    FieldDescriptor.TYPE_SINT32: целое,
    FieldDescriptor.TYPE_SINT64: int,#long
    FieldDescriptor.TYPE_FIXED32: целое,
    FieldDescriptor.TYPE_FIXED64: int,#long
    FieldDescriptor.TYPE_SFIXED32: целое,
    FieldDescriptor.TYPE_SFIXED64: int,#long
    FieldDescriptor.TYPE_BOOL: логическое значение,
    FieldDescriptor.TYPE_STRING: ул,
    FieldDescriptor.TYPE_BYTES: байты,#лямбда b: байты_в_строку(b),
    FieldDescriptor.TYPE_ENUM: целое,
}
def field_type_to_fn (сообщение, поле):
    если field.type == FieldDescriptor.TYPE_MESSAGE:
        # Для встроенных сообщений рекурсивно вызовите эту функцию. Если это
        # повторяющееся поле возвращает список
        результат = лямбда сообщение: proto_to_dict(msg)
    elif field.type в DECODE_FN_MAP:
        результат = DECODE_FN_MAP[field. type]
    еще:
        поднять TypeError("Поле %s.%s имеет нераспознанный идентификатор типа %d" % (
                         msg.__class__.__name__, field.name, field.type))
    вернуть результат
определение proto_to_dict (msg):
    результат_дикт = {}
    расширения = {}
    для поля значение в msg.ListFields():
        convert_fn = field_type_to_fn (сообщение, поле)
        # Пропустить расширения
        если не field.is_extension:
            # Повторяющиеся поля приводят к массиву, в противном случае просто вызовите
            # функция преобразования для сохранения значения
            если field.label == FieldDescriptor.LABEL_REPATED:
                result_dict[field.name] = [conversion_fn(v) для v в значении]
            еще:
                result_dict[field.name] = convert_fn(значение)
    вернуть результат_дикт
# Привязать порт Socket UDP 5432 в качестве сервера приема телеметрии
носок = сокет.сокет (сокет.AF_INET, сокет.SOCK_DGRAM)
sock.bind(('0.0.0.0', 5432))
количество = 0
start_time = время. время()
пока верно:
    количество += 1
    buf, адрес = sock.recvfrom(65535)
    Telemetry_content = telemetry_pb2.Telemetry()
    печать (buf.hex())
    печать (буф)
    print("Длина сообщения {}".format(len(buf)))
    #print(len(str(buf)))
    #Обработка телеметрии UDP GPB и GPB-kv от IOX
    if buf[0:1] == b'\x00': ##проверить двоичный файл daa , официального документа нет
        print("Сообщение телеметрии GPB от IOX")
        Telemetry_content.ParseFromString (buf [12:])
        print('Узел:'+Telemetry_content.node_id_str)
        print('IP-адрес (исходный порт):' + str(addr))
        print('Путь кодирования:' + Telemetry_content.encoding_path)
        content_json_dict = proto_to_dict(Telemetry_content.data_gpb) # Старый proto_to_dict из общедоступного кода Google
        print(MessageToJson(Telemetry_content)) # новый MessageToJson из общедоступного кода Google заменит proto_to_dict
        печать("*"*20)
        печать (content_json_dict)
        if len(str(Telemetry_content.data_gpbkv)) > 2: # Обработка GPB kv в случае нестабильного A9KV, иногда отправляется сообщение с пустым содержанием
            print('Формат GPB kv')
            Fields_list = Telemetry_content. data_gpbkv[0].fields[1].fields
            #print(список_полей)
            json_dict = proto_to_dict(Telemetry_content.data_gpbkv[0])
            #pprint.pprint(json_dict)
            печать (json_dict)
            для поля в Fields_list:
                #print(поле.поля)
                если поле.string_value:
                    print(field.name + ':' + field.string_value)
                если поле.uint32_value:
                    print(field.name + ':' + str(field.uint32_value))
    печать("="*200) 

Запустите скрипт:

 [[email protected] протокол телеметрии]# python3 telemetry_server_udp_gpb-kv.py
0001000100010000000000700a0c696f73787276393030302d311a036e6d73323e436973636f2d494f532d58522d7066692d696d2d636d642d6f70657 23a696e74657266616365732f696e746572666163652d78722f696e746572666163653a0a323031392d31322d3033408a1b508d8e
b'\x00\x01\x00\x01\x00\x01\x00\x00\x00\x00\x00p\n\x0ciosxrv9000-1\x1a\x03nms2>Cisco-IOS-XR-pfi-im-cmd-oper:interfaces /интерфейс-xr/интерфейс:\n2019-12-03@\x8a\x1bP\x8d\x84\xf0\x98\xbd. h\x8d\x84\xf0\x98\xbd.'
Длина сообщения 124 <<<
Телеметрическое сообщение GPB от IOX
Узел: iosxrv9000-1
IP-адрес (исходный порт): ('10.75.37.85', 45761)
Путь кодирования: Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface
{
 "nodeIdStr": "iosxrv9000-1",
 "subscriptionIdStr": "нмс",
 "encodingPath": "Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface",
 "коллекцияИд": "3466",
 "msgTimestamp": "1596974694925",
 "коллекцияEndTime": "1596974694925"
}
********************
{}
================================================== ================================================== ================================================== ==================================================
000100010001000000000a300a0c696f73787276393030302d311a036e6d73323e436973636f2d494f532d58522d7066692d696d2d636d642d6f70657 23a696e74657266616365732f696e746572666163652d78722f696e746572666163653a0a323031392d31322d3033408a1b48fe8d
б"\x00\x01\x00\x01\x00\x01\x00\x00\x00\x00\n0\n\x0ciosxrv9000-1\x1a\x03nms2>Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface:\n2019-12-03@\x8a\x1bH\xfe\x83\xf0\x98\ xbd. P\xfe\x83\xf0\x98\xbd.Z\xbd\x13\x08\x8c\x84"
Длина сообщения 2620 <<<
Телеметрическое сообщение GPB от IOX
Узел: iosxrv9000-1
IP-адрес (исходный порт): ('10.75.37.85', 45761)
Путь кодирования: Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface
{
 "nodeIdStr": "iosxrv9000-1",
 "subscriptionIdStr": "нмс",
 "encodingPath": "Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface",
 "коллекцияИд": "3466",
 "коллекцияStartTime": "1596974694910",
 "msgTimestamp": "1596974694910",
 "датаГпбкв": [
 {
 "отметка времени": "1596974694924",
 "поля": [
 {
 "имя": "ключи",
 "поля": [
 {
 "имя": "имя интерфейса",
 "stringValue": "GigabitEthernet0/0/0/1"
 }
 ]
 },
 {
 "имя": "содержание",
 "поля": [
 {
 "имя": "дескриптор интерфейса",
 "stringValue": "GigabitEthernet0/0/0/1"
 },
......
********************
{}
ГПБ кв формат
{'отметка времени': 1596974694924, 'поля': [{'имя': 'ключи', 'поля': [{'имя': 'имя-интерфейса', 'значение_строки': 'GigabitEthernet0/0/0/1'}]}, { 'name': 'content', 'fields': [{'name': 'дескриптор интерфейса', 'string_value': 'GigabitE}
дескриптор интерфейса: GigabitEthernet0/0/0/1
тип интерфейса: IFT_GETHERNET
строка аппаратного типа: GigabitEthernet
состояние: im-состояние вверх
состояние строки: im-состояние-вверх
инкапсуляция:эфир
строка типа инкапсуляции: ARPA
МТУ: 1514
is-l2-transport-enabled: false
количество переходов состояний: 1
включено демпфирование: false
скорость: 1000000
дуплексность: im-attr-duplex-unknown
тип носителя: im-attr-media-unknown
тип ссылки: im-attr-link-type-force
in-flow-control:im-attr-flow-control-off
управление исходящим потоком: im-attr-flow-control-off
пропускная способность: 1000000
максимальная пропускная способность: 1000000
is-l2-looped:false
петлевая конфигурация: без обратной связи
описание: на сервер-1
быстрое отключение: ложь
если-индекс: 7
является intf-логическим: ложь
================================================== ================================================== ================================================== ==================================================
^CTraceback (самый последний вызов последним):
 Файл "telemetry_server_udp_gpb-kv.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *