Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 05 янв 2019, 17:23

Наконец-то добрался и подключил по мотивам обсуждений https://www.ab-log.ru/forum/viewtopic.p ... 326#p34304 электронакладки 12 вольтовые для кранов на воду. Схему собрал и вроде все работает. Завтра уже придут монтировать и тянуть кабель, но и сейчас уже можно сказать что схема рабочая. Мегу настроил в режиме SW LINK для того чтобы исключить одновременное включение. Вот так выглядит мега с учетом всего:
2019_01_MegaD схемы.jpg
2019_01_MegaD схемы.jpg (425.51 КБ) 660 просмотров
Немного смущает что при тестах при при отключенных выходах показывает -15.6 mV:
IMG_20190105_174519.jpg
IMG_20190105_174519.jpg (380.34 КБ) 660 просмотров

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 06 янв 2019, 17:20

Смонтировали в общем накладки - работают конечно, но выглядит все это не особенно надежно - начать с того что гайка трется по гайке. И стандартная ширина между трубами недостаточная для того чтобы такие большие корпуса установить. Единственное что вроде как аварийную ситуация сами по себе не могут создать, но и обратной связи тоже ноль - сработали или нет неизвестно будет.
IMG_20190106_174653.jpg
IMG_20190106_174653.jpg (215.7 КБ) 624 просмотра
IMG_20190106_173325.jpg
IMG_20190106_173325.jpg (277.31 КБ) 624 просмотра

А вот и настройки опенхаб для электронакладок на воду - решил через правило с делать:

Код: Выделить всё

Number  WaterOverlap                "Перекрытие воды"                           <faucet>

Switch item=WaterOverlap mappings=[1="Течет", 2="Перекрыто"]

// Перекрытие воды

rule "WaterOverlap" 
when
    Item WaterOverlap received command      
then
	if (WaterOverlap.state == 1) {
			publish("mosquitto", "megad/60/cmd","11:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","12:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","11:1") //двигаем
			Thread::sleep(18000) //миллисекунд в секундах
			publish("mosquitto", "megad/60/cmd","11:0")
            }  
	if (WaterOverlap.state == 2) {
			publish("mosquitto", "megad/60/cmd","11:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","12:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","12:1") //двигаем
			Thread::sleep(18000) //миллисекунд в секундах
			publish("mosquitto", "megad/60/cmd","12:0")
            }  		
end
Screenshot_20190106-173153.png
Screenshot_20190106-173153.png (158.06 КБ) 624 просмотра

Ruslan
Сообщения: 575
Зарегистрирован: 06 янв 2014, 20:44

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение Ruslan » 06 янв 2019, 17:52

Обратную связь герконами обеспечить можно, если остались свободные жилы в проводе (или есть отдельный провод) и свободные порты в Меге. Хотя бы для одного состояния (например, "Закрыто").

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 08:25

в общем решил я переходить с openHAB на Home Assistant здесь тоже.

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 08:34

Последняя конфигурация опенхаба:
Вложения
Screenshot_20190713-092850.png
Screenshot_20190713-092850.png (161.24 КБ) 440 просмотров
Screenshot_20190713-092733.png
Screenshot_20190713-092733.png (155.57 КБ) 440 просмотров
2019-07-13_09-26.png
2019-07-13_09-26.png (215.25 КБ) 440 просмотров

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 08:37

default.items

Код: Выделить всё

Group Entrance			<corridor>
Group Living_room		<sofa>
Group Kitchen			<cinema>
Group Restroom			<faucet>
Group Bedroom			<bedroom>
Group Outside			

String	Entrance_st		"Прихожая/Подъезд"	<corridor>
String	Living_room_st	"Гостиная"			<sofa>
String	Kitchen_st		"Кухня"				<cinema>
String	Restroom_st		"Туалет/Ванна"		<faucet>
String	Bedroom_st		"Спальня"			<bedroom>
String	Outside_st		"Улица"				

Number	ChartPeriod		"Интервал"		<flow>	//<flow> - иконка
String	ChartPeriodName	"Графики"       <line>

//==============================================================================================================
Group	Lights_Random
Group:Switch:OR(ON, OFF)	Lamp "Управление освещением [(%d)]"                 <light>         (Lights_Random) 
Switch	Ghost_Lights		"Имитация присутствия, свет"						<parents_1_1>	(Entrance)

Switch	ElectroDragon1_WC			"Лампа туалет [%s]"							<light>     (Lamp, Restroom)					{ mqtt=">[mosquitto:cmnd/ElectroDragon1/POWER1:command:*:default], <[mosquitto:stat/ElectroDragon1/POWER1:state:default]" }     // настройка в файле \openHAB-conf\services\mqtt.cfg, mosquitto.url=tcp://localhost:1883
Switch	ElectroDragon1_Corridor		"Лампа коридор [%s]"						<light>     (Lamp, Lights_Random, Restroom)		{ mqtt=">[mosquitto:cmnd/ElectroDragon1/POWER2:command:*:default], <[mosquitto:stat/ElectroDragon1/POWER2:state:default]" }
Switch	Sonoff_Camera12v        	"Камера подъезд [%s]"						<camera>    (Entrance)	                     	{ mqtt=">[mosquitto:cmnd/Camera12v/POWER1:command:*:default], <[mosquitto:stat/Camera12v/POWER1:state:default]" }
Switch	ElectroDragon2_Bath			"Лампа ванна [%s]"							<light>	    (Lamp, Restroom)					{ mqtt=">[mosquitto:cmnd/ElectroDragon2/POWER1:command:*:default], <[mosquitto:stat/ElectroDragon2/POWER1:state:default]" }
Switch	ElectroDragon2_Kitchen		"Люстра кухня [%s]" 						<light>	    (Lamp, Lights_Random, Kitchen)		{ mqtt=">[mosquitto:cmnd/ElectroDragon2/POWER2:command:*:default], <[mosquitto:stat/ElectroDragon2/POWER2:state:default]" }
Switch	Sonoff_Table_lamp			"Лампа настольная в спальне [%s]"	    	<light> 	(Lamp, Lights_Random, Bedroom)     	{ mqtt=">[mosquitto:cmnd/Table_lamp/POWER:command:*:default], <[mosquitto:stat/Table_lamp/POWER:state:default]" }
Switch	ElectroDragon3_Bedroom	    "Люстра в спальне [%s]"						<light>	    (Lamp, Bedroom)				    	{ mqtt=">[mosquitto:cmnd/ElectroDragon3/POWER1:command:*:default], <[mosquitto:stat/ElectroDragon3/POWER1:state:default]" }
Switch	ElectroDragon3_Boxroom		"Лампа кладовка [%s]" 						<light>	    (Lamp, Bedroom)             		{ mqtt=">[mosquitto:cmnd/ElectroDragon3/POWER2:command:*:default], <[mosquitto:stat/ElectroDragon3/POWER2:state:default]" }
Switch	Sonoff_Living_room			"Люстра гостиная [%s]"				    	<light>	    (Lamp, Lights_Random, Living_room)	{ mqtt=">[mosquitto:cmnd/Living_room/POWER:command:*:default], <[mosquitto:stat/Living_room/POWER:state:default]" }
Number  WaterOverlap                "Перекрытие воды"                           <faucet>

