Forum: PC-Programmierung Sensordaten auf das Handy


von Sebastian B. (terry)


Lesenswert?

Hallo Leute,
ich habe ein -zumindest für mich- interessantes Projekt, bei dem es 
darum geht, verteilte Sensoren und Aktoren per App anzusprechen. Ich bin 
erfahrener Hardwareentwickler, so richtig beruflich und so aber mit Apps 
betrete ich völliges Neuland und Programmieren gebe ich meistens an 
Leute ab, die das besser können. Ich möchte aber so viel kapieren, das 
ich zumindest einen Überblick habe und mitreden kann. Darum sind die 
Fragen auch ziemlich grundsätzlicher Natur.
Ich will mal kurz das Gesamtsystem beschreiben und dann meine Fragen 
loswerden. Es wäre Klasse, falls jemand einen sinnvollen Beitrag leisten 
könnte.
Das ganze sieht so aus: Gebraucht wird ein System, bei dem etwa 500 
Sensoren (DMS)über verschiedene Signalwege (IMS-Funk und Kabel) Daten in 
eine MariaDB bzw. MySql ablegen (macht eine kleine Software auf meinem 
Rechner). Umgekehrt gibt es einige wenige Aktoren (etwa 15) die 
angesteuert werden sollen. Zur Verbindung SQL- MC ist ja hier schon eine 
Menge beschrieben worden, das noch mal genauer zu beschreiben spare ich 
jetzt mal deshalb.

Aber: wie sieht so eine SQL-DB Handyapp-Verbindung aus? Das ganze soll 
Plattformübergreifend, also Android, IOS und Blackberry funktionieren 
und über GSM Edge genausogut funktionieren wie über WLAN. Die App soll, 
wenn der Rest steht extern programmiert werden. Nur: ich hab gar keine 
Ahnung, welche Schnittstelle ich am besten auf dem Datenbankserver 
bereitstellen soll. Gibt es da APIs in den SDKs für (denke ich mal)?. 
Welches Frontend benutzt so eine App? Wie wird das ganze sicher gemacht? 
Https? Muss ja möglichst auch hinter Firewalls funktionieren. Hat jemand 
hier schon mal etwas ähnliches realisiert? was ich persönlich spitze 
fände, wäre das Ganze auf sowas wie einen Synology-Server umzuziehen 
(die MariaDB läuft jetzt als Prototyp auf meinem Laptop). Kann mich 
jemand aufschlauen?

: Verschoben durch User
von Frank (Gast)


Lesenswert?

Plattformübergreifend wäre eine Website nicht schlecht(z.B. PHP).
Dann brauchst du gar keine APP.

Ansonsten brauchst du für jedes OS ja ne eigene APP.

von Gerd E. (robberknight)


Lesenswert?

Sebastian B. schrieb:
> Aber: wie sieht so eine SQL-DB Handyapp-Verbindung aus? Das ganze soll
> Plattformübergreifend, also Android, IOS und Blackberry funktionieren
> und über GSM Edge genausogut funktionieren wie über WLAN.

Das Konzept klingt mir ein wenig nach Fat-Client. Also eine App, die 
direkt SQL-Befehle an die Datenbank absetzt.

Das Konzept mag bei einigen wenigen Usern in einem LAN funktionieren. 
Findet man daher öfters auch z.B. bei Warenwirtschaften für KMUs etc.

Für Mobilgeräte ist es aus mehreren Gründen nicht gut geeignet:

- hohe Latenz zwischen App auf dem Smartphone und Datenbankserver
- Leichte Unterschiede zwischen den Plattformen und dort leicht 
unterschiedliche Updatezyklen machen Änderungen in der Datenbank sehr 
schwer, es fehlt eine Zwischenebene die diese Unterschiede ausgleichen 
kann
- Datenbanken sind von der Sicherheit her typischerweise nicht dafür 
geeignet direkt aus dem Internet angesprochen zu werden

Daher verwendet man für Dein Szenario typischerweise einen 
Applikationsserver, der eine Schnittstelle wie z.B. XML-RPC zu den Apps 
hin anbietet und selber der einzige ist, der mit der Datenbank spricht. 
Statt XML-RPC/SOAP kannst Du natürlich auch REST oder JSON-RPC 
verwenden.

