Главная > Умный дом > Domoticz. Включаем гирлянду по датчику Xiaomi Flower Monitor

Domoticz. Включаем гирлянду по датчику Xiaomi Flower Monitor


27 ноября 2018. Разместил: dimon
В преддверии Нового Года заставили меня повесить гирлянду на окно. Но у нас же дом умный поэтому захотелось мне автоматизировать ее включение с помощью розетки Xiaomi Mi Smart Socket ZigBee к которой у меня был подключен обогреватель на период "отопление еще не включили".

Сначала я просто отключил все сценарии, которые включали и выключали эту розетку в зависимости от значения температуры в комнате, потом я перетащил ее к окну и воткнул в нее гирлянду. За пару минут я сварганил два сценария на dzVents в domoticz.

На закате включить розетку:
return {
    active = true,   -- скрипт активен
	on = {
		timer = {'at sunset'},    -- каждый день на закате
		},
	
	
	logging = {
	    level = domoticz.LOG_ERROR    -- пишем в log только ошибки
	},
	
	-- когда таймер выстрелил, выполним секцию execute:
	execute = function(domoticz)
	    
	            domoticz.devices('Розетка Обогреватель').switchOn()
	            domoticz.log ('Розетка Обогреватель On')
	                   
    end
}


На рассвете выключить розетку:
return {
    active = true,   -- скрипт активен
	on = {
		timer = {'at sunrise'},     -- каждый день на восходе солнца
		},
	
	
	logging = {
	    level = domoticz.LOG_ERROR    -- пишем в log только ошибки
	},
	
	-- когда таймер выстрелил, выполним секцию execute:
	execute = function(domoticz)
	    
	            domoticz.devices('Розетка Обогреватель').switchOff()
	            domoticz.log ('Розетка Обогреватель Off')
	                   
    end
}


Не удивляйтесь, что устройство обзывается 'Розетка Обогреватель' - она имеет такое имя в Domoticz. К тому же Новый Год закончится и наступит весна с ее периодом "отопление отключили, а погода еще дубак" и розетка снова станет выполнять роль умного обогревателя, как и последние два года до этого.



Порадовавшись первому включению гирлянды я подумал, что как то не сильно умная она получилась, и решил запилить включение по датчику освещенности. В наличии у меня имеется целых три датчика Xiaomi Flower Monitor прикрученных к Domoticz с помощью python скрипта miflora.py.

Проанализировав график освещенности за последнюю неделю, я выбрал границу включения/выключения в 100 Lux.
А так как последние несколько месяцев эти датчики постоянно подглючивают - иногда по нескольку часов не отдают данные, а иногда работают корректно и каждый час обновляют значения, то я решил использовать все три датчика сразу.
Плюс в скрипт добавил отсылку себе письма со значениями освещенности.

Получится вот такой скрипт:

-- Включение розетки  Xiaomi Mi Smart Socket ZigBee по показаниям освещенности датчиков цветов
 
return {
    active = true,   -- скрипт активен
	on = {
		timer = {'Every 30 minutes'}
		},
	
	
	logging = {
	    level = domoticz.LOG_ERROR    -- пишем в log только ошибки
	},
	
	-- выполним секцию execute:
	execute = function(domoticz)

                -- сформируем текст сообщения
                local message = 'Ficus = '..domoticz.devices('Ficus - солнце').lux..
					' lux<br>Красный = '..domoticz.devices('Красный - солнце').lux..
					' lux<br>Белый = '..domoticz.devices('Белый - солнце').lux..' lux'

	    
	            if (domoticz.devices('Ficus - солнце').lux < 100 or 
	                domoticz.devices('Красный - солнце').lux < 100 or 
	                domoticz.devices('Белый - солнце').lux < 100) then
	            
	            
	            
	                        domoticz.devices('Розетка Обогреватель').switchOn()
	                        domoticz.log ('Розетка Обогреватель On')
	                        domoticz.email('Розетка Обогреватель On',
	                                       'Розетка Обогреватель On <br>'..message,
	                                       'mi@mail.com')
	                                   
	            elseif (domoticz.devices('Ficus - солнце').lux > 100 or 
	                    domoticz.devices('Красный - солнце').lux > 100 or 
	                    domoticz.devices('Белый - солнце').lux > 100) then
	                
	                        domoticz.devices('Розетка Обогреватель').switchOff()
                            domoticz.log ('Розетка Обогреватель Off')
                            domoticz.email('Розетка Обогреватель Off',
	                                       'Розетка Обогреватель Off <br>'..message,
	                                       'mi@mail.com')
                end
        
   
    end
}


"Так стало намного лучше" - подумал я и пошел спать wink




С утра естественно все кажется по другому...

Во-первых, уведомления на почту лучше отключить. Два письма в час - это много.

Во-вторых, лучше добавить пользовательскую переменную "Розетка Обогреватель включена", при первом включении менять ее и при последующих проверках не включать уже включенную розетку и не слать письмо, а при выключении розетки опять менять ее на противоположное состояние и опять не выключать розетку при каждом срабатывании таймера.

Вернуться назад