//==============================================================================================================

Number P36_XP5_ADC                  "Noise [%.2f °C]"	                                            { http="<[http://192.168.88.60/sec/?pt=36&cmd=get:60000:REGEX((.*?))]" }	
Number P36_XP5_ADC_dB               "Noise [%.2f °C]"	
String USB_Maximum_amplitude		"USB Maximum amplitude [%s]"	<line>			               	{channel="exec:command:USB_Maximum_amplitude:output"}
Number USB_Maximum_amplitude_dB		"Датчик шума USB, [%.2f]"		<line>	    (Entrance) 	


Number P1_HTU21D_Temp       "Темп. на улице [%.2f °C]"	       <temperature>	 (Pipes)    { http="<[http://192.168.88.60/sec/?pt=0&scl=1&i2c_dev=htu21d&i2c_par=1:60000:REGEX((.*?))]" }	
Number P1_HTU21D_Hum        "Влажность на улице [%.2f %%]"     <humidity>                   { http="<[http://192.168.88.60/sec/?pt=0&scl=1&i2c_dev=htu21d:60000:REGEX((.*?))]" }	
Number P1_MAX44009	    	"Освещ. улицы [%.2f lux]"          <sunrise>		            { http="<[http://192.168.88.60/sec/?pt=0&scl=1&i2c_dev=max44009:60000:REGEX((.*?))]" }	

Switch	P2_ALL	             "ВЫКЛ всё [%s]"	                 { mqtt="<[mosquitto:megad/60/2:state:JSONPATH($.value)]" }     //{channel ="megad:device:14in:P2_ALL:in"}
//Switch	P2_ALL_hold          "ВКЛ всё [%s]"	                     { mqtt="<[mosquitto:megad/60/10:state:JSONPATH($.[?(@.m=='0')].value)]" }
Switch 	P4_Domofon	         "Домофон [%s]"		(Entrance)	     { mqtt="<[mosquitto:megad/60/4:state:JSONPATH($.value)]" } //{channel ="megad:device:14in:P4_Domofon:in"}

String  P3_SSD1306_Text             "Дисплей SSD1306 Text [%s]"         { http=">[*:GET:http://192.168.88.60/sec/?pt=3&text=%2$s]" }
String  P3_SSD1306_SmallText        "Дисплей SSD1306 SmallText [%s]"    { http=">[*:GET:http://192.168.88.60/sec/?pt=3&text=%2$s&col=30&row=0]" }

Switch   	P5_Door						"Дверь [MAP(door.map):%s]"	    		{ mqtt="<[mosquitto:megad/60/5:state:JSONPATH($.value)]" } //{channel ="megad:device:14in:P5_Door:contact"}
String 		P5_Door_state				"Дверь [%s]"
String 		P5_Door_state_general		"Дверь [%s]"	    	<door>			(Entrance)
DateTime	P5_last_use					"Door, last use [%1$td.%1$tm, %1$tR]"
Number 		P5_DoorRunStart 			"P5_DoorRunStart [%s]"	
Number		P5_last_use_ago				"Door, last use, h. ago [%.2f]"

Group:Number:AVG Pipes          	"Температура отопления [%.2f °C]"               <temperature>       (Pipes) 
Number P6_DS18B20_WC_cold			"Темп. хол. трубы, °C [%.2f]"   	        	<temperature_cold>	(Pipes)	  { http="<[http://192.168.88.60/sec/?pt=6&cmd=list:60000:REGEX(.*?961b01000080:(.*?))]" }	
Number P6_DS18B20_WC_cold_min		"Мин. значение хол. трубы в месяце, °C [%.2f]"
Number P6_DS18B20_WC_hot			"Темп. гор. трубы, °C [%.2f]"		            <temperature_hot>	(Pipes)	  { http="<[http://192.168.88.60/sec/?pt=6&cmd=list:60000:REGEX(.*?141201000080:(.*?);(.*))]" }	
Number P6_DS18B20_WC_hot_max		"Макс. значение гор. трубы в месяце, °C [%.2f]"

Group:Number:AVG Indoor         "Температура в комнатах [%.2f °C]"       <temperature>  (Indoor) 
Number P7_DS18B20_Kitchen		"Темп. кухня [%.2f °C]" 		         <temperature>  (Kitchen, Indoor)			{ http="<[http://192.168.88.60/sec/?pt=7&cmd=list:60000:REGEX(.*?ff4902731604:(?!85)(.*?);(.*))]" }	
Number P7_DS18B20_livingroom	"Темп. гостиная [%.2f °C]"	             <temperature>	(Living_room, Indoor)		{ http="<[http://192.168.88.60/sec/?pt=7&cmd=list:60000:REGEX(.*?ff04f2711605:(?!85)(.*?);(.*))]" }	
Number P7_DS18B20_Heat_bedroom	"Темп. бат. спальни [%.2f °C]"           <radiator>   	(Pipes)	                	{ http="<[http://192.168.88.60/sec/?pt=7&cmd=list:60000:REGEX(.*?fff9b7731604:(?!85)(.*?))]" }	
Number P7_DS18B20_bedroom_avg	"Средняя темп. батареи в месяце [%.2f °C]"

Group   Counters                    	"Приборы учета"                                 <office>       (Counters) 
Group	WaterCold 
String	CountWaterCold					"Холодная вода: "
Switch	P8_WaterPulse_cold				"Холодная, счетчик Valtec VLF-R-IL [%s]"          { mqtt="<[mosquitto:megad/60/8:state:JSONPATH($.value)]" } //{channel ="megad:device:14in:P8_WaterPulse_cold:in"}
Number	CountWaterM3Cold				"ХВС Valtec VLF-R-IL, м. куб. [%.2f]"	    	<humidity>		(Counters)
String	CountWaterM3Cold_general		"Холодная Valtec, м. куб. [%s]"					<office>
Number	CountWaterM3Cold_Kalends		"ХВС на 1е число, м. куб. [%.2f]"		    	<water>		    (Counters)
Number	CountWaterM3Cold_Consumption	"ХВС расход в тек.мес., м. куб. [%.2f]"			<humidity>		(Counters)

Group	WaterHot 
String	CountWaterHot					"Горячая вода: "
Switch	P9_WaterPulse_hot				"Горячая, счетчик Valtec VLF-R-IL [%s]"           	{ mqtt="<[mosquitto:megad/60/9:state:JSONPATH($.value)]" } //{channel ="megad:device:14in:P9_WaterPulse_hot:in"}
Number	CountWaterM3Hot					"ГВС Valtec VLF-R-IL, м. куб. [%.2f]"   		<humidity>		(Counters)
String	CountWaterM3Hot_general			"Горячая Valtec, м. куб. [%s]"					<office>
Number	CountWaterM3Hot_Kalends			"ГВС на 1е число, м. куб. [%.2f]"	    		<water>	    	(Counters)
Number	CountWaterM3Hot_Consumption		"ГВС расход в тек.мес., м. куб. [%.2f]"			<humidity>		(Counters)

