Кошик
2 відгуків
ТОВ "Адресат"
+380961347434
+380661347434
Кошик

Принцип відслідковування режиму роботи пральної машини

   Хороший розумний будинок - це не тільки керування освітленням. Чим більше домашніх електроприладів та побутової техніки буде інтегровано в систему, тим ширший функціонал матиме розумний будинок і тим більше задоволення буде отримано при роботі з ним. У цій замітці ми розповімо про те, як легко можна розширити функціонал розумного будинку, додавши в нього ... пральну машину.

   На жаль, побутових приладів, наприклад, пральних машин, що мають підтримку Z-Wave, "з заводу" вкрай мало, але це зовсім не завадить підключити до системи розумного будинку будь-яку пральну машину, хоч "Рига-8" (сподіваємося, що до цього все-таки не дійде ;) ). Спосіб, описаний нижче, прекрасно підійде не тільки для пральної, а також для посудомийної або сушильної машини. Тут головне - принцип.

   Зрозуміло, що повністю керувати пральною машиною через розумний будинок не вийде. Вибирати режим прання і віджиму, як, втім, завантажувати в машину білизну, доведеться по-старому - руками. А ось отримати PUSH-повідомлення на телефон, коли прання завершиться - вже більш цікава і корисна функція. Це дозволить оптимізувати процес послідовного прання, коли накопичилося багато речей і ви хочете їх всі максимально швидко випрати за кілька разів. Ще варіант: ви, йдучи на роботу, запустили прання, але хочете, щоб в цілях безпеки, після її закінчення, машина була знеструмлена, а подача води в будинок - перекрита.

Принцип.

Найпростіший, логічний та недорогий спосіб відстежити стан роботи машини, не втручаючись в її конструкцію, - це відстежити її енергоспоживання. Зробити це - елементарно, підключивши машину в розетку через FIBARO Wall Plug або встановивши всередину, призначеної для пральної машини розетки, модуль FIBARO Single Switch 2.

   Припустимо, в черговому (standby) режимі машина споживає 5 Вт. Починаємо моніторити споживання електроенергії. Коли споживана потужність стає більше 5 Вт, розцінюємо це як те, що машина почала прання, оновлюючи значення відповідної глобальної змінної. Як тільки потужність падає до 5 Вт або менше, розцінюємо це як завершення прання і знову змінюємо значення глобальної змінної. Здається все досидь просто, але насправді все трохи складніше.

   Справа в тому, що пральна машина все-таки влаштована складніше звичайної лампочки і в різних режимах роботи може споживати різну кількість електроенергії, а інколи, навіть, на короткий час відключатися (хоча, за фактом, процес прання ще не буде закінчений).

Зрозуміти як працює саме ваша машина - легко: підключіть машину через, наприклад, FIBARO Wall Plug і запустіть прання (а краще декілька, в різних режимах) - звіт про спожиту під час прання електроенергію автоматично буде збережений контролером. Далі потрібно тільки його проаналізувати.

Звіт буде виглядати приблизно так:

   На графіку споживання електроенергії добре видно фази роботи машини: набір води, нагрівання, прання, полоскання та віджим. Ще видно, що в процесі прання, споживана машиною потужність багаторазово падала до умовного нуля (режиму standby), при цьому фактично процес прання ще не завершився. Тому, абсолютно неправильно орієнтуватися тільки на показник потужності при оцінці режиму роботи. Якби кожного разу при такому "завершенні прання" відправляти PUSH-повідомлення, то за пару годин прання, ви б їх отримали дуже багато.

Принцип роботи програми.

Програма складається з трьох частин (одна змінна і дві сцени):

  • Глобальна змінна Washing_Machine, яка може мати два значення - "Working" (працює) і "Idle" (не працює).
  • Перша сцена буде аналізувати електроспоживання (тригер - зміна споживання) і, в залежності від результатів, змінювати значення цієї глобальної змінної.
  • Друга сцена буде виконувати дії (тригер - зміна глобальної змінної), наприклад, відправляти PUSH-повідомлення при закінченні прання.

   Основна ідея правильного аналізу споживаної машиною потужності така: якщо потужність перевищує потужність спокою, але при цьому глобальна змінна має значення "не працює", значить машина почала процес прання. Якщо потужність падає нижче потужності спокою, при цьому глобальна змінна має значення "працює", тут вже є два варіанти: або машина задумалася і процес прання ще не завершений або все-таки прання завершилася. Зрозуміти що саме сталося, допоможе додаткова перевірка - ми будемо протягом деякого часу (знову ж підібраного експериментально, наприклад трьох хвилин) посилено вимірювати споживану машиною потужність. Якщо ж за цей час вона не перевищить потужність спокою, то тільки тоді сміливо можна говорити, що процес прання завершено.

Нижче наведено код сцен з коментарями.

 

Сцена аналізу електроспоживання:

--[[
%% properties
246 power
%% events
%% globals
--]]

if (fibaro:countScenes() > 1) then
  fibaro:abort();
end

local app = {
   name = "Washing_Machine", - ім'я глобальної змінної
   on = "Working", - працює
   off = "Idle", - не працює
   id = 246, - id пристрою вимірювання потужності
   power = 90, - потужність спокою (standby)
   wait = 60 * 1000 - скільки часу потрібно, щоб упевнитися, що прання завершено
   };

local realpower = tonumber(fibaro:getValue(app.id, 'power'));
local appstate = fibaro:getGlobalValue(app.name);

fibaro:debug('Поточна потужність = '..realpower..' і змінна говорить '..appstate);

if realpower> app.power and appstate == app.off then
   fibaro: debug (app.name .. 'споживання перевищило потужність спокою -' ..realpower .. '>' .. app.power .. ', значить прання почалося.');
   fibaro: setGlobal (app.name, app.on);
end

if realpower <= app.power and appstate == app.on then
   fibaro: debug (app.name .. 'споживання впало нижче потужності спокою' ..realpower .. '<' .. app.power .. ', можливо прання закінчилось.');
   fibaro: debug ('Але почекаємо' .. (app.wait / 1000) .. 'секунд, щоб в цьому переконатися.');

for i = 1, app.wait / 1000 do
     fibaro: sleep (1000);
     realpower = tonumber (fibaro: getValue (app.id, 'power'));
     if realpower> app.power then
       fibaro: debug ('Потужність =' ..realpower .. ', тобто перевищила потужність спокою' ..app.power .. ', значить машина все ще в режимі прання.');
       fibaro: abort ();
     end
   end
   fibaro: debug ('Потужність =' ..realpower .. ', не перевищила потужність спокою' ..app.power .. ', значить машина закінчила прання.');
   fibaro: setGlobal (app.name, app.off);
end

 

Сцена відправки PUSH повідомлень:

--[[
%% properties
%% events
%% globals
Washing_Machine
--]]

if (fibaro:countScenes() > 1) then
  fibaro:abort();
end

local app = {
   name = "Washing_Machine", - ім'я глобальної змінної
   on = "Working", - працює
   off = "Idle", - не працює
   pushid = 210, - id пристрою куди слати PUSH
   pushtext = "Пральна машина закінчила прання" - Текст, який слати в повідомленні
   };

local appstate = fibaro:getGlobalValue(app.name);
if appstate == app.off then
    fibaro:call(app.pushid, 'sendPush', app.pushtext);
end

 

 

 

Інші статті