Go Down

Topic: Email bei Stromausfall (Read 1 time) previous topic - next topic

blackscorpion371

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?

Tommy56

Kann er nicht.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

blackscorpion371

#17
Aug 01, 2018, 07:12 pm Last Edit: Aug 01, 2018, 07:14 pm by blackscorpion371
So hat bisl gedauert, aber das Email versenden habe ich wie folgt gelöst:

Code: [Select]
#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?

Scherheinz

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ß
Hier könnte ihre Werbung stehen

postmaster-ino

#19
Aug 01, 2018, 09:26 pm Last Edit: Aug 01, 2018, 09:29 pm by postmaster-ino
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
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

blackscorpion371

#20
Aug 01, 2018, 09:30 pm Last Edit: Aug 01, 2018, 09:34 pm by blackscorpion371
Hier ist etwas zu den Powerbanks erklärt, ob das für mich tauglich ist...?

LINK


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

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.

Scherheinz

Ich würde mal behaupten Nein wegen folgender Aussage:
Quote
Automatische Ein/Ausschaltung wenn ein Gerät angeschlossen wird - ohne, dass man einen Schalter drücken müsste
Das ist die Geschichte mit der Mindeststromaufnahme....


Wenn deine Fritzbox an der USV hängt, kannst du den Arduino nicht per USB von dieser versorgen? Dann brauchst du nur noch ein Mini Netzteil mit ein paar mA für die Stromausfall Erkennung.

Gruß


Hier könnte ihre Werbung stehen

blackscorpion371

hm, na testweise kann ich ja erstmal mein einstellbares Bastelnetzteil nehmen.

Wie müsste ich den Code verändern? müsste ja hier irgendwie sein:

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"));


Scherheinz

Musst schon den ganzen Sketch zeigen damit man dir helfen kann. Und setzte ihn bitte in Code tags
</>
Hier könnte ihre Werbung stehen

Katsumi_S

Wenn nur der Strom in dem einen Gebäude weg ist, geht es.
Wenn der ganze Ort ohne Strom ist wird es vermutlich nicht funktionieren, da nicht alles bei der Telekom vom Notstrom gespeist wird. Dann gibt es eben keine IP Verbindung mehr.

Mobilfunkmasten haben für eine Weile Notstrom. Wie die aber dann wieder an das Internet angebunden sind, weiß ich nicht.

Gruß, Jürgen

blackscorpion371

#25
Aug 03, 2018, 05:31 pm Last Edit: Aug 03, 2018, 05:32 pm by blackscorpion371
Hatte ich doch oben schon einmal gemacht?



Code: [Select]
#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("USER");
 
  if(!eRcv()) return 0;
 
  Serial.println(F("Sending Password"));
// change to your base64 encoded password
  client.println("PASSWORD");
 
  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"));
}

blackscorpion371

Laut Telekom

Kann ich bei Stromausfall mit dem IP-basierten Anschluss telefonieren?

Bei Stromausfall ist keine Telefonie möglich, sofern die Geräte (Router, Telefon) nicht mit einer unterbrechungsfreien Stromversorgung (USV), z. B. Akkus, ausgestattet sind.

Router und Telefon wären ja versorgt mit Notstrom, dann sollte doch auch eine Email durchgehen!?

Scherheinz

Die Frage ist zu allgemein, was bedeutet "laut Telekom"?
Wird davon ausgegangen das dein Haus keinen Strom mehr hat oder der Ort oder die Gemeinde samt der Verteilung? Denke die Antwort gilt nur für dein Haus, also hilft es dir nicht weiter.
Vermute mal das du über das Mobilfunknetz mehr Glück haben könntest deine Email noch loszuwerden.

Gruß
Hier könnte ihre Werbung stehen

postmaster-ino

Hi

Das Telefon-Netz wird von der Telekom versorgt, Das hat vorerst Nichts mit dem Ort selber zu tun.
Natürlich muss Deine Infrastruktur ebenfalls noch laufen, wenn 'kein Strom da ist' - also Router ect.pp. mit USV oder äquivalenten Einrichtungen ausrüsten.
Gleiches bei den Handy-Masten - Die sind auch (mehr oder minder) unabhängig vom örtlichem Strom.

Für eine eMail in den ersten Minuten nach dem das Licht bei Dir aus ging, sollte Das reichen, wenn Du Deine Geräte oben halten kannst.

Gar kein Glück hast Du, wenn die Telekom selber Probleme hat, allerdings sollten Die Redundanz haben.

Im Allgemeinen haben wir hier in Deutschland ein recht gutes Stromnetz (wobei ich selber hier die letzten 5 Jahre zwei Ausfälle ~30min hatte - mitten in der Nacht, der Rechner ging aus, und im ganzen Haus war's dunkel. Im ganzen Haus? Nein, auf dem Klo war's noch hell :) (DC-AC-Wandler, Mini PV-Anlage, Spielerei)
INet-Ausfall hatte ich dagegen das letzte Jahr bestimmt schon zwei oder drei Mal 'no Link' - Breitband-Kabel.
Handy-Ausfall wäre mir nicht aufgefallen, allerdings hänge ich nicht die ganze Zeit an dem Ding - bei mir ist das Handy Mittel zum Zweck (Telefon, mittlerweile viel WhatsApp) - da kann mir schon Mal ein Ausfall verborgen bleiben ;)

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Scherheinz

Ich wohne in einer ländlichen Gegend, dort fällt auch ab uns zu mal alles aus, meistens zeitgleich....

Wenn es sicher sein soll müsstest du eher den umgekehrten Weg gehen, ich denke da z.b. an ein Lifebit.
Vielleicht gibt es eine App mit der man dauerhaft in einem Minutentakt oder ähnlich einen Teilnehmer von dir der nicht an der USV hängt anpingen kann. Wenn dieser nicht mehr erreichbar ist soll dann eine Meldung erscheinen.
Hier könnte ihre Werbung stehen

Go Up