Email bei Stromausfall

Hallo,

Habe mal eine Frage, ist es möglich mit einem Nano und einer Ethernetschnittstelle (ECN28J6) von HanRun
eine Email mit vorgefertigtem Text zu versenden?

Zum besseren Verständnis hier das angestrebte Ziel:

Xanto USV versorgt Fritzbox und Switch im Notfall mit Strom.

Es hängt aber kein PC an der USV, sonst wäre es einfach mit DataWatch-Software zu machen.
Vorhanden ist an der USV eine RS232 Schnittstelle.

Die Belegung der Kabelanschlussstifte für die RS-232-Kommunikationsschnittstelle
ist in Abbildung 22 dargestellt, die Funktionen der
Anschlussstifte entnehmen Sie Tabelle 7: Anschlussstiftbelegung der RS232
Abbildung 22: RS-232-Schnittstelle (DB-9-Stecker)
Pin Funktion
1 Nicht verwendet
2 Daten senden (TxD)
3 Daten empfangen (RxD)
4 Nicht verwendet
5 Masse
6, 7, 8, 9 Nicht verwendet

nun müsste doch eigentlich wenn der Strom weg ist und die USV aus den Batterien speist ein Signal über die RS 232 ausgegeben werden, oder?

kann man das zum ansteuern das NANO verwenden um einen festen Text (z.B. Stromausfall Gerätehaus) an eine festgelegte Emailadresse zu senden (Fritzbox wird ja noch per Notstrom von der USV betrieben). Da ich lieber kabelgebunden arbeiten möchte, eben mit der Ethernetschnittstelle an den Switch ran stöpseln.

Oder gibts eine einfachere Lösung?

Ist erst mein zweites Arduinoprojekt, also erkläre für Newbies.

Thx

Hi

Wenn diese RS232 an der USV hängt, wäre dazu die Anleitung wohl die erste Anlaufstelle - solange nicht klar ist, was diese Schnittstelle bietet, also, ob Da überhaupt was RAUS kommt, worauf der Nano reagieren könnte.

Auch empfinde ich Das als Erstlings-Projekt schon etwas arg groß - nur mit C&P wirst Du keine Erfolge erzielen und die ganze Sache hat in zwei Minuten ihren Reiz verloren.

Man KANN mit einem heutigen PC auch so Dinge wie Facebook, eBay und Co programmieren, warum versucht sich daran niemand sondern will mit einem Arduino unbedingt einen Mars-Roboter bauen?

MfG

Die RE-232-ist in der USV verbaut und in der Anleitung ist nur die PIN Belegung beschrieben.

Ist das wirklich soo mega aufwendig?

Hi

Da Du wohl der Einzige bist, Der aktiv an der USV messen kann, wirst Du die Funktionalität dieser Schnittstelle herausfinden müssen.
Mit etwas Glück ist das Teil geschwätzig und sabbelt die ganze Zeit die akut anliegenden Werte raus - mit einem Terminalprogramm (z.B. hterm) kann man versuchen, die einzelnen Einstellungen durchzuprobieren, ob irgendwo was Sinnvolles raus kommt.
Vll. zuvor mit einem Oszi geschaut, OB überhaupt Pegelwechsel vorhanden sind - 'original' RS232 läuft mit +/-12V, der Arduino mag aber nur TTL-Pegel.
Wenn Du noch einen PC mit COM-Schnittstelle hast (wird dann wohl ein betagteres Modell sein :wink: ), kannst Du Da direkt dran 'sniffen'.

Wenn die Daten der Schnittstelle bekannt sind, kann man den µC darauf hetzen - wahrscheinlich brauchst Du dafür einen Umsetzer, ist ein IC, Der zwischen die +/-12V und TTL-Seite des Arduino geschaltet wird.

MfG

Hallo,

hatte da nicht vor einiger Zeit schon mal jemand das Problem eine RS232 am UNO zum laufen zu bekommen. Da stimmte anscheinend was mit den Peglen nicht, bzw. eine Leitung war invertiert ??

