Hallo, ich möchte gerne einen Webserver erstellen und diesen auf einen LCD-Monitor (15")(ohne extra computer) darstellen. Da sollte dann Datum, Wetter, Kalender und Nachrichten stehen. Jetzt habe ich einen Arduino mit Ehternet-Shield und einen RaspberryPi. gerne würde ich das mit dem Arduino machen (Programmieren in C/C++). Habe aber keine Ahnung, wie ich das ganze auf einen Monitor darstellen lassen kann. Ich benutze den/das Arudino gerne als Entwicklungsboard, da dieser fertig mit peripherie ausgestattet ist. Einfacher (und wahrscheinlich schöner), wäre die Umsetzung mit einem RaspberryPi. Diesen kann ich aber leider nicht in C/C++ Programmieren. Hat einer eine Idee, wie ich einen Webserver in C/C++ programmieren kann und diesen auf einen externen Monitor (ohne extra computer) darstellen lassen kann? Frank
Frank schrieb: > Diesen kann ich aber leider nicht in C/C++ Programmieren. warum nicht? Was glaubst du, wie die ganzen Programm auf das Raspi programmiert sind?
Du meinst sicherlich keinen Webserver. Das bräuchtest Du wenn sich andere! Rechner von Deinem Gerät die Inhalte holen sollten. Eigentlich brauchst Du auch nichts programmieren. Das geht z.B. als Webseite die lokal läuft: http://www.instructables.com/id/Raspberry-Pi-Wall-Mounted-Calender-and-Notificatio/?ALLSTEPS https://www.raspberrypi.org/forums/viewtopic.php?f=41&t=41261 als qt programm z.B. hier https://hackaday.io/project/6184-piclock-a-raspberry-pi-clock-weather-display und ungefähr 260000 weitere Treffer. Und wieso solltest Du nicht Programm in C oder C++ auf dem Rpi erstellen können?
Moin, Frank schrieb: > Einfacher (und > wahrscheinlich schöner), wäre die Umsetzung mit einem RaspberryPi. > Diesen kann ich aber leider nicht in C/C++ Programmieren. Wieso nicht? Aufm RaspPi kannste in ziemlich vielen Sprachen Programme entwickeln, weitaus mehr als nur C/C++. > Hat einer eine Idee, wie ich einen Webserver in C/C++ programmieren kann > und diesen auf einen externen Monitor (ohne extra computer) darstellen > lassen kann? Mir ist unklar, was du mit Webserver meinst. Ein Webserver ist fuer mich ein Stueck Software (apache, lighttpd, nginx,...), das selbst ueberhaupt nix darstellen kann. Das kann nur Files an irgendwelche Clients ausliefern oder auf Anfrage irgendwelchen anderen Shice (CGI, PHP,...) anstossen, der widerum dem Anfragenden antwortet. Also was willst du wirklich machen? Gruss WK Edit: huups - wieder viel zu langsam...
:
Bearbeitet durch User
Darstellen von Webseiten geschieht mit einem Browser. Ich wuerd erst man so einen verwenden. Firefox, Chrome, Opera, ..
Die üblichen Arduinos sind für Webserver sehr knapp ausgestattet. HTTPS wird damit gar nicht möglich sein und auch sonst kannst du mit so wenig Speicher nur sehr simple Webseiten mit wenig Inhalt erzeugen. Und er kann dann auch nur sehr wenige Clients (Browser) gleichzeitig bedienen. Auf einem Raspberry Pi wird das ganze sehr viel einfacher. Anfängern würde ich dazu die Scriptsprache PHP und den Apache Webserver mit dem Modul mod_php emfpehlen. Die Grundlagen von PHP sind schnell erlernt und die Performance ist Ok. Fortgeschrittenen Entwicklern würde ich die Sprache Java mit Tomcat oder Wildlfy als Grundlage empfehlen. Fähige Java Web Entwickler werden zur Zeit sehr gut bezahlt. Da du in C++ Programmieren möchtest, solltest Du erwägen, dein Programm entweder direkt als Modul für den Apache HTTP Server zu schreiben oder Stand-Alone mit der QtWebApp Library. Du kannst deinen Raspberry Pi in C++ programmieren. QtWebApp ist eine C++ Library. Als Entwicklungsumgebung verwednet man üblicherweise Qt Creator - gibt's auch für den Raspi.
Das ganze ist mehr als Easy, da reicht ein Rapsi. Vorausgesetzt dein Monitor hat HDMI. - geany IDE installieren - Apache Server installieren - bißchen PHP programmieren: JSON Wetterabfrage von einem kostenlosen Diens - bißchen HTML, CSS - die Webseite mit nem Browser http:\\localhost aufrufen, evtl vollbild F11 bei firefox fertig. Arbeitsaufwand 2h maximal.
@Geist: Ich glaube Dir, dass du einen ersten Wurf in 2 Stunden hinbekommst. Aber dem TO nützt diese Angabe nichts. Er wird dafür sicher ein paar Tage brauchen (was nicht bedeuten soll, dass sein Vorhaben eine schlechte Idee sei).
Mhh, erst einmal vielen Dank für die Antworten. Natürlich habe ich mich nicht gut genug ausgedrückt. Sry. Also was ich vorhabe, ist auf einem TFT-Bildschirm sachen, wie Temperatur usw. anzeigen zu lassen. Das ganze Projekt ist für einige natürlich sehr einfach, für mich aber schon eine herausforderung und eine gute gelegenheit meine Kentnisse in C++ zu vertiefen (daher suche ich den richtigen Start, nicht um irgendwann festzustellen, dass es so doch gar nicht geht). Der Bildschirm soll dann an der Wand und mir die Daten anzeigen. Da ich den Arduino (und Ethernet Shield) habe, war die Idee das damit zu machen (da ich wusste, dass ich es dort mit C/C++ machen kann). Meine Idee war es, z.B. Wetter.com aufzurufen und die Temperatur auszulesen. Hierbei weiss ich aber nicht, wie ich das auf dem Bildschirm bekomme (ohne noch extra einen Computer dazwischen zu schalten). Wenn der Arduino noch am Laptop gesteckt ist (mit USB) kann ich auf einer angelegten Seite mir die Temperatur auch anzeigen lassen. Da der Raspberry Pi ja extra einen HDMI-Ausgang hat, habe ich mir gedacht, dass es damit natürlich einfacher sein wird. Hier bin ich aber davon ausgeangen, dass dieser in python programmiert wird, was mir nicht wirklich hilft um meine C++ Kentnisse zu verbessern. Da dieser anscheinend doch so programmiert werden kann, werde ich noch einmal genauer suchen.
Entscheide dich für C oder C++. Das sind zwei verschiedene Sprachen. Für dein Vorhaben sind aber Beide nicht die erste Wahl. Eine Skriptsprache bietet da bessere Möglichkeiten. Auch davon hat der Raspberry (bzw sein Betriebssystem) etliche zur Auswahl. Bei dem Projekt (wenn du die Anzeige in einem Browser willst) brauchst du HTML und Javascript.
:
Bearbeitet durch User
Gibt es da kein HDMI-Shield? Mit der Arduino Hardware könnte man evtl. noch VGA oder ein s/w-SD-Signal erzeugen. Ob man das in C hinbekommt, wage ich zu bezweifeln. Für weitere Dinge hat er dann allerdings nur noch wenig Zeit. Beim R¶ ist die Bildausgabe schon fertig. Du benötigst nur ein Programm, welches die Sensoren ausliest und auf dieser malt. Gruß Jobst
Warum hast du eigentlich das Wort "Webserver" benutzt? Bist Du Dir sicher, dass deine Anwendung einen Webserver benötigt? Webserver erzeugen Webseiten, die man mit Webbrowsern darstellt. Es gibt noch andere deutlich einfachere Möglichkeiten, Bildschirme anzusteuern. Arduinos sind jedenfalls viel zu klein, um normale Computerbildschirme oder Displays in dieser Größe anzusteuern. Mit viel Mühe kann man das machen, aber die Möglichkeiten sind alleine schon wegen dem begrenzten Speicherplatz massiv eingeschrängt. Mehr als ein bisschen Text und einfachste Grafiken kannst du mit Arduinos nicht erzeugen. Dazu kommt, dass der nötige Adapter (HDMI Shield, VGA Grafikkarte) mehr kosten dürfte, als ein Raspberry Pi, der den nötigen Ausgang bereits On-Board hat, genügend Speicher hat und auch jede Menge Programmiersprachen und Libraries mit sich bringt, die dabei hilfreich sind. Egal ob jetzt mit oder ohne Webserver.
Hallo, 'Webserver' war wohl das völlig falsche Wort. Wie gesagt, ich möchte einfach nur Daten aus dem Internet auf einem Bildschirm darstellen und diesen an der Wand hängen. Hauptsächlich geht es mir hierbei um meine Programmierkentnisse in C++ weiter zu verbessern. Werde nochmal suchen, wie ich das mit dem raspberry pi hinbekommen kann.
Moin, [keine Werbung] die Firma NEC hat/bringt Monitore mit eingebauten Raspberry am Start. [/keine Werbung] https://www.heise.de/ix/meldung/NEC-bringt-Monitore-mit-eingebautem-Raspberry-Pi-3349885.html
Also kein Webserver. Dann nimm einen Raspberry Pi und programmiere ihn in der Programmiersprache deiner Wahl. Ich empfehle Dir das C++ Qt Framework (https://www.qt.io/)
Der Raspberry ist ein vollwertiger Computer mit kompletten Betriebssystem (wie Debian ARM oder ähnliches) Da kannst du im Zweifel alles drauf programmieren, ja sogar eine Entwicklungsumgebung deiner Wahl auf einer graphischen Oberfläche laufen lassen. Das ganze genau so simple zu installieren wie am heimischen PC. also "apt-get install build-essentials" ind die Konsole und los gehts :) tutorials gibts dafür zu hauf im Netz.
Ich kann mich Stefan Us nur anschließen. Nimm C++ mit Qt aufm RaspberryPi. Damit lernst du C++- und GUI-Entwicklung, mit welcher du später auch auf x86-Platformen (bzw. PCs) noch was anfangen kannst. Qt kommt mit allem was du brauchst. HTTP-Client um Wetterdaten abzufragen und einen GUI-Toolkit um das ganze auch noch anzuzeigen. Das Problem ist nur, dass Qt sehr umfangreich ist und man sich erstmal durch einige Beispiele und Tutorials kämpfen muss. Vorallem wenn man noch keine Erfahrung mit GUI-Bibliotheken hat. Aber das Wissen kannst du später prima transferieren auf C#/WPF/Visual Studio oder Python mit Qt oder Java mit Swing. Der Arduino ist super für ganz Low-Level dinge. Bspw. Steuerungsaufgaben von Relais bis hin zum Abfragen von Sensoren. Die verfügbaren Resourcen auf einem Arduino sind so winzig, dass man echt viel Ahnung von IP/TCP/HTTP haben muss um da noch HTTP-Requests zu schicken und die Antwort zu parsen. Definitiv kein Anfängerprojekt wenn du mich fragst.
Frank schrieb: > Da der Raspberry Pi ja extra einen HDMI-Ausgang hat, habe ich mir > gedacht, dass es damit natürlich einfacher sein wird. Hier bin ich aber > davon ausgeangen, dass dieser in python programmiert wird, was mir nicht > wirklich hilft um meine C++ Kentnisse zu verbessern. Der RasPi hat ein ziemlich komplettes Linux-System. Deswegen kannst Du ihn mit so ziemlich allem programmieren, das unter Linux läuft: C und C++, klar, Java, Python, Perl und Ruby, Lisp, Haskell, Erlang, Ocaml, sogar Brainfuck, Whitespace oder Assembler, wenn Du willst. Mit jeder dieser Sprachen kannst Du CGI-Programme schreiben. Wenn Du wirklich einen Webserver schreiben willst, findest Du in Boost::Asio [1], Pstreams für CGI [2] und dem C++ Web Toolkit [3] nützliche Bibliotheken und Beispiele. Aber bitte bedenke, daß die Aufgabe, einen auch nur halbwegs sicheren Webserver zu schreiben, nicht trivial ist. Wenn Du erwägst, Deine Webseite öffentlich zugänglich zu machen, dann dürfte es besser sein, einen fertigen Webserver wie Apache, nginx, Thttpd, Lighthttpd oder Hiawatha zu benutzen. HTH, YMMV. [1] http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio.html [2] http://pstreams.sourceforge.net/ [3] https://www.webtoolkit.eu/wt
Frank schrieb: > 'Webserver' war wohl das völlig falsche Wort. Wie gesagt, ich möchte > einfach nur Daten aus dem Internet auf einem Bildschirm darstellen und > diesen an der Wand hängen. Hauptsächlich geht es mir hierbei um meine > Programmierkentnisse in C++ weiter zu verbessern. > Werde nochmal suchen, wie ich das mit dem raspberry pi hinbekommen kann. Letztlich kommt es darauf an, was Du machen willst. Daten auf einen Monitor malen kannst Du mit jedem GUI-Framework. Ein Webserver würde Dir hingegen die Möglichkeit eröffnen, die Daten auch von anderen Rechnern aus abrufen und darstellen zu können. Im Prinzip Du legst einen neuen Benutzer an, konfigurierst systemd so, daß er automatisch nach dem Booten eingeloggt wird, und konfigurierst "etwas" als Client für einen Windowmanager wie etwa Matchbox. Dieses "etwas" steht entweder für ein von Dir geschriebenes GUI-Programm, oder aber für einen Webbrowser wie Firefox, Midori oä. im Kiosk-Modus.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.