Überlege Dir auch, ob Du wirklich Apps auf den Geräten brauchst. Denn 
für 3 Plattformen (Du hast übrigens Windows Phone vergessen, wirklich 
plattformübergreifend wären also 4) jeweils eine App zu entwickeln und 
zu pflegen ist ganz schön Aufwand. Mittlerweile kann man sehr viel über 
HTML 5 lösen wofür man früher eine eigene App brauchte. Dann musst Du 
das nur einmal entwickeln und auf dem Server anbieten.

von Sebastian B. (terry)


Lesenswert?

Also, erstmal danke für die schnellen Antworten! Das mit der 
Internetseite ist ein guter Vorschlag und es ist auch klar, dass das 
billiger wäre, als vier apps zu machen.
Das Ziel ist aber, das auf dem Endgerät zusammengesetzte Daten angezeigt 
werden müssen, zum Teil auch Abbildungen - und das ganze soll auch bei 
schlechtem Empfang und sogar Offline noch möglich sein. Tatsächlich 
findet die Anwendung in ziemlich abgelegenen Gebieten im Ausland 
Anwendung. Im Endgerät sollen dauerhaft also die statischen Daten 
gespeichert sein und durch aktuelle Zustände ergänzt werden, bzw. 
Befehle eingegeben und versendet werden können, sagen wir mal z.B. Licht 
an - Licht aus. Dazu kommt, dass das ganze sicher funktionieren muss 
bzw. nicht ausgeführte Befehle angezeigt werden müssen (Also: Licht aus 
nicht durchgeführt). So richtig Fernwirktechnik eben. Irgendwie müsste 
die App so eine Art Sync zwischen lokaler und Server Datenbank 
hinbekommen und Änderungen verschiedener Daten als Alarm, Hinweis 
anzeigen können. Wichtiger als die Kosten sind die Datenintegrität, 
Datenvertraulichkeit und Zuverlässigkeit, deshalb suche ich ja auch eine 
Externe Firma, die das Programmieren übernimmt. Vielleicht findet sich 
ja sogar hier jemand, der sowas übernehmen will...

von Frank (Gast)


Lesenswert?

Geht alles auch mit einer Website.
Dynamische Dinge lassen sich sehr gut mit HTML5/JavaScript abbilden.

von Gerd E. (robberknight)


Lesenswert?

Sebastian B. schrieb:
> Das Ziel ist aber, das auf dem Endgerät zusammengesetzte Daten angezeigt
> werden müssen, zum Teil auch Abbildungen - und das ganze soll auch bei
> schlechtem Empfang und sogar Offline noch möglich sein.

Unterschätze die Möglichkeiten von HTML5 und Javascript nicht. Daten 
zusammenzusetzen, Abbildungen/Charts zu errechnen etc. ist damit 
überhaupt kein Problem.

> Irgendwie müsste
> die App so eine Art Sync zwischen lokaler und Server Datenbank
> hinbekommen und Änderungen verschiedener Daten als Alarm, Hinweis
> anzeigen können.

Sowas kannst Du auch mit Javascript machen. Wenn Du das nicht im Browser 
abschaltest oder beschränkst, dürfen "Webseiten" Daten lokal ablegen und 
wieder laden. Die "Webseite" selbst kannst Du dabei auch lokal auf dem 
Smartphone ablegen.

Ich hatte mal ne Einkaufsliste gesehen die genau so programmiert war. 
Mir fällt nur der Name / Link dazu gerade nicht mehr ein.

> Wichtiger als die Kosten

Unterschätze die Kosten der App-Entwicklung nicht! Du musst das Ding 3 
oder 4 mal fast komplett neu entwickeln lassen, denn die Plattformen 
verlangen verschiedene Programmiersprachen und teilweise auch -Konzepte. 
Und die verschiedenen Plattformen müssen dennoch hinterher identisch 
funktionieren.

von Sebastian B. (terry)


Lesenswert?

Hmm ok, werde mir dass wohl nochmal genauer anschauen müssen. Meine 
Webkenntnisse kommen noch aus der Zeit, wo 1und1 noch Puretec hieß.... 
Was zum Beispiel Alarme angeht, denke ich aber, dass da sie Seite ja die 
ganze Zeit auf dem Endgerät geöffnet sein müsste, oder nicht?
Ich hab für die erste Appversion pro Plattform ca. 7,500€ budget, denke 
das müsste machbar sein und ein teil des Quelltextes lässt sich ja immer 
portieren.
Werde jetzt erstmal meine Hausaufgaben machen und eure ganzen 
Stichpunkte abarbeiten. Auf jeden Fall freue ich mich, das ihr mir so 
ausführlich geantwortet habt, danke! Ich melde mich mal, wenns 
Fortschritte in meinem Kopf gibt ;-)