Die Pegel kannst Du sicher mal mal messen. 5V oder was ?? Der Nano hat sicher alles 3,3V bin aber nicht sicher. Schittstellen Parameter solltest Du wissen Boud,Parität, Start, Stopbit

Dann benötigst Du sicher sowas wie eine zweite Schnittstelle ( Soft) damit Du alles was von der USV kommt erst mal auf dem IDE Monitor anzeigen kannst. Alternativ ohne Nano benutzt Du einen PC mit einer Terminal Software.

Wenn Du rausbekommen hast was die USV sendet wenn der Strom weg geht, kannst Du daran gehen dein Programm zu realisieren. Ich hab gelesen das E-mail versenden nun auch nicht gerade die einfachste Aufgabe ist. Scheint mit dem heute meist verwendeten gesicherten SMTP Protokoll der E-mail Server (Provider) zu tun zu haben.

Google mal nach "Aruino Email versenden" ob du da was findest.

Heinz

Warum kontrollierst Du nicht einfach die 5V an einem 2. 5V-Netzteil, welches nicht an der USV angeschlossen ist.

Wie willst Du die SMS verschicken?

Grüße Uwe

Hallo

@ Uwe , pohhh das wars , manchmal steht man im Wald und sieht die Bäume nicht. Warum kompliziert wenns auch einfach geht. :wink:

Hi

Eigentlich würde ein Netzteil und ein entsprechend großer Puffer-Elko (oder Doppleschicht) reichen - ein Pin misst, ob das Netzteil ‘no da’ ist - wenn nicht, wird die Mail versendet und auf Spannungswiederkehr gewartet - schadet hier nicht, wenn der Puffer das System länger am Leben hält, als die Mail benötigt.

MfG

@Uwe: Für diesen anderen Blickwinkel hast Du Dir ein Plus verdient!

uwefed:
Warum kontrollierst Du nicht einfach die 5V an einem 2. 5V-Netzteil, welches nicht an der USV angeschlossen ist.

Wie willst Du die SMS verschicken?

Grüße Uwe

hä wenn ich an einem 2,5 V Netzteil kontrolliere ich ob 5 V anliegen??? absurd!

Aber der Denkanstoss ist gut ein Netzteil an die Normale Netzleitung und wenn da Strom weg = fehlendes Signal auf analogem Eingang des Nano.

der Nano selbst müsste dann über die USV bestromt werden.

SMS will ich keine senden, sondern E-Mail.

Nun habe ich hier im Forum eben auch gelesen das SMTP nur noch verschlüsselt angenommen wird, da wird unser Provider (Strato) wohl keine Ausnahme machen, gibt es dafür schon eine Lösung?

Uwe hat nichts von einem 2**,**5V Netzteil geschrieben! Es ist ein zweites Netzteil gemeint. Dieses steckt in einem nicht Batteriegepufferten Stromkreis. Fällt der Strom dort aus, geht der Pegel auf 0. Dazu einfach die 5V an einen Pin des Arduinos, und Gnd mit Gnd aus dem Arduino verbinden.

Am besten ein kleines Netzteil verwenden, was entsprechend nicht zu lange gepuffert wird, oder besser noch ein Koppelrelais mit 230VAC Spulenspannung und einem Wechslerkontakt.

blackscorpion371:
hä wenn ich an einem 2,5 V Netzteil kontrolliere ich ob 5 V anliegen??? absurd!

Nicht an einen 2,5 V Netzteil, sondern an einem ZWEITEN 5V Netzteil.

Ja, vieleicht hätte ich die Zahlen ausschreiben sollen;

Ich meinte ein zweites Fünf-Volt-Netzteil.

oder besser noch ein Koppelrelais mit 230VAC Spulenspannung und einem Wechslerkontakt

Funktioniert auch aber ein Netzteil steckt man einfach in eine Steckdose und hat nichts mit 230V Verdrahtung des Relais zu tun.

Grüße Uwe

uwefed:
Funktioniert auch aber ein Netzteil steckt man einfach in eine Steckdose und hat nichts mit 230V Verdrahtung des Relais zu tun.

