Android Softwareentwicklung Konzeptphase ( Zugriff auf Server, ... )

Hallo@all,

ich hoffe, dass ich meinen ersten Post hier halbwegs verständlich schreibe :grinning:

Ich bereite mich gerade auf die Entwicklung einer Android Software vor. Ich habe schon Google und Youtube gequält, bin mir aber bei der Umsetzung von ein paar Funktionen noch nicht sicher.

Was die Anwendung machen soll:
Von einer Microcontroller/SPS - gesteuerten Anlagen, sollen die aktuellen Werte in der App angezeigt werden.

Der Focus liegt im Moment bei der Android Applikation. Ich hab mir dafür einfach mal ein paar Stichwörter zusammen gesucht.

Client side ( Android App ):

  • IDE: Android Studio ( JetBrain )
  • Programmiersprache: Javascript oder Kotlin
  • Daten übermitteln: Datenbankzugriff, Json, Socket

Also für die Übertragung der Daten gibt es ja mehrere Möglichkeiten, und sollten ein einem LAN kein Problem sein.
Aber ein wichtiger Faktor ist natürlich immer die Sicherheit, vor allem bei einem externen Zugriff.

Wie würdet ihr die Kommunikation bei einem Zugriff übers Internet umsetzten? Und vor allem welche Sicherheit einbauen? VPN Zugriff, Zertifikate, Server Login, vlt. sogar Portknocking, etc…

Ich freue mich über jedes Stichwort, damit ich ungefähr weiss worauf ich bei dem Thema zu achten habe.

Besten dank an alle
Hermsen

Naja, das ist alles noch etwas oberflächlich.

Was meinst du mit Server? Das kann ja alles mögliche sein, bis hin zu einem Webserver, der irgendwie an die Daten kommt, und auf den man per Browser zugreifen kann. Wie sicher diese Verbindung sein muss, kommt drauf an, was darüber läuft. Sind die Daten readonly? Haben die Daten überhaupt einen gewissen Wert für andere, und müssen sie geschützt werden?

Beim Thema SPS denke ich direkt an OPC, und zwar OPC-UA. Das ist im Gegensatz zum alten OPC-DA nämlich netzwerktauglich und nicht auf Win beschränkt. Eine Siemens S7-1500 hat nen OPC-UA server eingebaut, bei den kleineren gibt es Server für den PC, die sich die Daten per RFC1006 etc. von der SPS abholen, und per OPC-UA bereitstellen. OPC-UA kommt mit Berechtigungssystemen und Zertifikaten daher, bietet also schon einen gewissen Schutz.

Andererseits, OPC hat man meist auf einem Netzwerklevel, der eigentlich abgeschottet vom Internet sein sollte.

Es gibt freie OPC implementierungen, auch z.B. für Python, oder auch kommerzielle SDKs. Mit denen ließe sich auch sicher was für Microcontroller basteln, allerdings, OPC braucht auch Rechenleistung. Ganz micro dürfen die Controller nichts ein. Ah, und es gibt auch SDKs für Android.
Ich schmeiße da auch mal die Seite https://www.unified-automation.com/ in den Raum. Ist quasi sowas wie eine OPC-UA-Referenz, kostet aber…

Geht es nur um aktuelle Daten, oder auch die Historie? Für letzteres wäre eine Datenbank vonnöten. Es gibt auch da Lösungen, die SPS-Daten direkt in eine DB stopfen.

Und… Hoffentlich sind die Daten in den Maschinen auch wirklich verwertbar. Ich kenne den Fall, daß die Steuerungen einer Fertigungslinie quasi totalüberwacht wurden. Hätte man sich aber sparen können, da die Daten einfach so gezogen wurden, und nicht, wenn die Maschine signalisierte, daß sie mit einem Prozess fertig war. Und… ohne (korrekte Zeitstempel) und andere Zuordnungsmechanismen ist es unmöglich, den Weg eines Teils durch die Anlage nachzuvollziehen. Hätte man sich sparen können.

2 Like

