Manifest fĂŒr Entwickler intelligenter Systeme: 15 Prinzipien

Wir machen Sie auf einen Artikel von Vladislav Zaitsev ( vvzvlad ) aufmerksam, einem eingeladenen Gast unseres Blogs. Vladislav beschĂ€ftigt sich seit langem mit dem Thema „Smart Homes“. Zusammenfassend fasst er die folgenden Grundprinzipien fĂŒr den Entwurf solcher Systeme zusammen.

Heute möchte ich mit Ihnen ĂŒber Smart Homes im Besonderen und IoT-GerĂ€te im Allgemeinen sprechen. Dies wird jedoch kein gewöhnlicher Artikel sein: Es werden keine DrĂŒsen, Links zu Herstellern, Codeteile und Repositories auf dem Github vorhanden sein. Heute werden wir etwas Höheres diskutieren - die Prinzipien, nach denen „intelligente“ Systeme organisiert sind.

Bild

Wenn Sie den Artikel weiter lesen, stimmen Sie zu, dass Sie mit dem folgenden Haftungsausschluss zufrieden sind.

Eigentlich Haftungsausschluss selbst
  1. Alle diese Punkte betreffen nur IoT-Systeme fĂŒr Verbraucher (siehe „Smart Homes“). Diejenigen, die eine Person im GeschĂ€ft kaufen und installieren kann, ohne dass spezialisierte Installateure / Integratoren involviert sind.
  2. Einige dieser GrundsĂ€tze gelten nicht fĂŒr industrielle Systeme (es gibt ihre eigenen Anforderungen und GrundsĂ€tze) sowie fĂŒr Systeme, bei denen vom Benutzer getrennte Bediener vorhanden sind (z. B. ein Smart Home, das von speziell geschulten Personen installiert und gewartet wird).

    Einige der Prinzipien gelten auch nicht fĂŒr Systeme der Stufe „Spielzeug fĂŒr Geeks“, fĂŒr hausgemachte und Open-Source-Systeme, die keinen einzigen Produktbesitzer haben.
  3. Und natĂŒrlich ist alles, was unten geschrieben steht, nur meine Meinung, basierend auf meiner langjĂ€hrigen Erfahrung. Sie haben das Recht, ihm nicht zuzustimmen.



Ein Smart Home ist ein System, das einen Teil der tĂ€glichen Sorgen einer Person ĂŒbernimmt. Ab hier folgt das erste und grundlegendste Prinzip:

1. Ein Smart Home sollte das Leben immer einfacher machen.


Ein Smart Home ist ein System fĂŒrs Leben, kein Spielzeug fĂŒr Geeks. Jedes System, das schwieriger zu bedienen ist als herkömmliche Switches, ist kein Smart Home.

Jedes neue Produkt sollte auf Übereinstimmung mit diesem Prinzip getestet werden. Wenn es das Leben nicht einfacher macht und Sie nicht verstehen, wie Sie es einfacher machen können, gehört es nicht in ein intelligentes Zuhause. Sie können versuchen, es sich als Lernsystem vorzustellen.


Das zweitwichtigste Prinzip betrifft die Interaktion des Benutzers mit dem System:

2. Eine gute Benutzererfahrung ist wichtiger als FunktionalitÀt.


Wertlos ist ein cooles Werkzeug, das nicht normal verwendet werden kann. Bequeme und zuverlĂ€ssige GerĂ€te mit eingeschrĂ€nkter FunktionalitĂ€t sind fĂŒr "alle Gelegenheiten" eher erfolgreich als anspruchsvolle Produkte.

2.1. Praktische Schnittstellen sind besser als Anpassbarkeit.


Sie verstehen nicht, wie Sie eine Reihe von Funktionen und eine einfache BenutzeroberflÀche speichern können? Sie schieben alle Funktionen hintereinander in der Hoffnung, dass der Benutzer herausfindet, was er braucht? Raus aus dem Beruf!
Sie verstehen nicht, wie Sie Komfort und eine Reihe von Einstellungen kombinieren können? Spenden Sie die Einstellungen. Jede FunktionalitĂ€t ist cooler als ein normaler Switch, aber eine ĂŒbermĂ€ĂŸige KomplexitĂ€t zwingt den Benutzer leicht dazu, zum Switch zurĂŒckzukehren.

Gleiches gilt fĂŒr die ArbeitsqualitĂ€t. Ein Knopf, der das Licht einfach einschaltet, ist besser als ein Schieberegler zur Helligkeitsanpassung, der manchmal Störungen verursacht:

