AVR Webserver 1.40 E-Mails versenden

Gast #759325
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
Gast #759480
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
Gast #759498
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.
Gast #759619
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
Gast #760216
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
Gast #760243
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
Gast #760485
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
Gast #760510
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
*/
Gast #760591
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
Gast #760604
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
             ^^^^^^^^^^^^^^^
Gast #760761
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
Gast #761385
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
Gast #761397
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.
Gast #761427
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren