DHL Packstation PIN auslesen und in Home Assistant anzeigen in 3 Schritten

Ich hatte bereits in einem anderen Post geschrieben, dass man sich in Home Assistant so ziemlich alles an Daten anzeigen lassen kann, wonach einem ist. So kann man zum Beispiel auch die DHL Packstation PIN auslesen und sich diese dann im Dashboard vom Home Assistant anzeigen lassen.

In diesem kurzen Beitrag will ich erklären, wie ich dies bei mir umgesetzt habe – aber bevor hier eine zu große Erwartungshaltung oder später nicht erfüllte Hoffnungen aufkommen: Alles was nun folgt ist definitiv keine Raketenwissenschaft und zählt eher zu der Kategorie Quick & Dirty. Ein Meisterwerk ist es definitiv nicht – aber es funktioniert und erleichtert mir und meiner Frau immer wieder den Alltag – auch, wenn es eigentlich nur eine Kleinigkeit ist (nämlich die 4 Ziffern der aktuellen DHL Packstation PIN).

Mein Setup: DHL Packstation PIN auslesen

Um die DHL Packstation auszulesen, kommt bei mir folgendes Setup zum Einsatz:

  1. Ich habe für die DHL Packstation eine separate E-Mail Adresse. Mit dieser E-Mail Adresse melde ich mich bei DHL online an. An diese E-Mail Adresse erhalte ich von DHL alle Packstation relevanten Benachrichtigungen geschickt. Darüber hinaus nutze ich diese E-Mail Adresse für nichts anderes – also wirklich nichts anderes! Keine Newsletter, keine Shops oder ähnliches. Nur DHL!
  2. Ich habe einen eigenen Webspace, auf dem ich zum Beispiel eigene PHP-Skripte (Wikipedia: PHP) laufen lassen kann. Mit PHP kann man relativ einfach erhaltene E-Mails auslesen und anhand bestimmter Suchbegriffe Text extrahieren. Da die E-Mails für die DHL Packstation PIN immer gleich aufgebaut ist, kann ich aus einer solchen E-Mail die entsprechende PIN auslesen. Diese PIN speichere ich dann in einer Datenbank, inklusive des Absendedatums der E-Mail, so dass ich immer die aktuellste PIN einfach ermitteln kann. Mit einem weiteren PHP-Skript lese ich diese Datenbank dann wiederum aus und gebe die aktuelle DHL Packstation PIN aus.
  3. In Home Assistant binde ich das zuletzt genannte PHP-Skript dann als externen Inhalt mittels eines Iframes ein, so dass ich in meinem Home Assistant Dashboard immer die aktuellste DHL Packstation PIN angezeigt bekomme!

Das Ganze kann dann in etwa so aussehen, wie im Screenshot Orange umrahmt:

Home Assistant DHL Packstation PIN

Wie du die PIN anzeigst, ist natürlich Geschmacksache. Man könnte diese natürlich auch viel größer ausschreiben und die Information über das Absendedatum der E-Mail deutlich kleiner machen. Hiermit habe ich mich aber, zugegeben, als alles einmal funktionierte, nicht mehr beschäftigt.

Ich stelle hier einfachstes HTML dar – natürlich könnte man den Wert der PIN auch an Home Assistant übergeben, so dass dieser als Sensor zur Verfügung steht. Auch hiermit habe ich mich (noch nicht) befasst. Aber man muss ja noch Ziele haben… 😉

PHP-Code um DHL Packststation PIN auslesen zu können

Da ich wirklich nicht sonderlich stolz auf meinen PHP-Code bin (wie gesagt, es ist eher quick&dirty), gebe ich diesen auch nicht komplett an. Im Wesentlichen möchte ich mit meinem Code-Schnipsel zeigen, wie man mit PHP die DHL Packstation PIN auslesen kann.