von Gerd E. (robberknight)


Lesenswert?

Sebastian B. schrieb:
> Was zum Beispiel Alarme angeht, denke ich aber, dass da sie Seite ja die
> ganze Zeit auf dem Endgerät geöffnet sein müsste, oder nicht?

ja, Alarme werden mit ner Webseite schwer. Vor allem wenn das Gerät in 
den Standby geht. Und es muss in den Standby gehen können, weil sonst 
ist der Akku in wenigen Stunden platt. Auch um den Lockscreen kommst Du 
mit ner Webseite nicht rum, was vielleicht gerade für das akustische 
Alarmieren und schnelle Bestätigen des Alarms wichtig wäre.

Vielleicht kannst Du auch die Aufgaben aufteilen, also z.B. Anzeigen der 
Charts etc. über ne Webseite, die Alarme und den Sync der Steuerbefehle 
über eine dann deutlich kleinere App.

> und ein teil des Quelltextes lässt sich ja immer
> portieren.

wie gesagt, die Plattformanbieter zwingen Dir verschiedene 
Programmiersprachen auf.

von Frank (Gast)


Lesenswert?

Oder halt die Alarme per Email oder ähnliches machen!?
Gleich mit  Zusammenfassung, Direktlink usw.

von Gerd E. (robberknight)


Lesenswert?

Frank schrieb:
> Oder halt die Alarme per Email oder ähnliches machen!?
> Gleich mit  Zusammenfassung, Direktlink usw.

ja, gute Idee. Wobei die Email auch wieder regelmäßig abgerufen werden 
muss, das ist nicht so zuverlässig wenn die Netzabdeckung schlecht ist. 
Aber ne SMS würde vermutlich gut funktionieren.

von Frank (Gast)


Lesenswert?

Gerd E. schrieb:
> Frank schrieb:
> Oder halt die Alarme per Email oder ähnliches machen!?
> Gleich mit  Zusammenfassung, Direktlink usw.
>
> ja, gute Idee. Wobei die Email auch wieder regelmäßig abgerufen werden
> muss, das ist nicht so zuverlässig wenn die Netzabdeckung schlecht ist.
> Aber ne SMS würde vermutlich gut funktionieren.

Jupp, oder per Push-Mail

von Sebastian B. (terry)


Lesenswert?

Also, ich tendiere nach euren Vorschlägen und ein bisschen Hausaufgaben 
zur Lösung App mit Xml. Gefällt mir einfach besser, wenn der user auf 
dem Endgerät eine eigene Umgebung nur für die Sensordaten mit Meldungen 
hat. Bei meinem Iphone wird bei manchen Apps das Vorliegen von 
Neuigkeiten schon im Sperrbildschirm dargestellt und mit einem roten 
Kuller an dem Appsymbol gekennzeichnet. Es kann auch nichts im 
Spamordner hängen bleiben oder im Emailpostfach untergehen. Weil es bei 
den Sensoren um DMS an teuren Infrastrukturbauwerken geht, darf das 
ganze ja auch was kosten und wenn es nur um eine Übersichtliche 
Darstellung geht. Ne andere Sache ist die mit den Alarmen. Für meine 
Emails habe ich die Benachrichtung ausgeschaltet um nicht nachts gestört 
zu werden. Bei einer App kann man das ja extra einstellen, mit einem 
Extraton versehen usw.
Wie läuft das mit Datenbanken in Apps? Ist da auch xxSql Standard? Eine 
andere Möglichkeit, die mir über den weg gelaufen ist, ist Ms sync, hab 
ihr da Erfahrungen mit?

von Gerd E. (robberknight)


Lesenswert?

Sebastian B. schrieb:
> Ne andere Sache ist die mit den Alarmen. Für meine
> Emails habe ich die Benachrichtung ausgeschaltet um nicht nachts gestört
> zu werden. Bei einer App kann man das ja extra einstellen, mit einem
> Extraton versehen usw.

Für SMS kannst Du normalerweise die Absender, in diesem Fall Deinen 
Server, in eine "VIP"-Gruppe (oder ähnlich benannt) einfügen. Deren 
Nachrichten und Anrufe werden dann auch laut signalisiert wenn das Gerät 
auf Stumm geschaltet ist.

