Go Down

Topic: Ethernet lesen mit mehr Geschwindigkeit für E-Mail Server... jetzt 7kb/s :) (Read 2597 times) previous topic - next topic

sven1977

Hey,
bin ja gerade dabei einen E-Mail Server zu schreiben. Ich bin gerade beim SMTP und soweit funktioniert auch alles.
Nun wollte ich mal die Geschwindigkeit messen und habe nen Anhang von 100kb mitgeschickt.

Somit kam ich auf ca. 4,5kb/s und finde das schon sehr langsam :(

         while (aa !=5){
         while (client.available() < 1){
         }
         zeichen=client.read();
         ...
         }
         }

Ich habe als Test das client.read(); ohne eine weitere große Bremse in der Scheife gemacht.
Also zeichen wird erstmal nicht bearbeitet oder so.

Das Problem kenne ich auch von Bascom (AVR Basic) und habe da die möglichkeit z.b. client.read(512);
zu machen. Also nicht Byte für Byte, sondern gleich 512 Byte vom Ethernet zu laden.

Wie geht das mit Arduino ?

sven1977

ok, hat sich erledigt :D

Habs auf ca. 7kb/s geschafft. Ich denke das ich das noch etwas optimieren kann. Aber ich muss mal sehen wie
ich den Buffer vom Ethernetshild voll ausreizen kann.

uint8_t buff[1536];
            if (client.available() > 1536){
            client.read(buff,1536);
            myFile.write(buff,1536);
          }
          else
          {
           byte für byte ;)

uint8_t kannte ich nicht....

Wenn ich den Buffer auf 2 oder 3kb bekomme, wird es bestimmt etwas schneller :D
Aber 7bk/s reicht eigendlich aus. Die meissten E-Mails sind nicht mehr als 70kb groß.
Und wenn mal eine 2MB ist, dann dauert es halt ein wenig. Aber soweit finktioniert's

Manawyrm

MOMENT - Du schreibst einen MAIL SERVER?
Auf einem AVR?

DAS ist Hardcore.

mkl0815

Hmm, welchen Arduino verwendest Du denn? Der Uno hat nur 2kB RAM und der Mega hat 8kB.

sven1977

Ich mach das mit dem Arduino Mega 2560. Geplant ist später dann noch ein 3,2" TFT mit drann zu machen.

Im Moment ist das SMTP fast fertig. Das ganze geht natürlich nur mit einer SD-Karte.
Es sind auch mehrere E-Mail Accounts möglich. HTTP und POP3 kommen auch dazu...

Wenn ihr Interesse hab, Poste ich das ganze natürlich hier :)


Ich plane noch eine Weboberfläche zu machen für das Administrieren....

uwefed

Beim ATmega1280 bzw 2560 kann man das interne RAM mit einem externen RAMbaustein erweitern und der Controller behandelt es als sei es intern:
http://ruggedcircuits.com/html/megaram.html
http://hackaday.com/2011/09/05/upgrading-ram-in-an-arduino-mega/
http://arduino.cc/forum/index.php/topic,124136.0.html

Grüße Uwe

sven1977

Cool,gut zu wissen. Wusste das mit dem externen Ram
nicht :)

Ich glaube aber, dass der Ram für mein Mailserver
ausreichen wird. Das läuft halt überwiegend auf der
SD Karte :)

Die ankommenden Mails werden gleich auf der
SD Karte gespeichert.

:)

mkl0815


mde110


...Geplant ist später dann noch ein 3,2" TFT mit drann zu machen...


Könntest dich dann mal bei mir melden. Habe schon eine große Lib für TFT und Touch-Controls zusammen.

sven1977

Für das Display wollte ich die UTFT nutzen. Ist deine Lib besser ?

Ich hoffe ja nur, dass das RAM dafür noch reicht.
Im Moment fummel ich noch mit dem SMTP rum.
Es soll ja auch ein Relay Server eingetragen werden können.

Denn mit der IP vom Provider werden wohl mehr als die Hälfte der Mails
geblockt.


mde110

Meine Lib baut auf die UTFT auf.
Es ist sozusagen der Teil der fehlt ^^.

Buttons, Optionboxes, Checkboxes und Nummerneingabefelder werden durch die Lib abgebildet.

Quote
Denn mit der IP vom Provider werden wohl mehr als die Hälfte der Mails
geblockt.

Das ist verständlich. Du wirst wahrscheinlich auch kein Relay finden, mit dem es besser geht.

Die andere Möglichkeit wäre einen smtp eintragen zu können...

sven1977

Hey, das ist cool...

Hast du da auch eine Eingabe mit drin z.b. ein Textfeld ?

Ich hab ne Domain bei Selfhost und da ist auch nen Relay Service dabei. Aber
wer will kann, da auch seine GMX E-Mail oder so eintragen.
Das funktionerte damal mal mit Arcor :)

Das muss man dann testen, denn mit Hotmail geht das z.b. nicht.



mde110


sven1977

Ach, das dauert noch etwas. Ich hab leider nicht die Zeit durchgehend mich damit zu beschäftigen.
Ausserdem muss ich oft erstmal schauen wie das funktioniert. Ich bin gerade von Bascom
auf Arduino gekommen und muss mich da auch durchfummeln.

Die ganze Variablen dingszeugs ist auch etwas anders :D

Ankommende Mails werde schon zertifiziert und auf der SDkarte für den jeweiligen
Account gespeichert.

Mir fallen nur immer wieder verbesserungen ein die ich dann testen muss. Ich beschränke mich
auch erstmal nur auf den Standard. Also HELP funktion bau ich erstmal nicht ein. Die Mailserver
benutzen den sowieso nicht.

Und wenn dann soweit alles fertig ist, dann sag ich auf jeden Fall bescheid. Ich hoffe nur, das
der Ram dann ausreicht :D

mde110

Ja Zeitprobleme... Da kann ich dir dann mit dem TFT ein ganzes Stück abnehmen.

Das mit dem RAM ist schon ein Problem. Ich versuche zwar das meiste in den Flash zu bekommen, aber so ein Menü im TFT darzustellen kostet halt echt auch ein wenig an RAM.
Wieviel hast denn du frei? Verwendest du MemoryFree?
Welches Ethernet shield verwendest du?

Go Up