E-Mail auswerten

Moderator: Co-Administratoren

Antworten
Bahni
Beiträge: 234
Registriert: 15.01.2011, 14:40
System: CCU und Access Point
Wohnort: Waldheim / Sachsen
Hat sich bedankt: 25 Mal

E-Mail auswerten

Beitrag von Bahni » 02.02.2023, 17:25

Hallo,
meine Wetterstation kann mir z.b. bei Unterschreitung einer Temperatur eine E-Mail schicken.
Meine Frage, gibt es eine Möglichkeit eine E-Mail, mit einen bestimmten Text, z.b. "ALARM987" auszuwerten, um dann in der Homematic ein Gerät zu schalten?
Danke schon einmal für die Hilfe.
Zentrale: Charly RaspberryMatic (Pi4), Gateway: Raspberry Pi3 HM-MOD-RPI-PCB, 3 Stück Funk-Schaltaktor, 4-fach, 2 Stück Funk-Rollladenaktor für Markenschalter, 1 Stück 8-Kanal-Sendemodul, 1 Stück E-Paper-Display, 2 Stück Funk-Tür-/Fensterkontakt, WinMatic, 2 Stück Heizkörperthermostat HmIP-eTRV-2, Wandthermostat HmIP-WTH-2, weiterer Ausbau nach und nach geplant.

dondaik
Beiträge: 12925
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1599 Mal
Danksagung erhalten: 222 Mal

Re: E-Mail auswerten

Beitrag von dondaik » 02.02.2023, 20:05

:-) :-)
mit geeignetem prg und geigneter empfangshardware sollte da was zu machen sein aber nicht auto off the box..... insgesamt ist da email nicht das mittel der wahl !
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Fonzo
Beiträge: 6722
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 479 Mal

Re: E-Mail auswerten

Beitrag von Fonzo » 02.02.2023, 21:12

Bahni hat geschrieben:
02.02.2023, 17:25
Meine Frage, gibt es eine Möglichkeit eine E-Mail, mit einen bestimmten Text, z.b. "ALARM987" auszuwerten, um dann in der Homematic ein Gerät zu schalten?
Du brauchst halt eine IMAP oder POP3 Instanz, aus der Du die Daten auslesen kannst, ob so was mit den Mitteln von einer CCU alleine geht, weis ich persönlich nicht.
Ich nutzte für so was seit Jahren IP-Symcon mit einer IMAP Instanz.

Das Skript, was dann auf ein Betreff prüfen würde, sehe dann beispielsweise so aus

Code: Alles auswählen

<?php

declare(strict_types=1);

$scriptName = IPS_GetName($_IPS['SELF']) . '(' . $_IPS['SELF'] . ')';
$scriptInfo = IPS_GetName(IPS_GetParent($_IPS['SELF'])) . '\\' . IPS_GetName($_IPS['SELF']);

$imap_id = 26458; // ID IMAP Instance

$inbox = IMAP_GetCachedMails($imap_id);
foreach ($inbox as $item) {
    $subject = $item['Subject'];
    $uid = $item['UID'];
    $date = date('d.m.Y H:i:s', $item['Date']);
    IPS_LogMessage($scriptName, $scriptInfo . ': Mail #' . $uid . ' von ' . $date . ': "' . $subject . '"');

    if($subject === "ALARM")
    {
        RequestAction(40018, true); // ID Instance Homematic IP
    }
}
Wenn in dem Fall der Betreff "ALARM" wäre, würde ein Homematic IP Gerät über die CCU geschaltet.

Nur auf den Betreff so einfach zu prüfen ist aber eher zu wenig bzw. zu ungenau. Da müsstest Du wohl eher eine regular expression nutzten, um das genau abzufragen.
Wahrscheinlich ist es auch sinnvoll je nach Aufbau der Email noch in den Text der Email zu schauen und diesen zu prüfen, wenn der Betreff alleine nicht aussagekräftig ist.

Bei IP-Symcon würde man den Inhalt so auslesen