2.2. Die QualitÀt der implementierten Funktionen ist wichtiger als ihre QuantitÀt.


Ein wenig zuverlÀssige, aber bewÀhrte FunktionalitÀt ist besser als viel, aber es funktioniert irgendwie.
Einer der Mechanismen, die durch die Evolution in der menschlichen Psyche fixiert werden, ist eine aktivere Reaktion auf negative Reize. Negative Faktoren sind wichtiger als positive: Das Überspringen der AnnĂ€herung eines gefĂ€hrlichen Raubtiers ist viel schlimmer, als eine köstliche Frucht auf einem Baum nicht zu bemerken und nicht zu essen. Wenn Ihr System keine Funktionen hat, ist es nicht beĂ€ngstigend, es ist nur das Fehlen eines positiven Anreizes. Aber die bestehende Funktion, aber sie funktioniert schlecht, ist ein negativer Anreiz: Sie wird leichter und lĂ€nger in Erinnerung behalten.

2.3. Die Implementierung des Systems sollte die ĂŒbliche Arbeitsgeschwindigkeit nicht verringern.


Verzögerungen sind nicht akzeptabel, da sie die Benutzererfahrung beeintrÀchtigen. Dies ist auch ein negativer Anreiz. Wenn eine Person keine Verzögerung 2 zwischen dem Klicken eines herkömmlichen Schalters und der Aufnahme von Licht bemerkt, sollte sie dies in Ihrem System nicht bemerken.

Modernes Eisen arbeitet mit sehr hoher Geschwindigkeit. Es ist kein Problem, auf Mikrocontrollern Frequenzen von mehreren zehn Megahertz und mindestens zehn Kilobit pro Sekunde zu erreichen, selbst ĂŒber Funk. Wenn Sie unter diesen Bedingungen kein System erstellen können, spĂŒrt der Benutzer keine Verzögerungen im Betrieb. Verlassen Sie den Beruf!

2.4. Das System sollte die bereits gebildeten Gewohnheiten des Benutzers nicht brechen.


Ihr System ist nur ein kleines StĂŒck menschlichen Lebens. Die Lebenszeit einer Person ĂŒbersteigt die Lebensdauer des Systems bestenfalls um ein paar Mal und im schlimmsten Fall um eine GrĂ¶ĂŸenordnung. Ihr System wird so bleiben, wie es will, und das menschliche Leben wird weitergehen. Und in diesem Leben hat sich ein Mensch Gewohnheiten in Bezug auf die bevorzugte Helligkeit des Lichts, die Position der Schalter und die Art und Weise gebildet, wie es fĂŒr ihn bequem ist, das Licht einzuschalten und das Klima zu Hause zu kontrollieren.

Sie können diese Gewohnheiten nicht mit Gewalt Àndern. Es ist möglich anzubieten. Zu erzwingen - es ist unmöglich.
Sie können dem Benutzer nicht sagen, "jetzt schalten Sie das Licht des Telefons ein - es ist stilvoll, modisch, jugendlich." Dies ist eine Verletzung dieses und mehrerer anderer GrundsÀtze.

Was tun?

2.5. Das System sollte neue Erfahrungen bringen und nicht versuchen, die alten zu ersetzen.


Wenn Sie der Meinung sind, dass Ihre Art der Systemverwaltung zu Hause besser ist als die alte, bieten Sie sie dem Benutzer an. Wenn es wirklich bequemer ist, wÀhlt er eine neue aus (ja, verschiedene Methoden passen zu verschiedenen Menschen). Sie können (und sollten) ihm nur eine Wahl geben.



Ein wichtiger Platz in einem Smart Home ist die Logik der Arbeit. Was bestimmt, nach welchen Regeln dieses Smart Home funktioniert? Und das folgende wichtige Prinzip ist genau das Richtige:

3. Der Benutzer kann in der ihm zugÀnglichen Logik nicht eingeschrÀnkt werden.


Wenn der Benutzer den Wasserkocher 3 einschalten möchte, wenn die Temperatur im Raum steigt, geben Sie ihm die Möglichkeit, dies zu tun. Eine Situation sollte ausgeschlossen werden, wenn es keine physischen oder Software-EinschrĂ€nkungen gibt, um eine bestimmte Aktion auszufĂŒhren, diese jedoch nicht verfĂŒgbar ist, da der Entwickler dachte, "niemand wird dies jemals brauchen".

