MySensor счётчики импульсов

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

MySensor счётчики импульсов

Сообщение Ivan » Пт июн 19, 2015 3:00 pm

Собираем датчик
Электроэнергия - http://www.mysensors.org/build/pulse_power
Вода - http://www.mysensors.org/build/pulse_water
Газовый счётчик по типу водного. подключил обычный геркон

Датчик работает следующим образом
- При подаче питания он проверяет есть ли у него адрес в флэшь памяти. Если нет запрашивает новый адреу с GateWay и сохраняет во флэшь.
- Посылает объявление о типе датчика и версии GateWay (нас это не касается, потому что GateWay под MQTT игнорирует эту информацию)
- Далее датчик делает запрос через GateWay у система о предыдущих показаниях (Если произошёл перезапуск датчика он запросит последние данные)
- Переходит в циклический режим считывания
- Уходит в сон (Пониженное потребление) если работает от батареек. Конфигурируется при прошивке
- Если сработает импульс на сигнальной ноге (Прерывание). Датчик просыпается и добавляет к переменной импульсов 1. Если прошло заданное количество импульсов или время данные отправляются системе через GateWay

Чтобы запустился в системе MajorDomo наш датчик нам нужно сделать следующие действия
1. Создать класс mysensor
СпойлерПоказать
MySensor.zip
Объект MySensor
(1.99 КБ) 152 скачивания
2. Создаем класс счётчики
СпойлерПоказать
MySCounter.zip
Объект MySCounter
(1018 байт) 162 скачивания
3. Создаём объект например WaterCounter
4. Далее заполняем его свойства
СпойлерПоказать
Изображение
5. Создаем ссылку запроса предыдущих данных в MQTT
СпойлерПоказать
Изображение
Изображение
6. Включаем датчик. У нас должно появится в MQTT переменная \1\V_VAR2 со значением REQ
Линкуем её к свойству объекта REQ
СпойлерПоказать
Изображение
7. Выключаем и включаем датчик. После этого он должен заработать. И прислать данные о батарейки температуре и импульсах

Всё датчик теперь будет присылать данные

Вся загвоздка заключается в том что MySensor в MajorDomo не предусмотренны (пока). И приходится делать ответы на запросы датчиков по средством скриптов.

Из-за этого пришлось переработать скетчь для датчиков.
Переработанные скетч прилогаю

Также в классах счётчиков предусмотрен подсчёт количества и потока и начального значения. Чтобы не перешивать датчик.
Для этого в свойствах объекта нужно указать коэффициент расхода на 1 тик и начальное значение счётчика. Начальное значение счётчика нужно чтобы исправлять показания не пере запуская датчик (Если он в трудно доступном месте)
Вложения
BathRoomSensor.zip
Скетч для датчика воды
(2.16 КБ) 164 скачивания
GazCounter.zip
Скетч для датчика газа
(2.76 КБ) 141 скачивание
За это сообщение автора Ivan поблагодарил:
geor (Сб июн 20, 2015 3:04 am)
Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
geor
Сообщения: 83
Зарегистрирован: Сб май 17, 2014 2:52 am
Откуда: Новосибирск
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Re: MySensor счётчики импульсов

Сообщение geor » Сб июн 20, 2015 12:02 pm

Сделал по Вашему мануалу, счетчик воды аналогичный. Счетчик воды не хочет работать с прерываниями. Попробовал скетч отсюда http://forum.mysensors.org/topic/1282/w ... w-sensor/4 - счетчик работает. Не могу понять в чем моя ошибка?
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: MySensor счётчики импульсов

Сообщение Ivan » Сб июн 20, 2015 2:23 pm

Включите отлалку и смотрите что пишет
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
geor
Сообщения: 83
Зарегистрирован: Сб май 17, 2014 2:52 am
Откуда: Новосибирск
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Re: MySensor счётчики импульсов

Сообщение geor » Вс июн 21, 2015 4:55 pm

log монитора: sensor started, id 27
send: 27-27-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
send: 27-27-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
read: 0-0-27 s=255,c=3,t=6,pt=0,l=1:M
send: 27-27-0-0 s=255,c=3,t=11,pt=0,l=16,st=ok:Bath Room Sensor
send: 27-27-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 27-27-0-0 s=1,c=0,t=21,pt=0,l=5,st=ok:1.4.1
send: 27-27-0-0 s=1,c=1,t=25,pt=0,l=3,st=ok:REQ

"7. Выключаем и включаем датчик. После этого он должен заработать. И прислать данные о батарейки температуре и импульсах"
Это пункт не проходит.
В строке "attachInterrupt(INTERRUPT, onPulse, RISING);" пробовал менять RISING на FALLING -не прокатило.
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: MySensor счётчики импульсов

Сообщение Ivan » Вс июн 21, 2015 10:31 pm

У вас был отправлен запрос предыдущих покащаний. Проверьте привязан ли REQ к свойстру объекта req. И стоить ли на свойстве выполнение метода doreq при изменении свойства req. Напишите в личку могу посмотреть удаленно что у вас получается
За это сообщение автора Ivan поблагодарил:
geor (Пт июн 26, 2015 1:57 pm)
Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Ответить