//begin by opening connection
$server = „{your.email.host:143}“;
$username = „your_username“;
$password = „your_secure_password“;
$mbox = imap_open(„$server“, „$username“, „$password“) or die(imap_last_error());
//get number of emails
$num = imap_num_msg($mbox);
if($num > 0) {
        //get from, date and subject of last email
        $header = imap_headerinfo($mbox, $num);
        $from = $header->from;
        foreach($from as $id=>$object) {
                $fromaddress = $object->mailbox . „@“ . $object->host;
        }
        $subject = $header->subject;
        $date = $header->date;
        //read the e-mail body and subject
        $body = imap_body($mbox, $num);
        //needle
        $pos_pin=strpos($body, “ lautet „);
        //position of PIN
        $body_pin=strip_tags(substr($body, $pos_pin+8, 11));
        //date of mail
        $date=date_create($date);
        $date= date_format($date,“Y-m-d H:i:s“);
        //save to DB
        if($body_pin > 0)
        {
                //basic function for DB
                insert_pin($body_pin, $date);
        } elseif (strpos($subject, „neue Packstation Sendung liegt in der Packstation“)>1) {
                //no PIN-Mail
                echo „andere Mail!“;
                //delete email
                imap_delete($mbox, $num);
                imap_expunge($mbox);
        }
} else {
        //no emails, refresh again in 20 seconds to check for new
        header(‚refresh: 20‘);
}
//close connection
imap_close($mbox);

Wie du siehst, ist es nicht wirklich viel Magie. Aber über den gezeigten Code lese ich per Cronjob automatisch die DHL Packstation PIN aus. Diese speichere ich dann mit der nicht dargestellten Funktion insert_pin($body_pin, $date) in meiner Datenbank. Und mit einem weiteren Mini-Skript lasse ich mir wiederum aus dieser Datenbank den letzten Eintrag anzeigen.

DHL Packstation PIN in Home Assistant anzeigen

Wie bereits in meinem letzten Beitrag beschrieben, zeige ich dann die DHL PIN über ein Iframe in meinem Dashboard an. Das ganze ich tatsächlich nicht mehr als das Datum der E-Mail, in der die PIN enthalten war, als auch die eigentliche PIN:

Home Asisstant DHL Packstation PIN auslesen

 

Zugegeben: Mein PHP-Skript wirkt ein wenig zusammengewürfelt, und das ist es eigentlich auch. Tatsächlich war ich so froh darüber, dass mein Proof of Concept funktioniert, dass ich auf jeglichen Feinschliff verzichtet habe. Gegebenenfalls gehe ich das aber bei Zeiten noch einmal an und optimiere den PHP-Code noch etwas.

Sobald DHL die für mich relevanten Textbausteine der der PIN E-Mail ändert, wird mein PHP-Skript vermutlich nicht mehr funktionieren. Entsprechend werde ich mir hier noch etwas einfallen lassen (müssen), um mein Skript etwas robuster zu machen!

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

AngebotBestseller Nr. 1
Alexa Aroma Diffuser 400ml, Maxcio Smart Ätherische Öl WLAN...*
  • Sprachsteuerung: Kompatibel mit Alexa, Google Assistant. Sie können...
  • Fernsteuerung mit APP: Mit dem "Smart life" App können die...
AngebotBestseller Nr. 2
Homematic IP Smart Home Set Heizen – BILD-Edition, 154589A0*
  • Set Heizen „BILD-Edition“ für den einfachen Einstieg in...
  • Einfache und intuitive Einrichtung: App herunterladen, Homematic IP...

*= Preis inkl. MwSt., ggf. zzgl. Versandkosten. Letzte Aktualisierung vor 60 Minuten / Affiliate Links / Bilder von der Amazon Product Advertising API

Schreibe einen Kommentar

Die folgenden im Rahmen der DSGVO notwendigen Bedingungen müssen gelesen und akzeptiert werden:
Durch Abschicken des Formulares wird dein Name, E-Mail-Adresse und eingegebene Text in der Datenbank gespeichert. Für weitere Informationen wirf bitte einen Blick in die Datenschutzerklärung.