Wie wir ein IoT-System zur Steuerung des Solarenergieverbrauchs geschaffen haben

Wenn Sie keine Ahnung von der Entwicklungsarchitektur und dem mechanischen / elektrischen Design hinter IoT-Lösungen haben, könnten diese als "scheinbar übernatürliche Eigenschaften oder Kräfte" erscheinen. Wenn Sie beispielsweise Menschen des 18. Jahrhunderts ein funktionierendes IoT-System zeigen, denken sie, dass es magisch ist. Dieser Artikel zerstört einen solchen Mythos. Oder, um es technisch auszudrücken, Hinweise zur Feinabstimmung der IoT-Entwicklung für ein großartiges Projekt im Bereich Solarenergiemanagement.


Spoiler : Keine Zauber, nur analytische Ideen für die Entwicklung eines schnellen und einfachen Service.


Haftungsausschluss : Wir bieten keine Komplettlösung an (es gibt sie einfach nicht). Teilen Sie einfach die Dinge mit, die wir ernst nehmen. Diese Punkte können Killer-Features sein, während ihre Vernachlässigung sie im Gegenteil töten kann. Wortspiel beabsichtigt;)


Einführung eines IoT-Systems zur Visualisierung und Optimierung des Solarenergieverbrauchs


Wir hatten das Vergnügen, an einem Projekt zur Verbesserung des selbst erzeugten Energieverbrauchs zu arbeiten. Der Kern liegt in der Visualisierung und Optimierung des Einsatzes von Photovoltaik (PV) -Systemen sowohl für Installateure als auch für Endkunden. Wenn Solar Manager als zentraler Hub für die Verteilung der erzeugten Sonnenenergie auf Haushaltsgeräte installiert ist, verbrauchen Sie maximal selbst erzeugte Energie.



Wir haben bereits über die geschäftliche Perspektive der Nutzung von Solarenergie geschrieben und wollen uns nun mit technischen Herausforderungen und Hinweisen auf die Entwicklung befassen.


Absolute Voraussetzung


Bevor wir anfangen, lassen Sie uns klar werden. Es gibt eine Sache, die für jedes einzelne Projekt gilt, unabhängig davon, ob es sich um ein IoT-System oder eine einfache Landung handelt.


Beginnen Sie niemals mit der Implementierung, bevor Sie nicht vollständig verstanden haben, was Sie erreichen möchten (und alle Beteiligten tun dies).


Es ist so etwas nicht offensichtlich. Nein, es gibt keine Telepathen und niemand liest deine Gedanken. Klären Sie, diskutieren Sie, stellen Sie sicher, dass Sie auf derselben Seite sind.



Natürlich, wenn Sie nicht doppelt so viel Zeit und Geld ausgeben möchten.


Die Mission


Also, was haben wir als Input? Flexible Konnektivität und zentralisierte Remote-Firmware, 5 Benutzerrollen mit unterschiedlichen UX- und Berechtigungssätzen, Konvertieren und Analysieren von Daten, eine große Anzahl von Anforderungen und als Sahnehäubchen das Zeichnen vieler Zeitwertdaten in Diagrammen.


Herausforderungen und Besonderheiten der Implementierung eines IoT-Systems für den Energieverbrauch