Group Incotex201 	
Number  P10_CountElecImp  	  					"Импульсы э/э, текущее значение (3200/кВт*ч) [%s]"       { mqtt="<[mosquitto:megad/60/10:state:JSONPATH($.cnt)]" } //{channel ="megad:device:14in:P10_CountElecImp:incount"}
Number  MercuryIncotex201KWh   					"Э/э Меркурий 201.5, кВт*ч [%.2f]"		<energy>	   	
String  MercuryIncotex201KWh_general  			"Э/э Меркурий 201.5, кВт*ч [%s]"		<office>		(Counters)			
Number  MercuryIncotex201KWh_Kalends			"Э/э на начало месяца, кВт*ч [%.2f]"	<energy>		(Counters)
Number  MercuryIncotex201KWh_Consumption		"Э/э расход в тек.месяце, кВт*ч [%.2f]"	<line>			(Counters)
Number  MercuryIncotex201KWh_Consumption_Price	"Э/э по 3,62 в тек.месяце, руб. [%.2f]"	<pie>	

//==============================================================================================================

Group:Switch:OR(OFF, ON) 	Reachable "Недоступное оборудования [(%d)]"         <network>      (Reachable) 

Switch	ElectroDragon1_Reachable		    	"ElectroDragon1 [%s]"           <network>	(Reachable)    { mqtt="<[mosquitto:tele/ElectroDragon1/LWT:state:MAP(tasmota.map)]" }
Switch	Sonoff_Camera12v_Reachable            	"Sonoff SV_Камера подъезд [%s]"	<network>	(Reachable)    { mqtt="<[mosquitto:tele/Camera12v/LWT:state:MAP(tasmota.map)]" }
Switch	ElectroDragon2_Reachable	    		"ElectroDragon2 [%s]"       	<network>	(Reachable)    { mqtt="<[mosquitto:tele/ElectroDragon2/LWT:state:MAP(tasmota.map)]" }
Switch	Sonoff_Table_lamp_Reachable	    		"Sonoff лампа настольная [%s]"	<network>   (Reachable)    { mqtt="<[mosquitto:tele/Table_lamp/LWT:state:MAP(tasmota.map)]" }
Switch	ElectroDragon3_Reachable	            "ElectroDragon3 [%s]"	        <network>	(Reachable)    { mqtt="<[mosquitto:tele/ElectroDragon3/LWT:state:MAP(tasmota.map)]" }
Switch	Sonoff_Living_room_Reachable			"Sonoff люстра гостиная [%s]"	<network>	(Reachable)    { mqtt="<[mosquitto:tele/Living_room/LWT:state:MAP(tasmota.map)]" }

Switch	LAN_MikroTik		"MikroTik hAP lite RB941-2nD-TC [%s]"	    <qualityofservice>	(Reachable)			{ channel="network:pingdevice:LAN_MikroTik:online" }
Switch	LAN_MegaD2561		"MegaD-2561 + MegaD-14-IN [%s]"			    <qualityofservice>	(Reachable)			{ channel="network:pingdevice:LAN_MegaD2561:online" } 
Switch	LAN_Beward			"Beward B2710DR [%s]"					    <qualityofservice>	(Reachable)			{ channel="network:pingdevice:LAN_Beward:online" }

//==============================================================================================================

DateTime dateTimeNTP			"Дата и время [%1$tA, %1$td.%1$tm.%1$tY, %1$tR]"    	<calendar>		{ channel="ntp:ntp:pool:dateTime" }  	 //расшифровка букв https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
String	dateTime				"Дата и время сервера [%s]"								<calendar>

//==============================================================================================================

Group   Systeminfo  "Информация сервера"         <screen>      (Systeminfo) 
/* CPU information*/
Number CPU_Load                   <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:cpu#load"} 
Number CPU_Threads                <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:cpu#threads" }
Number CPU_Uptime                 <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:cpu#uptime" }

/* Storage information*/
Number Storage_Total               <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:storage#total" }
Number Storage_Available_Percent   <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:storage#availablePercent" }

/* Memory information*/
Number Memory_Available            <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:memory#available" }
Number Memory_Available_Percent    <line-stagnation>  (Systeminfo) { channel="systeminfo:computer:work:memory#availablePercent" }

/* Network information*/
Number Network_DataSent          <line-stagnation>    (Systeminfo)   { channel="systeminfo:computer:work:network#dataSent" }
Number Network_DataRecevied      <line-stagnation>    (Systeminfo)   { channel="systeminfo:computer:work:network#dataReceived" }

//==============================================================================================================

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 08:38

default.sitemap

Код: Выделить всё

sitemap default label="хххххххххххххх"	
{
Frame label="Квартира" {
Text item=Lamp {
    Switch item=Lamp mappings=[OFF="ВЫКЛ всё", ON="ВКЛ всё"]	
    Switch item=ElectroDragon1_WC			
    Switch item=ElectroDragon1_Corridor		 	
    Switch item=ElectroDragon2_Bath			
    Switch item=ElectroDragon2_Kitchen		
    Switch item=Sonoff_Table_lamp			
    Switch item=ElectroDragon3_Bedroom	    
    Switch item=ElectroDragon3_Boxroom		
    Switch item=Sonoff_Living_room	
    //Switch item=Ghost_Lights 
}
Group item=Indoor
Group item=Pipes 
Text item=P5_Door_state_general
Text item=Counters {
    Frame label="Электроэнергия" {
    Text item=MercuryIncotex201KWh_general
    Text item=MercuryIncotex201KWh_Kalends
    }
        Frame label="Холодная вода (ХВС)" {
        Text item=CountWaterM3Cold_general
        Text item=CountWaterM3Cold_Kalends
        }
    Frame label="Горячая вода (ГВС)" {
    Text item=CountWaterM3Hot_general
    Text item=CountWaterM3Hot_Kalends
    }
    }
Text item=dateTimeNTP 
}

Frame label="Улица" {
	Text item=P1_HTU21D_Temp 
	Text item=P1_HTU21D_Hum			
	Text item=P1_MAX44009 
    }

Frame label="Служебное" {
    Text item=ChartPeriodName {
    Image refresh=60000 url="http://192.168.88.70:3000/render/dashboard-solo/db/font8?refresh=5m&orgId=1&panelId=2&theme=light&width=700&height=350"
    Image refresh=60000 url="http://192.168.88.70:3000/render/dashboard-solo/db/font8?refresh=5m&orgId=1&panelId=1&theme=light&width=700&height=350"
    Image refresh=60000 url="http://192.168.88.70:3000/render/dashboard-solo/db/font8?refresh=5m&orgId=1&panelId=9&theme=light&width=700&height=350"
    }
    Switch item=WaterOverlap mappings=[1="Течет", 2="Перекрыто"]
	Group item=Systeminfo
	Group item=Reachable
}	

}

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 08:40

default.rules

Код: Выделить всё

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.joda.time.*

import java.lang.Math
import java.util.Calendar
import java.util.Date
import java.util.TimeZone
import java.text.SimpleDateFormat
import java.util.List //https://github.com/openhab/openhab/wiki/Actions#mail-actions
import java.util.Random

