+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,849

    Standard Verkehrsmeldungen für die Nordlichter (Großraum Hamburg)

    Hallo Leute,

    auch heute möchte ich mich bedanken für die vielen wertvolle Beiträge in diesem Forum, und für die geduldigen Antworten auf meine Anfängerfragen.

    Es geht um ein rudimentäres Skript für Verkehrsmeldungen im Großbereich Hamburg:

    1. Einrichten eines WWW Readers bei den I/O Instanzen, Link lautet:
    - "http://www.ndr2.de/verkehr160.html"
    - Aktualisierung habe ich auf 180 Sekunden eingestellt

    2. Erstellen von vier verschiedenen String-Variablen:
    - "Gefahr"
    - "Autobahnen"
    - "Bundesstraßen"
    - "Sonstige"

    3. Einrichten eines Textparsers der die vier verschiedene String-Variablen in dieser Reihenfolge jeweils mit "Get Text between" füllt:
    - "<h2>Gefahr</h2>" bis "</ul></li>" - füllt String-Variable "Gefahr"
    - "<h2>Autobahnen</h2>" bis "</ul></li>" - füllt String-Variable "Autobahnen"
    - "<h2>Bundesstra&szlig;en</h2>" bis "</ul></li>" - füllt String-Variable "Bundesstraßen"
    - "<h2>Sonstige</h2>" bis "</ul></li>" - füllt String-Variable "Sonstige"

    4. Skript erstellen mit folgendem Inhalt:
    PHP-Code:
    <?

    //$string = zu durchsuchender Text
    //$mark = zu suchende Stelle, Format: Anfangsmarke*Endmarke
    //Text: "<div>*</div></li>"
    //Link: "icons/*.gif"

    echo "<body bgcolor='#27292b' text='#ffffff'>"// Farbe anpassen oder style entfernen
    // Link für die Grafik der Verkehrssituation
    $Link "http://data.ndr.de/ndrstau/generated/gesamt.jpg";
    // Grafik einfügen in das Ergebnis
    echo "<img src=\"$Link\" title=\"Gesamt\">";

    // Gefahrenmeldungen aus dem Ausschnitt extrahieren
    $Gefahrendaten get_mark(GetValueString(25715 /*[Sonstige Daten\Verkehrsmeldungen\Gefahr]*/ ),"<div>*</div></li>");
    // Gefahrenicons aus dem Auschnitt extrahieren
    $GefahrenIcon get_mark(GetValueString(25715 /*[Sonstige Daten\Verkehrsmeldungen\Gefahr]*/ ),"icons/*.gif");
    // Überschrift erstellen
    $Gefahren "<h3>Gefahr</h3>";
    // In der folgenden Schleife wird der Text generiert.
    for($i=0$i Count($Gefahrendaten); $i++)
    {
    // Macht den ersten Buchstaben zu einem Großbuchstaben
    $IconTitelucfirst($GefahrenIcon[$i]);
    // Icon und Text der Meldung
    $Gefahren $Gefahren."<h5>"."\n"."<img src=\"../img/icons/gif/$GefahrenIcon[$i].gif\" title=\"$IconTitel\">"." ".$Gefahrendaten[$i]."</h5>";
    }
    // Eintragen der Meldung in das Fenster
    echo $Gefahren."\n";

    // Für die weiteren Gruppen entsprechen fortfahren...
    $Autobahndaten get_mark(GetValueString(19047 /*[Sonstige Daten\Verkehrsmeldungen\Autobahnen]*/ ),"<div>*</div></li>");
    $AutobahnIcon get_mark(GetValueString(19047 /*[Sonstige Daten\Verkehrsmeldungen\Autobahnen]*/ ),"icons/*.gif");

    $Autobahnen "<h3>Autobahnen</h3>";
    for(
    $i=0$i Count($Autobahndaten); $i++)
    {
    $IconTitelucfirst($AutobahnIcon[$i]);
    $Autobahnen $Autobahnen."<h5>"."\n"."<img src=\"../img/icons/gif/$AutobahnIcon[$i].gif\" title=\"$IconTitel\">"." ".$Autobahndaten[$i]."</h5>";
    }
    echo 
    $Autobahnen."\n";

    $Bundesstrassendaten get_mark(GetValueString(17771 /*[Sonstige Daten\Verkehrsmeldungen\Bundesstraßen]*/ ),"<div>*</div></li>");
    $BundesstrassenIcon get_mark(GetValueString(17771 /*[Sonstige Daten\Verkehrsmeldungen\Bundesstraßen]*/ ),"icons/*.gif");

    $Bundesstrassen "<h3>Bundesstraßen</h3>";
    for(
    $i=0$i Count($Bundesstrassendaten); $i++)
    {
    $IconTitelucfirst($BundesstrassenIcon[$i]);
    $Bundesstrassen $Bundesstrassen."<h5>"."\n"."<img src=\"../img/icons/gif/$BundesstrassenIcon[$i].gif\" title=\"$IconTitel\">"." ".$Bundesstrassendaten[$i]."</h5>";
    }
    echo 
    $Bundesstrassen."\n";

    $Sonstigedaten get_mark(GetValueString(30818 /*[Sonstige Daten\Verkehrsmeldungen\Sonstige]*/ ),"<div>*</div></li>");
    $SonstigeIcon get_mark(GetValueString(30818 /*[Sonstige Daten\Verkehrsmeldungen\Sonstige]*/ ),"icons/*.gif");

    $Sonstige "<h3>Sonstige</h3>";
    for(
    $i=0$i Count($Sonstigedaten); $i++)
    {
    $IconTitelucfirst($SonstigeIcon[$i]);
    $Sonstige $Sonstige."<h5>"."\n"."<img src=\"../img/icons/gif/$SonstigeIcon[$i].gif\" title=\"$IconTitel\">"." ".$Sonstigedaten[$i]."</h5>";
    }
    echo 
    $Sonstige."\n";


    return;
    // Diese Funktion trennt die relevanten Bereiche aus dem Ausschnitt heraus $string ist dabei der zu durchsuchende Gesamtstring, 
    // in $Mark sind durch "*" getrennt der Beginn des zu suchenden Strings und das Ende des zu suchende Abschnittes. Beispiel für den Text "<div>*</div></li>"
    function get_mark($string,$mark)
    {
        
    $ausgabe = array();
        
    $template explode("*",$mark);
        
    $mark $template[0];
        
    $end $template[1];
        
    $string strstr($string,$mark);

        
    $temp explode($mark,$string);
        
    $a 1;
            foreach (
    $temp as $tempx)
                        {
                        
    $tempx explode($end,$tempx);
                        
    $tempx $tempx[0];
                        if (
    $tempx)
                                {
                                
    array_push ($ausgabe,$tempx);
                                }
                        }
        return 
    $ausgabe;
    }


    ?>
    Die Icons kann man sich auch auf der NDR2-Seite direkt herunterladen, sind aber auch im Anhang.
    ************************************************** ***
    Änderung: sysrun hat mich darauf aufmerksam gemacht, dass die Icon rechtlich ein Problem darstellen könnten, ich kann das nicht beurteilen, möchte aber selbstverständlich weder den Forenbetreibern noch irgendjemanden Probleme bereiten.
    Die Dateien die bis dato aufgetaucht sind heißen:
    - baustelle.gif
    - stau.gif
    - stoerung.gif
    - gefahr.gif
    - wetter.gif
    - sperrung.gif
    ************************************************** ***
    Wie es am Ende aussehen sollte, davon habe ich auch einen Screenshot in den Anhang gehängt. Über Feedback würde ich mich sehr freuen, insbesondere aber über weitere Verbesserungsvorschläge...
    und vielleicht lerne ich ja dabei noch ein paar IPS-Fans aus dem Großraum Hamburg kennen?

    Joachim
    Geändert von JPaeper (07.02.10 um 21:28 Uhr)
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  2. #2
    Registriert seit
    Oct 2005
    Ort
    Gehrden / Hannover
    Beiträge
    501

    Schicke Sache

    Ich würde allerdings die Icons hier entfernen! Das kann mächtig Ärger geben. Wenn einer meint er möchte die Icons von der Originalseite nehmen ist das seine Sache

  3. #3
    Registriert seit
    Apr 2008
    Ort
    D-21423
    Beiträge
    876

    Zitat Zitat von JPaeper Beitrag anzeigen
    ...und vielleicht lerne ich ja dabei noch ein paar IPS-Fans aus dem Großraum Hamburg kennen?
    Hi,

    kann´ste HIER am 20.2.2009 persönlich, soll ich Dich auf die Liste setzen?

    mfg

    BerndJ

  4. #4
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,849

    Hallo Bernd,

    hatte den Thread schon gesehen - und auch gelesen.
    Leider kann ich aus privaten Gründen derzeit keine langfristigen Zusagen zu solchen Dingen geben, wenn könnte ich mich höchstens kurzfristig dort hinzugesellen, interessant wäre es sicher allemal (außerdem baut Helmut gerade etwas für mich, dass ich dort vielleicht gleich hätte mitnehmen können ). Nur wenige Kilometer davon entfernt bin ich auch beruflich tätig, von daher wäre das entfernungsmäßig auch kein großer Akt.
    Trotzdem vielen Dank der Nachfrage!

    Joachim
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  5. #5
    Registriert seit
    Dec 2009
    Ort
    Hamburg
    Beiträge
    78

    Zitat Zitat von JPaeper Beitrag anzeigen
    1. Einrichten eines WWW Readers bei den I/O Instanzen, Link lautet:
    - "http://www.ndr2.de/verkehr160.html"
    ...

    2. Erstellen von vier verschiedenen String-Variablen:
    - "Gefahr"
    ...
    3. Einrichten eines Textparsers der die vier verschiedene String-Variablen in dieser Reihenfolge jeweils mit "Get Text between" füllt:
    - "<h2>Gefahr</h2>" bis "</ul></li>" - füllt String-Variable "Gefahr"
    ...

    4. Skript erstellen mit folgendem Inhalt:
    ...
    Moin, moin,
    ich scheitere derzeit am Textparser, l.t. DEBUG kommt die geladene Website hier auch an, aber die Variablen werden nicht gefüllt. Ich habe schon die Text geändert, aber leider keine Änderung.

    Frage: Kann/ Muss ich Hochkomma in den Suchtags 'escapen'?

    Tag eins: <h2><a name="autobahnen">Autobahnen</a></h2>
    oder
    Tag eins: <h2><a name=\"autobahnen\">Autobahnen</a></h2>

    Anmerkung: Die Webseite hat sich mittlerweile auch geändert->
    "http://www.ndr.de/regional/verkehr/verkehr191.html"

    MfG Frank

  6. #6
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,849

    Hallo Frank,

    leider hatte sich nicht nur die Website geändert, so dass ich das Ganze umstricken musste und nun den RSS-Feed nutze. Hier mal die neue Version:

    PHP-Code:
    <?
     $xml 
    simplexml_load_file('http://www.ndr.de/regional/verkehr/feed105-verkehr_region-nord_format-rss.xml'); // URL des Atom 1.0 RSS Feeds

     
    $news_count count($xml->channel->item); // Anzahl der im RSS Feed vorhandenen News
     
    $rss_feed ""// Titel des Feeds

    //Hier werden die News, in der gewünschten Anzahl, eingelesen und formartiert.
     
    for($i=0;$i<$news_count;$i++) {
     
    $wert $xml->channel->item[$i];
     
    $news $wert->title;
     
    $news utf8_decode($news);
     
    $news "<b style=color:#C00000;>".$news."</b>"// Textfarbe anpassen
     
    $description $wert->description;
     
    $description utf8_decode($description);
     
    $rss_feed .= $news."<br>"."<small>".$description."</small>"."<br>"."<br>";
     }
     
    //echo $rss_feed; // Zur Kontrolle oder als Ausgabe in IPS Version 1.0 bis 2.1
    SetValueString(40381 /*[Nachrichten\NDR2 - Verkehrsmeldungen]*/  ,  $rss_feed);

    ?>
    Das wird auf eine Variable vom Typ String gegeben, die als HTMLBox angezeigt wird. Aktualisierung habe ich auf alle 5 Minuten gestellt.

    Der "Prinzip"-Code ist hier aus dem Forum und hier zu finden. Ist ganz sicher interessant, da mal reinzuschauen.

    Joachim
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  7. #7
    Registriert seit
    Dec 2009
    Ort
    Hamburg
    Beiträge
    78

    Hallo Joachim,

    vielen Dank, werde ich gleich mal ausprobieren.

    MfG Frank