חוזה HTTP / Serial
הקושחה מעלה WebServer(80) אחרי ניסיון WiFi של 10 שניות.
הארגומנטים הם query/form של Arduino (server.arg), לא גוף JSON.
אם הרשת נכשלת — המצב האוטומטי המקומי ממשיך. זה לא SDK ולא ענן.
ארבעה נתיבים
| שיטה | נתיב | ארגומנט | כישלון |
|---|---|---|---|
| GET | /status | — | אין. מחזיר snapshot חי |
| POST | /set-angle | deg | חסר → missing deg; לא-מספר → invalid deg |
| POST | /set-panel | type | חסר → missing type; מחוץ ל־0..2 → invalid panel type |
| POST | /set-mode | auto | חייב המחרוזת "0" או "1" |
set-panel?type=foo לא נכשל. String::toInt() של Arduino מחזיר 0, ו־0 הוא OLED.
זה חולשה בקושחה, לא «סובלנות». המשחק למטה מדגים אותה.
set-angle מכבה אוטו (autoMode = false) ואז קורא moveToAngle,
שמצמיד ל־±PANEL_LIMITS[panel]. תשובת 200 אומרת «הפקודה התקבלה», לא «המסך ב־99°».
שחקן חוזה
{}
אין לוח. src/lib/protocol.js מריץ את אותם כללי ולידציה.
גוף /status
{
"angle": 4.5,
"target": 8.0,
"auto": true,
"panel": 2,
"lux_top": 412.0,
"lux_bot": 77.3
}
panel הוא enum: 0 OLED, 1 QLED, 2 LED.
lux_* הם הקריאה החיה מ־BH1750 — כולל ערך שלילי כשהחיישן נכשל.
אין שדה WiFi, אין הומינג, אין מומנט.
Serial 115200
הקושחה מדפיסה שורה אחת ב־setup(). לא לוג בקרה, לא קריאות lux.
Serial.begin(115200); // אחרי WiFi.begin + לולאת 10 שניות: IP: 192.168.1.42 // או: WiFi timeout — continuing in local auto mode
מה קורה בלי רשת
server.begin() עדיין נקרא. בלי קישור, הלקוח לא מגיע לנתיבים.
loop() ממשיך: stepper.run() + calcOptimalAngle כל 2 שניות אם autoMode.
ניתוק WiFi אחרי החיבור לא מדפיס שוב — אין watchdog רשת בלופ.