import java.lang.Double.*
import java.lang.String.*

/* =============================================================================================================== */
/*
// Начальная настройка показаний 
rule "System started Counters"
when
   System started
then
	postUpdate(MercuryIncotex201KWh, 1656.25)
	postUpdate(CountWaterM3Cold, 98.772)
	postUpdate(CountWaterM3Hot, 56.879)       

	// Корректировка 21.08.2018 15.00
	// Корректировка 27.10.2018 15.00
end 
*/ 
 
/*
rule "P5_initial" //эмуляция открытия закрытия двери 
when
    Time cron "0 0/1 * * * ?" //каждую 1 мин
then
	postUpdate(P5_Door, OPEN)
	Thread::sleep(60000)
	postUpdate(P5_Door, CLOSED)
end
*/ 

/*  
rule "initial" 	//чтобы уйти от NULL в самом начале
when
    System started
then
	postUpdate(CountWaterM3Hot_Consumption, 0)
	postUpdate(CountWaterM3Cold_Consumption, 0)
end
*/

/* =============================================================================================================== */ 

//ВЫКЛ всё 

rule "P2 ALL OFF" 
when
    Item P2_ALL changed to ON     
then
	publish("mosquitto","cmnd/ElectroDragon1/POWER1","OFF")
	publish("mosquitto","cmnd/ElectroDragon2/POWER1","OFF")
	publish("mosquitto","cmnd/ElectroDragon2/POWER2","OFF")
	publish("mosquitto","cmnd/Table_lamp/POWER1","OFF")
	publish("mosquitto","cmnd/ElectroDragon3/POWER1","OFF")
	publish("mosquitto","cmnd/ElectroDragon3/POWER2","OFF")
	publish("mosquitto","cmnd/Living_room/POWER1","OFF")
	Thread::sleep(15000) //15000 миллисекунд в секундах
	publish("mosquitto","cmnd/ElectroDragon1/POWER2","OFF") //прихожая
end

/*
rule "P2 ALL ON" 
when
    Item P2_ALL_hold changed    
then
	publish("mosquitto","cmnd/ElectroDragon1/POWER2","ON") //прихожая
	publish("mosquitto","cmnd/ElectroDragon1/POWER1","ON")
	publish("mosquitto","cmnd/ElectroDragon2/POWER1","ON")
	publish("mosquitto","cmnd/ElectroDragon2/POWER2","ON")
	publish("mosquitto","cmnd/Table_lamp/POWER1","ON")
	publish("mosquitto","cmnd/ElectroDragon3/POWER1","ON")
	publish("mosquitto","cmnd/Living_room/POWER1","ON")
end
*/

/* =============================================================================================================== */ 

rule "Time to SSD1306"
when
	Time cron "0 0/1 * * * ?" //каждую 1 минут
then
	var String Temp = (((P1_HTU21D_Temp.state as DecimalType)*10).intValue/10.0).toString //оставляем один знак после запятой и преобразуем в строку
	//val Temp = String::format("%.0f", (P1_HTU21D_Temp.state as DecimalType).doubleValue )

	var String Hour = String::format( "%1$tk", new Date() ) //https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
	var String Minute = String::format( "%1$tM", new Date() )

	sendHttpGetRequest("http://192.168.88.60/sec/?pt=3&disp_cmd=1&row=0")	//очистка верней строки
	Thread::sleep(2000) //2000 миллисекунд в секундах	
	sendCommand(P3_SSD1306_Text,"ssssssss") //очистка основной строки
	Thread::sleep(2500) //2500 миллисекунд в секундах
	sendCommand(P3_SSD1306_SmallText, "Time") 
	sendCommand(P3_SSD1306_Text, "_" + Hour + ";" + Minute) 
	
	Thread::sleep(30000) //30000 миллисекунд в секундах

	sendHttpGetRequest("http://192.168.88.60/sec/?pt=3&disp_cmd=1&row=0")	//очистка верней строки
	Thread::sleep(2000) //2000 миллисекунд в секундах	
	sendCommand(P3_SSD1306_Text,"ssssssss") //очистка основной строки
	Thread::sleep(2500) //2500 миллисекунд в секундах	
	sendCommand(P3_SSD1306_SmallText, "Outdoor") 
	sendCommand(P3_SSD1306_Text, "_" + Temp + ":") 
end

/* =============================================================================================================== */ 

//подсчет показаний хол. воды

rule "CountWaterImpCold"
when
   Item P8_WaterPulse_cold changed to ON //received update ON   
then
	var Number WatCold = CountWaterM3Cold.state as DecimalType
	var Number tmp1
	var Number Kal1
	var Number Dif1
   
	tmp1 = WatCold + 0.01 // один полный импульс при прохождении 10 л жидкости 
	postUpdate(CountWaterM3Cold, tmp1.doubleValue)
	
	if (CountWaterM3Cold.state instanceof DecimalType) {
        Kal1 = CountWaterM3Cold.minimumSince(now.toDateMidnight.withDayOfMonth(1)).state as DecimalType //на начало месяца
	    postUpdate(CountWaterM3Cold_Kalends, Kal1.doubleValue )
       	Dif1 = tmp1 - Kal1
       	postUpdate(CountWaterM3Cold_Consumption, Dif1.doubleValue )
    	}    	
end

//подсчет показаний гор. воды
rule "CountWaterImpHot"
when
   Item P9_WaterPulse_hot changed to ON //received update ON 
then
	var Number WatHot = CountWaterM3Hot.state as DecimalType
	var Number tmp2
	var Number Kal2
	var Number Dif2
   
	tmp2 = WatHot + 0.01 // один полный импульс при прохождении 10 л жидкости 
	postUpdate(CountWaterM3Hot, tmp2.doubleValue)
	
	if (CountWaterM3Hot.state instanceof DecimalType) {
        Kal2 = CountWaterM3Hot.minimumSince(now.toDateMidnight.withDayOfMonth(1)).state as DecimalType //на начало месяца
	    postUpdate(CountWaterM3Hot_Kalends, Kal2.doubleValue )
       	Dif2 = tmp2 - Kal2
       	postUpdate(CountWaterM3Hot_Consumption, Dif2.doubleValue )
    	}	
end

//отображение воды в sitemap
rule "WaterSitemap"
when
	Time cron "0 0/10 * * * ?" //каждые 10 минут
then
	val CropDigital3 = String::format("%.2f", (CountWaterM3Cold.state as DecimalType).doubleValue )
	val CropDigital4 = String::format("%.2f", (CountWaterM3Cold_Consumption.state as DecimalType).doubleValue )
	postUpdate(CountWaterM3Cold_general, CropDigital3 + " (" + CropDigital4 + " в тек.мес.)" )	    
	
	val CropDigital5 = String::format("%.2f", (CountWaterM3Hot.state as DecimalType).doubleValue )
	val CropDigital6 = String::format("%.2f", (CountWaterM3Hot_Consumption.state as DecimalType).doubleValue )
	postUpdate(CountWaterM3Hot_general, CropDigital5 + " (" + CropDigital6 + " в тек.мес.)" )	
