Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Средство для проверки АЦП меги
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Все порты АЦП рабочие, все датчики тоже рабочие, но вот вместе никак не хотят работать
Какой-то шум на АЦП, ни о каких показаниях речи не идет.
Какой-то шум на АЦП, ни о каких показаниях речи не идет.
Последний раз редактировалось empenoso 18 авг 2016, 19:01, всего редактировалось 1 раз.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Мне сказали что логарифмические усилители уже присутствуют в датчике:comparator писал(а):Посмотрите в сторону логарифмических усилителей.
Например AD8310, или AD8307, есть в DIP корпусе.
Использую в RF измерителях, но они работают от DC, так что можно практически напрямую прицепить электретник, резистор на питание плюс разделительный конденсатор. На выходе имеем сразу напряжение пропорциональное логарифму уровня шума.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Вопрос с датчиком шума откладывается на месяц, специалист уезжает куда-то, как вернется сделает мне датчик чтобы как-то уровень шума отслеживать с учетом моих реалий - АЦП меги.
-
- Сообщения: 651
- Зарегистрирован: 16 фев 2016, 19:52
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Я так понимаю это фиговина подключается к 3.3V?empenoso писал(а):Средство для проверки АЦП меги
То есть моя идея с батарейками рабочая, но нужен еще резистор переменный
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
to OlegJktu84: подключался без батарейки, крутишь ручку и показания порта АЦП заметно меняются от 0 до 1023.
Пока решил сосредоточиться на приборах учета - тем более что показания счетчика и расчетное значение в openhab не совпадают.
Логика расчетов следующая: 1 кВт*ч - 3200 импульсов, поэтому когда положение порта сменяется на ON прибавляю к текущему значению счетчика 1/3200 = 0.0003125.
Пока решил сосредоточиться на приборах учета - тем более что показания счетчика и расчетное значение в openhab не совпадают.
Логика расчетов следующая: 1 кВт*ч - 3200 импульсов, поэтому когда положение порта сменяется на ON прибавляю к текущему значению счетчика 1/3200 = 0.0003125.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
В openhab следующая картина:
\openhab\configurations\items\default.items
\openhab\configurations\persistence\rrd4j.persist
\openhab\configurations\rules\default.rules
\openhab\configurations\sitemaps\default.sitemap
\openhab\configurations\transform\door.map
\openhab\configurations\transform\en.map
В целом все работает, как я хотел, ну кроме датчика шума - но для решения вопроса жду октября viewtopic.php?f=1&t=1208&start=80#p22837.
Если кто-то хочет узнать на сколько система стабильна - спросите меня через пару месяцев, а лучше полгода
\openhab\start.sh
Код: Выделить всё
...
echo Launching the openHAB runtime...
java \
-Duser.timezone=Asia/Yekaterinburg \
-Dosgi.clean=true \
-Declipse.ignoreApp=true \
-Dosgi.noShutdown=true \
-Djetty.port=$HTTP_PORT \
-Djetty.port.ssl=$HTTPS_PORT \
-Djetty.home=. \
...
Код: Выделить всё
Number P1_NoiseTroyka "Шум Troyka-Sound Loudness (P1), [%.2f] ед. АЦП" {megadevice="sec:192.168.88.72:1:30"}
Number NoiseTroyka_dB "Шум Troyka-Sound Loudness (P1), [%.2f] % АЦП"
String P2_DHT22 "Температура/влажность улицы DHT22 AM2602 (P2) [%s]" {megadevice="sec:192.168.88.72:2,dht,r:60"}
Number P2_DHT22_temp "Температура улицы DHT22 AM2602 (P2), [%.2f]°C" //{megadevice="sec:192.168.88.72:2,dht22,t:60"}
String DHT22_P2_Min "Температура улицы - сегодня - Min. Temp [%s]"
String DHT22_P2_Max "Температура улицы - сегодня - Max. Temp [%s]"
Number P2_DHT22_hum "Влажность на улице DHT22 AM2602 (P2), [%.2f] %" //{megadevice="sec:192.168.88.72:2,dht22,h:60"}
Number P4_MQ2 "Горючий газ и дым MQ-2 (P4), [%.2f] ед. АЦП" {megadevice="sec:192.168.88.72:4:60"}
Number P5_DS18B20_MQ2 "Температура рядом с плитой DS18B20 (P5), [%.2f]°C" {megadevice="sec:192.168.88.72:5,1w,t:60"}
Switch P6_EnergyPulse "Э/э Меркурий 201.5 (P6) [MAP(en.map):%s]" {megadevice="sec:192.168.88.72:6"}
Number CountElecImp "Э/э Меркурий 201.5 - импульсы (3200/кВт*ч) [%s]"
Number CountElecKWh "Э/э Меркурий 201.5 - кВт*ч [%.2f]"
Number P7_DS18B20_WC_cold "Холодная труба DS18B20 (P7), [%.2f]°C" {megadevice="sec:192.168.88.72:7,1w,t:60"}
Number P8_DS18B20_WC_hot "Горячая труба DS18B20 (P8), [%.2f]°C" {megadevice="sec:192.168.88.72:8,1w,t:60"}
Switch P10_WaterPulse_cold "Холодная, счетчик Valtec VLF-R-IL (P10) [MAP(en.map):%s]" {megadevice="sec:192.168.88.72:10:3600"}
Number CountWaterM3Cold "Вода Valtec VLF-R-IL холодная - м куб. [%.2f]"
Switch P11_WaterPulse_hot "Горячая, счетчик Valtec VLF-R-IL (P11) [MAP(en.map):%s]" {megadevice="sec:192.168.88.72:11:3600"}
Number CountWaterM3Hot "Вода Valtec VLF-R-IL горячая - м куб. [%.2f]"
Switch P9_Door "Дверь (P9) [MAP(door.map):%s]" {megadevice="sec:192.168.88.72:9:3600"}
Number P13_DS18B20_bedroom "Темп. батареи спальни DS18B20 (P13), [%.2f]°C" {megadevice="sec:192.168.88.72:13,1w,t:60"}
Number MegaDeviceTemp "MegaD-14-IN, [%.2f]°C" {megadevice="sec:192.168.88.72:tget:60"}
DateTime dateTimeNTP "Дата и время NTP [%1$tA, %1$td.%1$tm.%1$tY, %1$tR]" { ntp="Asia/Yekaterinburg" } //расшифровка букв https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
String dateTime "Дата и время сервера [%s]"
//Number A6_ADC "XP3 (A6), [%.2f] ???" {megadevice="sec:192.168.88.72:a6:20"}
Код: Выделить всё
// persistence strategies have a name and a definition and are referred to in the "Items" section
Strategies {
// for rrd charts, we need a cron strategy
everyMinute : "0 * * * * ?"
}
Items {
* : strategy = everyChange, everyMinute, restoreOnStartup
P* : strategy = everyMinute
}
Код: Выделить всё
/* =============================================================================================================== */
/*
// Начальная настройка показаний
rule "System started Counters"
when
System started
then
postUpdate(CountElecKWh, 20.5803125)
postUpdate(CountWaterM3Cold, 0.8819)
postUpdate(CountWaterM3Hot, 0.3688)
end
// Корректировка 21.08.2016 15.00
*/
/* =============================================================================================================== */
import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import java.lang.Math
import java.util.Calendar
import java.util.Date
import java.util.TimeZone
import java.text.SimpleDateFormat
import org.joda.time.* //для примера импульсов
import org.eclipse.smarthome.model.script //для логов http://docs.openhab.org/administration/logging.html#looking-at-the-log
/* =============================================================================================================== */
//пересчет показаний порта - процент от макимума
rule "P1_NoiseTroyka"
when
Item P1_NoiseTroyka received update
then
postUpdate(NoiseTroyka_dB, ((P1_NoiseTroyka.state as DecimalType)*100/1023).doubleValue)
end
/* =============================================================================================================== */
/*примеры счетчиков:
http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1004&start=260#p22599
http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi/step8/Uber-Sensor-Dog-Bark-Noise-Sensor/
*/
//подсчет кВт*ч эл. счетчика
rule "InputImp ON"
when
Item P6_EnergyPulse received update ON //changed to ON
then
var Number Imp = CountElecKWh.state as DecimalType
Imp = Imp + 0.0003125 // 1 кВт*ч - 3200 импульсов
postUpdate(CountElecKWh, Imp.doubleValue)
end
/* =============================================================================================================== */
//подсчет показаний хол. воды
rule "CountWaterImpCold ON"
when
Item P10_WaterPulse_cold changed to ON //received update ON
then
var Number CountWaterImpCold = CountWaterM3Cold.state as DecimalType
CountWaterImpCold = CountWaterImpCold + 0.01 // один полный импульс при прохождении 10 л жидкости
postUpdate(CountWaterM3Cold, CountWaterImpCold.doubleValue)
end
//подсчет показаний гор. воды
rule "CountWaterImpHot ON"
when
Item P11_WaterPulse_hot changed to ON //received update ON
then
var Number CountWaterImpHot = CountWaterM3Hot.state as DecimalType
CountWaterImpHot = CountWaterImpHot + 0.01 // один полный импульс при прохождении 10 л жидкости
postUpdate(CountWaterM3Hot, CountWaterImpHot.doubleValue)
end
/* =============================================================================================================== */
//дата и время для отображения
rule "dateTime from rules"
when
Item P7_DS18B20_WC_cold received update
then
var String DateTimeStampInitial = String::format( "%1$tA, %1$td.%1$tm.%1$tY, %1$tR", new Date() ) //https://community.openhab.org/t/how-to-convert-and-format-a-datetime-item-in-a-rule/6094/5
postUpdate(dateTime, DateTimeStampInitial )
end
/* =============================================================================================================== */
//ошибка отображения нуля вместо влажности
rule "Mega DHT Temp/Hum Parser"
when
Item P2_DHT22 received update
then
val parse = P2_DHT22.state.toString.split("/")
val parsedtemperature = parse.get(0)
val parsedhumidity = parse.get(1)
var temperature = new Double(parsedtemperature)
var humidity = new Double(parsedhumidity)
postUpdate(P2_DHT22_temp, temperature)
postUpdate(P2_DHT22_hum, humidity)
end
/* ================================================================================================================ */
//How to display the minimum and maximum values of an item in a given period https://github.com/openhab/openhab/wiki/Samples-Rules
rule "Update Temperature Min- and Max values"
when
Item P2_DHT22_temp received update
then
var Number Min
var Number Max
var String tmp
var SimpleDateFormat df = new SimpleDateFormat( "HH:mm" )
if (P2_DHT22_temp.state instanceof DecimalType) {
Min = (P2_DHT22_temp.minimumSince(now.toDateMidnight, "rrd4j").state as DecimalType)
tmp = (Math::round(Min.floatValue*10.0)/10.0) + "°C (" + df.format(P2_DHT22_temp.minimumSince(now.toDateMidnight, "rrd4j").timestamp) + ")"
postUpdate(DHT22_P2_Min, tmp)
Max = P2_DHT22_temp.maximumSince(now.toDateMidnight, "rrd4j").state as DecimalType
df = new SimpleDateFormat( "HH:mm" )
tmp = (Math::round(Max.floatValue*10.0)/10.0) + "°C (" + df.format(P2_DHT22_temp.maximumSince(now.toDateMidnight, "rrd4j").timestamp) + ")"
postUpdate(DHT22_P2_Max, tmp)
}
end
/* ================================================================================================================ */
/* подсчет импульсов эл. счетчика - старый
rule "InputImp ON"
when
Item P6_EnergyPulse changed to ON
then
var Number Imp = CountElecImp.state as DecimalType
Imp = Imp + 1
postUpdate(CountElecImp, Imp)
end
rule "CountElecKWh +1"
when
Item CountElecImp changed
then
var Number Imp = CountElecImp.state as DecimalType
var Number KWh = CountElecKWh.state as DecimalType
if ( Imp == 3200 ) {
Imp = 0
KWh = KWh + 1
postUpdate(CountElecImp, Imp)
postUpdate(CountElecKWh, KWh)
}
end
*/
/* ================================================================================================================ */
/*
//пересчет показаний порта в вольты для датчика с ebay
rule "NoiseEbay_dB"
when
Item P1_NoiseEbay received update
then
postUpdate(NoiseEbay_dB, ((P1_NoiseEbay.state as DecimalType)*3.3/1023).doubleValue)
end
*/
Код: Выделить всё
sitemap default label="Адрес"
{
Frame label="Прихожая/Подъезд" {
Text item=CountElecKWh icon="info"
Text item=P6_EnergyPulse icon="settings"
Text item=MegaDeviceTemp icon="inverter"
Text item=P9_Door icon="door-closed"
}
Frame label="Гостиная" {
Text item=NoiseTroyka_dB icon="line"
}
Frame label="Кухня" {
Text item=P4_MQ2 icon="fire"
Text item=P5_DS18B20_MQ2 icon="temperature"
}
Frame label="Туалет" {
Text item=CountWaterM3Cold icon="info"
Text item=CountWaterM3Hot icon="info"
Text item=P10_WaterPulse_cold icon="settings"
Text item=P11_WaterPulse_hot icon="settings"
Text item=P7_DS18B20_WC_cold icon="temperature"
Text item=P8_DS18B20_WC_hot icon="temperature"
}
Frame label="Спальня" {
Text item=P13_DS18B20_bedroom icon="heating"
}
Frame label="Улица" {
Text item=P2_DHT22_temp icon="solarplant"
Text item=DHT22_P2_Min icon="temperature-max"
Text item=DHT22_P2_Max icon="temperature-max"
Text item=P2_DHT22_hum icon="solarplant"
}
Frame label="Дата" {
Text item=dateTime icon="calendar"
Text item=dateTimeNTP icon="calendar"
}
}
Код: Выделить всё
ON=закрыта
OFF=открыта
-=нет данных
Код: Выделить всё
CLOSED=closed
OPEN=open
ON=порт вкл
OFF=порт выкл
-=нет данных
undefined=unknown
Если кто-то хочет узнать на сколько система стабильна - спросите меня через пару месяцев, а лучше полгода
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Когда-то хотел статью для новичков написать по использованию MegaD (благо опыт написания есть), где всё (что как куда зачем) было бы расписано, но создатель и владелец Andrey_B отказался.
-
- Сообщения: 651
- Зарегистрирован: 16 фев 2016, 19:52
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
empenoso во первых спасибо за новые фото.
2) Я так и не понял счетчики в OpenHab стали правильно работать?
2.1) Если не стали то выложите как настроенны порты МегаД ? (скрины?)
С нетерпением ждем продолжения.
2) Я так и не понял счетчики в OpenHab стали правильно работать?
2.1) Если не стали то выложите как настроенны порты МегаД ? (скрины?)
С нетерпением ждем продолжения.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Вы предложили следующее, цитирую: "пишу оплачиваемую вами статью", а это несколько не в духе нашего сайта и форума. Извините.empenoso писал(а):Когда-то хотел статью для новичков написать по использованию MegaD (благо опыт написания есть), где всё (что как куда зачем) было бы расписано, но создатель и владелец Andrey_B отказался.
То, что присылали мне на безвозмездной основе, я всегда размещал на сайте.
Но созданная вами тема на форуме и опубликованный здесь ваш опыт, думаю, будет полезен не меньше.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Да, э/э стал считать правильно. Воды расхода нет пока, но вроде по аналогии тоже должноOlegJktu84 писал(а):empenoso во первых спасибо за новые фото.
2) Я так и не понял счетчики в OpenHab стали правильно работать?
2.1) Если не стали то выложите как настроенны порты МегаД ? (скрины?)
С нетерпением ждем продолжения.
Единственное если изменяю что-то в тексте правил (даже добавил пробел и сохранил файл) - частенько все расчеты "зависают" - и никакие правила не работают. Требуется перезапуск сервиса OpenHab после изменения файла - чтобы избежать гарантированно этого. Может быть из-за этого http://ab-log.ru/forum/viewtopic.php?f= ... 300#p22889 .
P.S. Легко определить, когда отображение времени через правило начинает показывать вчерашнюю дату и время - значит с этого времени никакие правила и не работают
Код: Выделить всё
//дата и время для отображения
rule "dateTime from rules"
when
Item P7_DS18B20_WC_cold received update
then
var String DateTimeStampInitial = String::format( "%1$tA, %1$td.%1$tm.%1$tY, %1$tR", new Date() )
postUpdate(dateTime, DateTimeStampInitial )
end
-
- Сообщения: 651
- Зарегистрирован: 16 фев 2016, 19:52
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Да, я по скриншоту понял, что у вас два времени для контроля. Интересная задумка. Мне кажется, что вообще может быть интересно завести отдельную sitemap c "контрольными параметрами". Из GUI тогда будет видно где ошибка - в передачи данных МегаД или их обработки OpenHab. С другой стороны лишняя работа, нужная только при отладке...
Рад что у вас счетчик стал считать правильно. Ну для победы совсем немного? Допилить воду и победить датчик шума...
Рад что у вас счетчик стал считать правильно. Ну для победы совсем немного? Допилить воду и победить датчик шума...
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Наткнулся на датчик шума в дБ в составе универсального датчика, правда данные получать по шине RS-485 командами по протоколу MODBUS. Датчик WB-MS-THLS. Производитель Wiren Board. Стоит около 4,5 т.р.
http://contactless.ru/wiki/index.php/%D ... 0%BA_WB-MS
http://contactless.ru/wiki/index.php/%D ... 0%BA_WB-MS
-
- Сообщения: 651
- Зарегистрирован: 16 фев 2016, 19:52
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Как-то сначала обрадовался. Т.к. в общем описании присутствует (Универсальный датчик WB-MS http://contactless.ru/wiki/index.php/Ун ... тчик_WB-MS ) и CO2 и IR.
Но во факту за 5000 р у них только температура, освещенность, звук. Остальных даже в конфигураторе нет.
http://contactless.ru/store/#!/Датчик-W ... ry=6567503
И однокнопочно это наверно заводиться только на их контролере от 15000р (который по моей идеологии тупо превратиться в MQTT). Представляю сколько времени затащить это на сервер и привязать к OpenHab или др ПО.
Но во факту за 5000 р у них только температура, освещенность, звук. Остальных даже в конфигураторе нет.
http://contactless.ru/store/#!/Датчик-W ... ry=6567503
И однокнопочно это наверно заводиться только на их контролере от 15000р (который по моей идеологии тупо превратиться в MQTT). Представляю сколько времени затащить это на сервер и привязать к OpenHab или др ПО.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Да, не лучший вариант, если бы выбирал для дома, то однозначно бы выбрал Neatmo https://habrahabr.ru/company/madrobots/blog/224663/, у них и шум и все остальное есть и с VeraEgde легко состыковать и с openhab https://github.com/openhab/openhab/wiki/Netatmo-Binding. Но цена Neatmo экономически не позволяет в арендную квартиру его установить.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Развлекаюсь с графиками. В openhab это не просто, а очень просто:
items
А если просто нарисовать график какой-нибудь переменной, пример:
P.S. Очень помогают примеры d.v.ermakov, за что ему сердечное спасибо!
sitemaps:
Код: Выделить всё
Frame label="Улица" {
Text item=P2_DHT22_temp icon="solarplant"
Text item=DHT22_P2_Min icon="temperature-max"
Text item=DHT22_P2_Max icon="temperature-max"
Text item=P2_DHT22_hum icon="solarplant"
Text label="Темп. графики улицы" icon="line" {
Frame label="Выбор интервала" {
Switch item=ChartPeriod label="Период" mappings=[0="Час", 1="День", 2="Неделя", 3="Месяц"]
}
Frame label="Температура за окном" {
Chart item=P2_DHT22_temp period=h refresh=6000 visibility=[ChartPeriod==0, ChartPeriod=="Uninitialized"]
Chart item=P2_DHT22_temp period=D refresh=30000 visibility=[ChartPeriod==1]
Chart item=P2_DHT22_temp period=W refresh=30000 visibility=[ChartPeriod==2]
Chart item=P2_DHT22_temp period=M refresh=30000 visibility=[ChartPeriod==3]
}
Frame label="Влажность за окном" {
Chart item=P2_DHT22_hum period=h refresh=6000 visibility=[ChartPeriod==0, ChartPeriod=="Uninitialized"]
Chart item=P2_DHT22_hum period=D refresh=30000 visibility=[ChartPeriod==1]
Chart item=P2_DHT22_hum period=W refresh=30000 visibility=[ChartPeriod==2]
Chart item=P2_DHT22_hum period=M refresh=30000 visibility=[ChartPeriod==3]
}
}
}
Код: Выделить всё
Number ChartPeriod "Интервал"
А если просто нарисовать график какой-нибудь переменной, пример:
Код: Выделить всё
Text item=P8_DS18B20_WC_hot icon="temperature" {
Chart item=P8_DS18B20_WC_hot period=3D refresh=30000
}
-
- Сообщения: 651
- Зарегистрирован: 16 фев 2016, 19:52
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
empenoso у вас же инсталляция без ИБП? Очень интересно ситуация с включение/отключением света. Для многоквартирок редкое явление, но порой случается. Вопрос в том, как МегаД и Openhab после включения себя поведут? Хотя у вас там только датчики (и разбежаться по показаниям может только вода), но все равно интересно.
Re: Арендная квартира, MegaD IN Kit и датчик шума и приборы учета
Вообще поставил автомат, который обесточивает весь "узел" (справа внизу)OlegJktu84 писал(а):empenoso у вас же инсталляция без ИБП? Очень интересно ситуация с включение/отключением света. Для многоквартирок редкое явление, но порой случается. Вопрос в том, как МегаД и Openhab после включения себя поведут? Хотя у вас там только датчики (и разбежаться по показаниям может только вода), но все равно интересно.
Несколько раз им пользовался - когда физически отключал/включал датчики. Этакая имитация включение/отключением света. Полет нормальный - ничего особенного не заметил.
А то что ИБП нет - пожадничал наверное, но по воде супер точность показаний не нужна - ведь только куб. м подаются в показаниях - это довольно большой объем воды надо пропустить.