Kommt auf die Zielgruppe an. Wenn Man vorgibt, das man eh im selben netz sein muß um sich die Werte anzeigen zu lassen muß man sich ums VPN keine Sorgen machen. Wenn das von aussen möglich sein soll, DANN kommen neben dem VPN, Portweiterleitungen, etc. natürlich noch organisatorische Security Policies zum Tragen.

Genau. DAS mußt DU eben vorgeben. Da kann Dir hier niemand sagen welchen Anwendungsfall Du hast. Wo stehen die Maschinen? Dürfen die überhaupt nach aussen funken? Schicken die überhaupt alle auf dieselbe Weise die Daten nach draussen? Sind das unterschiedliche Maschinen oder immer dieselbe Art/Modell? Soll man die App im Appstore erhalten? Wie wird die Zugriffsssteuerung geregelt?
Das größere problem wird eher das Administrativ-organisatorische dahinter sein. Viel Spaß.

2 Like

Hallo,

vielen Dank für die Antworten.

@sweber
Der Server soll in erster Linie nur eine Schnittstellenfunktion haben, damit die SPS ( oder vergleichbar ), nicht direkt im Internet hängt. Hab sowas grausiges leider auch schon gesehen.
Also App sendet den Request, Abfrage, etc… an den Server und der holt sich die Daten aus der SPS und schickt diese an die App.

Zum größten Teil handelt es sich dabei um Förderanlagen. Also werden Werte wie t/h, Verfügbarkeit, … interessant werden.

Die Kommunikation zwischen Server und SPS soll dabei möglichst Marken unabhängig sein. ( Siemens, Allen Bradly, Beckhoff, etc… ). Deshalb hänge ich hier gerade mit dem Gedanken an TCP/IP Socket fest.

Danke für den Tipp mit OPC. Hab schon mehrmals davon gehört, hab mich selbst damit aber noch nicht beschäftigt. Werd mich in das Thema einlesen.

Ob wir eine History verwenden, klären wir gerade in der Phase.

@Little_H
Die soll als zusätzliches Produkt für die Anlagen angeboten werden, also nicht für den Appstore gedacht.
Wieso ich bei der Auflist SSL vergessen habe, weiss ich jetzt auch nicht. Wahrscheinlich seh ich den Wald vor lauter Bäumen nicht :slight_smile:
Hm, VPN + SSL, währe eine brauchbare Lösung, oder?

Das größere problem wird eher das Administrativ-organisatorische dahinter sein. Viel Spaß.

:slight_smile: Glaub ich gerne, deshalb bin ich erst mal dabei Informationen zusammen zu tragen, bevor ich auch nur eine Zeile Code schreibe.


Ich werd mir Möglichkeiten genau ansehen und dann bei uns in der Abteilung besprechen was am sinnvollsten ist.
Vielen Dank nochmal für die Antworten und Anregungen.
Hermsen

Ja neee… Wenn du einen eigenen Kommunikationsweg programmierst, dann mußt du erstmal wissen, wie du mit der Hardware kommunizierst. Siemens nutzt das RFC1006-Protokoll, Beckhoff Modbus(OverTcpIp), A&B vermutlich noch was anderes, und und und…
Das mußt du alles erstmal implementieren. Und du willst das natürlich flexibel haben, d.h. wenn morgen andere Werte aus den Steuerungen interessieren, willst du nicht erst im Code rumfrickeln.
Wie lange brauchst du dafür?

OPC ist genau dafür da.

Ein OPC-Server bietet Werte aus der SPS (oder welcher Hardware auch immer) unter einem Namen in einer Baumstruktur an. Der Client nutzt also nur den Namen, um den zugehörigen Wert

  • zu lesen
  • zu schreiben (wenn es erlaubt ist)
  • überwachen zu lassen, und sich bei Änderungen automatisch informieren zu lassen (subscribing)