end

/* =============================================================================================================== */ 
//подсчет кВт*ч эл. счетчика через счетчик порта MegaD 

rule "MercuryIncotex201KWh"
when
   Item P10_CountElecImp changed
then
   var Number Imp = P10_CountElecImp.state as DecimalType
   var Number KWh = MercuryIncotex201KWh.state as DecimalType
   
   if ( Imp >= 320 )	
   		{
	    //KWh = KWh + 0.1 // 1 кВт*ч - 3200 импульсов
	    KWh = KWh + Imp/3200 // 1 кВт*ч - 3200 импульсов
		postUpdate(MercuryIncotex201KWh, KWh)
		sendHttpGetRequest("http://192.168.88.60/sec/?pt=10&cnt=0")
		}
end

rule "MercuryIncotex201KWh_Past"
when
	Time cron "0 0/5 * * * ?" //каждые 5 минут
then
   var Number KWh = MercuryIncotex201KWh.state as DecimalType
   var Number Kal
   var Number Dif
   var Number Pri
   
	if (MercuryIncotex201KWh.state instanceof DecimalType) {
        Kal = MercuryIncotex201KWh.minimumSince(now.toDateMidnight.withDayOfMonth(1)).state as DecimalType //на начало месяца
        //Kal = (MercuryIncotex201KWh.minimumSince(now.toDateMidnight.withDayOfMonth(1).withMonthOfYear(1), "rrd4j").state as DecimalType) //на начало года  //https://knx-user-forum.de/forum/supportforen/openhab/33557-anf%C3%A4nger
	    postUpdate(MercuryIncotex201KWh_Kalends, Kal.doubleValue )
       	Dif = KWh - Kal
       	postUpdate(MercuryIncotex201KWh_Consumption, Dif.doubleValue )
       	Pri = Dif * 3.62 //3,62 рубля за кВт*ч
       	postUpdate(MercuryIncotex201KWh_Consumption_Price, Pri.doubleValue )
 	   }

	val CropDigital1 = String::format("%.2f", KWh.doubleValue ) //формат строки для sitemap
	val CropDigital2 = String::format("%.2f", Dif.doubleValue ) //формат строки для sitemap	
	postUpdate(MercuryIncotex201KWh_general, CropDigital1 + " (" + CropDigital2 + " в тек.мес.)" )	   
end

/* =============================================================================================================== */ 
//дверь 

rule "P5 Door closed" //ON=закрыта
when
    Item P5_Door changed to ON     
then
	postUpdate(P5_last_use, new DateTimeType() )
	postUpdate(P5_Door_state,  "закрыта")	
end

rule "P5 Door open" //OFF=открыта
when
    Item P5_Door changed to OFF
then
	var Number RunStart 
	RunStart = now.millis
	postUpdate(P5_DoorRunStart, RunStart.doubleValue ) // Timestamp when the switch was turned off	
	postUpdate(P5_last_use, new DateTimeType() )
	postUpdate(P5_Door_state,  "открыта" )
	//postUpdate(P5_Door_state_general,  "открыта" )
end

rule "P5_last_use_ago" 
when
    Time cron "0 0/3 * * * ?" //каждые 3 мин
then
	//postUpdate(P5_DoorRunStart, 0) 
	var Number RunStart = P5_DoorRunStart.state as DecimalType
	var Number DoorTime
	var Number RunEnd
	RunEnd = now.millis
 	if (P5_Door.state==ON) {
	DoorTime = (RunEnd - RunStart) / 3600000 //миллисекунды в часы
	postUpdate(P5_last_use_ago, DoorTime.doubleValue)
	
	val CropDigital = String::format("%.2f", DoorTime.doubleValue ) //формат строки для sitemap
	postUpdate(P5_Door_state_general, P5_Door_state.state + " (" + CropDigital + " ч)" )	
	}	
end

/* =============================================================================================================== */

// пересчет Volume adjustment в децибелы

rule "USB_Maximum_amplitude"  
when  
    Time cron "0 0/1 * * * ?" //каждую 11 минуту
    //Item USB_Maximum_amplitude received update 
then  
	var Number Vol=Float::parseFloat(String::format("%s",USB_Maximum_amplitude.state))
	Vol = 20 * Math::log10(Vol.doubleValue()) + 80 //dB = 20 x log10(Amplitude) - zero_offset - https://forum.arduino.cc/index.php?topic=376308.0
	postUpdate(USB_Maximum_amplitude_dB, Vol) //с микрофона

	var Number Vol2=Float::parseFloat(String::format("%s",P36_XP5_ADC.state))
 	if (Vol2==0) { Vol2 = 1 }	
	Vol2 = 20 * Math::log10(Vol2.doubleValue()) + 20
	postUpdate(P36_XP5_ADC_dB, Vol2) //с платы

/*	if ( Vol > 120) {	
		postUpdate(USB_Maximum_amplitude_dB, 120) //не может быть больше 120 дБ		
		}	else {
	postUpdate(USB_Maximum_amplitude_dB, Vol.doubleValue) //Настоящее значение 	
	}
*/
end  


/* =============================================================================================================== */

// перезагрузка камеры Beward B2710DR по расписанию 

rule "Beward reset"
when
    Time cron "0 30 05 ? * MON,WED,FRI,SUN" //http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-06
then
	publish("mosquitto","cmnd/Camera12v/POWER1","OFF")
	Thread::sleep(60000)
	publish("mosquitto","cmnd/Camera12v/POWER1","ON")
end

/* =============================================================================================================== */
// Перекрытие воды

rule "WaterOverlap" 
when
    Item WaterOverlap received command      
then
	if (WaterOverlap.state == 1) {
			publish("mosquitto", "megad/60/cmd","11:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","12:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","11:1") //двигаем
			Thread::sleep(18000) //миллисекунд в секундах
			publish("mosquitto", "megad/60/cmd","11:0")
            }  
	if (WaterOverlap.state == 2) {
			publish("mosquitto", "megad/60/cmd","11:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","12:0")
			Thread::sleep(100) 
			publish("mosquitto", "megad/60/cmd","12:1") //двигаем
			Thread::sleep(18000) //миллисекунд в секундах
			publish("mosquitto", "megad/60/cmd","12:0")
            }  		
end

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 08:58

Через несколько дней будут рабочие конфиги.
Вложения
2019-07-13_09-57.png
2019-07-13_09-57.png (136.96 КБ) 438 просмотров

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 13 июл 2019, 11:02

По рекомендации уважаемого d.v.ermakov обзавелся таки датчиком звука Gravity: Analog Sound Level Meter SKU:SEN0232 https://wiki.dfrobot.com/Gravity__Analo ... KU_SEN0232 - вышло недешево, но при первом взгляде - работает - на внешние раздражите реагирует:
IMG_20190713_115646.jpg
IMG_20190713_115646.jpg (300.14 КБ) 430 просмотров
SoundLevelMeterBoardConnector.png
SoundLevelMeterBoardConnector.png (107.13 КБ) 430 просмотров

SolarW
Сообщения: 176
Зарегистрирован: 01 авг 2016, 00:32

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение SolarW » 13 июл 2019, 18:51

