שרשור PLEG - בעברית (Program Logic Event Generator)

SIRI, CORTANA, ALEXA, ECHO, GOOGLE HOME, HOME PAD, שלטים חכמים, KEY PADS, אפליקציות
R-יק (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 518
הצטרף: נובמבר 2009
נתן תודות: 50 פעמים
קיבל תודות: 45 פעמים

שרשור PLEG - בעברית (Program Logic Event Generator)

נושא שלא נקרא #1 

חשבתי שנפתח דיון כזה שיהיה בעברית...
כאן אפשר לשאול שאלות ולהתייעץ על השימוש/ייעול/יישום בPLEG

R-יק (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 518
הצטרף: נובמבר 2009
נתן תודות: 50 פעמים
קיבל תודות: 45 פעמים

Re: שרשור PLEG - בעברית (Program Logic Event Generator)

נושא שלא נקרא #2 

ואני אתחיל :wink:

איך אני משתמש ב"שעה" בתנאים?

לדוגמא:
אני רוצה ליצור תנאי כזה (NOW > 23:00) AND (LR_BigDoor EQ 0)

תנאי השעה לא עובד לי...
איך אני מגדיר שהשעה אחרי 23:00?

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

Re: שרשור PLEG - בעברית (Program Logic Event Generator)

נושא שלא נקרא #3 

R-יק כתב:ואני אתחיל :wink:

איך אני משתמש ב"שעה" בתנאים?

לדוגמא:
אני רוצה ליצור תנאי כזה (NOW > 23:00) AND (LR_BigDoor EQ 0)

תנאי השעה לא עובד לי...
איך אני מגדיר שהשעה אחרי 23:00?
...
בשביל לבדוק שרצף תנאים קרו אחד אחרי השני, מפרידים עם נקודה-פסיק:

קוד: בחירת הכל

(23:00:00;NOW) AND (LR_BigDoor EQ 0)
כלומר, התנאי הנ"ל בודק שNOW קרה אחרי ש23:00:00 קרה. :)
הערה: התנאי הנ"ל יתקיים רק בין 23:00:00 ל23:59:59. זה באמת מה שאתה רוצה שיקרה?

עם סימן "גדול" (או "קטן") משתמשים כאשר רוצים לבדוק את משך הזמן שלקח לרצף פעולות לקרות.
לדוגמה:

קוד: בחירת הכל

(Action1;Action2>23:00)
יבדוק אם Action2 קרה יותר מ23 דקות אחרי Action1.

דרך אגב, שים לב שהפורמט לזמן הוא HH:MM:SS.
אם אתה כותב רק "שני חלקים" (למשל 23:00) המשמעות היא 23 דקות, ולא 23 שעות.
נערך לאחרונה על ידי cafri ב 18/11/2015 11:39, נערך פעם 1 בסך הכל.
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

נושא שלא נקרא #4 

דרך אגב, בהנחה שאתה רוצה שהתנאי יתקיים רק כאשר LR_BigDoor הופך לאפס אחרי השעה 23:00:00, הדרך הנכונה לעשות זאת היא:

קוד: בחירת הכל

(23:00:00;LR_BigDoor) AND (LR_BigDoor EQ 0) 
ההבדל:
במקרה ש LR_BigDoor הופך לאפס בשעה 22:30 ונשאר כך עד 23:30, התנאי הזה לא יתקיים, משום ש LR_BigDoor שינה מצב לפני 23:00:00.

לעומת זאת, כאשר תגיע השעה 23:00:00, התנאי מההודעה הקודמת כן יתקיים:

קוד: בחירת הכל

(23:00:00;NOW) AND (LR_BigDoor EQ 0) 
משום שNOW קרה אחרי 23:00:00.
נערך לאחרונה על ידי cafri ב 18/11/2015 11:39, נערך פעם 1 בסך הכל.
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

R-יק (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 518
הצטרף: נובמבר 2009
נתן תודות: 50 פעמים
קיבל תודות: 45 פעמים

נושא שלא נקרא #5 

@cafri
·

תודה רבה על ההסבר המפורט!
זה מאוד עזר לי להבין :)

אני צריך להזכר שוב מה הייתה המטרה של התנאי הזה... ואז אכתוב אותו מחדש...

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

נושא שלא נקרא #6 

השרשור הזה הוא רעיון מעולה.

הוספתי לינק אליו מהשרשור הדביק.

כמו-כן, שווה לתעד את הדוגמה הזאת.
נערך לאחרונה על ידי cafri ב 18/11/2015 11:38, נערך פעם 1 בסך הכל.
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

לוגיקות לדוד

נושא שלא נקרא #7 

נתבקשתי על-ידי @R-יק לשתף כיצד הגדרתי בPLEG את הלוגיקות הנוגעות לדוד.

הלוגיקה שהגדרתי אצלי (קצת שונה מהתכנון המקורי, כמו שמופיע בלינק):
cafri כתב:מכיוון שהמחיר של שני המודולים זהה, אני הזמנתי מודול 2x1.5K.
מכיוון שאין לי מתג תאורה או מכשיר סמוך אחר שאני אוכל להעביר חיווט מהמפסק שלו למפסק של הדוד, אני מתכנן לעשות שימוש ביכולת ה"כפולה" של המודול באופן הבא:

הראשון ישמש למיתוג המגען, שיפעיל ויכבה את הדוד.
השני ישמש לבצע "הארכה" של זמן ההדלקה, ב"כפולות" של 10 דקות.
...
כל הדלקה של הדוד תכובה אוטומטית על-ידי הVera לאחר זמן מוגדר מראש:
* הדוד נדלק אוטומטית כל יום בשעה 06:00 (להתארגנויות בוקר) למשך 20 דקות
* הדוד נדלק אוטומטית כל יום בשעה 18:00 (למקלחות ילדים): בקיץ למשך 30 דקות, בחורף למשך שעה.
* הדוד נדלק אוטומטית כל יום בשעה 20:00 (למקלחות הורים): בקיץ למשך 20 דקות, בחורף למשך 40 דקות.
* כאשר מדליקים את הדוד ידנית, הוא נכבה כעבור 20 דקות.

כאמור, המתג השני משמש לביצוע "הארכות". באופן כזה, אם יש צורך להדליק את הדוד בקיץ ל70 דקות (משום שכל בני המשפחה יתקלחו בסמיכות), ניתן יהיה להדליק את הדוד (ל20 דקות) בעזרת הכפתור הראשון, וללחוץ 5 פעמים על הכפתור השני.
(50+20 = 70)

הנה המימוש בפועל:

[left]
Inputs - Triggers:[/b]
BoilerOn = Boiler (switch 1) is on
BoilerExtensionButtonPressed = Boiler Virtual Extension (switch 2) is turned on

Inputs - Schedules:[/b]
BoilerTimeAt0600 = Everyday at 05:45, Off type - Interval, Off time - 02:00
BoilerTimeAt1800 = Everyday at 18:00, Off type - Interval, Off time - 02:00
BoilerTimeAt2000 = Everyday at 20:00, Off type - Interval, Off time - 02:00
BoilerTimer = SelfReTrigger, Off type - Interval, Off time - 30:00 (Note: this is default value only)

Inputs - Device Properties:[/b]
BoilerExtensionsCounter = Multistring plugin, Variable 1

Conditions:[/b]
IncreaseBoilerExtensionCounter = (BoilerExtensionButtonPressed)

BoilerTimeMorning = (BoilerTimeAt0600) AND (Not(BoilerOn)) AND (!BoilerOn;BoilerTimeAt0600) AND (OnVacationStatus EQ "0")

BoilerTimeKids = (BoilerTimeAt1800) AND (Not(BoilerOn)) AND (!BoilerOn;BoilerTimeAt1800) AND (OnVacationStatus EQ "0")

BoilerTimeParents = (BoilerTimeAt2000) AND (Not(BoilerOn)) AND (!BoilerOn;BoilerTimeAt2000) AND (OnVacationStatus EQ "0")

BoilerTurnedOnWinter = (SummerTimeBoiler EQ "0") AND (BoilerOn) AND (SummerTimeBoiler;BoilerOn)

BoilerTurnedOnSummer = (SummerTimeBoiler EQ "1") AND (BoilerOn) AND (SummerTimeBoiler;BoilerOn)

ExtendBoilerTimer = (BoilerOn) AND (Not(BoilerTimer)) AND (BoilerOn;!BoilerTimer) AND (BoilerExtensionsCounter NE "0")

TurnBoilerOff = (BoilerOn) AND (Not(BoilerTimer)) AND (BoilerOn;!BoilerTimer) AND (BoilerExtensionsCounter EQ "0")

BoilerTurnedOff = (Not(BoilerOn))


Actions:[/b]
IncreaseBoilerExtensionCounter:
Multistring, SetVariable1 = {(BoilerExtensionsCounter+1)}
Boiler Virtual Extension Switch, SetTarget = 0

קוד: בחירת הכל

local MultiStringDeviceID = 56

local t = luup.variable_get("urn:upnp-org:serviceId:VContainer1","Variable3", MultiStringDeviceID)

t = t + 600    -- add 10 minutes
luup.call_action("urn:upnp-org:serviceId:VContainer1", "SetVariable2", {newVariable2=tostring(t)}, MultiStringDeviceID)

luup.variable_set("urn:upnp-org:serviceId:VContainer1", "Variable3", tostring(t), MultiStringDeviceID)
BoilerTimeMorning:
Boiler, SetTarget = 1

BoilerTimeKids:
Boiler, SetTarget = 1

BoilerTimeParents:
Boiler, SetTarget = 1

BoilerTurnedOnWinter:
PLEG, StartTimer, timerName = BoilerTimer, intervalTime={(BoilerTimeAt1800 ? "60:00" : (BoilerTimeAt2000 ? "40:00" : "20:00"))}

קוד: בחירת הכל

local MultiStringDeviceID = 56
local tt = os.time()

local ExtensionsCounter = luup.variable_get("urn:upnp-org:serviceId:VContainer1", "Variable1", MultiStringDeviceID)

if (BOILERTIMEAT1800.state) then
   tt = tt+3600    -- add 60 minutes
elseif (BOILERTIMEAT2000.state) then
   tt = tt+2400    -- add 40 minutes
else
   tt = tt+1200    -- add 20 minutes
end

tt = tt + (600 * ExtensionsCounter)    -- add 10 minutes per Extension

luup.call_action("urn:upnp-org:serviceId:VContainer1", "SetVariable2", {newVariable2=tostring(tt)}, MultiStringDeviceID)

luup.variable_set("urn:upnp-org:serviceId:VContainer1", "Variable3", tostring(tt), MultiStringDeviceID)
BoilerTurnedOnSummer:
PLEG, StartTimer, timerName = BoilerTimer, intervalTime={(BoilerTimeAt1800 ? "30:00" : "20:00")}

קוד: בחירת הכל

local MultiStringDeviceID = 56
local tt = os.time()

local ExtensionsCounter = luup.variable_get("urn:upnp-org:serviceId:VContainer1", "Variable1", MultiStringDeviceID)

if (BOILERTIMEAT1800.state) then
   tt = tt+1800    -- add 30 minutes
else
   tt = tt+1200    -- add 20 minutes
end

tt = tt + (600 * ExtensionsCounter)    -- add 10 minutes per Extension

luup.call_action("urn:upnp-org:serviceId:VContainer1", "SetVariable2", {newVariable2=tostring(tt)}, MultiStringDeviceID)

luup.variable_set("urn:upnp-org:serviceId:VContainer1", "Variable3", tostring(tt), MultiStringDeviceID)
ExtendBoilerTimer:
Immediate: PLEG, StartTimer, timerName = BoilerTimer, intervalTime=10:00
Delay 10 seconds: MultiString, SetVariable1 = {(BoilerExtensionsCounter-1)}

TurnBoilerOff :
Boiler, SetTarget = 0

BoilerTurnedOff:
MultiString, SetVariable2 = 0
MultiString, SetVariable2 = (Note: set to be empty)
MultiString, SetVariable3 = (Note: set to be empty)
[/left]

מספר הערות לגבי אלמנטים נוספים מעבר לPLEG:
1. אני משתמש במתגים וירטואליים (MultiSwitch Plugin) לניהול מצב שבו אנחנו בחופשה (ואז הדוד לא אמור לפעול בכלל). דוגמה לבדיקה כזו:

קוד: בחירת הכל

OnVacationStatus EQ "0"
2. אני משתמש בMultistring לניהול מספר ה"הארכות" שיש לבצע (משתנה 1) והשעה המיועדת לכיבוי הדוד (גם בתצורת HH:MM:SS הקריאה לבני-אדם (משתנה 2), וגם בתצורת epoch, הנוחה לביצוע חישובים (משתנה 3)).
יש צורך לבצע "איפוס ראשוני" של פרמטר 1, על-ידי כניסה לMultiString plugin, כתיבת 0 (אפס) עבור V1 Value ולחיצה על Set:

[imgbig]http://i68.tinypic.com/15plgg9.png[/imgbig]
כמו-כן, בלשונית Advanced, בפרמטר Options יש לרשום CT2.

3. מכיוון שהלוגיקה כמו שכתבתי למעלה די מורכבת, ולא בטוח שקל להבין אותה "בפעם ראשונה", מחקתי ממנה דברים נוספים שיש אצלי, במטרה להקל על ההבנה:
א. אפשרות להדליק את הדוד על-ידי הגדרה בGoogle Calendar
ב. לפני הדלקת הדוד בשעה 18:00, בדיקה שהדוד לא הודלק ידנית מוקדם יותר, ובמידה והוא כן הודלק ידנית (סימן שהילדים כבר התקלחו) - הדוד לא ידלק בשעה 18:00.
אני מקווה שלא עשיתי טעויות במחיקה של הלוגיקות האלה.
אם מישהו ירצה להוסיפן ויצטרך עזרה - אוכל לשתף גם את זה.

עריכה: הוספתי להערה 2 מספר הגדרות שיש לבצע לMultiString plugin.
נערך לאחרונה על ידי cafri ב 12/01/2016 9:23, נערך פעם 1 בסך הכל.
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

morgi23
חבר ותיק
חבר ותיק
הודעות: 1206
הצטרף: נובמבר 2009
נתן תודות: 87 פעמים
קיבל תודות: 150 פעמים

בדיקת תנאי בשעה מסויימת ביום

נושא שלא נקרא #8 

@cafri
בגלל שאתה מקבל אחוזים ב-PLEG :wink:, אני רוצה להתחיל להיכנס יותר לעומק.
כרגע יש אצלי רק לוגיקות בסיסיות ב-PLEG של and ו-or שיותר קל לכתוב שם.

אני מעוניין לבצע לוגיקה לתזמון זמן הדלקת הדוד בהתאם לעונות השנה ומצב העננות (בדומה למה שהציע @bobhas בשרשור הזה).

הלוגיקה שאני מתכנן מורכבת משני משתנים שאותם אדגום פעם ביום בשעה 13:00:
- virtual switch למצב חורף או קיץ שמשנה את מצבו בהתאם לטמפ' מינימלית + תאריך.
- מצב העננות שמורכב מ-3 אפשרויות - בהיר, מעונן או מעונן חלקית

על פי השילוב בין שני המשתנים הללו יקבע משך הדלקת הדוד (6 אופציות).

אני מבין איך לבצע את כל השלבים ב-PLEG אבל לא הצלחתי להבין איך אני מבצע דגימה של המשתנים רק בשעה מסויימת.

מה דעתך?

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

Re: בדיקת תנאי בשעה מסויימת ביום

נושא שלא נקרא #9 

@morgi23
תחת Inputs אתה מגדיר Schedule באופן הבא:
[left]
Start Type = Day Of Week
Days = All days (or whatever you want)
Time = At a certain time of day
Hours = 13
Minutes = 00
Seconds = 00
Random on Delay = (empty)
Stop Type = Interval
After = 00:02:00 (2 minutes, or something similar)
Random off Delay = (empty)
[/left]

לאחר הגדרת הנ"ל אתה יוצר Condition, שאחד התנאים בו הוא שהSchedule הנ"ל מתקיים (פשוט מוסיף AND ואת שם הSchedule).

אני מניח שמה שאתה מתכוון לעשות הוא שתוצאת ה"דגימה" בשעה 13:00 "תאוחסן" איפה שהוא, ותשפיע על משך הדלקת הדוד מאוחר יותר במהלך היום.

שים לב שהמקרה היחיד שבו גם הPLEG לא מתגבר על אתחולים / הפסקות חשמל הוא כאשר מוגדר תזמון "מדוייק".
זאת הסיבה שלגבי "סיום Schedule" מומלץ להשתמש בInterval ולא ב"At a certain time of dat".

הדרך לנסות להתגבר על זה (או לפחות להקטין את הסיכון), אם יש לך Schedule שהוא מאוד חשוב לך, הוא לייצר שני Schedules בהפרש מסויים, שאתה מניח שלא יהיה אתחול / הפסקה חשמל בשניהם (נניח אחד בשעה 13:00 ושני בשעה 14:00).

בCondition אתה יכול פשוט להוסיף את שניהם עם OR:

קוד: בחירת הכל

ConditionName = ((Schedule1) OR (Schedule2)) AND (Whatever additional parameters)
אולם השיטה הנ"ל תגרום לשתי "דגימות" (בשעה 13:00 ובשעה 14:00), במידה ואין אתחולים / הפסקות חשמל.

אם אתה רוצה למנוע מצב כזה (אני לא "הלכתי לשם"), אתה יכול להוסיף בדיקה שעבר פרק זמן מספיק ארוך בין הSchedules. לדוגמה:

קוד: בחירת הכל

ConditionName = ((Schedule1) OR ((Schedule2) AND (Schedule1;Schedule2>01:05:00)) AND (Whatever additional parameters)
באופן כזה:

* אם לא יהיו בעיות בכלל
- בשעה 13:00 Schedule1 היה חיובי וגרם לCondition להתקיים.
- בשעה 14:00 Schedule2 היה חיובי, אבל ההפרש בין 14:00 ל13:00 קטן משעה ו-5 דקות, ולכן הConditoin לא יתקיים.

* אם בשעה 13:00 הבקר לא פעל (אתחול / הפסקה חשמל):
- בשעה 13:00 Schedule1 לא היה חיובי (וגם לא מאוחר יותר, כאשר הבקר חזר לפעילות תקינה).
- בשעה 14:00 Schedule2 היה חיובי, וההפרש בין 14:00 היום ל13:00 אתמול (הפעם האחרונה שSchedule1 היה חיובי) גדול משעה ו-5 דקות, ולכם הCondition כן יתקיים.

* אם בשעה 13:00 הבקר פעל ובשעה 14:00 לא פעל:
- בשעה 13:00 Schedule1 היה חיובי וגרם לCondition להתקיים.
- בשעה 14:00 Schedule2 לא היה חיובי (וגם לא מאוחר יותר, כאשר הבקר חזר לפעילות תקינה), כלומר הCondition לא יהיה חיובי שוב.

* אם הבקר לא יפעיל גם בשעה 13:00 וגם בשעה 14:00 הCondition לא יתקיים באותו יום.
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

morgi23
חבר ותיק
חבר ותיק
הודעות: 1206
הצטרף: נובמבר 2009
נתן תודות: 87 פעמים
קיבל תודות: 150 פעמים

Re: בדיקת תנאי בשעה מסויימת ביום

נושא שלא נקרא #10 

cafri כתב:@morgi23
תחת Inputs אתה מגדיר Schedule באופן הבא:
[left]
Start Type = Day Of Week
Days = All days (or whatever you want)
Time = At a certain time of day
Hours = 13
Minutes = 00
Seconds = 00
Random on Delay = (empty)
Stop Type = Interval
After = 00:02:00 (2 minutes, or something similar)
Random off Delay = (empty)
[/left]

לאחר הגדרת הנ"ל אתה יוצר Condition, שאחד התנאים בו הוא שהSchedule הנ"ל מתקיים (פשוט מוסיף AND ואת שם הSchedule).

אני מניח שמה שאתה מתכוון לעשות הוא שתוצאת ה"דגימה" בשעה 13:00 "תאוחסן" איפה שהוא, ותשפיע על משך הדלקת הדוד מאוחר יותר במהלך היום.

שים לב שהמקרה היחיד שבו גם הPLEG לא מתגבר על אתחולים / הפסקות חשמל הוא כאשר מוגדר תזמון "מדוייק".
זאת הסיבה שלגבי "סיום Schedule" מומלץ להשתמש בInterval ולא ב"At a certain time of dat".

הדרך לנסות להתגבר על זה (או לפחות להקטין את הסיכון), אם יש לך Schedule שהוא מאוד חשוב לך, הוא לייצר שני Schedules בהפרש מסויים, שאתה מניח שלא יהיה אתחול / הפסקה חשמל בשניהם (נניח אחד בשעה 13:00 ושני בשעה 14:00).

בCondition אתה יכול פשוט להוסיף את שניהם עם OR:
ConditionName = ((Schedule1) OR (Schedule2)) AND (Whatever additional parameters)
אולם השיטה הנ"ל תגרום לשתי "דגימות" (בשעה 13:00 ובשעה 14:00), במידה ואין אתחולים / הפסקות חשמל.

אם אתה רוצה למנוע מצב כזה (אני לא "הלכתי לשם"), אתה יכול להוסיף בדיקה שעבר פרק זמן מספיק ארוך בין הSchedules. לדוגמה:
ConditionName = ((Schedule1) OR ((Schedule2) AND (Schedule1;Schedule2>01:05:00)) AND (Whatever additional parameters)
באופן כזה:

* אם לא יהיו בעיות בכלל
- בשעה 13:00 Schedule1 היה חיובי וגרם לCondition להתקיים.
- בשעה 14:00 Schedule2 היה חיובי, אבל ההפרש בין 14:00 ל13:00 קטן משעה ו-5 דקות, ולכן הConditoin לא יתקיים.

* אם בשעה 13:00 הבקר לא פעל (אתחול / הפסקה חשמל):
- בשעה 13:00 Schedule1 לא היה חיובי (וגם לא מאוחר יותר, כאשר הבקר חזר לפעילות תקינה).
- בשעה 14:00 Schedule2 היה חיובי, וההפרש בין 14:00 היום ל13:00 אתמול (הפעם האחרונה שSchedule1 היה חיובי) גדול משעה ו-5 דקות, ולכם הCondition כן יתקיים.

* אם בשעה 13:00 הבקר פעל ובשעה 14:00 לא פעל:
- בשעה 13:00 Schedule1 היה חיובי וגרם לCondition להתקיים.
- בשעה 14:00 Schedule2 לא היה חיובי (וגם לא מאוחר יותר, כאשר הבקר חזר לפעילות תקינה), כלומר הCondition לא יהיה חיובי שוב.

* אם הבקר לא יפעיל גם בשעה 13:00 וגם בשעה 14:00 הCondition לא יתקיים באותו יום.
...
תודה על התשובה המפורטת.
באופן כללי לא קריטי לי שהפעולה תידגם גם לאחר הפסקת חשמל או איתחול. מקסימום הדוד יפעל לפי הטיימר של היום הקודם.
בכל מקרה תודה על ההסבר, אני בטח אשתמש בזה בפעולות חשובות יותר בהמשך.
אתה יודע אולי מה קורה אם אני לא מגדיר זמן סיום ל-schedule?

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

Re: בדיקת תנאי בשעה מסויימת ביום

נושא שלא נקרא #11 

morgi23 כתב:אתה יודע אולי מה קורה אם אני לא מגדיר זמן סיום ל-schedule?
...
זה יגרום לSchedule להיות חיובי מהפעם הראשונה שהוא קורה - לעולם.

אם יש Condition שמשתמש בSchedule, זה יגרום לCondition לקרות רק פעם אחת, אלא אם כן תסמן Repeat בCondition.

מתוך מסמך הPLEG Basics:

[left]
If a Schedule does not have a Stop Type, it will not have an off event. Such a Schedule will only cause
the evaluation of a Condition in which it is used when it turns on and its state will, at that point,
always be true. If At0730 is a daily Schedule for 07:30 without a Stop Type, the Condition:

Morning At0730

will become true at 07:30 on the first day and stay that way forever. Any associated Action will only
fire on the first day. There are two ways around this: Check the Repeats option for the Condition so
that it will fire its Action each time At0730 becomes true; Add a Stop Type to At0730 – say an
Interval of one minute – so that it will re-evaluate the Condition when it turns off and set it to false.

There is an advantage in setting a Schedule’s Stop Type to Interval rather than an absolute time. If
PLEG happens to restart just before an absolute time, the stop event may not occur until the
following day. With an Interval, PLEG is able to recover from the restart and set the state of the
Schedule correctly.
...
[/left]
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

Re: בדיקת תנאי בשעה מסויימת ביום

נושא שלא נקרא #12 

morgi23 כתב:באופן כללי לא קריטי לי שהפעולה תידגם גם לאחר הפסקת חשמל או איתחול. מקסימום הדוד יפעל לפי הטיימר של היום הקודם.
...
אני פועל בדיוק באותה דרך (לגבי ההחלטה לכמה זמן הדוד יפעל).

המקרה היחיד (שאני זוכר) שהגדרתי "גיבוי" של Schedule נוסף היה עבור הSchedules שמגדירים לי מעבר בין "מצב יום" ל"מצב לילה".

כשאני חושב על זה עכשיו, אולי כדאי להגדיר גיבוי עבור מועדי הדלקת הדוד בפועל (אחרת לא יהיו מים חמים.....).
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

morgi23
חבר ותיק
חבר ותיק
הודעות: 1206
הצטרף: נובמבר 2009
נתן תודות: 87 פעמים
קיבל תודות: 150 פעמים

Re: בדיקת תנאי בשעה מסויימת ביום

נושא שלא נקרא #13 

cafri כתב:
זה יגרום לSchedule להיות חיובי מהפעם הראשונה שהוא קורה - לעולם.

אם יש Condition שמשתמש בSchedule, זה יגרום לCondition לקרות רק פעם אחת, אלא אם כן תסמן Repeat בCondition.
...
...
הבנתי. זה מסביר הרבה בעיות שהיו לי עד עכשיו..

movieman
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
הודעות: 4676
הצטרף: אוגוסט 2011
נתן תודות: 42 פעמים
קיבל תודות: 364 פעמים

נושא שלא נקרא #14 

מכיוון שיש כאן דיון על PLEG - אני אנצל את זה לשאלה .

הגדרתי בבית סצינה שמופעלת בכל יום בשעה 18:00 ומדליקה כל מני אורות בבית בזמנים מסויימים על מנת שבמידה ואני לא בבית
עדיין זה ייראה כאילו יש מישהו בבית.

הבעייה היא שלא משנה מה קורה הסצינה פועלת גם אם יש מישהו בבית ואז כל חצי שעה - אני צריך לכבות אורות מסויימים.
אני מעוניין להשתמש ב-PLEG ובעזרת חיישן תנועה (פיבארו) שימוקם בסלון - יבטל או יפעיל את הסצינה הנ"ל.

שם הסצינה הוא NIGHT.
יש לי VERA LITE עם UI5.
התנאים:
1. השעות שבהם הסצינה צריכה לפעול הינם : 18:00 עד לשעה 01:25.
2. הסצינה תפעל רק אם אין תזוזה כלשהי בית (בסלון במקרה הנ"ל) ב-45 הדקות האחרונות.
3. אם התגלתה תזוזה כלשהי , הסצינה מבוטלת ושוב נספרים 45 דקות.

מקרים שיכולים לקרות:
1. אם הגעתי הביתה מאוחר - נגיד בשעה 20:00 אז הסצינה אמורה לפעול וכשאני נכנס לסלון והחיישן מזהה תנועה - הוא מפסיק את הסצינה.
2. אם הגעתי הביתה - והסצינה הפסיקה ולאחר XXX זמן אני יוצא שוב מהבית - הסצינה תפעל שוב (כי לא תורגש תנועה אחרי שאני אצא).


התכנון הוא לשים 2-3 חיישנים של פיבארו ולהגדיר את הנ"ל .

אשמח לעזרת המומחים - עם הסבר מפורט .

cafri
חבר ותיק
חבר ותיק
הודעות: 1136
הצטרף: נובמבר 2009
נתן תודות: 121 פעמים
קיבל תודות: 144 פעמים

נושא שלא נקרא #15 

תוכל להסביר בדיוק מה הסצינה עושה?

למה הכוונה ב״מדליקה כל מיני אורות בבית בזמנים מסויימים״?
נסו למצוא תשובות לשאלות הקשורות לZ-Wave בשרשור הדביק שבראש הפורום
שתפו את הרעיונות שלכם בשרשור זה

שלח תגובה

חזור אל “עוזרות קוליות, שליטה ובקרה”