Заморочился одной тривиальной задачей. Есть устройство на МК, содержащее в себе несколько датчиков. На данный момент это 1х напряжение, 2х температура и 1х уровень, хотя тонкости не так важны
( Read more... )
такое уже тоже думал, типа посылать структуру устройства раз в минуту, а данные раз в секунду подключив устройство, в течение минуты ждем, когда придет конфиг-пакет и потом наслаждаемся
просто пересылка всего этого мусора КАЖДЫЙ РАЗ... как-то это... если система знает, что датчик #2 это термометр, то зачем всё время присылать "unit": "degC"?
но тогда оно становится почти что совсем нечитаемым, что пичалька через Х лет я забуду что где в дампе, а в удобочитаемом формате достаточно раз глянуть...
пс. все это для себя, не для работы, поэтому есть опасность потерять доку...
Всего-то модификаций не передавать сам запрос, а только ответы. Зато хороший протокол, выдержанный временем. С контрольными суммами, что желательно для уарта. И с возможностью передачи данных как в RTU, так и в ASCII. И без всяких велосипедов.
Вот на неделях делал нечто подобное (заикался в комментах), тоже в две стороны делать заморочки не хотел, решил сделать по простому: датчик отправляет данные при первом включении и/или только когда есть изменения. Этого как бы достаточно, время последнего опроса (прихода данных от датчика) можно хранить на сервере и понимать, когда он давно не присылал ничего. На этом решил остановиться, типа погоняю как есть, а там хотелка заработает. Реализовывать двухнаправленную простыню не хотелось, в итоге спустя время оказалось, что этого недостаточно. В моём случае в качестве сервера был обычный апач+пхп (и остальная обвязка на никсе) и захотелось: пинга (без понга) и информации о стартовом запуске (обязательно). Пинг нужен чтобы активировать просто скрипт на сервере, ибо морочиться с таймерами/тригерами - не хотелось. Ну и по пути передается ряд уникальной информации датчика, плюс всё шифруется (без стандартов, свой алгоритм) и стандартный CRC.
Comments 24
скажем, когда сессия открыта, выслать табличку из id/type/properties, а потом уже id value; id value; id value
не?
Reply
подключив устройство, в течение минуты ждем, когда придет конфиг-пакет и потом наслаждаемся
Reply
Reply
leve1=142.40
temperature1=27.69
temperature2=66.6
voltage0=0.70
плюс отдельная команда вкл/выкл посылку (задание интервала от 0 до стопицот), отдельная на выдачу единиц для всех параметров?
Reply
Reply
а сериализацию лучше делать более компактно чем в этом уродском жсон.
примерно как у модема - набор запросов плюс набор ответов строк имя=значение.
или в духе радикального минимализма, в виде хекс-дампа регистров (REGS=F0,0f,c7c8,66666,55aa) с концом строки в конце дампа.
Reply
но тогда оно становится почти что совсем нечитаемым, что пичалька
через Х лет я забуду что где в дампе, а в удобочитаемом формате достаточно раз глянуть...
пс. все это для себя, не для работы, поэтому есть опасность потерять доку...
Reply
Reply
Reply
Reply
Reply
Передавать строки с именами переменных, это лишнее, имхо, хотя почему бы и нет, с другой стороны, если скорость позволяет?
Reply
Ну и по пути передается ряд уникальной информации датчика, плюс всё шифруется (без стандартов, свой алгоритм) и стандартный CRC.
Reply
Leave a comment