empenoso писал(а):
13 июл 2019, 08:25
в общем решил я переходить с openHAB на Home Assistant здесь тоже.
А чего не на IOBroker?

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 14 июл 2019, 15:08

SolarW писал(а):
13 июл 2019, 18:51
empenoso писал(а):
13 июл 2019, 08:25
в общем решил я переходить с openHAB на Home Assistant здесь тоже.
А чего не на IOBroker?
Home Assistant на слуху и когда попробовал его - мне понравился. Уже в двух других проектах использую.

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение empenoso » 14 июл 2019, 20:35

Думаю мегой здесь полностью по mqtt управлять, без http (а не как у меня вперемешку на опенхабе было). Интерфейсы более чем дружественные, всё буквально парой кликов через веб-интерфейс можно сделать:
2019-07-14_21-39.png
2019-07-14_21-39.png (280.28 КБ) 370 просмотров

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета

Сообщение empenoso » 17 июл 2019, 15:20

Датчик шума https://wiki.dfrobot.com/Gravity__Analo ... KU_SEN0232 и его применение в home assistant:

считывание:

Код: Выделить всё

  - platform: mqtt
    name: "Датчик шума"
    device_class: signal_strength
    state_topic: "megad/7/36"
    #value_template: '{{ value_json.value }}'
    value_template: "{{ (value_json.value|float/1023*3.3*50) | round(1) }}"    
    unit_of_measurement: "dBA"
запрос:

Код: Выделить всё

- alias: Mega Датчик шума
  trigger:
    - platform: time_pattern
      minutes: '/5'
      seconds: 40
  action:
    - service: mqtt.publish
      data:
        topic: "megad/7/cmd"
        payload: "get:36"
Вложения
Voltage-db.png
Voltage-db.png (11.22 КБ) 316 просмотров

SolarW
Сообщения: 176
Зарегистрирован: 01 авг 2016, 00:32

Re: Арендная квартира: MegaD, openHAB, датчик шума и приборы учета

Сообщение SolarW » 21 июл 2019, 23:39

empenoso писал(а):
SolarW писал(а):
13 июл 2019, 18:51
empenoso писал(а):
13 июл 2019, 08:25
в общем решил я переходить с openHAB на Home Assistant здесь тоже.
А чего не на IOBroker?
Home Assistant на слуху и когда попробовал его - мне понравился. Уже в двух других проектах использую.
Не, ну если нравится - то вопросов нет.
ИОБ вроде как наиболее интересный по совокупности возможностей сейчас.
Автор старается брать лучшее из других проектов.
Если не ошибаюсь - в прошлом месяце интерфейс визуализации от HA прицепил, от опенхаба вроде тоже habpanel есть...

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета

Сообщение empenoso » 01 авг 2019, 10:26

Переехал полностью на Home Assistant. Выглядит так:
2019-08-01_10-42.png
2019-08-01_10-42.png (305.14 КБ) 197 просмотров

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета

Сообщение empenoso » 01 авг 2019, 10:27

Мобильный:
Screenshot_20190729-150820.png
Screenshot_20190729-150820.png (151.87 КБ) 197 просмотров

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета

Сообщение empenoso » 01 авг 2019, 10:33

/config/configuration.yaml

Код: Выделить всё

###################################################
#                                                 #
#     Home Assistant  Configuration               #
#                                                 #
###################################################

#!!!! ПРАВИТЬ ПОКАЗАНИЯ СЧЕТЧИКОВ ВОДЫ ПЕРЕД СОХРАНЕНИЕМ !!!!

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

homeassistant:
    name: !secret name
    time_zone: Asia/Yekaterinburg
    unit_system: metric
    customize: !include customize.yaml

group:  !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

###################################################
#                                                 #
#                     Panel                       #
#                                                 #
################################################### 

panel_iframe:
  tasmoadmin:
    title: TasmoAdmin
    icon: mdi:car-esp
    url: http://192.168.8.8:9541/devices

####################################################
#                                                  #
#                    sensor                        #
#                                                  #
####################################################

sensor:
  - platform: command_line
    name: "Освещенность улицы"
    command: "/usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=0&scl=1&i2c_dev=max44009'"
    value_template: '{{ (value|float) | round(1) }}'
    scan_interval: 300
  - platform: mqtt
    name: "Темп. на улице"
    device_class: temperature
    state_topic: "megad/7/0"
    value_template: '{{ value_json.value.temp }}'
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Влажность на улице"
    device_class: humidity
    state_topic: "megad/7/0"
    value_template: '{{ value_json.value.hum }}'
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Темп. хол. трубы"
    device_class: temperature
    state_topic: "megad/7/6"
    value_template: '{{ value_json["value"]["961b01000080"] }}'
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Темп. гор. трубы"
    device_class: temperature
    state_topic: "megad/7/6"
    value_template: '{{ value_json["value"]["141201000080"] }}'
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Темп. кухня"
    device_class: temperature
    state_topic: "megad/7/7"
    value_template: >- #еще вариант: https://community.home-assistant.io/t/trigger-numeric-state-below-value-not-firing/28911
      {%- if value_json.value.ff4902731604|float >= 0 and value_json.value.ff4902731604|float <= 70 -%}
      {{ value_json.value.ff4902731604 | round(1) }}
      {%- else -%}
      nan
      {%- endif -%}
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Темп. гостиная"
    device_class: temperature
    state_topic: "megad/7/7"
    #value_template: '{{ value_json.value.ff04f2711605 }}'
    value_template: >-
      {%- if value_json.value.ff04f2711605|float >= 0 and value_json.value.ff04f2711605|float <= 70 -%}
      {{ value_json.value.ff04f2711605 | round(1) }}
      {%- else -%}
      nan
      {%- endif -%}
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Темп. бат. спальни"
    device_class: temperature
    state_topic: "megad/7/7"
    value_template: >-
      {%- if value_json.value.fff9b7731604|float >= 0 and value_json.value.fff9b7731604|float <= 70 -%}
      {{ value_json.value.fff9b7731604 | round(1) }}
      {%- else -%}
      nan
      {%- endif -%}
    unit_of_measurement: "°C"
  - platform: mqtt
    name: "Датчик шума"
    device_class: signal_strength
    state_topic: "megad/7/36"
    value_template: "{{ (value_json.value|float/1023*3.3*50) | round(1) }}"    
    unit_of_measurement: "dBA"

  - platform: filter
    name: "Шум"
    entity_id: sensor.datchik_shuma
    filters:
      - filter: time_simple_moving_average
        window_size: 00:05
        precision: 2

  - platform: snmp #https://www.ab-log.ru/forum/viewtopic.php?t=1004&start=400
    name: "RouterOS Wireless" 
    host: 192.168.8.1
    baseoid: .1.3.6.1.4.1.14988.1.1.1.3.1.6.1
    accept_errors: true
    unit_of_measurement: "pc"    

  - platform: openweathermap
    api_key: !secret openweathermap_api_key
    language: ru
    monitored_conditions:
      - weather
      - temperature

  - platform: template # https://community.home-assistant.io/t/water-meter-sensor-help-configuring-it/28229/20
    sensors:
        water_cold_counter_m3:
            friendly_name: "ХВС показания"
            unit_of_measurement: 'm3'
            value_template: "{{ (states('counter.water_cold_counter') | float)/1000 }}"    
        water_hot_counter_m3:
            friendly_name: "ГВС показания"
            unit_of_measurement: 'm3'
            value_template: "{{ (states('counter.water_hot_counter') | float)/1000 }}"  
        energy_counter:
            friendly_name: "Счетчик э/э"
            unit_of_measurement: ''
            value_template: "{{ (states('energy_counter') | float)/1 }}"  
        illuminance:
            friendly_name: "Освещенность улицы"
            device_class: illuminance
            unit_of_measurement: "lx"
            entity_id: sensor.osveshchennost_ulitsy
            value_template: "{{ states.sensor.osveshchennost_ulitsy.state }}"  