3.1. So einfach wie möglich: Das Schreiben von Logik sollte keine besonderen Kenntnisse ĂŒber das SystemgerĂ€t erfordern


Wenn Sie GerÀte unterschiedlicher Versionen mit unterschiedlichen Protokollen haben, stellen Sie sicher, dass der Benutzer nur in wirklich notwendigen FÀllen davon Kenntnis hat, wenn Sie nicht darauf verzichten können. Wenn Sie den Benutzer vor dem Erwerb von Spezialwissen bewahren können, wenn auch auf Kosten der Entwickler, tun Sie dies. Der Entwickler wird zwei Tage und tausend Benutzer pro Stunde verbringen. Achtundvierzig Stunden gegen tausend? Die Antwort liegt auf der Hand.

Wie schlÀfst du, John ist ein Serienprogrammierer?

3.2. GerĂ€te mit den gleichen Funktionen mĂŒssen gleichermaßen gesteuert werden.


Der Benutzer muss nicht wissen, dass das Wasserventil von einigen Befehlen und der Wasserhahn von anderen gesteuert wird. Wenn beide das Wasser in der Leitung steuern, mĂŒssen beide dieselbe BenutzeroberflĂ€che haben: „offenes Wasser“ und „geschlossenes Wasser“.



Wir alle leben in der physischen Welt. Der menschliche Körper und das Gehirn sind so geformt, dass sie mit physischen Objekten interagieren. Daher das Prinzip:

4. Physische SteuergerÀte sind besser als virtuelle.


Alle, selbst die besten Anwendungen auf dem Telefon mit virtuellen Steuertasten, verlieren an der richtigen Stelle den ĂŒblichen physischen Schalter.

Eine andere Sache ist, dass sich der Schalter an der richtigen Stelle befinden muss . Daher eine weitere wichtige Regel:

5. Radio ist besser als Kabel.


Kabelgebundene Systeme sind zuverlĂ€ssig, aber nur ĂŒber Funk können Sie einen neuen Schalter oder ein neues Relais fĂŒr die Lampe installieren, ohne sie erneut reparieren zu mĂŒssen. Und Transfer, wenn Sie vom vorherigen Ort gelangweilt sind. Dieses Prinzip hat jedoch seine Ausnahmen:

5.1. Schlechtes Radio ist schlimmer als Kabel.


Bei einem guten Radio können Sie nicht darĂŒber nachdenken, wie weit die GerĂ€te von der zentralen Steuerung entfernt sein sollten. Ein gutes FunkgerĂ€t sind die Mesh-Netzwerkprotokolle : ZigBee, Z-Wave, 6LoWPAN und so weiter.

Alle anderen Optionen sind schlechtes Radio. Wi-Fi ist ein schlechtes Radio. Selbstgemachte Protokolle einzelner Unternehmen (sie sind unter dem Namen "433 MHz" selbst erstellt, obwohl sie auf anderen Frequenzen liegen können und sich stark voneinander unterscheiden können) - schlechtes Radio.

Wi-Fi ist schlecht, weil es unmöglich ist, vollwertige "schlafende" GerĂ€te auf seiner Basis herzustellen, und es schwierig ist, eine automatische Konfiguration sowie KompatibilitĂ€tsprobleme mit anderen Wi-Fi-GerĂ€ten im Haus durchzufĂŒhren. Einfache hausgemachte Protokolle sind schlecht, da sie hĂ€ufig keine Zustellungskontrolle, VerschlĂŒsselung oder verfĂŒgbaren Spezifikationen enthalten. Keiner von beiden verfĂŒgt ĂŒber ein Mesh-Routing, was hĂ€ufig zu Problemen wie "Aber ich kann keinen Schalter in diese Ecke stellen - zu weit vom Sender entfernt" fĂŒhrt.



Es ist unmöglich, ein System mit absoluter ZuverlĂ€ssigkeit und ohne Wartungsbedarf herzustellen. GerĂ€te fallen aus, im Netzwerk treten Spannungsspitzen auf, Wasser fließt aus der Wohnung des Nachbarn, Batterien entladen sich, Plastikrisse, das Kind gießt Suppe auf die Lampe und so weiter. Aber:

6. Reparatur, Aktualisierung, Wartung und Diagnose sollten einfach sein.


