Forum: Mikrocontroller und Digitale Elektronik AVR Webserver 1.40 E-Mails versenden


von Florian (Gast)


Lesenswert?

Hallo,

ich habe einen AVR Webserver mit einem ATMEGA644 aufgebaut. Er funst 
auch soweit. Als nächstes wollte ich den Mailversand testen. Ich habe 
auf der SD- Card meinen Username und Passwort eingetragen. 
Seltsamerweise bekomme ich aber die Initialisierungswerte aus der 
"sendmail.c" (ingo, test) angezeigt. Was mache ich falsch? Warum 
übernimmt er die Daten von der SD-Karte nicht. Die IP und anderes 
übernimmt er???
Hat jemand diesen Fall schon mal gehabt. In der Doku kann ich dazu 
nichts finden.

Auszug:
...
SMTP: 217.72.197.145 (freemail.de)
---
NTP Enabled=NO
---
Mail-Trigger Enabled=YES
SMTP AUTH LOGIN=YES
SMTP User=ingo
SMTP Pass=test
...

Gruß
Florian

von Steffen (Gast)


Lesenswert?

Hmm...ich lese hier zwar öfter mit, aber: Welchen Server verwendest du? 
Dann kann dir vielleicht auch jemand helfen.

von Florian (Gast)


Lesenswert?

Hallo Steffen,

wie im Betreff angegeben.
Es ist der Webserver von "www.mikrocontroller.com", Die Version mit der 
Netzwerkarte Huckepack. Mit einem ATMEGA 644, Software V1.40

Gruß
Florian

von holger (Gast)


Lesenswert?

>#SMTP_USER=test
>#SMTP_PASS=test

Da musst du das # wegmachen. Und kein Leerzeichen nach = .

von Florian (Gast)


Lesenswert?

OH NEIN vordenkopfhau
Natürlich!!!
Das hab' ich ja total übersehen. Und ich such wie so ein doofer. Argh.
Naja Tomaten auf den Augen eben.

Danke vielmals und Gruß
Florian

von Florian (Gast)


Lesenswert?

ich noch mal ;-)

ich bekomme jetzt zwar das Passwort angezeigt. Der Username bleibt aber 
frei.
Das # ist weg und auch kein Leerzeichen mach dem =

Wenn ich trotzdem eine Mail manuell triggern will sagt er mir "Sorry, no 
MAC for SMTP"
Ich habe die IP (SMTP: 217.72.197.145) für web.de rausgesucht. Auch 
(SMTP: 217.72.192.157) für den smtp server klappt nicht.
Die IP ist 3stellig eingegeben.

Gruß
Florian

von holger (Gast)


Lesenswert?

>ich bekomme jetzt zwar das Passwort angezeigt. Der Username bleibt aber
>frei.

Das ist merkwürdig. Trag user,pass doch einfach mal in sendmail.c ein.
In server.cfg dann wieder mit # deaktivieren. Neu compilieren
und brennen nicht vergessen.

>Wenn ich trotzdem eine Mail manuell triggern will sagt er mir "Sorry, no
>MAC for SMTP"

Ist die Router Ip richtig eingetragen ?

>(SMTP: 217.72.192.157) für den smtp server klappt nicht.
>Die IP ist 3stellig eingegeben.

Naja, sieht hier nicht so aus.

von Florian (Gast)


Lesenswert?

Also jetzt noch den Compiler installieren und damit kämpfen wollte ich 
mir eigentlich ersparen.

Die Router IP stimmt definitiv.

die IP's sind 3stellig eingetragen. (SMTP: 217.72.192.157) dies ist aus 
dem Fenster von Hyper Terminal kopiert. Dort unterschlägt er die 
führenden Nullen.

Kann mir jemand sagen ob die IP für den smpt server von web.de richtig 
ist.
SMTP: 217.72.192.157

Gruß
Florian

von Peter B. (pbuenger)


Lesenswert?

> Kann mir jemand sagen ob die IP für den smpt server von web.de richtig ist.
> SMTP: 217.72.192.157

ping ihn doch einfach an, dann siehte es doch.

Peter

von gast (Gast)


Lesenswert?

nslookup meldet bei mir:

web.de: 217.72.195.42
smtp.web.de: 217.72.192.157

mfg
gast

von Florian (Gast)


Lesenswert?

Hallo,

erst mal vielen Dank für die IP-Tipps samt Bestätigung.
Ich habe mal noch ein bisschen rumprobiert.
Es scheint so als ob ich nicht mehr als 4 Zeichen beim Username eingeben 
kann. Ab 4 Buchstaben macht er Unsinn. Lässt z.b. den Username weg. Oder 
schreibt das Ende des Passwortes in den Username.

So gehts noch.