####################################################
#                                                  #
#                    binary_sensor                 #
#                                                  #
####################################################
  
binary_sensor:
  - platform: mqtt
    name: "Входная дверь"
    device_class: door
    state_topic: "megad/7/5"
    value_template: "{{ value_json.value }}"
    qos: 1
    payload_on: "OFF"
    payload_off: "ON"
  - platform: mqtt
    name: "Выключить всё"
    device_class: moving
    state_topic: "megad/7/2"
    value_template: "{{ value_json.value }}"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: "Домофон"
    device_class: sound
    state_topic: "megad/7/4"
    value_template: "{{ value_json.value }}"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: "Холодная вода"
    device_class: opening
    state_topic: "megad/7/8"
    value_template: "{{ value_json.value }}"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: "Горячая вода"
    device_class: opening
    state_topic: "megad/7/9"
    value_template: "{{ value_json.value }}"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: "Счетчик э/э"
    device_class: opening
    state_topic: "megad/7/10"
    value_template: "{{ value_json.value }}"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"

####################################################
#                                                  #
#                    light                        #
#                                                  #
####################################################

light:
  - platform: mqtt
    name: "Туалет"
    state_topic: "stat/ElectroDragon1/RESULT"
    value_template: "{{ value_json.POWER1 }}"
    command_topic: "cmnd/ElectroDragon1/POWER1"
    availability_topic: "tele/ElectroDragon1/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Коридор"
    state_topic: "stat/ElectroDragon1/RESULT"
    value_template: "{{ value_json.POWER2 }}"
    command_topic: "cmnd/ElectroDragon1/POWER2"
    availability_topic: "tele/ElectroDragon1/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Ванна"
    state_topic: "stat/ElectroDragon2/RESULT"
    value_template: "{{ value_json.POWER1 }}"
    command_topic: "cmnd/ElectroDragon2/POWER1"
    availability_topic: "tele/ElectroDragon2/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Кухня"
    state_topic: "stat/ElectroDragon2/RESULT"
    value_template: "{{ value_json.POWER2 }}"
    command_topic: "cmnd/ElectroDragon2/POWER2"
    availability_topic: "tele/ElectroDragon2/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Спальня"
    state_topic: "stat/ElectroDragon3/RESULT"
    value_template: "{{ value_json.POWER1 }}"
    command_topic: "cmnd/ElectroDragon3/POWER1"
    availability_topic: "tele/ElectroDragon3/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Кладовка"
    state_topic: "stat/ElectroDragon3/RESULT"
    value_template: "{{ value_json.POWER2 }}"
    command_topic: "cmnd/ElectroDragon3/POWER2"
    availability_topic: "tele/ElectroDragon3/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Настольная лампа"
    state_topic: "stat/TableLamp/RESULT"
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/TableLamp/POWER"
    availability_topic: "tele/TableLamp/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Гостиная"
    state_topic: "stat/Living_room/RESULT"
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/Living_room/POWER"
    availability_topic: "tele/Living_room/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"

####################################################
#                                                  #
#                    switch                        #
#                                                  #
####################################################

switch:
  - platform: mqtt
    name: "Камера подъезд"
    state_topic: "stat/Camera12v/RESULT"
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/Camera12v/POWER"
    availability_topic: "tele/Camera12v/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"

cover:
  - platform: command_line
    covers:
      water_overlap:
        friendly_name: Вода
        command_open: "/usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=11:0'; /usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=11:1'; sleep 20; /usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=11:0'"
        command_close: "/usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=12:0'; /usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=12:1'; sleep 20; /usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=12:0'"
        command_stop: "/usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=11:0'; /usr/bin/curl -X GET 'http://192.168.8.7/sec/?pt=11&cmd=12:0'"

####################################################
#                                                  #
#                    another                       #
#                                                  #
####################################################

counter:
  water_cold_counter:
    initial: 132699
    step: 10
  water_hot_counter:
    initial: 76983
    step: 10
  energy_counter:
    initial: 22029
    step: 1

rest_command:
  display_send_time:
    url: "http://192.168.8.7/sec/?pt=3&text=_{{ as_timestamp(now()) | timestamp_custom('%H;%M') }}" #одна цифра без нуля{{ now().hour }};{{ now().minute }}
  display_send_time_small:
    url: 'http://192.168.8.7/sec/?pt=3&text=___Time&col=30&row=0'
  display_clear_big:
    url: 'http://192.168.8.7/sec/?pt=3&text=ssssss'
  display_clear_small:
    url: 'http://192.168.8.7/sec/?pt=3&disp_cmd=1&row=0'
  display_send_weather:
    url: "http://192.168.8.7/sec/?pt=3&text=_{{states('sensor.owm_temperature')}}:"
  display_send_weather_small:
    url: 'http://192.168.8.7/sec/?pt=3&text=_Weather&col=30&row=0'

camera:
- platform: ffmpeg
  name: Подъезд
  input: -rtsp_transport tcp -i rtsp://xxx:xxx@192.168.8.5:554/av0_0

device_tracker:
   - platform: snmp
     host: 192.168.8.1
     community: public
     baseoid: 1.3.6.1.2.1.17.4.3.1.1
#  - platform: nmap_tracker
#    hosts:
#      - 192.168.8.0/24
#    home_interval: 10
#    consider_home: 180
#    exclude:
#     - 192.168.8.8

speedtestdotnet:
  scan_interval:
    minutes: 180
  monitored_conditions:
    - ping
    - download
    - upload

# Text to speech
tts:
  - platform: google_translate
/config/customize.yaml

Код: Выделить всё

## Настроки иконок и видимости ##
sensor.water_cold_counter_m3:
    icon: mdi:counter
sensor.water_hot_counter_m3:
    icon: mdi:counter
sensor.energy_counter:
    icon: mdi:counter
cover.voda:
    device_class: damper
    icon: mdi:water-pump
/config/automations.yaml

Код: Выделить всё

######################################################
#                                                    #
# Узнать состояние всех sonoffs после перезапуска HA #
#                                                    #
###################################################### 

- alias: SONOFF state on HA start-up
  trigger:
    platform: homeassistant
    event: start
  action:
    - service: mqtt.publish
      data:
        topic: "cmnd/sonoffs/POWER"
        payload: ""
    - delay: '00:00:05'
    - service: mqtt.publish
      data:
        topic: "cmnd/sonoffs/POWER2"
        payload: ""