Im B2B ist alles klar: Es gibt einen Benutzer, einen Entwickler und einen Bediener - eine Person oder Organisation, die weiß, wie das System funktioniert und auf professioneller Ebene damit arbeiten kann. Niemand benötigt Buchhalterkenntnisse in Programmierung unter 1C, dies ist eine besondere Person. Und niemand verlangt von einer Person, die ein BĂŒro mietet, dass sie versteht, wie die BelĂŒftung darin funktioniert - seine Aufgabe ist es zu sagen: „In unserem BĂŒro ist es stickig.“

Eine kompetente Entscheidung zum Kauf eines Systems basiert auf der Berechnung der Gesamtbetriebskosten, die sich aus der Summe des Systempreises und den Betriebskosten zusammensetzt.
In den Systemen, die eine Person zu Hause verwendet, ist alles komplizierter. Dort sind Bediener und Benutzer ein und dieselbe Person und verfĂŒgen zudem hĂ€ufig nicht ĂŒber die erforderlichen Kenntnisse ĂŒber das System. Leider sind dies die Grenzen des Verbrauchermarktes. Daher die folgenden Prinzipien:

6.1. Das GerÀt sollte entweder funktionieren oder nicht. Es gibt kein drittes.


Die Wahrscheinlichkeit von Arbeit, Teilarbeit und fehlerhafter Arbeit ist nicht zulĂ€ssig. Sie sollten keine Situationen zulassen, in denen Ihr GerĂ€t jedes zweite Mal funktioniert oder nicht einmal von zehn. Wenn Sie der Meinung sind, dass Ihr GerĂ€t nicht richtig funktioniert, sollten Sie es vollstĂ€ndig ausschalten - aus SicherheitsgrĂŒnden und um eine positive Benutzererfahrung zu gewĂ€hrleisten. Das Ersetzen des GerĂ€ts ist unangenehm, aber es ist besser, den Benutzer zum Ersetzen zu zwingen, als sich eine Meinung ĂŒber das System zu bilden, die „einmal funktioniert“. Das System muss sich in einem genau definierten Zustand befinden: Wenn es ausfĂ€llt, funktioniert es nicht. Wenn es nicht ausfĂ€llt, funktioniert es.

Wenn Sie fest davon ĂŒberzeugt sind, dass eine Verschlechterung der FunktionalitĂ€t akzeptabel ist, sollten Sie den Benutzer dennoch mit einer klaren Meldung warnen: „Es wurde ein Fehler des zweiten Dimmerkanals festgestellt. Der Dimmer muss ausgetauscht werden. Den ersten Dimmerkanal weiter benutzen? Ja Nein"

6.2. Das Ersetzen eines defekten GerÀts sollte einfach sein.


Das System muss modular aufgebaut sein. Wenn der Benutzer den Sensor kaputt macht, muss er nur den Sensor austauschen. Sie können nicht verlangen, das Relais mit dem Bedienfeld zu wechseln, da es in der Produktionsphase daran angebracht ist.

Sie können nicht einmal sagen, dass nur unser Spezialist einen neuen Sensor installieren kann, da es mit der Entwicklung Ihres Systems offensichtlich nicht genĂŒgend Spezialisten fĂŒr Millionen möglicher Benutzer gibt, was bedeutet, dass irgendwann Probleme auftreten. NatĂŒrlich wird der Benutzer das GerĂ€t nicht selbst reparieren, aber im Falle eines Ausfalls sollte er in der Lage sein, es zu ersetzen.

6.3. Nachrichten löschen.


Wenn etwas schief gelaufen ist, sollte der Benutzer darĂŒber Bescheid wissen und wissen, was genau schief gelaufen ist.
Es ist unmöglich, dem Benutzer "Fehler Nr. 45" mitzuteilen, was bedeutet, dass nur der Mitarbeiter des technischen Supports diese Meldung versteht. Er muss sagen: „Das GerĂ€t reagiert nicht. Versuchen Sie, es neu zu starten, erneut zu binden oder den Dienst zu kontaktieren. Fehler # 45. "

Es ist unmöglich zu erkennen, dass das GerĂ€t nicht reagiert (wenn Sie die Möglichkeit dazu haben), und den Benutzer nicht darĂŒber zu informieren. Es ist nicht sehr angenehm, eine Nachricht ĂŒber Probleme zu erhalten, aber es ist viel unangenehmer zu verstehen, dass das GerĂ€t seit einer Woche nicht mehr funktioniert, genau in dem Moment, in dem Sie es dringend benötigt haben.