Mail-Trigger Enabled=YES
SMTP AUTH LOGIN=YES
SMTP User=abcd
SMTP Pass=fghi

Sobald ich aber mehr Zeichen als "abcd" schreibe geht er auf den Bart.
Kann das an meiner SD Karte liegen? Wobei laut Foto ist es auch eine 
512MB und sieht aus wie die von der Doku (mikrocontroller.com)

Ich würde mich über Tipps sehr freuen. Es geht einfach nicht voran :-(

Gruß
Florian

von holger (Gast)


Lesenswert?

Das Problem liegt in sendmail.c

        char SMTP_Username[] = "ingo\0";
        char SMTP_Password[] = "test\0";

Die Arrays erlauben nur 4 Zeichen + \0.
Wenn du mehr Zeichen in server.cfg einträgst
gibt es einen Buffer Overrun und andere Speicherbereiche
werden zerstört.

Bei den Arrays hätte er die Größe mit angeben sollen:

 char SMTP_Username[9] = "ingo\0";
 char SMTP_Password[9] = "test\0";

Ohne neu zu compilieren geht es nicht.

Gruß
 holger

von Florian (Gast)


Lesenswert?

Schade :-(

Aber danke für den Tipp.

Gruß
Florian

von Florian (Gast)


Lesenswert?

Hallo,

ich habe mich jetzt durchgerungen den neusten WinAVR-20071221 zu 
installieren. Wie zu erwarten war Milliarden an Warnungen und Fehlern 
:-( HEUL

Hat sich jemand schon mal mit den Änderungen befasst die vorgenommen 
werden müssen?

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Compiling: mmc.c
avr-gcc -c -mmcu=atmega644 -I. -g -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=mmc.lst  -std=gnu99 mmc.c -o mmc.o
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:43:1: warning: "SPCR" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:267:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:44:1: warning: "SPE" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:269:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:45:1: warning: "MSTR" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:271:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:46:1: warning: "SPSR" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:277:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:47:1: warning: "SPDR" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:282:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:48:1: warning: "SPIF" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:278:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:49:1: warning: "SPR0" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:275:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:50:1: warning: "SPR1" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:274:1: warning: this 
is the location of the previous definition
In file included from main.h:34,
                 from mmc.c:29:
mmc.h:51:1: warning: "SPI2X" redefined
In file included from 
c:/programme/winavr/bin/../avr/include/avr/iom644.h:38,
                 from 
c:/programme/winavr/bin/../avr/include/avr/io.h:155,
                 from main.h:15,
                 from mmc.c:29:
c:/programme/winavr/bin/../avr/include/avr/iomxx4.h:280:1: warning: this 
is the location of the previous definition
mmc.c: In function 'mmc_init':
mmc.c:54: error: 'SPCR0' undeclared (first use in this function)
mmc.c:54: error: (Each undeclared identifier is reported only once
mmc.c:54: error: for each function it appears in.)
mmc.c:54: error: 'SPE0' undeclared (first use in this function)
mmc.c:54: error: 'MSTR0' undeclared (fir
mmc.c:54: error: 'SPR00' undeclared (first use in this function)st use 
in this function)
mmc.c:54: error: 'SPR01' undeclared (first use in this function)
mmc.c:55: error: 'SPSR0' undeclared (first use in this function)
mmc.c:55: error: 'SPI2X0' undeclared (first use in this function)
mmc.c: At top level:
mmc.c:137: warning: C99 inline functions are not supported; using GNU89
mmc.c:137: warning: to disable this warning use -fgnu89-inline or the 
gnu_inline function attribute
mmc.c: In function 'Read_Byte_MMC':
mmc.c:140: error: 'SPDR0' undeclared (first use in this function)
mmc.c:141: error: 'SPSR0' undeclared (first use in this function)
mmc.c:141: error: 'SPIF0' undeclared (first use in this function)
mmc.c: At top level:
mmc.c:167: warning: C99 inline functions are not supported; using GNU89
mmc.c: In function 'Write_Byte_MMC':
mmc.c:169: error: 'SPDR0' undeclared (first use in this function)
mmc.c:170: error: 'SPSR0' undeclared (first use in this function)
mmc.c:170: error: 'SPIF0' undeclared (first use in this function)
make.exe: *** [mmc.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

von holger (Gast)


Lesenswert?

Mach in mmc.h mal folgendes:

/*
  #define SPCR  SPCR0
  #define SPE   SPE0
  #define MSTR  MSTR0
  #define SPSR  SPSR0
  #define SPDR  SPDR0
  #define SPIF  SPIF0
  #define SPR0  SPR00
  #define SPR1  SPR01
  #define SPI2X SPI2X0
*/

von Florian (Gast)


Lesenswert?

Hallo Holger,

vielen Danke für Deine Tipps. Es klappt leider trotzdem noch nicht. In 
der mmc.h stehen diese defines schon drinn. Da das Programm für den 
ATmega644 sein soll gehe ich davon aus das ich das dem Compiler nicht 
noch mal extra sagen muss.

Gruß
Florian

Quellcode aus der mmc.h

#if defined (_AVR_ATmega644_)
#define SPI_DI  6    //Port Pin an dem Data Output der MMC/SD-Karte 
angeschlossen ist
#define SPI_DO  5    //Port Pin an dem Data Input der MMC/SD-Karte 
angeschlossen ist
#define SPI_Clock 7    //Port Pin an dem die Clock der MMC/SD-Karte 
angeschlossen ist (clk)
#define MMC_Chip_Select 3    //Port Pin an dem Chip Select der 
MMC/SD-Karte angeschlossen ist
#define SPI_SS  4    //Nicht Benutz muß aber definiert werden

  #define SPCR  SPCR0
  #define SPE   SPE0
  #define MSTR  MSTR0
  #define SPSR  SPSR0
  #define SPDR  SPDR0
  #define SPIF  SPIF0
  #define SPR0  SPR00
  #define SPR1  SPR01
  #define SPI2X SPI2X0

#endif

von Rolf Magnus (Gast)


Lesenswert?

> Es klappt leider trotzdem noch nicht. In der mmc.h stehen diese defines
> schon drinn.

Ja, eben. Das ist das Problem. Deshalb sollst du sie auskommentieren.

> Da das Programm für den ATmega644 sein soll gehe ich davon aus das ich
> das dem Compiler nicht noch mal extra sagen muss.

Doch, mußt du. Woher soll der Compiler das sonst wissen? Allerdings 
sieht man an der Kommandozeile, daß du es dem Compiler schon sagst:

> avr-gcc -c -mmcu=atmega644 -I. -g -Os -funsigned-char
             ^^^^^^^^^^^^^^^

von Florian (Gast)


Lesenswert?

@  Rolf Magnus

Das mit dem Auskommentieren hatte ich nicht verstanden. Die /**/ hatte 
ich fehlinterpretiert.

> Da das Programm für den ATmega644 sein soll gehe ich davon aus das ich
> das dem Compiler nicht noch mal extra sagen muss.

Mir ist schon klar das der Compiler wissen muss mit welchen Prozessor er 
es zu tun hat. Nur ist der Quellcode mit makefile schon für den 
ATMEGA644 vorbereitet gewesen. Das meinte ich.

Gruß
Florian

von Florian (Gast)


Lesenswert?

So! kompiliert habe ich es jetzt bekommen. Vielen Dank (holger, Rolf). 
Es sind aber noch massig Warnungen aufgelaufen aber das hex-File lies 
sich brennen. Das char Array ist jetzt groß genug. Schade nur das ich 
immer noch keine Mails versenden kann da ich die folgende Meldung 
bekomme:

MailTrigger
Sorry, no MAC for SMTP

IP=192.168.006.101 (passt, html seite kann ich aufrufen)
ROUTER=192.168.006.001 (passt, kann ich anpingen)
SMTP=217.072.192.157 (smpt.web.de)

So wie ich das Verstanden habe muss ich doch nicht die original MAC der 
Karte eingeben?! Oder täusche ich mich da?

Das Ding macht mich fertig :-)

Florian

von holger (Gast)


Lesenswert?

>MailTrigger
>Sorry, no MAC for SMTP

Gemeint ist die MAC vom SMTP. Die konnte nicht ermittelt werden.
Da gabs halt keine sofortige Verbindung zum SMTP (Timeout),
der Router lässt dich nicht durch (IP vom Webserver nicht freigegeben
im Router) oder sonst was. Ein paar Wiederholungsversuche den SMTP
zu kontaktieren könnten nicht schaden. Wie das im Code geht kann
ich dir aber nicht sagen :(

>So wie ich das Verstanden habe muss ich doch nicht die original MAC der
>Karte eingeben?! Oder täusche ich mich da?

Nein. Musst du nicht. Siehe oben.

von Florian (Gast)


Lesenswert?

Hallo Holger,

vielen Dank für Deine geduldige Hilfe!

>IP vom Webserver nicht freigegeben im Router

Doch das passt. Habe ich getestet.
Ich habe noch einiges ausprobiert, scheitere aber immer an der NO MAC 
Geschichte. Schade. Aber ich habe trotzdem viel gelernt die letzten 
Tage. War also nicht umsonst. Vielleicht bekomme ich es ja doch noch 
irgendwie hingebogen. Aufgeben können andere :-)

Gruß
Florian

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.