@R-יק
בהודעה המקורית שלי לא כתבתי את כל המידע, אז הנה התמונה המלאה:
אצלי הPing Sensor מוגדר במצב Revert.
המשמעות: הוא עובר למצב "tripped" כאשר הוא לא מוצא את הטלפון.
אפשר לממש את כל הלוגיקה גם במצב ה"רגיל" של הPing Sensor, אבל צריך לשנות את התנאים בהתאם (והאמת היא שזה גם יכול לפשט ולחסוך חלק מהבדיקות, משום שבמצב "רגיל" אפשר להגדיר את הPing Sensor שיהפוך לTripped רק אחרי X פעמים שהוא לא מצא את הטלפון, ולחסוך את הבדיקה של ה3 דקות.
בPLEG מוגדר אצלי Device Property שמבוסס על הPing Sensor:
[left]PhoneNotPinged = Ping Sensor TRIPPED status[/left]
כל הבאים הם Conditions (השניים הראשונים מתבססים על הDevice Property הנ"ל):
[left]
PhoneWasAccessed = (PhoneNotPinged EQ 0)
PhoneWasNotAccessed = (PhoneNotPinged EQ 1)
PhoneLeftHome = (PhoneWasNotAccessed) AND (PhoneWasNotAccessed;NOW>3:00)
PhoneArrivedHome = (PhoneLeftHome;PhoneWasAccessed)
[/left]
שים לב לאופן הגדרת PhoneArrivedHome.
בהודעה המקורית כתבתי
[left]
PhoneArrivedHome = PhoneWasAccessed while "PhoneLeftHome" is true
[/left]
אך שים לב שבפועל זה מוגדר כך:
[left]
PhoneArrivedHome = (PhoneLeftHome;PhoneWasAccessed)
[/left]
בPLEG כאשר רוצים לוודא שTest2 קרה אחרי Test1, מפרידים אותם עם "נקודה-פסיק" ;
[left]
(Test1;Test2)
[/left]
המשמעות של ההגדרה של PhoneArrivedHome: התנאי הזה יתקיים בכל פעם שPhoneWasAccessed יקרה אחרי PhoneLeftHome.
R-יק כתב:איך מגדירים שPhoneLeftHome = PhoneWasNotAccessed for 3 minutes?
...
אם רוצים לוודא שעבר פרק זמן מסויים בין Test1 לTest2, מוסיפים את התנאי הזה בסוף, לדוגמה:
[left]
(Test1;Test2>3:00)
[/left]
מוודא שעברו
לפחות 3 דקות בין השניים.
דוגמה נוספת:
[left]
(Test1;Test2<1:00:00)
[/left]
מוודא שTest2 קרה בתוך
פחות משעה אחרי Test1.
כמו שאתה רואה, PhoneLeftHome מוגדר כך:
[left]
(PhoneWasNotAccessed) AND (PhoneWasNotAccessed;NOW>3:00)
[/left]
התנאי הראשון מוודא שהPing Sensor לא מצא את הטלפון, התנאי השני מוודא שעברו לפחות 3 דקות בין הזמן
עכשיו (NOW) לבין הזמן שבו הPing Sensor הפך לTripped.
הערה כללית לגבי PLEG:
PLEG מוודא את הסטטוס של הConditions בכל פעם שאחד מהInputs משתנה.
NOW נחשב INPUT שמתעדכן כל דקה.
במילים אחרות, כאשר אתה משתמש בNOW, זה גורם לPLEG לבדוק את הConditions כל דקה.
זה אומר שבפועל התנאי PhoneLeftHome יהפוך לTrue לא
בדיוק 3 דקות אחרי PhoneWasNotAccessed, אלא משהו בין 3 ל4 דקות אחרי PhoneWasNotAccessed.
אם חשוב לך שזה יהיה
בדיוק 3 דקות, יש דרך לממש את זה עם טיימר. זה מסבך מעט - אם זה חשוב לך ואתה רוצה שאסביר גם את זה - תרגיש חופשי.