Richtig, sollte nur wenn möglich für kleine Kapazitäten ausgelegt sein. Gerne sind in denen große Pufferelkos noch verbaut. Dann kann es sich schon etwas verzögern. Sollte aber in diesem Anwendungsfall keine Rolle spielen :wink:

Finde ich auch. Auch wenn die Email 2-3 Sekunden später startet ist es kein Problem es sei denn man will auch kurzzeitige Ausfälle (Größenordnung einige wenige Halbwellen) detektieren. In diesem Fall braucht es einen Trafo mit Wechselspannungsausgang (4-12V mit Brückengleichrichter und Spannngsteiler) und eine Kontrolle für jede Halbwelle.

Grüße Uwe

Das mit der Email verschicken habe ich noch nicht so richtig verstanden?

Strato nimmt doch glaube ich nur noch verschlüsselte Emails an und wie geschrieben wurde, kann der Nano nicht verschlüsseln?

Kann er nicht.

Gruß Tommy

So hat bisl gedauert, aber das Email versenden habe ich wie folgt gelöst:

#include <SPI.h>
#include <Ethernet.h>
 
// this must be unique
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };  
// change network settings to yours
IPAddress ip( 192, 168, 178, 222 );    
IPAddress gateway( 192, 168, 178, 1 );
IPAddress subnet( 255, 255, 255, 0 );
 
char server[] = "mail.smtp2go.com";
int port = 2525;
 
EthernetClient client;
 
void setup()
{
  Serial.begin(115200);
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);
  Ethernet.begin(mac, ip, gateway, gateway, subnet);
  delay(2000);
  Serial.println(F("Ready. Press 'e' to send."));
}
 
void loop()
{
  byte inChar;
 
  inChar = Serial.read();
 
  if(inChar == 'e')
  {
      if(sendEmail()) Serial.println(F("Email sent"));
      else Serial.println(F("Email failed"));
  }
}
 
byte sendEmail()
{
  byte thisByte = 0;
  byte respCode;
 
  if(client.connect(server,port) == 1) {
    Serial.println(F("connected"));
  } else {
    Serial.println(F("connection failed"));
    return 0;
  }
 
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending hello"));
// replace 1.2.3.4 with your Arduino's ip
  client.println("EHLO 1.2.3.4");
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending auth login"));
  client.println("auth login");
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending User"));
// Change to your base64 encoded user
  client.println("xxxxxxx");
 
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending Password"));
// change to your base64 encoded password
  client.println("xxxxxxxxxxxxxxxxxxxxxxxxxxx");
 
  if(!eRcv()) return 0;
 
// change to your email address (sender)
  Serial.println(F("Sending From"));
  client.println("MAIL From: <usv@ff-oberroning.de>");
  if(!eRcv()) return 0;
 
// change to recipient address
  Serial.println(F("Sending To"));
  client.println("RCPT To: <usv@ff-oberroning.de>");
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending DATA"));
  client.println("DATA");
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending email"));
 
// change to recipient address
  client.println("To: You <usv@ff-oberroning.de>");
 
// change to your address
  client.println("From: USV Alarmserver <usv@ff-oberroning.de>");
 
  client.println("Subject: Stromausfall im Gerätehaus - USV Betrieb\r\n");
 
  client.println("Stromausfall im Gerätehaus - USV Betrieb!");
 
  client.println(".");
 
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending QUIT"));
  client.println("QUIT");
  if(!eRcv()) return 0;
 
  client.stop();
 
  Serial.println(F("disconnected"));
 
  return 1;
}
 
byte eRcv()
{
  byte respCode;
  byte thisByte;
  int loopCount = 0;
 
  while(!client.available()) {
    delay(1);
    loopCount++;
 
    // if nothing received for 10 seconds, timeout
    if(loopCount > 10000) {
      client.stop();
      Serial.println(F("\r\nTimeout"));
      return 0;
    }
  }
 
  respCode = client.peek();
 
  while(client.available())
  {  
    thisByte = client.read();    
    Serial.write(thisByte);
  }
 
  if(respCode >= '4')
  {
    efail();
    return 0;  
  }
 
  return 1;
}
 
 
void efail()
{
  byte thisByte = 0;
  int loopCount = 0;
 
  client.println(F("QUIT"));
 
  while(!client.available()) {
    delay(1);
    loopCount++;
 
    // if nothing received for 10 seconds, timeout
    if(loopCount > 10000) {
      client.stop();
      Serial.println(F("\r\nTimeout"));
      return;
    }
  }
 
  while(client.available())
  {  
    thisByte = client.read();    
    Serial.write(thisByte);
  }
 
  client.stop();
 
  Serial.println(F("disconnected"));
}