6.4. Mangel an unnötigen Informationen in Nachrichten.


Gleichzeitig mĂŒssen Sie jedoch keine Debug-Dumps und mehrzeiligen Protokolle auf dem Benutzer sichern. Informationen werden entweder vom Benutzer wie im vorherigen Absatz benötigt, weil sie Informationen darĂŒber enthalten, was genau schief gelaufen ist, oder sie werden nicht benötigt, wenn diese zusĂ€tzlichen Informationen nicht klar sind, weil sie nicht an ihn gerichtet sind.

Dem Benutzer mĂŒssen nicht hundert Nachrichten desselben Typs angezeigt werden: "Die Verbindung zum GerĂ€t wurde unterbrochen", "Die Kommunikation mit dem GerĂ€t wurde wiederhergestellt". Entscheiden Sie sich schließlich: Entweder handelt es sich um ein kritisches Problem, und Sie mĂŒssen es auf die richtige Weise melden - „Instabile Kommunikation mit dem GerĂ€t“ - oder, da es sich als wiederhergestellt herausstellte, sind dies keine wichtigen Informationen und mĂŒssen nicht angezeigt werden 4 .

6.5. FĂŒr die Wartung sind keine besonderen Kenntnisse und GerĂ€te erforderlich.


Geben Sie dem Benutzer die Möglichkeit, die Firmware zu aktualisieren. Lassen Sie sie einfach durch DrĂŒcken einiger Tasten aktualisieren. Dies erfolgt entweder ĂŒber die Standardschnittstelle (USB / BT / Wi-Fi) oder wird in der Benutzerdokumentation zum Aktualisieren der Firmware mit dem SPI-Programmierer im Allgemeinen nicht erwĂ€hnt.

Sie können nicht verlangen, dass der Benutzer Bitmasken fĂŒr eine GerĂ€tekonfiguration berechnet, wenn diese Konfiguration bei normaler Verwendung erforderlich ist.

6.6. Das System sollte keine laufende Wartung erfordern.


Wenn einmal im Monat eine Verbindung zur Exekutiveinheit hergestellt wird und der Benutzer zum Kronleuchter klettern und ihn erneut binden muss, ist dies ein schlechtes System. Wenn der Schalter alle zwei Monate die Batterien wechseln muss, ist dies ein schlechtes System. Selbst die durchschnittliche Wartungszeit von sechs Monaten fĂŒr jedes GerĂ€t ist schlecht: Bei zwanzig GerĂ€ten im Haus muss der Benutzer durchschnittlich alle neun Tage einige Maßnahmen ergreifen.

6.7. Das System muss aktualisiert oder erweitert werden können.


Die Kosten fĂŒr die Erweiterung des Systems sollten linear steigen. Ein neuer Block sollte die Kosten eines neuen Blocks kosten.

Es sollte keine Situation geben, in der Sie einen neuen Controller kaufen mĂŒssen, um einen neuen Sensor hinzuzufĂŒgen, da der alte nicht mehr als sechs Sensoren unterstĂŒtzt 5 .

Es sollte keine Situation geben, in der eine neue Sensor-Firmware nur mit einer neuen Version der Steuereinheit funktionieren kann.

Solche EinschrÀnkungen wirken sich positiv auf den Gewinn aus und zwingen Benutzer zum Kauf neuer GerÀte. Dies ist jedoch der Weg zur Hölle. Wenn Sie aufgrund solcher Tricks das Vertrauen der Benutzer verlieren, verlieren Sie viel mehr, als Sie verdienen könnten.

7. Autarkie: Externe Netzwerke sind eine Option, keine Notwendigkeit.


Ein System, in dem Teams nur einen externen Server durchlaufen, ist ein schlechtes System. Sie können so oft Sie möchten mit praktischen Schnittstellen, trendigen Anwendungen und coolen neuronalen Netzen angeben, aber es spielt keine Rolle, ob der Benutzer die Möglichkeit verloren hat, das Licht in der Toilette zusammen mit dem Internet-Drop einzuschalten. Entwickler, finden Sie ein solches System wirklich gut?
Aber im Ernst, ich verstehe nicht wirklich, warum dieser Artikel nicht selbstverstĂ€ndlich ist. Indem Sie das System an einen externen Server binden, schaffen Sie einen Fehlerpunkt mit der ZuverlĂ€ssigkeit eines normalen Servers, aber gleichzeitig fĂŒr alle Ihre Benutzer. Externe Services sind cool. Sie ermöglichen es Ihnen, die FunktionalitĂ€t zu erweitern, sollten jedoch nicht die einzige Option fĂŒr die Betriebsverwaltung sein. Ein zusĂ€tzlicher Steuerkanal, Backup-Speicher, Datenanalyse - so viele wie Sie möchten.