Wenn die Alarme so wichtig sind, dann würde ich die nicht nur von der 
App aus auslösen, sondern vom Server und mit verschiedenen 
Eskalationsstufen (SMS, Dauer-Anrufe, mehrere Personen, Sirene,...) 
versehen. Denn die App ist darauf angewiesen Daten vom Server zu 
bekommen. Und wenn die Internetverbindung schlecht ist, bekommt sie 
davon immer nur Bruchteile. Bis daraus dann das ganze Bild entstanden 
ist und berechnet werden kann daß jetzt Alarm ausgelöst werden sollte, 
ist es evtl. schon zu spät.

Mir scheint daß Du da gedanklich noch zu weit in der Fat-Client-Welt 
bist.

Pack so viele Aufgabe wie es geht in den Server. Denn das
- musst Du nur einmal entwickeln statt für jede Mobilplattform
- kannst Du leicht zentral warten und updaten
- kannst Du automatisch überwachen

In die App kommt nur so viel, wie für eine flüssige Bedienung ohne viel 
Bandbreite nötig ist. Die ganzen zentralen Entscheidungen fallen auf dem 
Server.

> Wie läuft das mit Datenbanken in Apps? Ist da auch xxSql Standard?

Hängt von der Mobilplattform ab. Bei Android verwenden die Apps z.B. 
meist sqlite um Daten abzulegen. Bei iOS gibts das auch.

> Eine
> andere Möglichkeit, die mir über den weg gelaufen ist, ist Ms sync, hab
> ihr da Erfahrungen mit?

Du meinst das hier?
http://en.wikipedia.org/wiki/Microsoft_Sync_Framework

Das gibts nur für .NET, gibts also wenn dann nur unter Windows Phone.

: Bearbeitet durch User
von Christopher (Gast)


Lesenswert?

Sebastian B. schrieb:
> Appversion pro Plattform ca. 7,500€ budget,

Ui. Das sind 3 Wochen Entwicklungszeit. Inkl. über Anforderungen klar 
werden, ein/zwei Muster um ein Verständnis bekommen, Programmierung, UI, 
Testen (auch die von dir beschriebenen schlechten Umgebungsbedingungen) 
und ein bisschen Doku. Die Serverseite ist dann auch noch nicht fertig.

Falls deine APP dann nicht deutlich weniger können muss als ich mit 
denke, bekommst du mit seinen Gesamtbudget nur eine app + vllt. das 
Backend.

Arbeite daran, mehr Geld für das Projekt zu bekommen.

von kalterkaffee (Gast)


Lesenswert?

JAVA ist von der Plattform unabhängig und läuft auch auf älteren Handys 
ohne OS recht flüssig.
Wie sollen denn die Sensordaten übermittelt werden, Bluetooth, WLAN, LTE 
oder blinkende LEDs ?
Wenn die Daten Offline zur Verfügung stehen müssen wäre XML wohl das 
sinnvollste Format und dann z.B. mit XSLT lokal in HTML wandeln um es 
anzuzeigen.
Da anscheinend alles zentral erfaßt wird brauchst Du einen Server der 
dem Handy die Daten auf Nachfrage übermittelt, wie soll das gehen wenn 
Du schreibst es soll auch in entfernten Gegenden laufen ?
Soll die APP die Sensoren auslesen können und an den Server weitergeben 
?
Dann ist GSM/LTE bei gutem Empfang wohl am sinnvollsten oder wird Dein 
Notebook als Server laufen ?

von Gerd E. (robberknight)


Lesenswert?

kalterkaffee schrieb:
> JAVA ist von der Plattform unabhängig und läuft auch auf älteren Handys
> ohne OS recht flüssig.

Das mit dem "unabhängig" gilt aber nur so lange wie Du nichts darstellen 
musst.

Außerdem gibts unter iOS kein Java.

von kalterkaffee (Gast)


Lesenswert?

Gerd E. schrieb:
> kalterkaffee schrieb:
>> JAVA ist von der Plattform unabhängig und läuft auch auf älteren Handys
>> ohne OS recht flüssig.
>
> Das mit dem "unabhängig" gilt aber nur so lange wie Du nichts darstellen
> musst.
>
> Außerdem gibts unter iOS kein Java.

https://blogs.oracle.com/mobile/entry/oracle_brings_java_to_ios

Und man kann es im Fall der Fälle als JAR im Browser laufen lassen und 
HTML erzeugen.
Was aber nicht notwendig ist.

von Andreas R. (daybyter)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.