Der Server muß natürlich wissen, mit welchem Protokoll die Hardware kommuniziert, der Client aber nicht. Es gibt Hersteller, die OPC-Server für die eigenen Geräte anbieten, es gibt aber auch Anbieter von OPC-Servern, die eine ganze Reihe von Geräten verarzten können.
Schau dir mal die Softing Datafeed OPC Suite an. Kostet in Vollausstattung 1500, du kannst aber beliebig viele Siemens, Beckhoff, B&R und sonstwas für Geräte ansteuern, je nachdem, wie man es haben will, reicht eine Lizenz fürs ganze Werk. Und auf Wunsch schreibt das Ding gleich in eine SQL-Datenbank. Und die Demo läuft 72h.

Und zur Konfiguration:
Das läuft bei mir so, daß ich das S7-Projekt in meinen OPC-Server rein ziehe, und dann kennt der OPC-Server alle DBs, alle Merker, alle Ein- und Ausgänge. In der Baumstruktur sieht man dann eben auf oberster Ebene alle DBs, und darunter dann die Structs in den DBs als weitere Knoten, und letztendlich dann die Werte unter dem Namen, den der SPS-Programmierer ihnen gegeben hat.
Wenn ich das S7-Projekt habe, ist der OPC-Server in weniger als 3min Einsatzbereit, und ich kann in meiner Software anfangen, einzelne Werte über ihren Namen anzusprechen.

2 Like

Hallo,

ich fange jetzt wieder mal bei 0 an, denn es ging mir aktuell schon viel zu viel in die direkte Implementierung. Du hast in Deiner Frage von Sicherheit gesprochen … genau mein Thema.
Um Dir die Frage nach den Implementierungen zu beantworten, ist zuerst die Frage nach der Kritikalität der Daten notwendig. Wie kritisch sind Deine Daten? Ich würde mir, wenn es um die Kommunikation geht, von den drei Klassifizierungen (Verfügbarkeit, Vertraulichkeit und Integrität) die Vertraulichkeit und die Integrität ansehen. Man unterscheidet vier Stufen:

  • niedrig,
  • mittel,
  • hoch und
  • sehr hoch (bzw. geheim bei Vertraulichkeit).
    Wenn Du mir hier eine Antwort auf die Einstufung Deiner Applikation geben kannst, kann ich auch etwas zur Absicherung der Kommunikation sagen.

Viele Grüße

1 Like

Danke für die ausführliche Beschreibung. Also liegt hier der Aufwand-Nutzen Faktor klar bei OPC. Hatte bei OPC immer „nur“ Siemens im Hinterkopf, war mir nicht klar, dass es doch Marken unabhängig ist.

Besten Dank

Hallo,

danke für deinen Beitrag.

Ich würde die Daten von der Vertraulichkeit im Bereich niedrieg, mittel einstufen.

Anlagenverfügbarkeit, Leistungsdaten,…
Der Anwender soll einfach nur mal schnell den Status kontrollieren können.
App öffnen, ah ok Anlage läuft, soviel t/h im Moment, App schließen, fertig

Beste Grüße
Hermsen

Bei Vertraulichkeit „mittel“ braucht man in der Regel kein VPN, da reicht auch TLS 1.2 mit Username und komplexen Passwort. „Mittel“ entspricht der klassischen Definition von „internen“ Daten.
Wenn der Server öffentlich ist, sollten natürlich Schutzmaßnahmen zum Erkennen von Angriffen implementiert sein.

1 Like

Das ist doch jetzt wieder ein klassischer Fall von:

„Wir holen die Daten von den Maschinen, und stellen sie hübsch aufbereitet auf dieser Webseite dar.“
„Wir wollen aber ne App!“
„Die Webseite ist 100% responsive design, auf dem Handy sieht das genauso gut aus wie auf dem 50“ Anlagenmonitor!"
„Wir wollen aber ne App!“
„Guck: Sieht genauso aus wie ne App. Kein Unterschied!“
„Wir wollen aber ne App!“
„Wozu? Die App macht nichts anderes als der Browser“
„Wir wollen aber ne App!“
„Das kostet 2 Wochen Entwicklungszeit für Nüsse. Wenn man das direkt als Web…“
„Wir wollen aber ne App!“
„OK, ich schreib euch ne App, die die Webseite anzeigt…“
„Jaaaaaa! Ne Apppppp! Huraaaa!“

„Mooment! Wir brauchen aber auch eine für Apple!“

1 Like