Здравствуйте, Антон!
Во-первых хотел поблагодарить вас за великолепный продукт и во-вторых принести свои извинения за вопрос на русском языке.
Суть вопроса такова: устройство отдает в атрибуте "input" состояние своих логических входов. Входы 3, 4 и 5 принимают состояние логической единицы не одновременно, но в то же время могут находиться в таком состоянии в любой комбинации.
Я пытаюсь обрабатывать их состояние с помощью трех вычисляемых атрибутов примерно так:
Event
input ? ((input & 4) != 0) ? "Требование остановки" : null
String
Event
input ? ((input & 8) != 0) ? "Передняя дверь открыта" : null
String
Event
input ? ((input & 16) != 0) ? "Задняя дверь открыта" : null
String
Однако такой подход работает только в том случае, если входы принимают состояние логической единицы эксклюзивно.
В противном же случае, если, к примеру, приходит позиция с битом 4 в состоянии логической единицы, а следом приходит позиция с состоянием логической единицы для битов 4 и 5, то атрибут event позиции как был в состоянии "Передняя дверь открыта", так и останется. Определенную сложность также привносит неопределённость последовательности обработки вычисляемых атрибутов (кажется, я об этом читал где-то в документации).
Собственно, хотелось бы попросить подсказать верное решение данной задачи в рамках архитектуры проекта. Более того, в идеале хотелось бы регистрировать не только "передний фронт", но и обратную смену состояния на входах. Но тут, как я понимаю, без введения чего-то навроде "Custom events" не обойтись.
Думаю что вычисляемых атрибутов будет не достаточно чтобы реализовать то что вы хотите. Надо код править.
Что же. Благодарю за ответ. Ушел курить код...
И еще один вопрос вдогонку. В документации видел такой график:
Здесь по оси X фигурирует напряжение на батарее, а не скорость как в стандартном варианте. Я так понимаю есть возможность строить графики по произвольным параметрам?
P.S.
Если кто-то будет пробовать использовать код для вычисляемых атрибутов выше, то не стоит этого делать. В нем ошибка ибо писал по памяти. Должно быть как-то так:
input ? (((input & 4) != 0) ? "Требование остановки" : null) : null
Упс. Ну и тупой же я вопрос задал.
Диалог конфигурации меняется для каждого типа отчета...
Прошу прощения)
Здравствуйте, Антон!
Во-первых хотел поблагодарить вас за великолепный продукт и во-вторых принести свои извинения за вопрос на русском языке.
Суть вопроса такова: устройство отдает в атрибуте "input" состояние своих логических входов. Входы 3, 4 и 5 принимают состояние логической единицы не одновременно, но в то же время могут находиться в таком состоянии в любой комбинации.
Я пытаюсь обрабатывать их состояние с помощью трех вычисляемых атрибутов примерно так:
Однако такой подход работает только в том случае, если входы принимают состояние логической единицы эксклюзивно.
В противном же случае, если, к примеру, приходит позиция с битом 4 в состоянии логической единицы, а следом приходит позиция с состоянием логической единицы для битов 4 и 5, то атрибут event позиции как был в состоянии "Передняя дверь открыта", так и останется. Определенную сложность также привносит неопределённость последовательности обработки вычисляемых атрибутов (кажется, я об этом читал где-то в документации).
Собственно, хотелось бы попросить подсказать верное решение данной задачи в рамках архитектуры проекта. Более того, в идеале хотелось бы регистрировать не только "передний фронт", но и обратную смену состояния на входах. Но тут, как я понимаю, без введения чего-то навроде "Custom events" не обойтись.