Code: Alles auswählen

    $msg = IMAP_GetMailEx($imap_id, $uid);
    $text = $msg['Text'];
    
    $lines = explode("
", $text);

    $n = 0;
    $goodcount = 0;
    $failcount = 0;
    foreach ($lines as $line) {
        $r = preg_replace('/^- [^,]*, ([0-9\.]*) EXAMPLEEXPRESSION ([A-Za-z]*).*$/', '$1;$2', $line);
        if ($r != $line) {
            $vals = explode(';', $r);
            switch (strtolower($vals[1])) {
                case 'ALARM':
                    $oid = 40018;
                    break;
                default:
                    $oid = '';
                    break;
            }
            if ($oid) {
                $ts = intval(strtotime($vals[0]));
                RequestAction($oid, $ts);
                IPS_LogMessage($scriptName, $scriptInfo . ':  ... decoded line #' . $n . ' "' . $line . '"');
                $goodcount++;
            } else {
                echo 'unable to decoded line #' . $n . ' "' . $line . '"' . "
";
                $failcount++;
            }
        }
        $n++;
    }


Wenn Du Dir sicher bist, dass die regular expression funktioniert und Du die Email richtig identifiziert hast, kannst Du diese dann auch gleich vom IMAP Server löschen

Code: Alles auswählen

 if ($goodcount && !$failcount) {
      IMAP_DeleteMail($imap_id,$uid);
    }

Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: E-Mail auswerten

Beitrag von Black » 03.02.2023, 07:32

Dies über email zu lösen ist da eher 2. Wenn nicht sogar 3. Wahl. Dauerndes polling auf eine vllt eingehende Email. Kann man machen. Würd ich nicht tun

Auch betrachtet auf eine wirtschaftliche umsetzung ergibt sich folgendes Gedankengang.

Hat man Fonzos beworbenen Lösung schon gekauft, ist das in dem Fall kostenneutral und kann eingesetzt werden.

Hat man es nicht kann man für eine 2. Oder 3. Wahl Lösung ein paar 100 Euro auf den Tisch legen und dies so umsetzen und sich zurechtbasteln

Oder man überlegt, brauch ich die aktualdaten der Station oder reicht das auslesen einer wetterseite.

Wenn ja, ccu script = keine Hardware oder softwarekosten

Wenn nein, kaufe ich für ein paar 100 Euro zusatzhardware und Software? Wenn nein, ,möchte ich für 50euro den hmip aussensensor kaufen und hab die Daten direkt in der CCU?

Wenn ich wirklich die Email auswerten will, will ich neben einer Hardware, auf der dann eine middleware laufen muss, auch noch für ein paar hundert Euro Software kaufen oder setz ich eine Hardware mit Open Source Software ein und löse das Problem so:

https://forum.iobroker.net/topic/18501/emails-empfangen

Mehrere Ansätze deren funktionale und monitären Einsatz du nun abwägen und dann entscheiden kannst.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Fonzo
Beiträge: 6722
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 479 Mal

Re: E-Mail auswerten

Beitrag von Fonzo » 03.02.2023, 08:24

Black hat geschrieben:
03.02.2023, 07:32
Dauerndes polling auf eine vllt eingehende Email. Kann man machen.
Das hängt ausschließlich vom Email Server ab, wenn dieser IMAP IDLE unterstützt, muss auch nicht ständig abgefragt werden. Selbst wenn dieser das nicht unterstützten sollte, fragen viele Email Clients einen IMAP Server so ab.

Bahni
Beiträge: 234
Registriert: 15.01.2011, 14:40
System: CCU und Access Point
Wohnort: Waldheim / Sachsen
Hat sich bedankt: 25 Mal

Re: E-Mail auswerten

Beitrag von Bahni » 03.02.2023, 14:28

Erst einmal allen vielen Dank für die Tipp´s und Ratschläge.
Fonzo, leider habe ich von Programmierung keine Ahnung.
Ich bekomme es zwar hin einen Script in die Homematic zu kopieren, dann bin ich aber auch schon am Ende.
Dann wird das wohl mit meinen Vorhaben nichts werden.
Zentrale: Charly RaspberryMatic (Pi4), Gateway: Raspberry Pi3 HM-MOD-RPI-PCB, 3 Stück Funk-Schaltaktor, 4-fach, 2 Stück Funk-Rollladenaktor für Markenschalter, 1 Stück 8-Kanal-Sendemodul, 1 Stück E-Paper-Display, 2 Stück Funk-Tür-/Fensterkontakt, WinMatic, 2 Stück Heizkörperthermostat HmIP-eTRV-2, Wandthermostat HmIP-WTH-2, weiterer Ausbau nach und nach geplant.

Fonzo
Beiträge: 6722
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 479 Mal

Re: E-Mail auswerten

Beitrag von Fonzo » 03.02.2023, 14:55

Bahni hat geschrieben:
03.02.2023, 14:28
Ich bekomme es zwar hin einen Script in die Homematic zu kopieren, dann bin ich aber auch schon am Ende.
So ein Ansatz lohnt sich an sich auch nur dann, wenn Du generell Emails auswerten willst und damit eine Automation starten willst. So könntest Du z.B. die Beleuchtung kurz in der Farbe ändern, wenn eine wichtige Email von einem bestimmten Absender eingehen sollte.
Je mehr Du im Detail auswerten willst, wirst Du nicht umhin kommen Dich ein wenig mit Funktionen auseinander zu setzten. Für so einen einfachen Fall wie nur auf den Betreff Alarm zu reagieren, reicht da aber auch meist Copy & Paste mit ein paar Anpassungen aus.
Bahni hat geschrieben:
03.02.2023, 14:28
Dann wird das wohl mit meinen Vorhaben nichts werden.
Wenn es Dir lediglich und ausschließlich darum geht ein Unterschreiten einer Temperatur auszuwerten, kannst Du das ja auch deutlich einfacher haben bzw. realisieren. Dazu brauchst Du ja lediglich einen Sensor von Homematic IP und kannst dann mit einem normalen Programm auf der CCU arbeiten.
Ein Ansatz Emails auszuwerten lohnt sich eigentlich nur dann, wenn Du das umfangreich noch zu anderen Zwecken nutzt, nur um ausschließlich auf eine Temperatur Änderung zu reagieren, ist das ein wenig wie mit Kanonen auf Spatzen zu schießen.

Antworten

Zurück zu „Sonstige Steuerungen und Visualisierungen“