Forum: PC-Programmierung Daten von Webserver auswerten


von JK (Gast)


Lesenswert?

Hallo liebes Forum!

Ich habe ein kleines Hobby-Projekt am Laufen, welches folgendermaßen 
aussieht.

Auf einem (meinem) Webserver sollen Files liegen, welche Befehle für 
eine Steuerung eines Raspberry Pi beinhalten.
Beispiel:
http://meinwebserver.de/data/befehlfile1.x
http://meinwebserver.de/data/befehlfile2.x

Eine Java-Anwendung die auf dem Raspberry Pi laufen soll, soll diese 
Daten ("befehlfile1.x") abholen bzw. "parsen" und entsprechend die 
Befehle abarbeiten (GPIOs schalten).
So ein befehlfile beinhaltet dann eine Anordnung von Befehlen zur 
Steuerung der GPIOs:
>GPIO1:AN:30s
>GPIO2:AN:10s
>GPIO1:PWM:AN:50%:20s
>...

Die Java-Anwendung listet sämtliche auf dem Webserver befindliche 
Befehlfiles auf, die der Anwender dann auswählen und ausführen kann.

Nun meine Frage(n):
 - In welchem Format sollten am Besten die Befehlfiles beschrieben sein?
   Würde sich hierfür XML eignen?
   Im einfachsten Fall wären es vermutlich Textfiles, da Java aber 
meines Wissens XML-Parser bietet, könnte man diese direkt nutzen
 - Ist es mit Java möglich, auf solche Daten eines Webservers 
zuzugreifen und diese generell abzuholen/zu parsen?


Ich wäre für eure Ratschläge sehr dankbar und freue mich über Antworten!

Gruß
Jonas

von foo (Gast)


Lesenswert?

JK schrieb:
> - Ist es mit Java möglich, auf solche Daten eines Webservers
> zuzugreifen und diese generell abzuholen/zu parsen?

Klar, hier ein Beispiel, das den aktuellen Dollarkurs von der EZB 
abholt:
1
private BigDecimal getDollarKurs() {
2
        BigDecimal ret = null;
3
        try {
4
            InputStream is = new URL("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml").openStream();
5
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
6
            DocumentBuilder db = dbf.newDocumentBuilder();
7
            Document doc = db.parse(is);
8
9
            NodeList nodeList = doc.getElementsByTagName("Cube");
10
11
            for (int i = 0; i < nodeList.getLength(); i++) {
12
                Node node = nodeList.item(i);
13
                if (node.getNodeType() == Node.ELEMENT_NODE) {
14
                    Element element = (Element) node;
15
                    if (element.getAttribute("currency").equals("USD")) {
16
                        ret = new BigDecimal(element.getAttribute("rate"));
17
                    }
18
19
                }
20
            }
21
        } catch (IOException | ParserConfigurationException | SAXException e) {
22
            e.printStackTrace(System.out);
23
        }
24
        return ret;
25
    }

von JK (Gast)


Lesenswert?

>lar, hier ein Beispiel
Ah, super, vielen Dank erstmal! :)

Also würdest du die Steuerbefehle in XML notieren?

von Hans-Georg L. (h-g-l)


Lesenswert?

Java unterstützt XML und wenn du wenig Ram hast kannst du den SAX Parser 
nehmen aber aufpassen nicht alle Zeichen sind in XML erlaubt .. die 
musst du dann in ein CDATA Tag verpacken.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

JK schrieb:
> Also würdest du die Steuerbefehle in XML notieren?

Kann man machen, aber schlanker ist JSON.

von Daniel A. (daniel-a)


Lesenswert?

Könnte man nicht gleich ne scriptsprache für die "befehlsfiles" nehmen? 
Z.B. Lua ist sehr beliebt.

von JK (Gast)


Lesenswert?

Wichtig wäre außerdem noch, dass man aus dem XML-File/JSON-File eine 
HTML generieren kann, damit man die Befehlssätze "schön leserlich" als 
HTML-Datei im Webbrowser einsehen kann.

von Epoxyd H. (fr4)


Lesenswert?

Du kannst dir als Tip auch mal Node-Red anschauen. Ist bei dem Debian 
auf dem Raspberry meist schon installiert.

von robs (Gast)


Lesenswert?

JK schrieb:
> Wichtig wäre außerdem noch, dass man aus dem XML-File/JSON-File eine
> HTML generieren kann, damit man die Befehlssätze "schön leserlich" als
> HTML-Datei im Webbrowser einsehen kann.

XML kannst du mit XSLT direkt nach HTML (oder beliebige andere Markups) 
transformieren. Die Java-Runtime-Lib hat dazu alles schon drin.

Bei JSON geht das sicher auch, aber nur mit zusätzlichen Libs.

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.