8. Zentralisierung: Das Fehlen eines zentralen Hubs schrĂ€nkt die verfĂŒgbare Logik ein.


Beeilen Sie sich jedoch nicht auf das andere Extrem - versuchen Sie, das System dezentral und damit absolut zuverlÀssig zu machen.

Ein dezentrales System ist, wenn der Schalter an der GlĂŒhbirne „Einschalten“ anzeigt und der Temperatursensor die Heizung einschaltet, wenn die Temperatur sinkt. Ein verteiltes System verliert zentralisiert, einfach weil ein solches System nur im Rahmen des einfachsten Paradigmas der GerĂ€teinteraktion existiert - „das GerĂ€t steuert ein anderes GerĂ€t“. Mit zunehmender KomplexitĂ€t des Systems wirft ein solches System mehr Fragen als Antworten auf. Wenn es mehrere Temperatursensoren gibt, sollte die Heizung dann Befehle von allen annehmen? Oder sollte er selbst die Sensoren abfragen? Und wenn Sie eine Entscheidung ĂŒber die Aufnahme basierend auf dem Trend treffen mĂŒssen, wo werden die Archivdaten gespeichert? An jeder Heizung? Ist es nicht mutig? Auf jedem GerĂ€t? Und mit jeder Anfrage den Verkehr steigern? Und wo speichern und wie die Logik Ă€ndern? Und wenn Logik externe Elemente enthĂ€lt? Und wie speichert man Logik auf "dummen" GerĂ€ten? Und wie kann ich es aktualisieren?

All diese Probleme verschwinden, wenn Sie sich versöhnen und die Notwendigkeit eines zentralen Hubs als Interaktionspunkt zwischen Daten und Speicherorten fĂŒr die Benutzerlogik erkennen. Lassen Sie alle GerĂ€te „dumm“ sein, Daten senden und Befehle empfangen können, und die Aufgabe, Archivdaten zu speichern, diese Daten zu verarbeiten, Entscheidungen zu treffen und mit externen Diensten zu interagieren, liegt bei der sehr zentralen Steuerung.

Die Dezentralisierung kann ĂŒbrigens beibehalten werden, wenn auch teilweise: Nichts hindert Sie daran, einen Befehl direkt zu senden, da es einen ausfallsicheren Modus gibt, wenn keine Antwort vom Hub vorliegt. Es wird keine Logik geben, aber es wird möglich sein, das Licht einzuschalten.



9. Das System sollte keine potenziell gefĂ€hrlichen Aktionen ohne BestĂ€tigung oder Benachrichtigung des Benutzers ausfĂŒhren.


Solange wir nicht in einer Welt leben, in der der Programmierer fĂŒr den durch sein Programm verursachten Schaden verantwortlich ist ( hier zu diesem Thema gut geschrieben), werden die Programme viele Fehler enthalten. Sie werden in der Software eines Smart Home sein. Die einzige Möglichkeit, bei der diese Fehler nicht zu katastrophalen Folgen fĂŒhren, ist die EinschrĂ€nkung der unabhĂ€ngigen Aktionen des Systems. Potenziell gefĂ€hrliche Handlungen sollten zumindest mit dem Wissen des Benutzers und vorzugsweise mit seiner BestĂ€tigung durchgefĂŒhrt werden. Sie können das Licht automatisch einschalten: Ein Fehler im Programm fĂŒhrt dazu, dass der Benutzer nachts aufwacht oder am Ende des Monats eine Rechnung ĂŒber weitere hundert Rubel erhĂ€lt. Unangenehm, aber kaum gefĂ€hrlich. Zum Beispiel ist es unmöglich, Wasser automatisch einzuschalten, wenn keine Mechanismen garantiert sind, um es wĂ€hrend einer Flut auszuschalten. Aber schalten Sie das Wasser aus - Sie können, weil dies keine gefĂ€hrliche Handlung ist.

