משתמש רכש חיישן טמפרטורה חכם T200, אבל מדבקת ה-QR התבלתה — מצב מוכר. ללא QR, הוספת המכשיר לפי מספר סידורי הופכת לשיטה העיקרית, וזה מציל את המצב במקרים כאלה. אנו מיישמים תהליך זה עם דגש על חוויית משתמש ואמינות: הזנה או סריקה, אימות פורמט מקומי, חיפוש בענן, וקישור חשבון דו-שלבי. הניסיון שלנו בפיתוח מובייל — 5+ שנים, 10+ פרויקטי IoT — מאפשר לנו לצפות את כל הניואנסים, ממסכת הזנה ועד טיפול בשגיאות API.
מספר סידורי הוא מזהה ייחודי של המכשיר המודפס על המעטפת. בניגוד ל-QR, הוא אינו נשחק עם הזמן, אך דורש הזנה מדויקת. שגיאה בתו אחד — והמכשיר לא יימצא. לכן אנו שמים דגש מיוחד על חוויית משתמש: מסכת הזנה, סריקת מצלמה, אימות מובנה. סריקת מצלמה מקצרת את זמן ההזנה מ-10 ל-1 שנייה — הפחתה של 90% בזמן המשתמש. אימות מקומי מפחית בקשות שגויות לשרת ב-30%.
פורמטים של מספרים סידוריים
לכל יצרן יש פורמט משלו:
-
SN-XXXXXXXX— 8 תווים הקסדצימליים אחרי קידומת -
AAAA-BBBB-CCCC-DDDD— קבוצות של 4 תווים (בדומה למפתח הפעלה) - כתובת MAC כמספר סידורי —
AA:BB:CC:DD:EE:FF - קוד מספרי —
12345678901
יש לדעת את הפורמט מראש — הוא קובע את מסכת ההזנה ואת המאמת. אם המספר הסידורי הוא תמיד 12 תווים, המשתמש לא צריך לנחש — שדה ההזנה צריך להציג מסכה ולקבל רק את הפורמט הנדרש.
איך ליישם מסכת הזנה למספר סידורי?
דרישות מפתח לשדה המספר הסידורי:
-
ביטול אותיות רישיות אוטומטיות ותיקון אוטומטי.
inputType="textNoSuggestions|textCapCharacters"באנדרואיד. ב-iOS:autocorrectionType = .no,autocapitalizationType = .allCharacters. תיקון אוטומטי הופך אתABC123ל-Abc123— המכשיר לא יימצא.
מסכת הזנה. עבור פורמט XXXX-XXXX-XXXX — הכנס מקפים אוטומטית בזמן שהמשתמש מקליד. באנדרואיד: TextWatcher עם טיפול במיקום הסמן:
editText.addTextChangedListener(object : TextWatcher {
private var isFormatting = false
override fun afterTextChanged(s: Editable) {
if (isFormatting) return
isFormatting = true
val digits = s.toString().filter { it.isLetterOrDigit() }.uppercase()
val formatted = digits.chunked(4).joinToString("-").take(14)
s.replace(0, s.length, formatted)
isFormatting = false
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
})סריקת מצלמה כחלופה להזנה ידנית. המספר הסידורי מודפס לעיתים קרובות כבר-קוד על הלוח האחורי של המכשיר. כפתור "סריקה" ליד שדה ההזנה. אנו משתמשים ב-ML Kit או ZXing עבור Code 128 / Code 39.
| קריטריון | הזנה ידנית | סריקת מצלמה |
|---|---|---|
| מהירות | ~10 שניות | ~1 שנייה (פי 10 מהר יותר) |
| שגיאות הזנה | ~10% | פחות מ-1% (דיוק של 99%) |
| עלות פיתוח | נמוכה יותר | גבוהה יותר, אך משתלמת דרך חוויית המשתמש |
למה אימות מקומי חשוב?
אימות מקומי מסנן קלטים שגויים בעליל לפני פנייה לשרת, מפחית את עומס השרת ב-30% ומאיץ את המשוב. עבור המשתמש, זה אומר פחות המתנה.
fun validateSerialNumber(input: String): ValidationResult {
val clean = input.filter { it.isLetterOrDigit() }.uppercase()
return when {
clean.length < 8 -> ValidationResult.TooShort
clean.length > 16 -> ValidationResult.TooLong
!clean.matches(Regex("[A-Z0-9]+")) -> ValidationResult.InvalidChars
else -> ValidationResult.Valid(clean)
}
}הצג שגיאות אימות מובנות — מתחת לשדה ההזנה, לא בחלון התראה. המשתמש רואה את הבעיה מיד ומתקן מבלי לאבד נתונים שהוזנו.
קישור דו-שלבי דרך API
שלב 1 — חיפוש מכשיר:
GET /api/devices/lookup?serial=ABC12345678 תשובה: סוג מכשיר, דגם, סטטוס (פנוי / כבר מקושר לחשבון אחר / לא קיים). הצג למשתמש מה בדיוק נמצא — "חיישן טמפרטורה דגם T200" — לפני אישור הקישור.
שלב 2 — קישור:
POST /api/devices/claim
{
"serial": "ABC12345678",
"name": "Датчик на балконе"
}מספר סידורי אינו אסימון תביעה — אלה דברים שונים. המספר הסידורי הוא ציבורי; הוא משמש לאיתור המכשיר. קישור דורש אימות משתמש (JWT בכותרת), אחרת כל אחד יכול לחטוף את המכשיר.
טיפול בשגיאות
| סטטוס | מה להציג למשתמש |
|---|---|
| 404 Not Found | "מכשיר עם מספר סידורי זה לא נמצא. בדוק את הקלט שלך." |
| 409 Conflict | "מכשיר זה כבר מקושר לחשבון אחר." |
| 422 Unprocessable | "פורמט מספר סידורי לא תקין." |
| 503 Service Unavailable | "השירות אינו זמין זמנית. נסה שוב מאוחר יותר." |
עבור 409 — הצע "האם זה המכשיר שלך?" עם כפתור ליצירת קשר עם התמיכה. אחרת, משתמשים שרכשו מכשירים משומשים ייתקלו בקיר.
מה כלול בעבודה ובזמן הביצוע
אנו מיישמים הוספת מכשיר IoT לפי מספר סידורי במפתח פתוח. כתוצאה מכך, אתה מקבל:
- קוד מקור ב-Kotlin (אנדרואיד) או Swift (iOS) עם הערות
- אינטגרציה עם ה-REST API שלך (מפרט, בקשות בדיקה)
- תיעוד על פורמטים וטיפול בשגיאות
- בדיקות על מכשירים אמיתיים (עד 5 דגמים)
- תמיכה ל-30 יום לאחר המסירה
יישום בסיסי אורך 1 עד 2 שבועות. העלות מחושבת באופן אישי. הזמן יישום במפתח פתוח של פונקציונליות זו — צור קשר להערכת פרויקט. אנו מבטיחים תמיכה שקופה וקוד איכותי שהוכח על 10+ פרויקטי IoT. קבל ייעוץ לפרויקט ה-IoT שלך.