Bei der Entwicklung sind drei Dinge am wichtigsten: Stabilität, Relevanz und Geschwindigkeit. Besonders wenn das Projekt eine monolithische Architektur erfordert. Aus diesem Grund sollten die Gesamtlogik, alle Benutzerabläufe und das Datenbankdesign so einfach und optimiert wie möglich sein. Seien wir ehrlich, 2019 möchte niemand 40 Sekunden warten, weil "Ihre Daten verarbeitet werden". Hier ist die Frage- / Antwortliste für IoT-Plattformen, auf die wir uns beziehen:


  • Passt die Architektur zu den Anforderungen und Spezifikationen?
  • Wie werden Sie gesammelte Daten konvertieren, verarbeiten und analysieren?
  • Was sind die optimalsten Beziehungen zwischen Eltern-Kind-MVC / MVP-Schichten? Können sie dann skaliert werden, ohne unterbrochen zu werden?
  • Gibt es Module, die ähnliche / angrenzende Funktionen ausführen? Können sie zu einem einzigen Mehrzweckmodul zusammengefasst werden? Wird dies die Komplexität einführen oder verringern?
  • Ist die Kommunikation zwischen den Stufen optimal?
  • Wie werden Daten zwischengespeichert, bevor sie visualisiert werden?
  • Ist die Benutzererfahrung (User Experience, UX) für jede Benutzerrolle einfach und selbstverständlich?

Teilen Sie, was verteilt werden muss, und vereinen Sie, was ähnlich ist. Verwechseln Sie dies jedoch nicht mit der Erstellung großer Klassen, die mehrere Aufgaben lösen (sollten). Erstellen Sie stattdessen kleine für eine einzelne Aufgabe. Erstellen Sie für komplexe Aufgaben mehrere Klassen, die jeweils eine Unteraufgabe lösen, und eine andere, die diese verwendet.


  • Architekt IoT-Lösungen intelligent



Smart bezieht sich hier auf die Erstellung einer schnellen, skalierbaren, optimierten und nachhaltigen Projektarchitektur, die den Projektanforderungen entspricht. Die grundlegenden Fragen, die sich an dieser Stelle stellten:


  1. Was ist der einfachste und direkteste Architekturfluss?
  2. Wie kann die Benutzererfahrung für jede Rolle am einfachsten gestaltet werden?
  3. Können wir die ursprüngliche Architektur für eine bessere Skalierbarkeit und Leistungsoptimierung überarbeiten?

Bei Web-Apps umfasst dies das Design des hierarchischen Model View Controllers (HMVC). Um beispielsweise Ressourcen besser zuzuweisen und eine schnellere Reaktion zu erzielen, müssen Sie die Verbindungen zwischen API, Back-End, Front-End und Edge durcharbeiten. Konfigurieren Sie die Cloud-lokale Kommunikation, speichern und übertragen Sie Daten, damit Sie schnell die richtige Antwort erhalten (Hallo, Captain Obvious!).



  • Entwerfen Sie die Datenbank unter Berücksichtigung der Leistung



Unterschätzen Sie niemals die Wichtigkeit, das Datenbankdesign (DB) zu durchdenken. Dies gilt auch für die Beziehungen zwischen Sammlungen in der Datenbank. Sie haben viele Entitäten, die auf verschiedene Weise interagieren. Daher ist es wichtig, alle zugehörigen logischen Verbindungen an einem Ort zu halten.


Wenn Sie also eine anfängliche Struktur zur Hand haben, bestimmen Sie:


  1. Ist dies (eins zu eins, eins zu viele, viele zu viele) der optimale Beziehungstyp für diese Sammlung? Löst es die Aufgabe am effizientesten?
  2. Wie gut entspricht es der Aufgabe auf einem bestimmten Bildschirm?
  3. Passt es gut in die allgemeine Architektur des Projekts?

Optimieren Sie die Logik hinter jedem Modul und stellen Sie sicher, dass die allgemeine Architektur erhalten bleibt. Denken Sie über den Berechtigungssatz nach. Dann überlegen Sie noch einmal und optimieren Sie. Denken Sie daran, die Verbindungstypen so festzulegen, dass Sie für jede Aufgabe alle erforderlichen Informationen an einem Ort haben und die Anforderungen richtig bearbeiten.


Stellen Sie sich zum Beispiel vor, Ihre Datenbank ist ein Fast-Food-Restaurant. Sie haben viele Kunden, Sie müssen schnell und genau das servieren, was sie bestellt haben. Oder Ihr Geschäft ist erledigt. Das ist genau das gleiche für DBs. Ja, es gibt Dutzende von Sammlungen, und Sie benötigen Daten von 7 bis 8 gleichzeitig. Entwerfen Sie die Beziehungen so, dass sie logisch verbunden sind, und geben Sie die Antwort schnell zurück.


