מה זה בעצם "מצב שבת"

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

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

מה המצב מנטרל

הרשימה הזו חוזרת כמעט בכל מוצר שעבר דרכנו:

  • תאורה שמגיבה למשתמש — נורית שנדלקת בלחיצה, תאורת רקע שמתעוררת במגע, נורית פתיחת דלת.
  • צלילים ומשוב שמיעתי — ביפ אישור, צפצוף סיום, התרעת דלת פתוחה. ההיבט הזה נדון בהרחבה במאמר על חיווי קולי והתראות בשבת.
  • מסכים שמשתנים — כל ספרה או אות שנוצרת בעקבות פעולת אדם. ראו מסכים ותצוגות בשבת.
  • רישום אירועים מוּנע משתמש — לוג שנכתב כתגובה ללחיצה. ראו רישום נתונים ולוגים בשבת.
  • לוגיקה אדפטיבית — אלגוריתם שמתאים את עצמו לשימוש, ולכן פעולת המשתמש משנה את התנהגות המערכת בזמן אמת.

מה המצב מקבע

מה שנשאר פועל צריך להיות קבוע, מחזורי ובלתי תלוי במשתמש. מדחס שמופעל לפי טמפרטורה, מאוורר שרץ במחזור זמן, בקר שסורק את מצב הכניסות בקצב אחיד — כל אלה עובדים לפי לוח זמנים פנימי שנקבע לפני כניסת השבת. העיקרון הזה הוא הבסיס לכל משפחת הפתרונות שמתוארת במאמר על מנגנוני גרמא והשהיה, והוא גם מה שמבדיל מצב שבת אמיתי מ"מצב שקט" שיווקי.

ארכיטקטורת הקושחה

מכונת מצבים, לא דגל

הטעות הנפוצה היא משתנה גלובלי אחד — דגל מצב שבת — שנבדק בעשרות מקומות בקוד. די בנתיב אחד ששכחו כדי שהמוצר ייכשל בבדיקה. הגישה הנכונה היא מכונת מצבים שבה מצב השבת הוא ענף נפרד עם לולאת בקרה משלו, ושכבת פלט אחת ויחידה שדרכה עוברות כל הנוריות, הצלילים והמנועים — כך שהחסימה נעשית בנקודה אחת שאפשר לבדוק. הפרדה כזו מחייבת תכנון מוקדם של הממשק בין חומרה לתוכנה.

כניסה ויציאה מהמצב

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

שרידות להפסקת מתח

הפסקת חשמל באמצע השבת היא תרחיש ודאי, לא חריג. המוצר צריך לחזור למצב שבת מעצמו בלי התערבות אדם, וזה אומר שמירת מצב בזיכרון לא נדיף ומדיניות התאוששות מוגדרת — נושא שמפורט בגיבוי חשמל והפסקות מתח בשבת.

איך בודקים

פרוטוקול הבדיקה שלנו בנוי משלוש שכבות. הראשונה היא מטריצת קלט-פלט: לוחצים על כל כפתור, פותחים כל דלת, מפעילים כל חיישן — ומתעדים שאף פלט לא השתנה כתוצאה מכך. השנייה היא בדיקת מחזוריות: מודדים בלוגר לאורך שעות שהמחזורים שומרים על קצב קבוע ואינם מושפעים מהפעילות בחדר. השלישית היא בדיקת אורך — הרצה רציפה של יממה ומעלה, כמתואר באמינות והפעלה רציפה במוצרי שבת. רק אחרי שלושת אלה יש טעם לגשת לבדיקה במכון הלכתי.

השורה התחתונה

מצב שבת טוב הוא מצב שאין בו הפתעות: המשתמש יודע בדיוק מה יקרה ומה לא, והמהנדס יכול להצביע על השורה בקוד שמבטיחה זאת. מוצר שבו התשובה לשאלה "מה קורה אם אלחץ כאן" היא "כנראה כלום" — עדיין לא מוכן.

רוצים להפוך רעיון למוצר? צרו קשר עם צוות פרוג'קטס האוס בע"מ – טלפון: 054-8936922 | דוא"ל: info@projects-house.com – ונשמח ללוות אתכם משלב הרעיון ועד המדף.