Hallo, Hier mal noch ein Webserver auf der Basis von dem ENC28J60 Chip und einem ATmega32 oder ATmega644 als Prozessor. Software zum Testen des Webservers ist auch schon dabei, sowie Bilder wie er fertig aussieht. Warum das ganze? Der Webserver hat eine einseitige Platine und kommt ohne SMD aus. Gruss Ulrich
Gast
#686691
Prima! Ich habe jetzt zwar schon einen funktionstüchtigen Webserver nach der ISA-CTRL-Platine und RTL8019AS als Ethernetcontroller, aber das hier ist mechanisch kleiner aufzubauen und auch von den Bauelementen her besser zu löten. Frage: Hast Du dort eine SD-Karten-Unterstützung mit drin? MfG Paul
Hallo, Noch ist keine MMC/SD Unterstützung enthalten. Gruß Ulrich
Gast
#686796
Aha! Danke für die Antwort. MfG Paul
Ist das noch geplant mit MMC unterstützung?
warum habt Ihr die Restringe bei den Terminals so klein? etwas größere Restringe machen das Bohren und anschließende Löten etwas einfacher find ich.
Hallo! Gibt es irgendwie eine "einfache" Möglichkeit, wie bei USB-Hosts, einen virtuellen COM-Port zu erzeugen, der dann die serielle Schnittstelle deines Webservers ansteuert? So was ähnliches wie die CDC oder HID-Treiber bei USB wäre super. Ich hab aber noch nichts dergleichen gefunden. MfG Matthias
Gast
#687254
Danke danke danke danke danke danke danke Ulrich!!! Auf genau so einen Webserver habe ich von dir schon gewartet :-) ENC, AVR, einseitige Platine, kein SMD, funktionierende Software zum dran weiterprogrammieren. Einfach Perfekt! Stefan
Hallo, Das mit dem RS232 Port ist ein Ziel von mir dazu benutze ich einen fertigen Treiber von Lantronix. http://www.lantronix.com/device-networking/utilities-tools/com-port-redirector.html Gruß Ulrich
Gast
#687284
Hi! Kann das Beispiel schon irgendwie Ein/Ausgänge des 644 steuern? Bin kein "C"-Mensch und habe im Quellcode auf den ersten Blick nix gefunden, wie das funktionieren sollte. Danke, Micha
Hallo, Im Beispiel macht er bisher nur http. Wenn ich halbwegs damit weiter komme stelle ich es Online. Gruß Ulrich
Gast
#688059
Hallo, ich nehme an, dass bewusst keine Quelldokumente für den Schaltplan und das Layout herausgegeben wurden. Ist beabsichtigt, dies noch zu tun? Ich könnte mir vorstellen, dass auf der Basis deiner Arbeit noch sehr einfach Änderungen vollzogen werden könnten. Beispielsweise könnten die bereits angesprochenen Restringe größer gemacht werden (oder durch "lange" Kupferflächen ersetzt werden) oder gleich Bauelemente statt der Lochraster eingesetzt werden (z. B. Motortreiber, HC595 um die Anzahl der Ports zu erhöhen, Stecker für Sensoren oder sonst was, Relaistreiber für die (12V-)Lampensteuerung per WLAN :-). Begeisterter Gruß von einem Gast.
Gast
#688128
Sehr gute Arbeit respekt ! Ich werde ihn demnächst aufbauen. Aber darf ich mal fragen, was ich überhaupt mit so einem Webserver machen kann? Ist nicht böse gemeint, würde nur gerne einen Verwendungszweck wissen. Danke!
Hallo, Die Quelldateien gibt es auf meiner HP. Anwendungszweck: Der aktuelle Source Code schaltet über den Webserver den Port A. Dieses erfolgt sogar bei mir übers Internet. Also kann ich bei mir zu Hause das Licht an- und ausschalten :-) Gruss Ulrich PS: Den aktuellen Source Code werde ich immer nur auf meiner HP vorstellen. Ich will diesen Server nicht unnötig mit Dateien belasten.
Gast
#688182
da hätte ich ja gleich mal auf die Idee kommen können, auf deiner Site zu schauen :-( Schaut super aus. Gast.
Gast
#688247
Ansich nicht schlecht...Hab mir die Sourcedateien nicht angekuckt aber wo werden die Webseiten abgespeichert? Wird der ENC gepollt oder läuft das über Interrupt? Gruß Maik
Gast
#688280
Hi! Ich würde die Schaltung gerne nachbauen. Wo bekommt man denn die speziellen Teile wie den Übertrager oder den ENC? Danke und Gruss, Micha
ENC zumindest bei csd-electronics.de
Gast
#688348
Wie sieht es mit dem Übertrager aus? Wo bekomme ich diesen Typ? Oder sind die auf den Netzwerkkarten alle ähnlich, do dass ich jeden verwenden kann (bis auf die Pinbelegung natürlich). Kann mir das jemand kurz erläutern? Danke Gruß Thomas
Eine Frage am Rande: Ich habe gerade den Quellcode überflogen und mir ist aufgefallen, dass die httpd nirgends aufgerufen wird. Hat das einen Grund oder hab ich beim überfliegen nur was übersehen?
Hallo,
Doch httpd wird aufgerufen nur etwas anders als sonst.
in Stack.c wird die Funktion in eine Tabelle eingetragen:
PORT_ITEM PORT_TABLE[] = // Port-Tabelle
{
{80,httpd}, //erst der Port dann die aufzurufende Funktion
{23,telnetd},
{0,0}
};
So habe ich es auch mit den Kommandos gehalten.
Gruß
Ulrich
Ja ok Danke, dann lag's echt nur am überfliegen. Zum Glück gibt es keine dummen Fragen ;-)
Gast
#688492
>>Wie sieht es mit dem Übertrager aus? Wo bekomme ich diesen Typ?
Den kannst du auch von csd-electronics bekommen. Ich habe schon mehrere
PC-Karten ausgeschlachtet und die Übertrager hatten eigentlich immer
funktioniert.
Gast
#688572
> Also kann ich bei mir zu Hause das Licht an- und > ausschalten :-) Link bitte veröffentlichen, das will ich auch mal ausprobieren ;-))) an, aus, an, aus, an, aus, an, aus ... (Welcher Blödmann fummelt da ständig an meinem Licht herum ...)
Gast
#688592
Ein dickes "Danke" an Ulrich. Das baue ich demnächst nach, habe ich schon länger vorgehabt und muss nun nicht bei "null" anfangen. Super!
Gast
#688596
Hi! Im CSD-Shop findet man den Übertrager, wenn man unter Suche FB2022 eingibt. http://www.csd-electronics.de/de/index.htm Gruss, Micha
So was hatte ich schon lange vor. Jetzt muß ich nicht ganz von null anfangen und kann gleich richtig einsteigen. Danke dafür!!!
Gast
#688688
Hi! So, Teile sind bestellt :) Allerdings habe ich den Ferrit nicht gefunden, ist der unbedingt notwendig? Ich werde den 644 erst mal auf dem STK500 aufbauen und eine kleine Platine mit dem Netzwerkkram basteln. Mal sehn, ob das klappt... Gruss, Micha
Gast
#688724
Hier die Bestellnummern: reichelt als Excel, CSD: Anzahl Artikel E.- Preis G.- Preis 1 ATMEGA644-20PU Nummer: 30174 6.95 EUR 6.95 EUR 1 ENC28J60/SP Nummer: 30362 5.95 EUR 5.95 EUR 1 FB2022 Nummer: 17350 1.95 EUR 1.95 EUR Gruss, Micha
Gast
#688796
Michael vielen Dank für die Liste!
Gast
#688797
Vielen Dank für die Liste, aber irgendwie fehlt die RJ-45 Buchse (oder hab ich die übersehen ?) Viele Grüße, Festus
Gast
#688811
Hi! Stimmt, die habe ich auch nicht gefunden. Hat jemand einen Tipp? Ausserdem seht ihr, dass ich von den Kleinteilen wie C und R jeweils 10 bestellt habe... Gruss, Micha
Gast
#688833
Passt nicht diese von CSD? "Modular Buchse 8 polig print"
Gast
#688837
Sieht gut aus, habe ich leider nicht gesehn...
>Allerdings habe ich den Ferrit nicht gefunden, ist der >unbedingt notwendig? Wird zwar vorgeschlagen, ich hab nun aber schon etwa 10 ENCs verlötet und einfach eine Drahtbrücke verwendet und es hat immer einwandfrei geklappt...ausprobieren :-)
>Allerdings habe ich den Ferrit nicht gefunden, ist der >unbedingt notwendig? Der Ferrite Bead oder auch Ferritperle zwischen dem Übertrager und der Versorgungsspannung dient zum Filtern von hochfrequenten Signalen auf der Versorgungsspannung und sollte eine 60 Ohm Impedanz bei 100 MHz besitzen. Zu Testzwcken kann man diesen weglassen. Es ist allerdings sehr zu empfehlen diesen mit zu verlöten...gibts bei Segor. Da gibt es auch RJ45 Buchsen mit integrierten Übertrager von HALO electronics also nochmal platzsparend!
Sirko wrote: > Passt nicht diese von CSD? > "Modular Buchse 8 polig print" Alternativ gibts bei CSD auch den "Magjack" direkt mit Übertrager eingebaut.
Hallo, RJ45 Buchsen mit integrierten Übertrager wollte ich nicht benutzen. Auch wenn diese ein Platzvorteil haben. So kann fast jede alte Netzwerkkarte vom Schrott wieder verwertet werden. Auf diesen findet man fast immer einen passenden Übertrager, Netzwerkbuchse und LEDs. Und wenn nicht bekomme ich die Teile zumindest auch bei Reichelt. Gruß Ulrich
Gast
#689628
An Stelle der Ferrite Bead kann man auch "Festinduktivität 1 µH 0,7 A" von CSD nehmen. Ist ja in erster Linie dazu, um Störungen aus der Versorgung zu filtern und nicht noch verstärkt ans Netz abzugeben. Sind auch gut zum filtern der Analog-Referenspannung am AtMega u.ä.
Gast
#689647
@Ulrich Hmm, Reichelt ist diesem Zusamenhang wohl (noch)nicht die Quelle erster Wahl. Die muss man wohl noch überzeugen bezüglich des ENC28J60 und des Übertragers. Haben sie beides nicht. Und alte Hardware zu fleddern, geht so lange bis das die Sollbruchstelle wird. Ich weiss das aus leidvoller Erfahrung, stundenlanges Messen hätte ich mir sparen können, wenn "weniger Geiz, noch geiler" gewesen wäre. Ich denke schon, dass der MagJack zum genannten Preis(CSD) nicht schlechter als eine Einzellösung ist. Ich hoffe, Du hast hier ne Lawine losgetreten und man kann bald div. Webserverlösungen und deren Software bewundern.
Hi, wieder mal ein super Projekt von Ulrich. Mir kam die Idee das FTP Protokoll zu Implementieren um dann Daten von einer SD-Karte über Nacht auf den FTP Server zu übertragen. Somit müsste nicht immer ein PC bei mir laufen. Gruß Rene
Gast
#689911
hi, wie groß ist das Interesse am Thema "Internetradio"? ich denke das wär wirklich mal ein nützliches projekt, für mich nur leider in sehr großer ferne :-). https://helixcommunity.org/projects/datatype/ m.
Hallo maddin, ich hätte da mit Sicherheit auch Interesse dran. Wenn's da mal was gäbe.... samson2
Gast
#689940
hmm, tja so ist das... verweisen wollte ich eigentlich hier her: Beitrag "Internet-Stream Radio" aber ich denke dann wird man wohl einfacher bedient sein, es zu kaufen. klar - wie so oft, die herausforderung treibt einen ja dazu, dinge selber zu machen, anstatt sie zu kaufen, doch das ziel ist mir allein zu fern und zeitintensiv.... -schnittstelle -protokolle -datenstromdecodierung -senderauswahl -und was weiß ich noch alles.... m.
maddin @Torsten Enkelmann "Internet-Stream Radio" Hi Falls das Interesse am Thema "Internetradio" immer noch vorhanden sein sollte, kann ich folgende Informationen über ein Projekt (A low cost portable wireless Internet radio receiver) zur Verfügung stellen. Dieses WLAN Radio arbeitet mit dem Shoutcast Stream Protokoll und besteht aus folgenden Komponenten: AVR Microcontroller Hardware MP3 Decoder PCMCIA WLAN Card (Prism 2.5 chipset) 128 x 64 SED LCD-Display Lithium Battary ---- PWM Drive for battery recharging Battery Voltage & Current Sensor Supply Voltage Regulator C Code for the IAR AVR Compiler Voy
Klingt sehr interessant. Also mindestens ansehen würde ich mir es :-)
Ist bestimmt der WMP3: http://www.gurulib.com/_project/wmp3/index.htm
Gast
#690503
>http://www.gurulib.com/_project/wmp3/index.htm
wow - und das alles mit nem kleinen Atmel :-)
Mir würde es schon mal reichen, wenn ich den kleinen Server von Ulrich
noch um den Anschluß eines Displays erweitern kann. Vielleicht dann noch
per Weboberfläche irgendwelche Texte eingeben...
Da noch ein Display dran zu hängen ist nicht weiter schwer. Ich hab eine ähnliche Platine (allerdings mit einem Mega128 und nahezu nur SMD) mit einem DOGLCD bei mir zu hause liegen. Leider nicht die Software noch nicht so weit wie die von Ulrich und irgnedwie komme ich nicht mehr so richitg zum weiterentwickeln.
Könnte man nicht die Hardware und Source von Guido Socher (A LCD display with ethernet interface / Tuxgraphics.org) für obiges Board anpassen?
Gast
#690808
Hallo Uli, Respekt zu deinem Projekt! Wie gross wäre deiner Meinung nach der Aufwand um deinen Server als "Ethernet-RS232 Gateway" laufen zu lassen? Es braucht eine "Benutzer-Oberfläche" auf die man per Ethernet und Browser in einem Netzwerk auf deinen Server zugreifen kann und dann kann man Ports am uC schalten... Leider habe ich im Moment noch wenig Ahnung von Ethernet, ich kann deinen aktuellen Stand noch nicht nachvollziehen. Gruss, erik
Gast
#690880
Hallo, also das mit dem Display sehe ich rein Hardwaretechnisch nicht als großes Problem. Stand alone habe ich so ein KS1080(?) Display mit 128x64 Pixeln schon mit der Bib von Ape (glaube ich) zum laufen bekommen. Ich sehe eher das Problem die Bib mit der Software von Ulrich zu verstricken, und dann vielleicht noch auf http-Anfragen eine Textmeldung zu erzeugen. Leider habe ich privat kaum Zeit für sowas, und auf Arbeit kann ich das meinem Chef auch nur schwierig als dienstlich sinnvoll verkaufen. Gast.
Gast
#690955
Mensch Ulli, ich bin ja mal froh, dass ich sehe, dass auch andere Menschen "Zeiger auf Funktionen" auf diese Art und Weise verwenden ;-) Bestens, Thomas
Tolle Sache, wenn das Layout jetzt noch als Postscript zur Verfuegung stuende koennte man sich das sogar mal nachbauen ;) Michael
Hallo @Michael G. Wie ich in einem anderen Thread lesen konnte ist dir das Bild zu pixelig, 600dpi reichen bei mir. Aber wer will kann sich ja selber ein File aus den Eagledateien erstellen. Aber nur für den privaten gebrauch! Zum vekaufen von Platinen aus meinem Layout das ist nicht so gedacht. Gruß Ulrich
Hallo Ulrich, und wo finde ich diese files? In dem angehaengten Archiv ist ja nichts bei und auf Deiner Homepage habe ich grad auch nichts gefunden. Mir wuerde im Prinzip ein Postscript schon ausreichen wenn Du das Layout nicht rausgeben willst. Gruss, Michael
Gast
#691624
Hallo Uli Magst du zu meiner Frage etwas oberhalb Stellung nehmen? Ich würde mich jedenfalls freuen :) Gruss, erik
Hallo @Erik, Der Webserver hat schon eine Webschittstelle zum schalten von Ports. Das mit der RS232 Schnittstelle und einem Display ist schon in arbeit. @Michael G. das Layout ist auf meiner HP, dieses haben schon viele Leute gefunden. Ich werde hier nicht jedes Layout Format veröffentlichen wie es jeder will. Gruss Ulrich
Gast
#691639
Vielen Dank Uli! Das tönt alles ausgezeichnet... Schreibst du es irgendwo hin, wenn es implementiert ist? Dann werde ich Anfangen, mich mit deinem Code internsiv zu beschäftigen, resp. versuchen es zu nachvollziehen.
Gast
#691736
Servus Ulli, was ich nicht ganz nachvollziehen kann, ist die HTTPD. Mir ist klar, wie Du die entsprechende Funktion im HTTPD Thread auslöst; jedoch ist mir nicht klar wieso Du das so machst. Wie kann ich nur meine Fraqe in Worte fassen? Warum springst Du bei "app_status == 1" ausgerechnet in die Funktion, warum "app_status == 2" ausgerechnet in eine andere? Prinzipiell kann man doch stets Daten senden, z.B. den html-File-Inhalt sobald ein PSH und ACK Flag vom Clienten kommt, oder nicht? Vielleicht kannst Du das noch ein wenig verdeutlichen. Danke
Hallo Thomas, Nach einer eingabe im Browser wird zuerst der Port in Server geöffnet. Client: SYN Server: SYN,ACK Client: ACK Hierbei wird die App. nicht gestartet. Erst jetzt erfolgt vom Client Browser ein GET HTTP also PSH Flag gesetzt app_counter = 1. Das Packet wird nun Stückchenweise zum Client gesendet. Bei jedem Stückchen empfange ich ein ACK. app_counter++ damit ich weiss welches Stückchen ich gesendet habe und als nächstes drann kommt. Wenn ich kein Ack vom Client empfange erfolgt irgendwann ein Timeout und Packet wird nochmal gesendet. Ist das Packet komplett gesendet wird der Port geschlossen. Gruß Ulrich
Gast
#691913
Hallo Ulrich, wiedermal ein sehr schönes projekt. nun habe ich leider schon 2 deiner vorherigen webserver...;-) aber nicht das die platine ein problem darstellen würde. aber da ginge mir eher eine doppelseitige platine durch den kopf. die mann sich auch über http://www.haka-lp.de/html/zwillingsangebot.html fertigen lassen könnte. und da währe ökonomisch die grösse von 100mm x max 79mm das würde dann dort 4-stück ergeben. schick ;-) und würde dann in 1/2 eurogehäuse-1 reinpasen. ich gehe nicht davon aus, das du selber platinen in umlauf bringen willst ? ;-) ich allerdings auch nicht! (höchstens die eagle.brd, falls ich die habe) Jürgen
Gast
#691914
Danke; das hab ich dann soweit. Also wäre es auch möglich, das Paket in eine Variable zu packen und in der create_tcp_paket Funktion aufzuteilen und somit ACK-Abhängig die Teil-Pakete auf den Weg zu schicken.
Hallo, in der Create_tcp_packet Funktion wird nichts aufgeteilt das geschieht vorher ! Gruß Ulrich
Gast
#692090
Hallo, schon klar; war nur so ein Gedanke von mir. Hast Du eigentlich noch Literaturverweise? Ich arbeite an meinem Stack meistens nur mit Wikipedia und Wireshark; aber so ein paar "Protokoll-Ablauf für Dummies" Referenzen täten manchmal schon gut. Thomas
Gast
#692093
Ja, zu ein paar nützlichen Links würde ich als Ethernet-Dummy auch nicht nein sagen.
Hallo alle zusammen, ich habe die cmd.c /cmd.h mal erweitert damit man sich über 3 neue Befehle jederzeit die eigene IP, MAC und ENC Version ausgeben lassen kann. Befehle: IP = zeigt eigene IP-Adresse MAC = zeigt eigene MAC-Adresse VER = zeigt Version des ENC28J60 an @Ulrich Wäre es möglich die beiden cmd.c / cmd.h in deine Version zu übernehmen? Ich hatte dir auch vor ein paar Tagen eine Mail geschrieben weil ich gerne deinen Haftungsauschluss-Text nutzen würde, habe aber leider nie eine Antwort erhalten :( Wäre es nicht besser in der main.c die Anzeige der eigenen IP-Adresse so zu realisieren damit die IP auch optisch korrekt angezeigt wird? usart_write("My IP: %1i.%1i.%1i.%1i\r\n\r\n",myip[0],myip[1],myip[2],myip[3]); Übrigens lerne ich an deinem Code eine Menge hatte nur Bascom benutzt bisher aber jetzt arbeite ich mich in C ein und da hilft dein Code ungemein!
Hallo, Deine drei Befehle habe ich mit aufgenommen. Das die IP angezeigt wird habe ich schon lange realisiert. Ich würde mal dem aktuellen Source Code herunterladen! Gruß Ulrich
@Ulrich Als Grundlage hatte ich die cmd.c aus der 0.93 genutzt, die sollte aktuell gewesen sein. Die Anzeige der IP-Adresse war nur beim Start drin, oder?
Hallo, Mit der neuen Version 0.95 von mir kann auch ohne Probleme über das Kommandointerface die IP geändert werden. Gruß Ulrich
@Ulrich Super Sache, besteht die Möglichkeit das die IP im internen EEPROM gespeichert werden kann und somit nach einem Stromausfall bedingten Neustart automatisch wieder die zuletzt eingestellte ist?
Hallo @Thomas Heldt, jetzt wird die IP auch im EEPROM gespeichert! Gruß Ulrich
Gast
#692441
Hi! Langsam!!! :) Ich komme nicht mehr mit... 3-4 Versionen pro Tag - Respekt :) Weiter so, Michael
@Ulrich Super !!! Ich lerne echt viel dadurch das ich das alles parallel auch probiere.
@Ulrich Ich arbeite hier auf meinem Board mit dem Takt des ENC28J60 und habe in der aktuellen Version die Taktfrequenz in der config.h angepasst aber dann stimmt die Ausgabe auf der seriellen Schnittstelle nicht. Erst wenn ich auch in der usart.h den Takt ändere klappt es, aber sollte nicht die erste Definition in der config.h ausreichen?
Hallo, include mal config.h in usart.h Gruß Ulrich
@Ulrich Danke, klappt ;) Wirst du doch sicher in der nächsten Version auch so machen und das define in der usart.h sparen, oder?
Mal eine Frage: wenn ich den ENC28J60, der Laut Datenblatt nur einen "10BASE-T port" besitzt, ohne Switch an ein 100BASE-T-Netzwerk anschließe, wird das ganze Netzwerk bis zum nächsten Switch auf 10MBit ausgebremst, ja?
Hallo, so ist es, aber wer benutzt noch einen Hub?? Gruß Ulrich
@Ulrich Habe mal eine Verständnisfrage, es ist ja nirgendwo ein Gateway eintragbar, ist es korrekt da ja nur Anfragen von extern an den Server kommen und er deshalb keinen Gateway im Netz braucht um die Anfragen zu beantworten? Ich möchte vom Internet aus über eine Portweiterleitung auf einer Fritz!Box auf den Server zugreifen, das sollte doch gehen, oder?
Gast
#692778
>Ich möchte vom Internet aus über eine Portweiterleitung auf einer >Fritz!Box auf den Server zugreifen, das sollte doch gehen, oder? Ob eine Portweiterleitung ausreichend ist, ist fraglich. Ich hatte mal einen Server auf einem PC aufgesetzt, dabei musste der Router(war keine Fritzbox gewesen) so eingestellt werden, dass er dem Serverpc die externe IP zuweist, da die Anfragen ja auch an diese gestellt werden. Es gab zwar die Möglichkeit unter den Portweiterleitungen eine für Http-Server (Port 80) einzurichten, dies hat jedoch nicht funktioniert. Kann natürlich auch ein Problem dieses speziellen Routers gewesen sein. >ist es korrekt da ja nur Anfragen von extern an den Server >kommen und er deshalb keinen Gateway im Netz braucht um die Anfragen zu >beantworten? Was du hier beschreibst ist die NAT: http://de.wikipedia.org/wiki/Network_Address_Translation Wenn die Portweiterleitung so funktionier, leitet der Router die externen Anfragen auf Port 80 an den Webserver weiter, der bekommt die so, als wären die vom Router gestellt, gibt seine Antwort dann an den Router, der trägt die IP des Anfragestellers ein und schickt das Päckchen auf seine Reise.
@Thomas Heldt: Ja mit der Fritz!Box ist das möglich - die NAT ist praktisch integriert. Einfach bei Internet->Portfreigaben eine neue Portfreigabe erstellen. Dort muss bei "von Port" 80, an Port die IP des Servers im LAN und "an Port" wieder eine 80 stehen. Die Pakete werden dann automatisch umgeleitet. Einen AVR-Webserver hab ich so zwar noch nicht betrieben, aber mit dem PC als Webserver hat es einwandfrei geklappt. Und der AVR-Webserver ist bereits in Arbeit :-).
@jemand und Randy N. Das die Portweiterleitung funktioniert ist mir klar, sorry da ist meine Frage wohl falsch verstanden worden, es geht mir darum zu verstehen wie der AVR-Webserver die Seite ohne einen Gateway zu kennen an den anfragenden Client ausliefern kann. Ich betreibe mehrere Server (Dienste) hinter der Fritz!Box und das NAT funktioniert super, aber alle Server haben halt auch die Fritz!Box als Gateway eingetragen, das ist in der Software für den AVR-Webserver aber nicht vorhanden, daher meine Frage.
Ups hab garnicht die Frage, sondern nur die Antwort meines Vorgängers gelesen, um dann zu sagen, es geht doch :-) Also ohne es jetzt genau zu wissen, würde ich sagen, dass dem Webserver der Gateway, um Anfragen von Clients aus dem Internet beantworten zu können, nicht bekannt sein muss. Wenn der Webserver allerdings selbst von anderen Servern im Internet Daten abrufen muss, muss er dies über den Gateway erledigen - und DANN braucht der dessen IP. Aber da das ja bis jetzt noch nicht in der Firmware implementiert ist, muss diese auch den Gateway nicht kennen - somit kann man den auch nirgends angeben.
@Randy N. Danke, genau so habe ich es mir auch gedacht ;)
Hallo, und genau so ist es. Gruß Ulrich
Hallo, So der aktuelle SourceCode baut via Telnet eine Verbindung zur RS232 Schnittstelle des AVRs auf. Eingehende Zeichen werden zur Tellnetapp. geschickt und umgekehrt. Somit kann ein virtueller Comport angelegt werden. Dazu benutze ich com0com und com2tcp. Gruß Ulrich
Gast
#693007
Hi! Super wäre jetzt noch die Möglichkeit, die aktuelle html-Seite bei Abruf mit aktuellen Infos, wie zB dem Zustand von Input-Ports, zu versehen. Aber das hast Du wahrscheinlich in Version 0.992 eh schon drin ;) gruss, Michael PS: Bin leider noch nicht zum testen gekommen, Controller ist noch nicht da :(
@Ulrich Wo werden den Diensten die Ports zugeordnet? Finde das irgendwie nicht :( Gruß Thomas Heldt
Gast
#693070
add_tcp_app(PORT, ....); Bitte mal genau lesen ! Sind auch Kommentare im Code ! Gruß Sven
@Sven Ja aber genau das verstehe ich nicht wie HTTP an Port 80 gebunden wird, ich sehe keine 80 oder so:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Auch sehe ich nur die leere Tabelle:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Ich würde es gerne verstehen denn ich steige von Bascom aus um und deshalb frage ich wenn ich etwas nicht verstehe/finde.
httpd.c:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
@Andreas Watterott Vielen Dank ;)
Hallo, Die While-Schleife sollte so aussehen der Rest ist unsinn!!!!
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Hallo Ulrich, habe das Wochenende genutzt und den Webserver mit Hilfe deiner Eagle-Dateien nachgebaut. Funktioniert prima! Allerdings bin ich mir nicht sicher, ob du nicht den falschen Spannungsregler kühlst, wenn ich mir deine Bilder ansehe ;-). Der ENC28j60 ist ja ein kleiner Stromfresser (Imax = 250mA lt. Datenblatt) und damit wird der LM317 ganz schön heiß. Bei mir nimmt die komplette Schaltung max. 220mA bei 8VDC auf. Vielen Dank für die Bereitstellung der Sourcen, Layouts und Pläne. Habe auch bei deinem Programm dazu gelernt. Grüße Gerd G.
Hallo Gerd G. Es stimmt der ENC28J60 nimmt recht viel Strom auf. Ich habe deshalb auch selbst den LM317 gekühlt, und nicht den LM78S05. Gruß Ulrich
Gast
#693543
Hallo @Ulli kannst du sagen, wieviel "Reserve"der "Stack" übrig läßt, um zum beispiel so 1-Wire Sensoren (DS18S20)anzuschließen? Oder via die 1-Wire Master DS2482-100 bzw. DS2482-800 mit I2C....ist das möglich? Kann man von dir so Platinen bekommen oder gibtst du sie in einen (Fertiguns)-Pool...dann müßten natürlich für dich kostenlose Platinen rausspringen.. bei so einer SUPER Arbeit. Danke Achim
@Ulrich Ich habe jetzt die Möglichkeit integriert einen SHT11 Sensor abzufragen, wie kann ich die Werte Temperatur und Luftfeuchte jetzt aus der Webseite anzeigen lassen? Die cmd.c habe ich schon erweitert so das ich die Werte über die serielle angezeigt bekomme. Ich möchte aber die beiden Werte halt auf der Webseite sehen, die Möglichkeit die Ports zu schalten ist für meine Anwendung nicht so interessant ;) Bin für jedem Tipp dankbar. Gruß Thomas
Hallo, Der Prozessor hat noch genügend Reserven für sowas!! I2C uvm. will ich auch noch anbinden. Über eine Sammelbestellung bzw. der Verkauf der Platine bin ich noch am überlegen. Der aktuelle SourceCode 1.0.2 funktioniert nun auch mit dem RTL8019 AVR Webserver von Holger Buss. Das Anzeigen von Werten über das Webinterface ist schon in arbeit! Bis zum WE ist es dann fertig. Gruss Ulrich
Hallo Ulrich, >Es stimmt der ENC28J60 nimmt recht viel Strom auf. Ich habe deshalb auch >selbst den LM317 gekühlt, und nicht den LM78S05. Mache ich auch. Aber auf dem Foto ist es anders herum. Da war der Kühlkörper am 7805, oder sehe ich das falsch? Ansonsten ist der Aufbau sehr einfach. Ich habe mir allerdings die Pads und teilweise die Leiterbahnen vergrößert, damit ich es einfacher habe. >Der aktuelle SourceCode 1.0.2 funktioniert nun auch mit dem RTL8019 AVR >Webserver von Holger Buss. Mal sehen, ob ich das am Wochenende mit dem M128-Server zum Laufen bringe.Ich habe da noch einen, der nicht im Dauereinsatz ist... Momentan bastle ich an der Anzeige der geschalteten Ausgänge. Aber ich bin mit meiner Version schon wieder veraltet. Mann, bist du schnell! Gruß Gerd
Gast
#693989
Hi! Ich habe den Webserver fliegend aufgebaut und nachdem mein Router richtig konfiguriert war, klappte alles auf Anhieb! Super, jetzt kann ich mich ans probieren machen... Gruss, Micha
Gast
#693992
Hier die URL: http://mikrocontroller.homedns.org/ Micha
Gast
#693996
Die Leds springen hin und her :)
Ich glaube fast jeder der darauf zugreift schaltet mal ein bisschen. (Ich auch)
Gast
#694016
So solls sein :) Funktioniert super! Bin gespannt, was von Uli noch an Funktionen kommt!
Gast
#694021
So, nehme ihn jetzt vom Netz. Morgen wird ein zweites Netzwerkkabel gelegt und dann kann man wieder testen. N8, Micha
Er läuft ;) Nach vielen Stunden in denen ich nach Verbindungsunterbrechungen gesucht habe ist es geschafft, mein Board läuft mit Ulrichs Software einwandfrei ;) Ihr könnt hier allerdings nur eine LED schalten, URL http://heldt-intern.dyndns.org:81
So jetzt habe ich die tuxgraphics.org Software drauf und man sieht die Daten des SHT11 Sensors ;)
Hallo, ich hatte das Projekt von Nik Bamert ja schonma aufgebaut, so brauchte ich nur die Software auszutauschen. So schnell wurde aus Device mit UDP Support ein Webserver :-) Ich hab ein Kleinigkeit festgestellt, kommt jemand auf den Webserver wenn die Subnetzmaske nicht 255.255.255.0 sondern 255.255.0.0 ist ? Ansonsten sehr nette implementation. Gruß Lars
So jetzt habe ich mal die Temperaturanzeige und eine Möglichkeit hier die LED ein/auszuschalten auf einer Seite. Neue URL: http://heldt-intern.dyndns.org:81/secret
Lars Kessner wrote: > Ich hab ein Kleinigkeit festgestellt, kommt jemand auf den Webserver > wenn die Subnetzmaske nicht 255.255.255.0 sondern 255.255.0.0 ist ? > Ansonsten sehr nette implementation. Das hängt von der IP/Subnetzkombination deines PCs ab. Ich empfehle eine Netzwerklektüre.
@Thomas Heldt: Blink :-) Ich bin erstaunt, dass die Seite so schnell geladen wird. Wie schnell ist deine Internetverbindung? Kannst du vielleicht mal ein Bild draufmachen? Das würde mich mal interessieren. Hach ich freu mich schon auf meinen ENC28J60, der hoffentlich bald kommt...
@Randy N. Ich habe hier leider nur DSL2000, ich habe gerade die tuxgraphis.org Software drauf um den SHT11 zu nutzen, ich muss mal schauen wie ich da ein Bild einbinden kann, ich lerne gerade erst C und brauche deshalb noch etwas um da durch zu steigen teilweise ;)
Gast
#694479
Ja, ich finde auch, dass es eine sehr schnelle Reaktion ist. Hast du spezielle Optimierungen auf Geschwindigkeit vorgenommen? Mega läuft mit 16MHz?? Wie viele Prozente nimmt eigentlich der Text für die Website für sich in Anspruch?
@Gast Ich betreibe alles mit dem Takt vom ENC28J60, bei mir 12,5MHz, also wäre da sogar noch etwas Luft nach oben. Ich arbeite hier bei mir aber mit sehr guten Switches, aber dafür hängt der "Kleine" jetzt hinter ca. 50m Kabel und 2 Switches. Die Seite hat nur wenig Text, allerdings werden ja die Daten des SHT11 noch on time eingefügt. @Alle Wer hat schon einmal ein Bild in die Software von tuxgraphics.org eingefügt, ich finde da keinen Anfang :(
Gast
#694501
Folgt denn eigentlich noch eine SD Karten Anbindung im FAT16 Format??? Das wäre dann mal ein interessanter Fortschritt...
Gast
#694616
Hi! Ich denke dass 1wire, SD-Card etc. noch kommen wird. Bedenkt bitte, dass Uli das in seiner Freizeit macht und wir alle wissen, dass man eigentlich immer zuwenig Freizeit hat :D Danke an Uli und weiter so! Gruss, Micha
Hallo, Jaja so ist es ich mache was ich kann!! Mit der Version 1.0.3 können nun Variablen und Balken eingebunden werden. Wer den Code durchblickt zum einfügen von Variablen kann ja mal eine kurze Doku schreiben. Ich arbeite noch am Webserver!! Gruß Ulrich
Gast
#694811
Hier mal Ulrichs Webserver 1.0.3 mit FAT12/16/32 und MMC/SD. Statt raket.gif wird image1.jpg von MMC/SD geladen wenn eine Karte erkannt wird. Ist noch starr reinprogrammiert. Achtung: Ich hab da massiv an httpd.c, stack.c, main.c und enc28j60.c/.h rumgebastelt ! Also bitte nicht Ulrich fragen wenn was schief geht ;) Was ist bei mir anders ? Mein Board benutzt INT0 statt INT2. Und der Reset Pin vom ENC28J60 wird auch vom uC gesteuert. CS der MMC/SD wird vom SS Pin angesteuert. Das mit dem Resetpin in enc28j60.c klappt leider nicht immer (nach ISP prommen). Da ist noch was faul. RESET im Terminal eingeben reicht dann oft. Sonst ausschalten und wieder einschalten. Ob das alles so richtig ist ? Bis jetzt geht es.
So mit der aktuellen Version von Ulrich habe ich mal etwas gespielt und eigene Variablen eingebunden ;) URL: http://heldt-intern.dyndns.org:81 @Ulrich Wie kann ich die Daten für ein Bild selber erzeugen?
Hallo Thomas, schau dir mal WinBin vom Ulrich an. Findest du unter Projekte. Sollte das sein, was du suchst. Gruß Gerd
Hallo, In der Version 1.0.4 kann über den Befehl SV auf die Variablen zugegriffen werden. Gruß Ulrich
@Gerd G. Danke, genau das habe ich gesucht, klappt super ;) @Ulrich Interessant wäre jetzt die Uhrzeit von einem NTP-Server zu holen und auf der Webseite an zu zeigen. Am besten über den Timer der den Uhrenquarz nutzt.
Hallo, Bei NTP bin ich auch am überlegen! Ob nun Client oder Server mit DCF77. Was sagt ihr? Gruß Ulrich
@Ulrich Also Client fände ich besser so braucht man keine weitere Hardware ;) Für das lokale Netzwerk könnte dann ja der AVR Server als NTP-Server arbeiten.
Gast
#694938
Hey Holger! Was erreichst du insgesamt für eine Übertragungsgeschwindigkeit mit deiner SD Kartenanbindung? Gruß Dirk
Hallo, Zum Thema AVR Webserver und Geschwindigkeit habe ich eine gute Studienarbeit gefunden (Seite 63 - 64). http://www.uni-koblenz.de/~physik/informatik/studienarbeiten/thowil.pdf Gruß Ulrich
Gast
#694981
>Was erreichst du insgesamt für eine Übertragungsgeschwindigkeit mit >deiner SD Kartenanbindung? Das hängt extrem von der Karte ab. Inklusive FAT Dateisystem geht das bei mir so von 27kB/s bis 400kB/s bei 8MHz SPI Speed. Mittelwerte versteht sich. Ohne die Daten wirklich zu verarbeiten. Also RAW Read/Write ohne Webserver. Der Webserver bremst das natürlich gewaltig aus. Ein 67kB JPG Bild braucht so ca. 18 Sekunden. Unter Windows 98/XP. Linux ist doppelt so schnell ;)
Das ist der Grund warum ich mir eine Dataflash von Atmel auf mein Webserver-Board gemacht habe. Da merkt mein den Unterschied. Ein Bild ist schnell geladen. Eigentlich merkt man keinen unterschied zum "richtigen" Server. Die sind auch nicht teuer und für eine Webseite werden meistens nicht >2 MB benötigt. Ich habe jetzt einen 4 Mbit Flash und komme damit mehr als aus.
Gast
#695012
Hallo Ulrich! Ich hab gesehen das du über Telnet einen virtuellen Comport eingebunden hast. Warum muss PC-seitig ein virtueller Com-Port erzeugt werden und dieser mit dem TCP-verlinkten verknüpft werden? Ist das nicht irgendwie doppelt gemoppelt, oder wie hab ich das zu verstehen? MfG Tom
Hallo, Natürlich ist das doppelt gemoppelt, kannst ja einen besseren Treiber schreiben ich nehme diesen gerne. Problem ist halt einen Treiber zu finden der unter der GPL steht. Gruß Ulrich
@Ulrich Wie kann man es machen das man die Webseite des Server über eine längere URL, z.B. http://10.0.0.10/password/ statt http://10.0.0.10/ erreichen kann? Irgendwie sollte man einen kleinen Schutz einbauen können damit später nicht jeder Ports umschalten kann ;) Es wäre auch gut den Zustand der Ports im EEPROM zu speichern, nach einem Reset wäre dann der Zustand wieder herstellbar der vor dem Reset da war.
http-auth implementieren wie beim avr-eth1 projekt?!?
Gast
#695052
@Mr pcexperte! Bitte nicht nur auf den Wissen anderer aufbauen. Es ist super, dass Du hier was dazu lernen willst; aber die Art und Weise ist etwas daneben! Bitte, zerfetzt mich jetzt für diesen Beitrag! Ich warte.
@Thomas P. Soll heißen, im Internet gibt es sooo viele Quellen, wie man eine Webseite schützen kann - erstmal dort suchen und selber versuchen, es hinzubekommen. Beispielsweise hier: http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-Authentifizierung Aber jaja ich kenn das - irgendwie ist es einfacher was ins Forum zu schreiben, als selbst nachzudenken. Hab ich auch schon paarmal gemacht und...danke dass ihr mir trotzdem geholfen habt :-D :-D :-D
@Thomas P. Jeder lernt durch das Wissen anderer, das fängt schon in der Schule an! ;) Es geht hier nicht darum Insellösungen zu basteln, sondern nachher eine Lösung aus einem "Guss" zu haben. Ich schick viele meiner Ideen auch an Ulrich etc. und ich lerne durch lesen, beobachten und probieren!
Gast
#695098
Hallo! Ich sag gleich das ich von Programmierung kein großen Plan habe, aber mich interessiert eine Sache. Und zwar nachbau einer IP Camera/Videoserver... Es soll so aussehen: (CCD Modul 420Linien = Analog)>(A/D Wandler=?)>(Mikrocontroller=?)>(Ethernet Interface=ENC28J60) Dieses teil sollte über eine IP ansprechbar sein?! Ähnlich wie das hier: http://avr.auctionant.de/avr-ip-webcam/avr-webserver-hardware.html
Gast
#695099
Oder auch statt CCD Modul ein 2-5Mpix CMOS Kamera module???!!!
Hallo, Http_auth werde ich heute noch einbinden. Gruß Ulrich
Gast
#695170
Moin! Zum spielen: http://mikrocontroller.homedns.org (Version 1.04 mit kleinen Änderungen, zB Zustandsanzeige der 3 Lampen und Befehl ? zur Ausgabe der eingebauten Befehle) Gruss, Micha
@Michael Ich probiere gerade mir auch die vorhandenen Befehle auflisten zu lassen, aber ich bekomme nur leere Zeilen :( Was mache ich falsch? Hier der Code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Gruß Thomas
Gast
#695303
Hi! ich habe es so gemacht:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Ich habe die Kommando-Tabelle auch noch mit einem Hilfetext versehen. Mein 4-zeiliges LCD lässt sich fernsteuern :) http://mikrocontroller.homedns.org inkl. Webcam zur Kontrolle (allerdings nicht über den Controller) Gruss, Micha
Gast
#695305
@ Thomas
>Was mache ich falsch?
usart_write() ist eigentlich ein usart_write_P().
Das heisst es schreibt nur Strings aus dem Flash.
Für Strings aus dem RAM musst du wie Michael
usart_write_str() nehmen.
Danke, da suche ich schon seit Stunden im Tutorial etc. und finde nichts was hilft und jetzt klappt es ;)
Gast
#695308
ich such mir auch die Finger wund, steige gerade erst ein in C. Sonst nur ASM :)
Ich hab den Webserver mal aufm Steckbrett getestet. Sieht echt gut aus. Was mir aufgefallen ist: Die drei Ausgangsports toggeln wenn man im Browser auf aktualisieren drückt. Es scheint als würde das passieren, wenn man mal einen Haken gesetzt hatte. Kann man das irgentwie machen, dass die Haken gesetzt bleiben, wenn der Port an ist? Oder ist da noch ein Bug?
Gast
#695543
Hi! Die Led´s toggeln, da der letzt Schaltbefehl in der URL noch enthalten ist. Bei aktualisieren wird er erneut verarbeitet. Gruss, Micha
Gast
#695562
Mir fällt gerade auf, dass bei den Servern die online sind, dass Impressum fehlt :-) Zum Glück sollten sich hierher nur Techniker/Ings/u.ä. verirren. Anwälte verstehen hier wahrscheinlich (hoffentlich) nur Bahnhof. Aber ansonsten ist das eine super Ding. Einfach, preiswert und viel zu sehen.
>inkl. Webcam zur Kontrolle (allerdings nicht über den Controller) > >Gruss, >Micha Hallo, hatte ich zuerst überlesen und mich dann gewundert, dass die Bilder so schnell laden. Aber eine schöne Idee mit der Cam und dem LCD. Ich suche gerade einen Schaltregler für die 3,3V in SMD um den LM317 zu ersetzen. Ich habe noch ein paar ENCs in SMD und überlege eine SMD-Version zu machen. Viel kleiner soll es eigentlich nicht werden. Mal sehen. Zur Zeit streite ich immer noch mit den DS18S20. Sie bremsen einfach meine Anwendung aus. Oder ich lass es einen Tiny machen und verwende den als Slave. Gruß Gerd
@Gast Du solltest dich mal informieren, vielleicht bei einem Fachanwalt, wann eine Impressumspflicht besteht! Man stelle sich vor jedes Gerät welches man über das Web administrieren kann bräuchte ein Impressum (Router, Sensoren etc. ) ;)
@Gerd G. Nimm doch einen SHT11 von Sensirion (evtl. als Sample) und du hast auch die Luftfeuchtigkeit, Code dafür habe ich schon eingebunden und läuft stabil.
Hallo, Hier die Webseite mit HTTP AUTH ich bin aber noch an dem Klartextstring dran, ich hoffe aber das ich heute noch fertig werde. Könnt ja mal testen. USER = admin PASSWORT = uli Gruß Ulrich
Gast
#695658
Hallo, ich bin kein auch Fachanwalt, und wollte das eigentlich nur ein wenig witzig meinen - mir ist klar, dass hier keiner ein Impressum implementiert/implementieren muss. Soweit ich weiß, ist das bei rein privaten Seiten (was hier wohl unterstellt werden kann) wirklich nicht notwendig. Die kleinen Server sind ja auch über eine veränderliche Adresse ansprechbar, von dauerhafter Anwendung (so wird es wohl gefordert für die Impressumspflicht) kann also auch keine Rede sein. Wäre aber witzig, falls es doch jemand implementiert, natürlich mit einem breiten ":-)" an unsere Justiz. Gast.
Thomas Heldt wrote: > @Gerd G. > > Nimm doch einen SHT11 von Sensirion (evtl. als Sample) und du hast auch > die Luftfeuchtigkeit, Code dafür habe ich schon eingebunden und läuft > stabil. Ist schon richtig. Das Teil ist nicht schlecht. Leider habe ich noch keinen. Die Dallas verwende ich, weil ich vier Meßstellen habe und nur die Temparatur brauche. Aber eine Wetterstation mit Innen- und Außenmeßwerten wird auf meiner Liste sein. Funkübertragung natürlich über RFM12, die bieten sich zur Zeit an. Die Werte sollen auf einer Website dargestellt werden und alle halbe Stunde auf SD-Karte gespeichert werden. Wäre natürlich toll, wenn ich die Werte dann als Diagramm anzeigen könnte (Tageswerte).
Gast
#695726
@Uli Hatte heute den ganzen Tag den Webserver laufen, mit 8 LED´s und Display - wassn Spass die Leute da hatten :) Zur Überwachung gabs ne externe Webcam. So konnte man sehn, was man geschaltet hat ... http://mikrocontroller.homedns.org weiter so... Gruss, Micha
@Ulrich Funktioniert super, vielleicht kannst Du die base64.c und base64.h von dieser Seite http://www.episec.com/people/edelkind/c.html oder dieser Seite http://www.adp-gmbh.ch/cpp/common/base64.html gebrauchen um den base64 kodierten String aus Name/Passwort in der http.c zu erzeugen. Dann könnte man in der config.h die beiden Werte im Klartext ablegen. Gruß Thomas
Hallo Michael funktionieren bei deinem Display keine Sonderzeichen, wie "!!!??" ? Gruß Gerd
Hallo, alle Sonderzeichen werden vom Browser codiert in %nnn dieses müsste der AVR-Server erst wieder zurückwandeln damit die entsprechenden Zeichen rauskommen. Kannst dir ja mal die Adresszeile anschauen, was da rauskommt beim senden. @Michael: Die Seite wird bei mir jetzt nicht mehr richtig geladen, hats da was zerbröselt, oder wird grad optimiert ?! mfG
Gast
#695812
Hi! Bei mir spielt alles !? Immer noch Probleme? @Gerd: genau, ich habe mir noch nicht die Mühe gemacht, die Sonderzeichen zu decodieren ;) Gruss, Micha
Also bei mir geht die Webcam nicht :(
@Michael einmal hats geklappt, doch dann kommt nur wieder die Hälfte, und wird mit dem Laden nicht fertig ! so schauts jetzt aus: http://roboter.net-con.net/mc/AVR_Webserver_Fehler.jpg egal ob IE oder FF !
Gast
#695819
schade :( Könnte am Browser oder den Script-Einstellungen liegen!? Zur Entschädigung gibts hier im Minutentakt ein Bild: http://www.vw-bus-t4.de/webcam.jpg Gruss, Micha
Gast
#695821
@tiny80 Ist mir bisher nicht aufgefallen. Vielleicht zuviele Zugriffe im Moment? Ist ja einiges los :) Gruss, Micha
@Michael ich gehe per Proxy ins Inet, kann den aber auch deaktivieren, zum Test, dann gehts. Heute Nachmittag, vom Büro aus, hats auch geklappt, da gehts nur per Proxy ins Inet. Evtl. kannst Du mal probeweise diese Zeile in den Header der Seite einbauen :
1 | |
dann sollte die Seite nicht in 'nem Cache landen. Mir würde nur der richtige Quarz für den ENC abgehen, dann könnte ich auch so einen Server zusammenbauen.
So sieht es bei mir jetzt aus
Hallo, Version 1.0.5 gibts nun auf meiner Homepage. Passwort und Benutzer für HTTP können in der config.h eingerichtet werden. Gruß Ulrich
@Ulrich Funktioniert super, danke ;) @Alle Mein Testserver ist weiterhin unter http://heldt-intern.dyndns.org:81/ zu erreichen, Zugangsdaten sind admin + demo . Angezeigt werden die Temperatur und Luftfeuchte im Webservergehäuse ;)
Gast
#695914
Guten Abend, die aktuelle Version mit "strcasestr" in httpd.c läuft nur mit der aktuellsten Version von WINAVR??
@Steffen Ulrich gibt auf seiner Homepage die Version vom 25.05.2007 als geeignet an, diese dürfte die aktuellste sein und die nutze ich auch. Mit dieser Version funktioniert es auf jeden Fall. Gruß Thomas
Ich weiß nicht warum aber im Firefox 2.0.06.6 unter Suse Linux 10.3 geht die Authentifizierung nicht unter anderen Browsern schon. Weiß nicht warum... wollte es nur mitteilen!
Gast
#695947
Wie siehts denn mit Servo ansteuerungne aus, um eine Webcam zu lenken?
@jonny g. Welcher prozessor M32 oder M644, wenn du einen M32 hast erhöhe mal MTU Size auf 650 in Stack.h Zeile 48 Gruß Ulrich
@ Jonas G. und Ulrich Beim m644 musste ich die MTU Size auf 1500 setzen damit es mit SuSE 10.3 und dem aktuellen Firefox funktioniert, aber wenn man es auf 1500 erhöht geht es perfekt.
@Ulrich Was wurde denn in der V1.06 geändert, bzw. welche Dateien wurden geändert?
Hallo, Da war ein Fehler im Stack mit der RTL8019 Karte! Gruß Ulrich
Gast
#695968
Hallo, ich hatte bisher alles mit einem älteren WinAVR gemacht. Bis v4 ging es auch. Jetzt hab ich halt die neue WinAVR drauf :-) Ich habe nun schon ne Weile auf den Code geschaut, mir ist aber noch nicht ganz klar, wie die httpd.c genau funktioniert. Es gibt ja die zwei großen if-Abfragen: Einmal mit tcp_entry[...].app_status == 1 und einmal mit .app_status > 1 und < 0xfffe. In der oberen (app_status==1) wird ja (nach der authentifizierung) entweder eines der bilder gesendet, die Ausgänge gesetzt oder die index-Seite gesendet. In der unteren if-Abfrage (app_status > 1) ist dann allerdings noch eine schleife von 0 bis 290. In dieser werden auch die Variablen gesetzt. Mir ist jetzt der Zusammenhang nohc nicht ganz klar. Wo werden die Variablen beim ersten Senden der "page1" gesetzt? Die Kommentare haben mir leider noch nicht ganz geholfen. Danke und Gruß Steffen.
@Steffen So wie ich das verstehe wird in der ersten Schleife auf eine GET Anforderung reagiert, also entweder Anforderung der Authentifizierung, Anforderung eines Bildes oder der Seite selber. In der zweiten Schleife werden dann die Daten gesendet, jeweils in Paketen a 290 Byte. @Ulrich Hab ich das korrekt verstanden? Gruß Thomas
Simon K. wrote: > Lars Kessner wrote: >> Ich hab ein Kleinigkeit festgestellt, kommt jemand auf den Webserver >> wenn die Subnetzmaske nicht 255.255.255.0 sondern 255.255.0.0 ist ? >> Ansonsten sehr nette implementation. > > Das hängt von der IP/Subnetzkombination deines PCs ab. Ich empfehle eine > Netzwerklektüre. Hallo Simon, ich glaube nicht das ich eine Netzwerklektüre benötige, dass ist mein tägliches Geschäft und ich habe halt ein Netzwerk laufen was nicht 255.255.255.0 als Subnetzmaske besitzt. Und das Netzwerk funktioniert. Gruß Lars
Gast
#696032
>ich glaube nicht das ich eine Netzwerklektüre benötige Deine Frage lässt aber das Gegenteil vermuten....... Hier mal was als Einstieg http://netzmafia.de/skripten/netze/netz8.html
Gast
#696069
Hallo Thomas, ja, nachdem ich dann mit meinem Notebook abends im Bett den Quelltext noch mal durchgeschaut habe (man wie krank hört sich das jetzt an ;-) denke ich genauso wie du. In der ersten Abfrage wird für die Indexseite bspw. nur der Header gesendet und der Zeiger auf die zu sendenden Werte gesetzt. Erst wenn dann die Bestätigung vom Client kommt, wird dann die ganze Seite gesendet. Eine Frage noch: Warum wird die Schleife 290 mal durchlaufen? Ist das ein maximaler Wert für irgendetwas, oder korrespondiert der mit der Anzahl der Zeichen in der Indexseite? oder... oder... oder...??? Könnte der Wert auch über ein strlen o.ä. aus Page1 ermittelt werden? Gruß Steffen.
@Steffen Warum es genau diese 290 Zeichen sind kann ich auch nicht sagen, bin ich noch nicht hinter gestiegen da müsste Ulrich was zu sagen. @Ulrich Ich habe ein komisches Verhalten bzgl. Browser und Authentifizierung festgestellt: MTU-Wert: 1100-1500 versucht Zugriff per IP-Adresse im Browser oder per Domainnamen (Dyndns) Klappt mit Firefox unter Linux SuSE 10.3, mit dem IE 6 unter Win2000 aber nicht korrekt mit dem Firefox unter Win2000. Zugriff per Domainnamen über Dyndns klappt immer mit allen Browsern. Beim Zugriff über die IP-Adresse kann man sich beim ersten mal anmelden und auch einen Schaltvorgang durchführen (Firefox) wenn man dann noch mal direkt schalten will kommt wieder die Authentifizierung und nichts geht mehr. Refreshed man die Seite aber nach dem ersten Schaltvorgang (Also Datenübergabe in der Url) und schaltet dann wieder geht es auch. Dieses Verhalten tritt bei mir mit verschiedenen MTU-Werten auf und immer mit dem Firefox. Steckt da eine Logik hinter?
Gast
#696145
Hallo, nochmal eine Frage zum Verständnis des Codes: Ich habe im Anhang eine einfache, schnell erzeugte Grafik zum Programmfluss: Habe ich das richtig verstanden, dass, nachdem der eine neue Anfrage gestartet wurde (z.B. Aufruf der Seite oder Anfrage des Clients nach einem Bild) eine neue TCP-Session aufgemacht wird mit tcp_entry[index].app_status==1 (sonst =0)? Wenn diese Nachricht empfangen wurde, wird noch kontrolliert, ob es eine Anfrage nach einem Bild oder der Html-Seite war. Je nachdem, ob die Anfrage ein Bild oder Html war, wird der entsprechende Header sofort! gesendet und der Pointer für die nächsten Daten auf die entsprechende Quelle gelegt (die Html-Seite ist Page1 und die Bilder Page2 bzw. Page3). Das Unterprogramm wird dann beendet. Beim Senden des Headers wird der Statuszähler um eins erhöht (in der Routine tcp_socket_process in der Datei stack.c). Wenn der Client nun die Bestätigung für den Empfang des Headers sendet, wird erneut der Httpd aufgerufen. Nun ist der app_status aber höher (min. 2) und es wird in die zweite if-Abfrage gesprungen. In dieser wird nun auf Basis des gesetzten Pointers die entsprechende Page gesendet. Egal welche Page ausgewählt wird, wird der Inhalt nach den Variablen durchsucht und durch entsprechende Werte ersetzt. Diese werden nun gesendet. Kann es vorkommen, dass die Variablenzeichenkette (VA@xx) auch in Bildern vorhanden ist und dann durch Werte erstetzt wird??? wenn keine Daten mehr vorhanden sind, wird die Session beendet. Bitte um Bestätigung ;-) (oder Korrektur) Gruß Steffen.
@Steffen Meinem Verständnis nach ist es genauso wie du es beschrieben hast, ob die Variablenplatzhalter so in Bilddaten vorkommen kann ich aber nicht sagen, theoretisch dürfte es aber möglich sein was dann wohl zu "Pixelfehlern" führen würde. Aber ich glaube das es passiert ist sehr unwahrscheinlich. Man könnte je nach Headerart die Variablen evtl. nur bei nicht Bilddaten ersetzen lassen, mal sehen was Ulrich sagt.
Der wirkliche Netzwerker wrote: >>ich glaube nicht das ich eine Netzwerklektüre benötige > > Deine Frage lässt aber das Gegenteil vermuten....... > > Hier mal was als Einstieg > > http://netzmafia.de/skripten/netze/netz8.html Hallo, mal andersrum gefragt, hast du den Webserver mal aufgebaut und die Software eingespielt ?
Hallo, Der Wert 290 ist relativ klein gewählt. Um eine hohe Packetanzahl zu erzeugen (TESTZWECKE). Normalerweise müsste die Zahl (MTU_SIZE - TCP_DATA_START) sein. Dann würde ein Frame voll ausgenutzt. Allerdings sollte man berücksichtigen das noch Variablen eingefügt werden können, also MTU_SIZE - TCP_DATA_START - 100. Gruß Ulrich
Hallo, Das Problem mit Firefox und Linux Suse10.3 könnte nun beseitigt sein :-). Ursachenforschung: Das Headerpacket get / vom Client wurde in mehrere Packete aufgeteilt. Firefox hat einen großen Header über 1500Bytes. Problem die Software wird immer komplexer :-) Download der Version 1.0.7 auf meiner HP. Gruß Ulrich
Gast
#696437
Hallo Zur Info. Ich benutze die letzte Version von Ulrich Radig (Danke für den Sourcecode) newStack_1_0_4 und habe bis auf den RJ45 Stecker die gleichen Komponenten. Also ENC28J60 und einen Atmega32. Habe ein Problem mit der MAC Adresse. Wenn ich diese in den ENC schreibe gibt es keinen Fehler. Schaue ich die Einträge im Register an mit usart_write("MAC 0: 0x%1x\r\n", enc28j60Read(MAADR1)); usart_write("MAC 1: 0x%1x\r\n", enc28j60Read(MAADR2)); usart_write("MAC 2: 0x%1x\r\n", enc28j60Read(MAADR3)); usart_write("MAC 3: 0x%1x\r\n", enc28j60Read(MAADR4)); usart_write("MAC 4: 0x%1x\r\n", enc28j60Read(MAADR5)); usart_write("MAC 5: 0x%1x\r\n", enc28j60Read(MAADR6)); ergibt dies als Ausgabe: MAC 0: 0x0 MAC 1: 0x0 MAC 2: 0x0 MAC 3: 0x0 MAC 4: 0x5f MAC 5: 0x0 Dass heisst: Nur der letzte Eintrag wurde im Speicher abgelegt und zwar an der ersten Stelle. Alle anderen Einträge sind 0x00. Es sieht so aus, als würde sich die Adresse nicht ändern und dauernd der neue Eintrag den vorhergehenden löscht. Mache ich einen Überlegungsfehler, stimmt etwas im Quellcode nicht oder könnte es sein, dass mein ENC den Geist aufgegeben hat(Wahrscheinlich nicht, da ich den letzten Wert auslesen kann). Ein anderes Problem ist mit der ARP Tabelle. Diese ist immer 0. Die sollte doch automatisch gefüllt werden oder liege ich da falsch??? Vielen Dank für die Hilfe Gruss
Hallo, Jetzt klappt es auch mit Opera und MDA II. Evt. schließe ich das an mein Garagentor an ;-) Gruß Ulrich
@Ulrich Entweder habe ich nicht alle Änderungen aus der 1.07 in die 1.06 übernommen oder es tritt ein neues Problem mit dem Firefox auf: Wenn ich per IP-Adresse zugreife lädt der Browser unter Win2000 endlos obwohl die Seite komplett ist. Mit IE und wenn ich auf den Dyndns Domainnamen zugreife funktioniert es. Unter Linux ist die Seite total kaputt :( Kann da mit den Variablen zu tun haben, ich nutze andere als du, z.B. %LED1 und ersetze diese mit folgendem Code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
@Ulrich Alles klar habe es gelöst ;) ARP Cache geleert und MTU-Wert angepasst. Jetzt klappt es mit allen Browsern unter Linux und Windows. Noch eine Frage, ich habe FTP soweit das ich mich mit WS-FTP am Server anmelden kann, alle Anfragen vom Client werden beantwortet. Aber jetzt will der Client ja einen Port <>21 haben für die Datenkommunikation, wie kann ich jetzt einen neuen Port für die aktuelle Sitzung öffnen und z.B. ein Dummy Directory Listing an den FTP-Client senden? Im RFC ist die Antwort auf LIST nicht deklariert und wie ich das mit den beiden Ports mache verstehe ich leider noch nicht. Ich war schon froh das ich es hinbekommen habe das der Server auf die FTP Anfragen antwortet und die Verbindung auf- und abbauen kann.
@Ulrich Bei der 1.07 (Original von dir) und auch bei meiner geänderten geht HTTP-AUTH nicht mehr, in der config.h ist eine 1 eingetragen aber die Seite kann ohne Abfrage aufgerufen werden :(
Hallo, Lese dir mal die neue Config duch, und du wirst feststellen eine 1 schaltet Auth ab. Welche Werte wurden geändert? Gruß Ulrich
@Ulrich Alles klar hatte meine alte config.h genommen :( Jetzt teste ich verschiedene MTU Werte etc. weil es je nach länge der URL mal funktioniert und mal nicht. Aber ich bekomme das schon hin nur mit dem FTP stehe ich auf dem Schlauch.
Gast
#696615
@ Thomas Heldt suche mal nach "passive ftp". Ist einfacher zu verstehen.
@Werner B. Danke, habe ich schon gelesen, werden aber auch zwei Ports genutzt. Aber ich muß hier erstmal die aktuelle Version stabil zum laufen bekommen bevor ich weiter um FTP kümmern kann. @Ulrich Kann es sein das die V1.07 extrem abhängig von der URL, Länge der Webseite etc. ist. Mal lädt die Seite mit einem MTU-Wert, dann wertet sie aber die Parameter der GET Anweisung nicht korrekt aus, dann wieder klappt alles mit der Auswertung dafür lädt die Seite im Browser endlos. Egal ob mit deiner Originalversion als auch mit meiner bisher eigentlich stabilen Version. Hast Du da noch einen Tipp?
Hallo, Die 1.0.8 jetzt nicht mehr :-) (hoffe ich) Gruß Ulrich
@Ulrich Läuft wie geölt auf Win2000 mit IE6 und Firefox und auf SuSE 10.3 mit Firefox auch ;) Kannst Du mir vielleicht noch einen Tipp geben wie ich aus meiner ftpd.c heraus einen zweiten Port (z.B. 999) gebunden an die gleiche MAC/IP öffnen kann als Datenport für FTP? Müsste das dann eine eigene Anwendung mit eigenem Port darstellen, glaube doch schon das ich beim Start den Port als Anwenung eintragen und nach der Verbindung wieder aus der Anwendungsliste löschen muss, korrekt gedacht?
Gast
#696792
@ Ulrich
Mach aus den
const char http_header1[]={"HTTP/1.0 .....
doch mal ein
PROGMEM char http_header1[]={"HTTP/1.0 .....
Dann ersetzt du
memmove(start_data,http_header...
durch
memcpy_P(start_data,http_header....
Schon hat man fast 300 Byte RAM mehr zur Verfügung.
Und schmeiß Page2 aus httpd.c raus in eine Headerdatei.
Ist ja lästig da dauernd über ein 1000 Zeilen Hex Listing
scrollen zu müssen wenn man mal zwei Zeilen ändern möchte.
Hallo, Hier die neuste Version! Gruß Ulrich
Hallo, So die letzte Version für heute! Mit richtiger Html Header End Auswertung! Guss Ulrich
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.