Das IoT-System ist wie ein Restaurant. Lassen Sie die Kunden nicht warten.


  • Wie man [Unmengen] Daten zeichnet



Erinnern Sie sich an die Zeiten, als Websites für ein paar Minuten geladen wurden? Wir haben Apps gesehen, bei denen Dashboards noch langsamer geladen werden. Und das ist ein Nein-Nein.


Diagramme sind eine neue Normalität. Datenvisualisierung wird häufig in SCADA, IoT und allen analytischen Projekten und aus einem bestimmten Grund verwendet. Wenn Sie einen Anstieg des Energieverbrauchs, Markttrends, CO2 in der Luft und andere Dinge sehen, die Sie messen können (normalerweise im Laufe der Zeit), entsteht ein lebendiger Eindruck. Sie sehen, Sie verstehen, Sie handeln. Mit der Textdarstellung massiver Datenfelder wird Ihr Auge in kürzester Zeit unscharf.


Die Herausforderung liegt also darin, Diagramme mit einer großen Anzahl von Wert-Zeit-Paaren schnell zu zeichnen. Bevor Benutzer die Daten in der Tabelle sehen, muss das System alle Punkte für die Darstellung ermitteln. Wir hatten ziemlich viel Brainstorming, um festzustellen, wie die Daten zwischengespeichert werden, sodass das Plotten eines Diagramms mit mehr als 50.000 Daten-Wert-Paaren weniger als 2 Sekunden dauert.



Von Grund auf zur Produktion und darüber hinaus


Neben der Web-App entwickeln wir auch iOS- und Android-Apps für die Installation, Überwachung und den Zugriff von unterwegs.


Bei der Arbeit an IoT-Systemen ist es wichtig, die Einfachheit und Skalierbarkeit beizubehalten. Die typische 5-stufige IoT-Architektur sollte gut durchdacht sein, um keine redundante Komplexität zu verursachen.


Während sich jedes Produkt weiterentwickelt, müssen Sie überlegen, wie Sie neue Funktionen überlagern können, ohne die vorhandenen Funktionen zu unterbrechen. Und vergessen Sie natürlich nie die Unit-Tests.


Weniger als ein Jahr nach dem Start


Seit seiner Einführung im Oktober 2018 wird der Solar Manager von den führenden Photovoltaik-Groß- und Installationsunternehmen in der Schweiz übernommen und eingesetzt.


Durch die Überprüfung und Optimierung der Energieverbrauchsgewohnheiten holen die Verbraucher das Beste aus ihren PVs heraus und sparen so Kosten. Auf globaler Ebene und laut Deloitte macht eine solche Lösung Solarenergie gegenüber herkömmlichen Stromquellen wettbewerbsfähig. Dies wiederum macht es für andere private Verbraucher und Unternehmen attraktiv. Und schließlich, klingt es nicht als Grundlage einer intelligenten Stadt, auf die wir alle warten?


Hinter dem Erfolg jedes IoT-Projekts


Es gibt keinen „ultimativen Leitfaden“ für die Erstellung eines erfolgreichen Produkts. Erstens ist jedes Projekt einzigartig und bringt seine eigenen Herausforderungen mit sich. Zweitens, selbst wenn Sie eine Reihe von Projekten in der Region durchgeführt haben, entwickeln sich die Anforderungen an Technologie und Markt. Die Erfahrung, die Sie vor zwei oder sogar einem halben Jahr gemacht haben, ist jetzt möglicherweise nicht mehr relevant.


Sie können auch in unserem GitHub nach vielen kostenlosen Open-Source-Instrumenten für die IoT-Entwicklung suchen.

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


All Articles