Als Stromversorgung und Indikator habe ich mir folgendes gedacht:

Eine USB Powerbank die von einem Netzteil geladen wird, an den Ausgang den Arduino stöpseln.

am Ladeeingang der Powerbank die 5V anzapfen und mit dem Arduino verbinden und wenn Strom weg, bekommt der Arduino das mit weil er ja hinter der Powerbank ist und sendet die Email.

Nun ist die Frage was muss auf welchen PIN vom Arduino? Plus und Minus von der 5 Volt Spannung kann ich ausmessen. Muss wieder irgend ein Bauteil dazwischen?

wie muss ich das void setup dann abändern?

Welche Powerbank kann laden und gleichzeitig Strom abgeben?

Wenn die Powerbank die Spannung nicht verändert brauchst du keine weiteren Bauteile aber deine Idee hat ein anderes Problem.
Eine Powerbank zu finden die laden und abgeben gleichzeitig kann ist schon schwierig, hinzu kommt noch das viele Powerbanks mit einem Mindeststrom belastert werden müssen damit sie aktiv bleiben. Ob das ein Unterschied macht wenn sie gerade geladen wird weiß ich nicht. Kann sein das dein Arduino nicht als Last erkannt wird. Nimm lieber das 2. Netzteil wie von Uwe vorgeschlagen.

Gruß

Hi

Blöde Frage vorweg: Wer nimmt die Mail entgegen, wenn kein Strom da ist?

5V können die meisten Arduino direkt ab (also die 5V-Typen).
Da die GND verbunden sein müssen, damit Du überhaupt eine externe Spannung erfassen kannst, bleibt nur noch der PLUS der Ladeseite der Powerbank über.
Es ist VORHER zu Prüfen, ob Minus vorne auch Minus hinten entspricht (da Du Diese ja verbinden willst bzw. verbunden brauchst, wäre Es blöd, wenn die Powerbank irgendwas an den Potentialen macht - Das raucht nur 1x !!, wenn auch heftig).

Bauteile brauchst Du normal nicht dazwischen, als digitalRead solltest Du saubere HIGH/LOW lesen können.

Die nötige Powerbank, Die BEIDES gleichzeitig kann - musst Du suchen.
Bei meinem letzten Billig-Kauf ist Es mechanisch gar nicht möglich, beide Stöpsel gleichzeitig einzustecken :o
Sonst hätte ich Das gerade Mal getestet.

Wenn Du nur einen Notlauf-Betrieb brauchst, Der den Arduino 'ein paar Sekunden oben hält' - Such Mal nach Doppelschicht-Kondensatoren (aka Gold-Cap, Super-Cap, ... wie Sie Alle heißen).
Bei 5V sind immer zwei Einzelkondensatoren 'zusammen gebäppt' - die Dinger nehmen SEHR VIEL STROM, wenn Sie leer sind, also einen Begrenzungswiderstand einbauen.
Damit der Arduino aber mehr Strom ziehen kann, als durch den Widerstand 'passt', eine Diode über den Widerstand. So bekommt der Arduino zwar nur noch 4,3V (bei SI-Diode), reicht Ihm aber im Normalfall auch.

MfG

Hier ist etwas zu den Powerbanks erklärt, ob das für mich tauglich ist...?

LINK

  1. Netzteil sollte ja recht klein sein um mit ins Gehäuse zu passen, welches nehmen?

blackscorpion371:
Blöde Frage vorweg: Wer nimmt die Mail entgegen, wenn kein Strom da ist?

Na fritzbox hängt an der USV und schickt weg und empfangen, Handy etc.