Ad Widget

Collapse

Обрезка полученного значения

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ryden
    Junior Member
    • Feb 2019
    • 11

    #1

    Обрезка полученного значения

    Добрый день!
    Подскажите, пожалуйста, как реализовать...


    Есть xml файл такого вида:

    <response>
    <systime>19166</systime>
    <rele>0110</rele>
    <in>110000</in>
    <out>100000000000</out>
    <adc1>0.000</adc1>
    <adc2>0.000</adc2>
    <temp>32.625</temp>
    <count1>10</count1>
    <count2>5</count2>
    <count3>8</count3>
    <count4>0</count4>
    <pwm>0</pwm>
    </response>

    меня интересует поле rele, последние три цифры - это данные с 3-х реле. Если реле замкнуто - то 1, если разомкнуто, то - 0.
    Как настроить, чтобы по каждому из срабатываний по отдельности события определяли какой из реле сработал.
    Думаю, что нужно из полученного значения нужно как-то отсечь слева или справа отсечь символы, но как это сделать? Обрезать слева и справа предобработкой не получится, т.к. цифры могут быть одинаковыми (например, все 1)

    Помогите, я новичок в zabbix`е, кучу мануалов перерыл, ответа не нашел (((
    Last edited by ryden; 24-07-2019, 08:17.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Реле всегда 3 штуки? Фиксированно? Как взять значение поля rele в элемент данных вопросов нет? Тогда далее делаешь 3 зависимых от него элемента данных (тип целое) и в предобработке у первого выбираешь "регулярное выражение" шаблон = ^\d(\d)\d*$ вывод (у всех) = \1 . У второго шаблон = ^\d{2}(\d)\d*$ У третьего шаблон = ^\d{3}(\d)$ .

    Comment

    • ryden
      Junior Member
      • Feb 2019
      • 11

      #3
      Originally posted by Hamardaban
      Реле всегда 3 штуки? Фиксированно? Как взять значение поля rele в элемент данных вопросов нет? Тогда далее делаешь 3 зависимых от него элемента данных (тип целое) и в предобработке у первого выбираешь "регулярное выражение" шаблон = ^\d(\d)\d*$ вывод (у всех) = \1 . У второго шаблон = ^\d{2}(\d)\d*$ У третьего шаблон = ^\d{3}(\d)$ .
      Нет, так не получается
      Значение реле может принимать следующие значения: 0111, 0110, 0101, 0011, 0001
      И важно понимать, какая из реле сработала

      Сейчас настроено так:
      Click image for larger version  Name:	01.JPG Views:	2 Size:	73.3 KB ID:	382911
      Click image for larger version  Name:	02.JPG Views:	2 Size:	39.5 KB ID:	382912
      Last edited by ryden; 24-07-2019, 10:02.

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #4
        А что не получается? Это двоичное значение что-ли (000=0/001=1/011=2/101=3)? предупреждать нужно! в каждый момент времени это поле содержит номер сработавшего реле?

        Comment

        • ryden
          Junior Member
          • Feb 2019
          • 11

          #5
          не всегда, оно может быть и 0000

          Comment

          • Hamardaban
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • May 2019
            • 2713

            #6
            Про первый ноль понятно - значаших то три бита? или всё же это позиционная величина типа 0011 - сработали реле 2 и 3?

            Comment

            • ryden
              Junior Member
              • Feb 2019
              • 11

              #7
              Originally posted by Hamardaban
              Про первый ноль понятно - значаших то три бита? или всё же это позиционная величина типа 0011 - сработали реле 2 и 3?
              Да, совершенно верно. 0011 - сработали 2 и 3 реле, 0101 - сработали 1 и 3 реле, 0110 - 1 и 2 реле, 0000 - реле не сработали и т.д.

              Comment

              • Hamardaban
                Senior Member
                Zabbix Certified SpecialistZabbix Certified Professional
                • May 2019
                • 2713

                #8
                Ну тогда как я написал ранее! Из своего элемента убираешь регуляркую делаешь 3 ЗАВИСИМЫХ от rele(1) элемента данных (тип целое) и в предобработке у первого выбираешь "регулярное выражение" шаблон = ^(\d)\d*$ . У второго шаблон = ^\d(\d)\d*$ У третьего шаблон = ^\d{2}(\d)\d*$ . вывод (у всех) = \1 . Получишь 3 элемента которые соответствуют 3м реле. У каждого будут значения 0 или 1. далее триггеры на них вешай если нужно.

                Comment


                • ryden
                  ryden commented
                  Editing a comment
                  Отлично! Все получилось! Спасибо огромное!

                  Правда немного подкорректировал:
                  1 реле - ^\d(\d)\d*$
                  2 реле - ^\d{2}(\d)\d*$
                  3 реле - ^\d{3}(\d)\d*$
              Working...