Dieses Prinzip besagt nicht, dass die automatische Steuerung aller Heizungen, Kessel, Öfen, Wasserkocher und dergleichen unbedingt verboten werden muss. Es geht vielmehr darum, dass, wenn Sie bereits ein potenziell gefĂ€hrliches GerĂ€t mit Programmsteuerung herstellen, sicherstellen, dass seine Gefahr nicht die Benutzerebene erreicht: Der gesteuerte Wasserkocher sollte ĂŒber "Eisen" -Kreise verfĂŒgen, die ihn bei Überhitzung ausschalten. Das Bad, das von selbst gefĂŒllt ist, muss ĂŒber Flutungssensoren verfĂŒgen. Das BĂŒgeleisen sollte sich ausschalten können, aber erst wieder einschalten, wenn Sie den "BĂŒgeleisen" -Knopf drĂŒcken, und so weiter.

10. Das System sollte in der Lage sein, sich selbst zu kontrollieren und selbst zu diagnostizieren.


Ein echter Entwickler intelligenter Systeme sollte ein wenig paranoid sein. Sie können dem Internet nicht vertrauen, es kann verschwinden. Sie können dem Code nicht vertrauen, da er möglicherweise Fehler enthĂ€lt. Vielleicht kann man zumindest der Hardware vertrauen? Nein. Sie können Ihrer Hardware nicht vertrauen. Das Relais kann stecken bleiben, Triacs öffnen sich spontan, Sicherungen gehen durch. Schließlich kann der Benutzer den Kilowattkessel an eine 100-Watt-Steckdose anschließen. Benötigen Sie Sensoren Spannung, Strom, Temperatur. Liegt die Temperatur außerhalb des Bereichs? Schalten Sie alles aus, senden Sie eine Warnung. Der Strom ist darĂŒber hinausgegangen - schalten Sie ihn aus. Sie haben das Relais ausgeschaltet, aber liegt am Ausgang noch Spannung an? Hinweis. Eingeschaltet, aber keine Spannung? Beachten Sie!

11. Das System muss manuell gesteuert werden können.


Und trotz all dieser paranoiden Dinge wird es immer noch eine Situation geben, in der die Kontrollen fehlgeschlagen sind und etwas kaputt gegangen ist.Schalten Sie den Raum, den Router und den zentralen Hub ein. Und der Benutzer möchte das Licht in der Toilette einschalten. Was ist die Schlussfolgerung?

Es sollte immer eine SchaltflÀche vorhanden sein, mit der "Sonnenuntergang die Sonne manuell einstellen" kann. Welches kann das Licht SOFORT ein- oder ausschalten. Da sie morgen einen neuen Hub bringen, können Sie etwas spÀter einen Schalter kaufen und an diesem Abend das Licht im Raum ausschalten, um ruhig zu schlafen.

12. Entwickler und Hacker sind genauso wichtig wie normale Benutzer.


Normale Benutzer machen Sie zu Kassierern und Hackern 6 - kommen mit neuen Funktionen. Der Hersteller kann und sollte nicht alle Szenarien fĂŒr die Verwendung des Systems entwickeln, da er offensichtlich nicht in allen Bereichen ĂŒber Kenntnisse verfĂŒgt und die Auswirkungen der Entwicklung solcher Bereiche nicht bewerten kann. Es ist möglich, dass sich Ihre kontrollierte Steckdose als wahnsinnig bequem herausstellt, um den Thermostat des Mondscheins noch zu steuern, da sich in der Lösungsbibliothek ein PID-Regler befindet und jetzt alle Mondschneider Ihre Systeme massenhaft kaufen. Ein Beispiel ist etwas erfunden, aber die Hauptbotschaft ist, dass es sich auf Kosten einiger Anstrengungen lohnt, eine komfortable Umgebung fĂŒr Hacker zu schaffen, da diese Ihrem System eine treibende Kraft verleihen.

13. Offenheit: Das System muss ĂŒber eine API fĂŒr die Integration mit anderen Systemen verfĂŒgen.


Sie können mit Ihren GerĂ€ten nicht alle BedĂŒrfnisse Ihrer Kunden abdecken. Es wird immer GerĂ€te geben, die Sie nicht haben, andere Hersteller jedoch. Oder Sie haben es, aber andere Hersteller sind besser. Oder Sie sind der Hersteller, dessen Einheit die beste ist. Eine offene und gut dokumentierte API ist erforderlich, um Ihr System mit anderen zu verbinden. Wenn Sie keine API haben, verweigern Sie Benutzern die Erstellung heterogener Systeme. Selbst Unternehmen, die sich am meisten fĂŒr proprietĂ€re Hard- und Software einsetzen, können sich das nicht leisten.