######################################################
#                                                    #
#           Time to OLED-дисплей SSD1306             #
#                                                    #
###################################################### 

- alias: Time to display
  trigger:
    - platform: time_pattern
      minutes: '/1'
      seconds: 5
  action:
    - service: rest_command.display_clear_small
    - delay: '00:00:01'
    - service: rest_command.display_clear_big
    - delay: '00:00:01'
    - service: rest_command.display_send_time_small
    - service: rest_command.display_send_time
    - delay: '00:00:25'
    - service: rest_command.display_clear_small
    - delay: '00:00:01'
    - service: rest_command.display_clear_big
    - delay: '00:00:01'
    - service: rest_command.display_send_weather_small
    - service: rest_command.display_send_weather

###################################################
#                                                 #
#              turn off all                       #
#                                                 #
################################################### 

- alias: Turn off all
  trigger:
    - platform: state
      entity_id: binary_sensor.vykliuchit_vsio
      from: 'off'
      to: 'on'
  condition: []
  action:
    - service: mqtt.publish
      data:
        topic: "cmnd/ElectroDragon1/POWER1"
        payload: "OFF"
    - service: mqtt.publish
      data:
        topic: "cmnd/ElectroDragon2/POWER1"
        payload: "OFF"
    - service: mqtt.publish
      data:
        topic: "cmnd/ElectroDragon2/POWER2"
        payload: "OFF"
    - service: mqtt.publish
      data:
        topic: "cmnd/Table_lamp/POWER1"
        payload: "OFF"
    - service: mqtt.publish
      data:
        topic: "cmnd/ElectroDragon3/POWER1"
        payload: "OFF"
    - service: mqtt.publish
      data:
        topic: "cmnd/ElectroDragon3/POWER2"
        payload: "OFF"
    - service: mqtt.publish
      data:
        topic: "cmnd/Living_room/POWER1"
        payload: "OFF"
    - delay: '00:00:20'
    - service: mqtt.publish
      data:
        topic: "cmnd/ElectroDragon1/POWER2"
        payload: "OFF"

######################################################
#                                                    #
#                Датчики мега                        #
#                                                    #
###################################################### 

- alias: Mega MQTT Sensor
  trigger:
    - platform: time_pattern
      minutes: '/5'
      seconds: 10
  action:
    - service: mqtt.publish
      data:
        topic: "megad/7/cmd"
        payload: "get:0" #Темп/влажн на улице
    - delay: '00:00:10'
    - service: mqtt.publish
      data:
        topic: "megad/7/cmd"
        payload: "get:6" #1 Темп. бат спальни 2 Темп. у окна кухни 3 Темп. в гостиной
    - delay: '00:00:10'
    - service: mqtt.publish
      data:
        topic: "megad/7/cmd"
        payload: "get:7" #1 Темп трубы ХВС 2 Темп трубы ГВС
    - delay: '00:00:10'
    - service: mqtt.publish
      data:
        topic: "megad/7/cmd"
        payload: "get:36" #Датчик шума

###################################################
#                                                 #
#                     count                       #
#                                                 #
################################################### 

- alias: Cold water count
  trigger:
    - platform: state
      entity_id: binary_sensor.kholodnaia_voda
      from: 'off'
      to: 'on'
  condition: []
  action:
    - service: counter.increment
      entity_id: counter.water_cold_counter

- alias: Hot water count
  trigger:
    - platform: state
      entity_id: binary_sensor.goriachaia_voda
      from: 'off'
      to: 'on'
  condition: []
  action:
    - service: counter.increment
      entity_id: counter.water_hot_counter

empenoso
Сообщения: 975
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Арендная квартира: MegaD, Home Assistant, датчик шума и приборы учета

Сообщение empenoso » 01 авг 2019, 10:36

lovelace:

Код: Выделить всё

title: xxxxxxxxxx
views:
  - badges: []
    cards:
      - cards:
          - entity: light.koridor
            hold_action:
              action: more-info
            icon: 'mdi:led-strip'
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
          - entity: light.vanna
            hold_action:
              action: more-info
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
          - entity: light.tualet
            hold_action:
              action: more-info
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
          - entity: light.kukhnia
            hold_action:
              action: more-info
            icon: 'mdi:ceiling-light'
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
        type: horizontal-stack
      - entity: group.all_lights
        hold_action:
          action: more-info
        icon: 'mdi:close-circle-outline'
        icon_height: 37px
        name: ВКЛ/ВЫКЛ всё освещение
        show_icon: true
        show_name: true
        tap_action:
          action: toggle
        type: entity-button
      - cards:
          - entity: light.spalnia
            hold_action:
              action: more-info
            icon: 'mdi:ceiling-light'
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
          - entity: light.nastolnaia_lampa
            hold_action:
              action: more-info
            icon: 'mdi:desk-lamp'
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
          - entity: light.kladovka
            hold_action:
              action: more-info
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
          - entity: light.gostinaia
            hold_action:
              action: more-info
            icon: 'mdi:ceiling-light'
            show_icon: true
            show_name: true
            tap_action:
              action: toggle
            type: entity-button
        type: horizontal-stack
      - entities:
          - entity: binary_sensor.vkhodnaia_dver
            secondary_info: last-changed
          - entity: camera.podezd
          - entity: binary_sensor.domofon
            secondary_info: last-changed
          - entity: sensor.datchik_shuma
        show_header_toggle: false
        title: Входная группа
        type: entities
      - entities:
          - entity: sensor.temp_kukhnia
          - entity: sensor.temp_gostinaia
          - entity: sensor.temp_bat_spalni
        title: Температура в квартире
        type: glance
      - entities:
          - entity: sensor.water_cold_counter_m3
          - entity: sensor.water_hot_counter_m3
          - entity: sensor.temp_gor_truby
          - entity: sensor.temp_khol_truby
          - entity: cover.voda
        show_header_toggle: false
        title: Приборы учета
        type: entities
      - entities:
          - entity: sensor.temp_na_ulitse
          - entity: sensor.vlazhnost_na_ulitse
          - entity: sensor.illuminance
          - entity: weather.font8
        show_header_toggle: false
        theme: default
        title: Улица
        type: glance
    icon: 'mdi:home-heart'
    path: default_view
    theme: default
    title: Home
  - badges: []
    cards:
      - entities:
          - entity: sensor.routeros_wireless
          - entity: sensor.speedtest_download
          - entity: sensor.speedtest_upload
          - entity: sensor.speedtest_ping
        title: Интернет
        type: glance
      - entities:
          - entity: sensor.temp_gostinaia
          - entity: sensor.temp_bat_spalni
          - entity: sensor.owm_temperature
        hours_to_show: 80
        title: Изм. температуры
        type: history-graph
      - entities:
          - entity: sensor.speedtest_download
          - entity: sensor.speedtest_upload
        hours_to_show: 80
        title: Интернет
        type: history-graph
    icon: 'mdi:history'
    theme: default
    title: History

Ответить