עד כאן הכל טוב אבל יש כמה בעיות במצב הקיים:
- אפשר לשלוט במאוורר רק באמצעות השלט.
- אם רוצים להפעיל את המאוורר והמפסק בקיר מכובה, צריך להדליק אותו ורק אז להדליק מהשלט.
- אם עושים את זה בלילה: כשמדליקים את המתג התאורה נדלקת ואז צריך מהר לכבות אותה מהשלט ורק אז להדליק את המאוורר. זה סיוט
החלטתי שאני שם למצב המגוחך הזה סוף והופך את המאוורר ליותר חכם
הדרישות שלי הן כאלה:
1. אפשר יהיה לתפעל את המאוורר והתאורה גם מה DASHBOARD וגם באמצעות ה VOICE ASSISTANT.
2. המתג בקיר יתפקד כמו כל תאורה בבית להדלקה/כיבוי.
3. אפשר יהיה להשתמש בשלט כדי לשלוט במאוורר/תאורה, תמיד. גם כשהמתג בקיר מכובה.
4. חשוב לי שזה לא יתנגש עם השליטה הפיזית (מתגים/שלט) וזה יעבוד מושלם במקביל.
5. השרת בית חכם תמיד יידע את המצב של המאורר (דלוק/כבוי/מהירות) והתאורה.
דרישות 1+2 קלות: השלט עובד ב RF בתדר של 433MHz ולכן משהו כמו ברודלינק יעשה את העבודה.
גם דרישה 3 לא מורכבת: מחברים ממסר או מתג חכם ב DETACHED MODE שמשאיר את היחידה תמיד מחוברת למתח (כדי שתמיד תהיה מוכנה לקבל פקודות מהשלט).
דרישות 4+5 מסבכות מעט את העניינים ופה רוב ה SETUPים עוצרים. מבחינתי כל רכיב שמחובר לבית חכם צריך להמשיך לעבוד בצורה מושלמת עם אמצעי השליטה הקיימים.
אני בעצם צריך למצוא דרך לאפשר ל HA לדעת את המצב של התאורה והמאוורר בכל רגע, גם כאשר הם משתנים באמצעי חיצוני (שלט/מתג).
הפיתרון שהלכתי עליו:
השרת שאני משתמש בו הוא Home Assitant.
במאוורר אפשר לשלוט רק עם RF אז השתמשתי ב Broadlink RM4 Pro. באמצעות סקריפט ב HA הקלטתי את כל הלחצנים של 4 השלטים:
קוד: בחירת הכל
alias: Learn Fan RF Remote
sequence:
- service: remote.learn_command
target:
entity_id: remote.universal_remote
data:
device: livingroom_fan
command_type: rf
command:
- fan off
- toggle light
- change direction
- speed 1
- speed 2
- speed 3
- speed 4
- speed 5
- speed 6
mode: single
icon: mdi:remote
לתאורה השתמשתי ב Shelly Plus PM. אלה רכיבים מצוינים ויש לי כבר כ 20 SHELLY בכל הבית.
את ה SHELLY הגדרתי ב DETACHED MODE והפעלתי ב HA את ה binary sensor שמקושר למתג שלו.
יצרתי אוטומציה שבעת לחיצה על המתג הברודלינק מדליק/מכבה את התאורה. ככה הגעתי למצב שאם מישהו מכבה את המתג בקיר זה מכבה את התאורה אבל היחידה נשארת מחוברת למתח ותמיד אפשר לשלוט במאורר.
עכשיו לחלק המעניין
איך גורמים ל HA לדעת בכל רגע מה המצב של התאורה והמאוורר? גם במקרה שמישהו השתמש בשלט. התשובה: צריכת זרם.
SHELLY PM יודע למדוד את ההספק שנצטרך ע"י הצרכן שמחובר אליו, והוא כמובן משתנה בהתאם למצב הפעולה של המאוורר. יש 6 מהירויות למאוורר ולכן סה"כ ישנם 14 מצבי פעולה אפשריים.
מדדתי את ההספק בכל אחד מ14 מצבי הפעולה השונים: בכל מצב פעולה עשיתי ממוצע של 10 מדידות כדי להתמודד עם שגיאות של ה SHELLY או שינויים קטנים בהספק כתוצאה מטמפרטורה. השלב הזה לוקח קצת זמן אבל הוא חשוב, בלעדיו זה לא יצא מספיק מדויק כדי שההמשך יעבוד.
כעת לקחתי את האמצע בין כל 2 מדידות וזה יהיה הסף שלפיו אחליט באיזה מצב פעולה המאוורר.
אפשר לראות שבקלות ניתן באמצעות ההספק להבין באיזה מצב פעולה נמצא המאורר, חוץ מאשר 2 מקרים שההספק בהם מאוד דומה: קשה להבחין בין מצב שהתאורה כבויה והמאוורר פועל מהר, למצב בו התאורה דלוקה והמאוורר פועל לאט.
בסופו של דבר ראיתי שזה בכל זאת עובד די טוב, אבל בפועל אני בקושי משתמש במהירויות הקיצוניות ולכן זה לא מהווה בעיה בפועל.
הוספתי כל אחד מהמאווררים ותאורה כ2 templates ב HA:
קוד: בחירת הכל
fan:
- platform: template
fans:
office_fan:
friendly_name: "Office Fan"
value_template: >
{% set power = states("sensor.shellyplus2pm_b8d61a893fd4_switch_1_power") | float %}
{% if power > 2.8 and power =< 20.24 -%}
on
{% elif power > 22.37 -%}
on
{%- else -%}
off
{%- endif -%}
percentage_template: >
{% set power = states("sensor.shellyplus2pm_b8d61a893fd4_switch_1_power") | float %}
{% if power > 2.8 and power <= 4.9 -%}
16.67
{% elif power > 4.9 and power <= 7.35 -%}
33.33
{% elif power > 7.35 and power <= 11.55 -%}
50
{% elif power > 11.55 and power <= 16.63 -%}
66.67
{% elif power > 16.63 and power <= 20.24 -%}
83.33
{% elif power > 20.24 and power <= 22.37 -%}
0
{% elif power > 22.37 and power <= 24.35 -%}
16.67
{% elif power > 24.35 and power <= 27.2 -%}
33.33
{% elif power > 27.2 and power <= 31.27 -%}
50
{% elif power > 31.27 and power <= 34.04 -%}
66.67
{% elif power > 34.04 and power <= 37.77 -%}
100
{% elif power > 37.77 and power <= 48.1 -%}
83.33
{% elif power > 48.1 -%}
100
{%- else -%}
0
{%- endif -%}
turn_on:
service: script.fan_control
data:
device: office_fan
command: speed 3
turn_off:
service: script.fan_control
data:
device: office_fan
command: toggle fan
speed_count: 6
light:
- platform: template
lights:
office_light:
friendly_name: "Office Light"
value_template: >
{% set power = states("sensor.shellyplus2pm_b8d61a893fd4_switch_1_power") | float %}
{% if power > 20.24 and power <= 34.04 -%}
on
{% elif power > 37.77 -%}
on
{%- else -%}
off
{%- endif -%}
turn_on:
- condition: state
entity_id: light.office_light
state: "off"
- service: remote.send_command
target:
entity_id: remote.universal_remote
data:
num_repeats: 1
delay_secs: 0.4
hold_secs: 0
device: office_fan
command: toggle light
turn_off:
- condition: state
entity_id: light.office_light
state: "on"
- service: remote.send_command
target:
entity_id: remote.universal_remote
data:
num_repeats: 1
delay_secs: 0.4
hold_secs: 0
device: office_fan
command: toggle light
alias: fan_control
sequence:
- service: remote.send_command
data:
num_repeats: 1
delay_secs: 0.4
hold_secs: 0
command: "{{ command }}"
device: "{{ device }}"
target:
entity_id: remote.universal_remote
mode: parallel
icon: mdi:fan
max: 3
fields:
device:
name: Device
description: The fan device to control
example: office_fan
command:
name: Command
description: The command to send
example: speed 3
selector:
select:
options:
- toggle light
- fan off
- change direction
- speed 1
- speed 2
- speed 3
- speed 4
- speed 5
- speed 6
הערה: בגלל שהכפתור של התאורה בשלט הוא TOGGLE ולא 2 כפתורים של הדלקה וכיבוי, זה יצר מצב שאם אני אומר ל VOICE ASSISTANT להדליק את התאורה כשהיא כבר דלוקה, זה מכבה אותה. התוספת בסקריפט שבודקת את המצב הקיים פותרת את זה. למאוורר יש כפתורים נפרדים להפעלה וכיבוי אז זאת לא בעיה.
הדבר היחיד ששמתי לב אליו הוא שכשמדליקים/מכבים דברים אפשר לראות שלמשך 2 שניות ב DASHBOARD המהירות המוצגת של המאורר משתנה עד שהיא מתייצבת. זה קורה בגלל שההספק שצורך המאוורר לא משתנה מיידית. אם היה Low Pass Filter אמיתי ב HA זה היה פותר את זה, אבל אין (יש בכאילו).
עוד דבר שחשוב לציין - השלט מתפקד גם כ DIMMER לתאורה. מעולם לא השתמשתי בזה ולכן לא טרחתי אבל אם הייתי משתמש בזה הפיתרון הנוכחי לא היה עובד.
זהו, זה עובד מושלם. החיים שלי השתנו.







