Bei der Entwicklung von IoT-Systemen, z. B. Carsharing, ist es sehr wichtig, mögliche Fehler zu berücksichtigen. Andernfalls werden Sie den technischen Support und die Unzufriedenheit der Kunden kritisch belasten.
Parkplatz "Skolkovskaya"Fehler passieren überall. In der Welt des „Internet der Dinge“ ist dies jedoch ein permanenter Zustand. Bei der Arbeit mit Mobilfunknetzen und Hardware treten Abstürze viel häufiger auf als in der Web- oder Mobilentwicklung.
Die Zuverlässigkeit von Systemen leidet aus verschiedenen Gründen, einschließlich enger Fristen und begrenzter Entwicklungsbudgets. IoT kann jedoch funktionieren, wenn mögliche Fehler nicht geleugnet, sondern akzeptiert und versucht werden, das Problem zu lösen. Bei Interesse gibt es einen interessanten
Artikel über Methoden zur Erhöhung der Fehlertoleranz, aber jetzt ist es näher am Punkt.
Sie öffnen das Auto vom Telefon aus, was könnte schief gehen?
Die Schritte können von der Architektur des Systems abhängen, aber das Szenario ist im Allgemeinen das folgende:
Sie klicken auf die Schaltfläche "Jetzt buchen". Ein Befehl wird an den Server gesendet. Sie kann gehen oder nicht.
Sie klicken auf die Schaltfläche "Auto öffnen". Ein Befehl wird an den Server gesendet. Sie kann gehen oder nicht. Der Server sendet einen Befehl an die Maschine. Sie kann gehen oder nicht. Das integrierte Gerät versucht, den Befehl auszuführen. Es kann erfüllt sein oder nicht.
Sie klicken auf die Schaltfläche "Reise starten". Ein Befehl wird an den Server gesendet. Sie kann gehen oder nicht. Der Server sendet einen Befehl an die Maschine. Sie kann gehen oder nicht. Das integrierte Gerät versucht, den Befehl auszuführen. Es kann erfüllt sein oder nicht.
Ja, dies ist eine oberflächliche und in der Tat eine wahnsinnige Menge von Problemen, aber jetzt werden wir nur diese betrachten.
Angenommen, alle Teams haben erreicht und alle Aktuatoren haben gearbeitet - Erfolg! Dies kann den Anlegern demonstriert werden.
Etwas ist schief gelaufen
Aber was passiert, wenn beispielsweise der Befehl „Offene Türen“ das Auto nicht erreicht?
Zunächst sollte der Server dies herausfinden. Damit der reale Zustand der Maschine mit dem Server synchronisiert werden kann, wird normalerweise die Befehlsbestätigung (ACK) verwendet. Und noch eine Bestätigung der Ausführung des Teams. Schließlich sind „das Team wurde nicht ausgeliefert“ und „das Team wurde nicht ausgeführt“ unterschiedliche Ereignisse und beinhalten unterschiedliche Lösungsversuche.
Zweitens (wenn das Problem nicht durch erneutes Senden des Befehls gelöst werden konnte) müssen Sie den Fehler dem Benutzer melden und dürfen ihn nicht in den Auslösezustand versetzen.
In Delimobile starten Sie die Reise.
Und ein Gespräch mit dem technischen Support.
Die Geschichte
Ich arbeite in Skolkovo. Aufgrund der Schwierigkeiten bei der Erreichbarkeit von Transportmitteln ging ich wie viele Kollegen jeden Tag zur Arbeit und zurück zum Carsharing. Aber vor 3 Tagen hat sich in der Parkzone die Verbindung verschlechtert. Warum es im Innovationszentrum Probleme mit der Mobilkommunikation gibt, ist eine andere Frage, aber diese Situation führte zu einem interessanten Problem: Delimobile-Benutzer, die ein Auto gebucht hatten, waren tatsächlich gefangen.
Am kalten Abend des 24. September kehrte ich nach Hause zurück. Er buchte ein Auto und kam zu ihr.
Klicken Sie auf "Inspektion starten", aber die Türen öffneten sich nicht.
- Nun, wahrscheinlich wieder ein Kommunikationsfehler. Ich werde noch einen nehmen. Außerdem gibt es so viele!
Klicken Sie auf "Miete beenden" - "Sie befinden sich außerhalb der Parkzone"
Ich rufe zur Unterstützung auf, beschreibe die Situation. Der Bediener versucht die Tür zu öffnen. Fehler. Die Musik. Türen öffnen sich. Vielen Dank.
- Wahrscheinlich sind die Server ausgefallen. Okay, lass uns gehen. Ich drücke "Start the trip" - die Anwendung begann das Geld zu zählen.
Fängt nicht an.
Ich rufe zur Unterstützung auf, beschreibe die Situation. Der Bediener versucht, den Motor starten zu lassen. Fehler. "Es besteht keine Verbindung zur Maschine."
- Okay, lass es uns manuell schließen. Senken Sie das Glas, verlassen Sie es, drücken Sie die Zentralverriegelungstaste und schließen Sie das Glas.
Glas fällt nicht. Anscheinend schaltet das Auto ohne einen Befehl vom Server die Zündung nicht ein. Es besteht jedoch keine Verbindung.
- Dann müssen Sie auf den Mechaniker warten. 1-1,5 Stunden.
"Aber hier ist es kalt." Es sind 3-4 weitere Leute um die Delimobile-Autos mit Telefonen unterwegs. Vielleicht wurden ihnen schon die Pelze geschickt ...
<Autotüren plötzlich geschlossen>
- Ah, das ist es. Vielen Dank. Ich fahre mit dem Kleinbus.
Wie andere dieses Problem lösen
Erstens, wenn keine Kommunikation mit dem Gerät besteht, sollte es möglicherweise nicht auf der Karte angezeigt werden.
Zweitens, wenn der Server gewusst hätte, dass der Befehl zum Öffnen der Türen nicht ausgeführt wurde, hätte er mich nicht in den Mietmodus versetzt. Anstelle von 40 Minuten in der Kälte und einer zusätzlichen Belastung des technischen Supports würde nur eine Fehlermeldung angezeigt.
Drittens können Sie einen Backup-Kommunikationskanal erstellen - ein zweites Modem mit einem anderen Betreiber (ich hatte Internet am Telefon). Oder Bluetooth, wie es in Squirrel und YouDrive gemacht wird. (Vielleicht ist diese Option nicht für Delimobile geeignet, da sie die Entwicklungs- und Supportkosten erhöht und DM die billigste unter den Massen ist.)
In der Zwischenzeit speichert Delimobil Autos "manuell geschlossen" und lädt seinen technischen Support aufgrund der fehlenden Bestätigung der Lieferung von Kontrollteams. Gleichzeitig sind Autos ohne Kommunikation auf der Karte sichtbar und können gebucht werden.
Dies ist ein größeres Problem.
Ich bin sicher, die Ingenieure von Delimobile sind großartig. Sie lösten ein Meer von Problemen. Im Ernst. Zusätzlich zu den Geräten und dem System selbst müssen noch Prozesse für die Inbetriebnahme, Wartung, Außerbetriebnahme usw. erstellt werden. Oft erfordern diese Prozesse auch die Entwicklung von Hardware und Software.
Aber warum könnte dann eine solche Situation entstehen? Meiner Meinung nach gibt es zwei wahrscheinliche Gründe.
Das erste wahrscheinliche Problem sind verschiedene Auftragnehmer für die Anwendung, Server und Geräte ohne qualitativ hochwertiges Top-Level-Design des gesamten Systems. Jeder mag seine Arbeit gut gemacht haben, aber die gesamte Architektur hat Probleme.
Der zweite wahrscheinliche Grund liegt im Prinzip in so vielen Projekten. Tatsache ist, dass es nicht schwierig ist, einen Prototyp herzustellen, um (zum Beispiel Investoren) zu demonstrieren. Vielleicht reicht das für mehrere Wochen oder sogar Tage. Der Entwurf und die Entwicklung eines zuverlässigen Systems können jedoch einen Monat oder sogar Jahre dauern. Leider verstehen dies nicht alle effektiven Manager.
Oft erfordert eine effektive Führung neue Funktionen, von denen sie glauben, dass sie den Umsatz des Unternehmens steigern. Gleichzeitig sehen sie kein kommerzielles Potenzial in der Erhöhung der Zuverlässigkeit.
Was zu tun ist?

Vor Ort muss Delimobil das Parkproblem in Skolkovo lösen. Viele Autos stehen dort im Leerlauf. Es ist unwahrscheinlich, dass sie sich mit einem Mobilfunkbetreiber auf eine Verbesserung der Kommunikationsqualität einigen können. Daher scheint mir das wahrscheinlichste Ergebnis, dass sie das Parken dort verbieten und Fahrzeuge alleine nach Moskau transportieren werden. Trauriges Ergebnis :( Glauben Sie, dass es möglich ist, dieses Problem auf andere Weise zu lösen?
Weltweit müssen technische Manager die Notwendigkeit verteidigen, die Zuverlässigkeit zu erhöhen. Zumindest in Delimobile haben sie jetzt einen Streit.
PS Besonderer Dank geht an die gequälten Techniker. Sie sind höflich und versuchen, das Problem zu lösen.