Смарт контакт, който мери консумацията, може да ви каже кога пералнята е приключила, за да не стои прането в барабана, докато замирише. Идеята е проста: машината тегли ток, докато работи, и почти никакъв, когато е готова. Подробностите са мястото, където повечето домашни автоматизации грешат. Пералнята спира да тегли ток много пъти в един цикъл, сушилнята продължава да се върти цял час след края, а много контакти спират да докладват, когато нищо не се променя. Тук обясняваме правилата, които работят, с малък детектор, който можете да пуснете и да промените, и настройките, които имат значение за Home Assistant и контактите на Shelly и Tasmota.
#Как изглежда кривата на консумацията при пране
Обикновеното пране има четири части. Първо нагревателят затопля водата и тегли около 2 kW за десет до двадесет минути. После барабанът се върти напред и назад през по-голямата част от час, на няколкостотин вата, с паузи от минута-две, в които машината не тегли почти нищо. Изплакването и накисването добавят по-дълги паузи. Центрофугата накрая отново тегли няколкостотин вата. Когато програмата свърши, машината пада до един-два вата в режим на готовност, а светлината на вратата или дисплеят може да добавят малко отгоре.
Съдомиялната изглежда подобно, с един капан: много модели сушат съдовете с остатъчната топлина, така че последните петнадесет минути теглят само няколко вата, колкото в режим на готовност. Сушилнята работи на висока мощност, докато дрехите изсъхнат, а после често се завърта за няколко секунди на всеки няколко минути до един час, за да не се мачкат дрехите.
#Два прага и две времена на изчакване
Надеждното правило използва две нива и две времена, а не едно число:
- Начало: консумацията остава над нивото за начало (за пералня около 15 W) за времето за начало (около минута). Така светлина на вратата или дисплей, който се събужда за няколко секунди, не се броят.
- Край: консумацията остава под нивото за край (около 5 W) за времето за край (около пет минути за пералня). Това изчакване е причината правилото да работи: то трябва да е по-дълго от най-дългата пауза в цикъла.
- Най-кратък цикъл: работа, по-кратка от около десет минути, се изхвърля, за да не получите съобщение „приключи“, когато някой е включил машината само за да провери програма.
Разликата между нивото за начало и нивото за край също е важна. Ако се ползва едно число и за двете, машина, която стои около него, започва и приключва цикъл на всеки няколко секунди.
#Детектор, който можете да пуснете
Това е цялото правило на обикновен JavaScript. Приема показания като време в секунди и мощност във ватове, а най-долу пуска измислено пране със светлина на вратата, нагряване, дванадесет фази на пране с паузи от по две минути, накисване от четири минути, центрофуга и режим на готовност. Работи с Node.js така, както е, а тялото на функцията влиза във function възел на Node-RED с няколко промени (пазете състоянието в контекста на възела вместо в затварянето).
// A finished-cycle detector for one appliance. Feed it (time in seconds, watts).
function makeDetector({ startW = 15, startS = 60, endW = 5, endS = 300, minCycleS = 600 } = {}) {
let state = 'idle', since = null, startedAt = null, quietSince = null;
return function reading(t, watts) {
if (state === 'idle') {
if (watts > startW) {
since ??= t;
if (t - since >= startS) { state = 'running'; startedAt = since; quietSince = null; return { event: 'started', at: since }; }
} else since = null;
return null;
}
// running
if (watts < endW) {
quietSince ??= t;
if (t - quietSince >= endS) {
state = 'idle'; since = null;
const event = quietSince - startedAt >= minCycleS ? 'finished' : 'discarded';
return { event, at: quietSince, minutes: Math.round((quietSince - startedAt) / 60) };
}
} else quietSince = null;
return null;
};
}
// A made-up wash, one reading every 10 seconds: a door light, heating, washing
// with 2-minute pauses while the drum rests, a 4-minute soak, spinning, then off.
const trace = [];
let t = 0;
const add = (watts, seconds) => { for (let s = 0; s < seconds; s += 10, t += 10) trace.push([t, watts]); };
add(1, 120); add(25, 20); add(1, 300); // door light: 20 s, too short to start
add(2100, 900); // heating the water
for (let i = 0; i < 12; i++) { add(180, 180); add(2, 120); }
add(180, 120); add(2, 240); // rinse, then a soak shorter than 5 minutes
add(450, 600); // spin
add(1, 900); // finished, door still closed
const detect = makeDetector();
for (const [time, watts] of trace) {
const e = detect(time, watts);
if (e) console.log(e);
}
Отпечатва начало на 440-ата секунда, когато се включва нагревателят, и край на 5900-ата секунда, 91 минути по-късно. Светлината на вратата е твърде кратка, за да започне нещо, а нито паузите, нито накисването приключват цикъла, защото всяка е по-кратка от пет минути. Обърнете внимание на две подробности. Отчетеният край е началото на тихата част, но съобщението може да тръгне едва пет минути по-късно, когато тихата част е продължила достатъчно. А в по-ранен вариант на тези данни накисването идваше веднага след пауза: заедно станаха шест минути тишина и цикълът „приключи“ преди центрофугата. Ако машината ви накисва дълго, увеличете времето за край.
#Контакти, които мълчат
Детекторът по-горе решава само когато пристигне показание. Много контакти докладват само когато мощността се промени с определен процент или най-много веднъж в минута, така че след спирането на машината може дълго да няма никакво показание и цикълът никога да не приключи. Истинската автоматизация има нужда от собствен часовник, който на всеки няколко секунди проверява дали тихото време е минало, с последната известна мощност. Има и обратният проблем: контакти, които усредняват за пет минути или повече, размиват началото и края. За Tasmota задайте TelePeriod между 10 и 60 секунди; позволеният обхват е от 10 до 3600. Контактите Shelly от второ поколение дават apower, последната измерена активна мощност във ватове, в състоянието на превключвателя.
#Сушилнята и съдомиялната
При сушилнята пренебрегвайте кратките изблици: консумация, по-кратка от около 45 секунди след основния цикъл, не се брои за работа, така че въртенето против мачкане не държи цикъла отворен цял час. Използвайте и по-високо ниво за начало (около 60 W), защото само електрониката на сушилнята може да тегли повече от тази на пералнята.
При съдомиялната направете времето за край дълго, около петнадесет минути, за да не се отчете тихото сушене като край. Тогава съобщението идва около петнадесет минути след като помпите спрат, а това обикновено е и желаното: съдовете са сухи.
#Кога ще е готово?
След като се запишат няколко цикъла, съобщението за начало може да каже кога машината ще приключи. Пазете продължителността на последните около десет цикъла и използвайте медианата им, отделно за всяка програма, ако можете да ги различите (например като изпращате името на програмата от бутон или табло). Медианата е по-добра от средното, защото един прекъснат или много дълъг цикъл почти не я мести.
#Енергия, цена и напомняния
Енергията е сумата от мощност по време, като всяко показание важи до следващото, защото така докладват контактите. При дневна и нощна тарифа таксувайте всяка минута по цената на тази минута; цикъл, който започва в 21:30, е частично на по-евтината тарифа. Пазете сборовете и ще знаете колко ви струва всяка програма в действителност.
Известието, което работи най-добре, не е едно съобщение, а кратка поредица: „приключи“ в края на цикъла и напомняне на всеки половин час, докато някой не изпразни машината. „Изпразнена“ може да дойде от бутон, сензор на вратата или от началото на следващия цикъл. Три напомняния обикновено стигат, преди да станат шум.
И накрая, пазете състоянието там, където оцелява след рестарт. В Node-RED контекстът по подразбиране е в паметта; с хранилището localfilesystem, настроено в settings.js, рестарт по средата на прането не губи цикъла.
#Възел за Node-RED, който прави това
Направихме Zvanche, възел за Node-RED, който следва тези правила за перални, съдомиялни, сушилни и други уреди, със стойности по подразбиране за всеки. Има собствен часовник за контакти, които мълчат, пренебрегва въртенето на сушилнята, научава обичайната продължителност за всяка програма и казва кога машината ще е готова, смята енергията и цената с цена, която може да се сменя през деня, и повтаря напомнянето, докато не му кажат, че машината е изпразнена. Съобщенията идват като готови изречения на български или английски за Telegram, имейл или Home Assistant. Иска Node-RED 3.0 или по-нов и е проверен с автоматични тестове върху измислени, но реалистични данни и в истинска среда на Node-RED, но не и с физически контакт, затова наблюдавайте първите няколко цикъла на машината си и при нужда коригирайте нивата. Обявен е като „Очаквайте скоро“.
#Често задавани въпроси
Защо автоматизацията ми казва, че прането е приключило по средата на цикъла?
Защото времето за край е по-кратко от някоя пауза в цикъла. Пералните спират барабана, източват и накисват почти без консумация; чакайте поне пет минути под нивото за край и повече при машини с дълго накисване.
Защо сушилнята ми се отчита като приключила с час закъснение?
Въртенето против мачкане след края държи мощността над нивото за край за няколко секунди на всеки няколко минути. Пренебрегвайте изблици, по-кратки от около 45 секунди, след като основният цикъл е свършил.
Кои смарт контакти стават за това?
Всеки контакт, който мери мощността и я докладва поне веднъж в минута или при всяка промяна: Shelly, Tasmota и повечето Zigbee контакти с измерване стават. Проверете дали контактът е за тока на уреда; нагревателят на пералнята тегли около 2 kW.
Може ли да разбере коя програма работи?
Не надеждно само по консумацията. Изпращайте програмата от бутон или табло, когато пускате машината, и времето до готовност ще се научава за всяка програма поотделно.
Коментари
Коментари
Напишете първия коментар.
Оставете коментар