Hey
Also wie fang ich an...
Ich würde sagen mit dem Problem.
Ich bin immoment an einem privaten Projekt, in dem ich in der jetzigen
phase einfach gerne 2 LEDs zum leuchten bringen will.
Das funktioniert auch alles ist auch schön und gut jetzt will ich das
aber über einen Webserver steuern.
Heisst: ich drücke einen Button und eine led geht an. ich drücke einen
anderen Button und es geht wieder aus.
Momentan mach ich das so:
1
<form action="zwei.php">
2
<input type="submit">
3
</form>
und
1
<?php2:
2
function duddeldi() {
3
shell_exec('gpio -g write 4 1');
4
}
5
6
?>
naja is unglaublich hässlich aber es schaltet die LED ein...
So an sich programmier ich ja gerne aber mit dem ganzen Webentwicklungs
kram konnte ich noch nie so viele anfangen.
Hat jemand ne Ahnung wie ich das vielleicht 1. schöner machen könnte und
2. was viel wichtiger ist den "button klick" mit Übergabeparameter
ausführen könnte?
das heißt zb das ich die LED blinken lasse und ich die Anzahl der
Schleifendurchläufe mit nem Übergabeparameter bestimmen kann...
wenn ich das jetzt so lese ist alles ziemlich durcheinander...
aber vielleicht kann mir ja trotzdem jemand helfen.
Jan L. schrieb:> das heißt zb das ich die LED blinken lasse und ich die Anzahl der> Schleifendurchläufe mit nem Übergabeparameter bestimmen kann...
sas wird schwer, PHP ist nicht dafür ausgelegt etwas auf "dauer" zu tun.
PHP führt etwas aus und liefert dann etwas zurück. Wenn du jetzt ein
blinkeen einbauen willst, dann würde das PHP blockieren und nicht mehr
reagieren bzw nach einem Timeout wird es von Apache gekillt.
Du brauchst einen Programm was die eigentlichen aktionen ausführt,
diesem Programm sagst du dann mit php was es machen sollt.
Das Programm läuft dann ständig und wartet auf befehle. Das Programm
kann mit so ziemlich jeder Sprache geschrieben werden. Du musst dir nur
etwas für die kommunikation einfallen lassen. Das einfachste ist z.b.
eine Datei anzulegen wo der befehl drin steht (schön ist das aber nicht)
Ich selber würde es mit ASP machen, das hat den vorteil das man damit
eine webappliation schreiben kann, dort kann man auch einfach einen
Thread ausführen und die LED blinken lassen. Und auch gleichzeitig die
Anfrage vom web beantworten kann. Es fällt also das 2. Programm weg und
die Interprozess kommunikation.
Jan L. schrieb:> Hat jemand ne Ahnung wie ich das vielleicht 1. schöner machen könnte und> 2. was viel wichtiger ist den "button klick" mit Übergabeparameter> ausführen könnte?>> das heißt zb das ich die LED blinken lasse und ich die Anzahl der> Schleifendurchläufe mit nem Übergabeparameter bestimmen kann...>>> wenn ich das jetzt so lese ist alles ziemlich durcheinander...> aber vielleicht kann mir ja trotzdem jemand helfen.
Wenn du gerade erst mit Web-Entwicklung anfängst, lass PHP ganz schnell
wieder sein und nimm' was zeitgemäßes wie python, node oder ruby mit dem
entsprechenden framework drumherum.
Du definierst dir dann eine Funktion, die meintwegen bei aufruf von GET
'/led' aufgerufen wird und via POST/GET ihre parameter bekommt.
Aufgerufen wird der Kram dann mit XMLHttprequest.
ok dann war das mit der schleife ein blödes bsp. also zum Schluss will
ich gerne einen Cronjob erstellen heist ich geb einen Tag und zb eine
Uhrzeit an und dann wird ein Script gestartet der für eine gewisse zeit
laufen soll...
aber dieses ASP werd ich mir wohl mal ansehen.
@lukas: naja eigendlich will ich damit garnicht anfangen xD es is eher
so das ich diese funktion gerne hätte und mich da jetzt einfach
durchquäle
Jan L. schrieb:> aber dieses ASP werd ich mir wohl mal ansehen.
Kannst du gerne machen, ich würde dir aber davon abraten, da du dich
damit auf Windows festnagelst. Die von mir genannten Skriptsprachen
laufen auf praktisch allem.
Lukas K. schrieb:> Wenn du gerade erst mit Web-Entwicklung anfängst, lass PHP ganz schnell> wieder sein und nimm' was zeitgemäßes wie python, node oder ruby mit dem> entsprechenden framework drumherum.
was soll das heisen?
PHP ist zeitgemäß. Es kann sauber objektorientiert programmiert werden.
bietet für web alles an was man braucht.
ob nun python, node oder ruby kann ich schlecht beurteilen, aber ruby
fällt mir nur ständig mit ihren sicherheitslücken auf.
Kann man denn bei diesen Sprachen z.b. einen Thread ständig auf dem
Server laufen lassen? Oder laufen sie nicht auch nur als CGI im apache?
Lukas K. schrieb:> Jan L. schrieb:>>> aber dieses ASP werd ich mir wohl mal ansehen.> Kannst du gerne machen, ich würde dir aber davon abraten, da du dich> damit auf Windows festnagelst. Die von mir genannten Skriptsprachen> laufen auf praktisch allem.
dann muss ich was falsch gemacht haben, mein Programm läuft auf linux
ohne Probleme.
Peter II schrieb:> Kann man denn bei diesen Sprachen z.b. einen Thread ständig auf dem> Server laufen lassen? Oder laufen sie nicht auch nur als CGI im apache?
Ersteres ist sogar das üblichere.
Was PHP anbetrifft:
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/Jan L. schrieb:> oh python, heisst das ich kann einen python script auf meine Webseite> einbinden =)?
Das ist nur bei PHP der Fall.
Deine python-Anwendung läuft eigenständig, zufällig lauscht sie aber auf
einem TCP-Port auf eingehende HTTP-Anfragen und führt deinen code aus.
So mal als Beispiel: http://flask.pocoo.org/docs/quickstart/Peter II schrieb:> dann muss ich was falsch gemacht haben, mein Programm läuft auf linux> ohne Probleme.
Wir reden hier von den active server pages von Microsoft?
Tatsächlich scheint wohl jemand ein Apache-Modul dafür geschrieben zu
haben, dennoch würde ich auf verbreitetes und offenes wie python, ruby
oder node setzen.
Lukas K. schrieb:>> dann muss ich was falsch gemacht haben, mein Programm läuft auf linux>> ohne Probleme.> Wir reden hier von den active server pages von Microsoft?
ja. Aber "active server pages" trifft es nicht mehr wirklich. Eine
Webapplication kann viel mehr weil sie ständig läuft und die einzlenen
Request als Threads reinkommen.
"active server pages" ist nur die einfache Version die wie PHP arbeitet,
jeder anfrage startet einen process und beendet ihn wieder. Es läuft
also nie eine Wirkliche anwendung.
> Tatsächlich scheint wohl jemand ein Apache-Modul dafür geschrieben zu> haben
mono bringt einen eigenen Webserver mit, apache braucht man dafür nicht.
> dennoch würde ich auf verbreitetes und offenes wie python, ruby> oder node setzen.
ich mag keine Scriptsprachen, ich habe gerne einen compiler der mir
fehler nicht erst zur laufzeit zeigt.
Außerdem finde ich C# recht gut, für web und native anwendung.
Peter II schrieb:> was soll das heisen?>> PHP ist zeitgemäß. Es kann sauber objektorientiert programmiert werden.> bietet für web alles an was man braucht.
a bit of light reading...
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
Klar, es geht. Nur was angenehmer ist? Spannende Frage, für mich
definitiv nicht PHP, ich will ne moderne Hochsprache. Und wenn man es eh
neu lernt sollte man sich schon über die Alternativen informieren.
> ob nun python, node oder ruby kann ich schlecht beurteilen, aber ruby> fällt mir nur ständig mit ihren sicherheitslücken auf.
das Problem dabei ist in erster Linie Ruby on Rails. Ist zwar DAS große
Webframework für Ruby, das man für das was der TO vorhat aber eher nicht
verwenden würde, weil einfach unnötig fett. Ansonsten, PHP und
lückenfrei ;)?
Python hat man richtig viel Auswahl was Frameworks angeht, von total
simpel zu superkomplex. Kann man Tage-Wochen damit zubringen sich für
das zu entscheiden das einem am besten gefällt.
Node.js ist am jüngsten, aber irrsinnig was da in kurzer Zeit entstanden
ist.
> Kann man denn bei diesen Sprachen z.b. einen Thread ständig auf dem> Server laufen lassen? Oder laufen sie nicht auch nur als CGI im apache?
CGI geht wohl mit jeder Sprache, alle 3 können auch Standalone-Betrieb.
Ach und ansonsten: Für den Hobbybetrieb, im Zweifel auch noch im
internen Netz, ist wirklich das einzig relevante Argument was einem
gefällt. Und irgendwelche Frameworks sind im Zweifel überflüssig, egal
in welcher Sprache. Man kann webanwendungen auch in C oder Brainf*ck
schreiben, wenn man mag und man den Aufwand nicht finanziell
rechtfertigen muss ;)
adsf schrieb:> Python hat man richtig viel Auswahl was Frameworks angeht
Ruby auch. Ich mag Sinatra. Es gibt aber Unmengen Webframeworks in Ruby.
Die Ruby-Welt hat auch Rack hervorgebracht, was Python dann zu recht als
WSGI abgekupfert hat.
Charlie schrieb:> adsf schrieb:>> Python hat man richtig viel Auswahl was Frameworks angeht>> Ruby auch. Ich mag Sinatra. Es gibt aber Unmengen Webframeworks in Ruby.> Die Ruby-Welt hat auch Rack hervorgebracht, was Python dann zu recht als> WSGI abgekupfert hat.
Naja, Ruby hat schon weniger Auswahl, aber das ist nicht negativ
gemeint: Python hat tendenziell unnötig viele. In Ruby sind es doch
wenige, weitverbreitete, die aber auch alle Anforderungen abdecken.
Oh, und: WSGI ist älter als Rack, also eher andersrum ;)
Sowas macht man mit Javascript ...
- bei einem Button kannst du im Event "onclick" eine Funktion aufrufen
- mit dieser Funktion machst du Folgendes:
1. ein oder mehrere "hidden"-Textfelder mit Parametern belegen
2. Cookie mit aktuellen Statusinfos setzen
3. das Formular "submitten" und neu laden
4. Cookie lesen, Farben oder Texte entsprechend anpassen ("LED an" oder
so)
Frank schrieb:> Sowas macht man mit Javascript ...
klar doch, und wie bringt man den Server dazu etwas blinken zu lassen?
Auch javascript braucht einen Server und um diesen geht es hier.
> Hat jemand ne Ahnung wie ich das vielleicht 1. schöner machen könnte und> 2. was viel wichtiger ist den "button klick" mit Übergabeparameter> ausführen könnte?>klar doch, und wie bringt man den Server dazu etwas blinken zu lassen?>Auch javascript braucht einen Server und um diesen geht es hier.
Sicher? Wie Obiges Zitat zeigt, sollte es um "schöner machen" gehen. PHP
funktioniert doch, und sehen tut das eh' niemand, also was solls? Mein
Tip bezog sich darauf, in der Bedienoberfläche mehr
Gestaltungsmöglichkeiten tu haben ...
Peter II schrieb:> klar doch, und wie bringt man den Server dazu etwas blinken zu lassen?
Die Funktion LED an/aus hat er doch schon, es muss nur regelmäßig
geschehen.
Ansonsten: Wenn du einen Cronjob "anlegen" willst, dann tu das doch ;-)
Je nach favorisierten Sprachen kannst du auch einfach einen Jetty (Java)
oder ein lighttp(C) Plugin schreiben, welches die Aufgabe übernimmt. CGI
mit Apache wäre auch noch drin...
Außerdem könntest du dir auch überlegenen einen separaten Prozess zu
schreiben, welcher nur eine Konfigdatei liest. Diese kannst du dann
bequem über eine Website editieren.
hmm sieht so aus als muss ich mich damit wohl doch ein bisschen mehr
befassen müssen xD
werd heut nach der Arbeit mal in ein paar Sprachen rein schnüffeln um zu
sehen welche mir am ehesten zusagt :P
also ich hab mich jetzt mal bisschen umgeschaut, und bin erstmal bei
asp.net hängengeblieben.
damit hab ich zumindest schon mal nen button mit übergabeparameter
hinbekommen.
Jetzt ist nur die Frage, da google sich ein bisschen weigert mir zu
helfen, ob ich damit auch shell kommandos an meinen server schicken
kann?
Jan L. schrieb:> Also im Anhang hab ich mal kurz aufgemalt was ich such...
wenn du es wirklihc mit asp.net machen willst, dann brauchst du etwas
länger. Dafür musst du erstmal mit ein paar Grundlangen beschäftigen.
Du brauchst halt eine Web Application, diese steuert dann die IO-Ports.
Die Request vom Web reden dann mit dieser Application.
http://msdn.microsoft.com/en-us/library/ms178594%28v=vs.100%29.aspx
Jan L. schrieb:> hmm jetzt mal ne ganz blöde Frage... funktioniert asp.net auch auf Linux> Servern?
ja mit mono ( also vermutlich nicht zu 100%, aber für mich bis jetzt
ausreichend)