14. Dokumentation: Dokumentation ist ebenso wichtiger Bestandteil des Systems wie Code und Hardware.


UnabhĂ€ngig davon, welche coole Hardware Sie haben und welche coole Software Sie schreiben, spielt es keine Rolle, ob der Benutzer nicht herausfindet, wie Sie Ihr System starten und wie Sie damit arbeiten. Eine gute Dokumentation ist eine Dokumentation, bei der der Benutzer nicht einmal daran denkt, den Support zu kontaktieren oder die mentalen FĂ€higkeiten des Entwicklers negativ zu bewerten. Das Schreiben einer solchen Dokumentation ist fast unmöglich, aber wir mĂŒssen uns darum bemĂŒhen.

Und schließlich das letzte Prinzip (aber in Bezug auf die Bedeutung weit vom letzten entfernt):

15. Autarkie und SelbstvertrÀglichkeit: Das System sollte weiter funktionieren, auch wenn das Unternehmen nicht mehr funktioniert


Eine Person lebt 70-90 Jahre, das System in ihrem Haus ist (bestenfalls) 5-10 Jahre alt und Unternehmen sind oft kleiner. Du solltest kein System machen, die FÀhigkeit zu arbeiten, mit der du mit ins Grab ziehst. Schade um die Benutzer. Entwerfen Sie das System so, dass es möglich ist, damit zu arbeiten, auch wenn das Unternehmen und die Entwickler lÀngst in Vergessenheit geraten sind.

Kommt die Bindung eines neuen GerĂ€ts vor, wenn ein Token vom Server des Entwicklers empfangen wird? Klicken Sie auf die SchaltflĂ€che "Empfangstoken ĂŒberspringen". MĂŒssen Sie beim ersten Einschalten des Systems die Firmware von der Site aus aktualisieren? Stellen Sie sicher, dass die Standard-Firmware ĂŒberflutet wird, wenn die Site nicht verfĂŒgbar ist. Usw.



In diesem Artikel habe ich versucht, alle Erfahrungen mit der Verwendung, dem Arbeiten und dem Entwerfen solcher Systeme zu beschreiben, die in 15 Grundprinzipien zusammengefasst sind. Einige von ihnen scheinen weit hergeholt zu sein, andere mögen kontrovers sein (und das ist normal), und einige mögen banal sein (und das ist auch normal).

Wenn Sie jedoch an mindestens einen von ihnen denken, bedeutet dies, dass der Artikel nicht umsonst geschrieben wurde.

Fußnoten und Kommentare


1. Wenn ich "Verwenden" sage, meine ich nicht den Konfigurationsprozess, sondern den Prozess der normalen Interaktion mit dem System.
2. Bitte beachten Sie, dass ich nicht sage, dass die Verzögerung gleich sein sollte, sondern dass der Benutzer dies nicht bemerken sollte. Die Praxis zeigt, dass eine Person keine Verzögerung von bis zu etwa 300 ms bemerkt.
3. Vielleicht ist er in Zentralasien aufgewachsen und glaubt, dass heißes grĂŒner Tee das beste Mittel gegen Hitze ist.
4. Wenn ich sage, dass keine Informationen angezeigt werden mĂŒssen, bedeutet dies natĂŒrlich, dass Sie dem Benutzer nicht jedes Mal eine Nachricht darĂŒber senden sollten. Es sollte auf Anfrage des Benutzers angezeigt werden - durch Klicken auf die SchaltflĂ€chen "Protokolle anzeigen" oder "Debugging-Informationen anzeigen". Benutzer sollten nicht als Idioten betrachtet werden, aber ihre Zeit muss respektiert werden.
5. NatĂŒrlich ist es unmöglich, ein System zu entwerfen, das unendlich viele GerĂ€te unterstĂŒtzt. Es wird immer EinschrĂ€nkungen geben, aber die Aufgabe des Entwicklers ist es sicherzustellen, dass sie in 99% der FĂ€lle keine Rolle spielen. Eine Begrenzung auf sechs Sensoren ist nicht akzeptabel. Einhundertzweihundert GerĂ€te in einem Netzwerk sind fĂŒr die meisten Benutzer von Smart Homes ausreichend.
6. Ich spreche von Hackern im ursprĂŒnglichen Sinne des Wortes gemĂ€ĂŸ RFC1983 und nicht von Hackern.

Source: https://habr.com/ru/post/de424131/


All Articles