Fragen zur Eigenen Wetterseite

print_r($ftp_nlist);

diese Zeile listet dir ein Array mit den ganzen Werten(2776) auf das hat mit dem String erstmal nichts zutun.
Wenn Du dieses Array nicht hast, kann er nicht sortieren und diese Fehlermeldung kommt.
Also noch mal zu meiner Frage, ist es da oder nicht, wenn nicht hast Du ein anderes Problem.

Hallo nochmal,

es wird leider kein Array aufgelistet.

Stell mal das ganze Script so wie Du es laufen hast hier rein. Das kann doch gar nicht sein.

DatenDWD.php:


<?
$ftp_server = 'ftp-outgoing.dwd.de'; // Adresse FTP-Server
$ftp_user_name = 'XXXXXX'; //  Username
$ftp_user_pass = 'XXXXXX'; //  Passwort

// Verbindungsaufbau
$conn_id = ftp_connect($ftp_server);
// Login mit Username und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Schalte passiven Modus ein

// Verbindung überprüfen
if ((!$conn_id) || (!$login_result))
{
    echo "FTP Verbindung ist fehlgeschlagen!
";
     echo "Verbindungsaufbau zu $ftp_server mit Username $ftp_user_name versucht.";
    return;
}
else
{
    echo "Verbunden zu $ftp_server mit Username $ftp_user_name"."
";
}

// Ins Verzeichnis wechseln
$dir = "gds/specials/forecasts/text/";
if (ftp_chdir($conn_id, $dir))
{
    echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) ."
";
}
else
{
    echo "Verzeichnis Wechsel ist fehlgeschlagen.
";
}

// Inhaltsliste erstellen und sortieren
$ftp_nlist = ftp_nlist($conn_id, ".");
print_r($ftp_nlist);
sort($ftp_nlist);
$berichte = "";
foreach ($ftp_nlist as $data)
{
    $berichte = $data."
";
}
// Datei auf FTP
$file = substr($berichte, -8);
echo $file;
SetValue(17414 /*[WetterDatenDWD\DatenHeute]*/, trim($file));
ftp_close($conn_id);

$control = GetValue(17414 /*[WetterDatenDWD\DatenHeute]*/);
if($control == "")
{
   IPS_SetScriptTimer($IPS_SELF, 30);
   return;
}
else
{
   IPS_SetScriptTimer($IPS_SELF, 0);
    IPS_RunScript(35482 /*[WetterDatenDWD\ftpserverDWD]*/);
}

?> 

ftpserverDWD:


<?
// Dateien local
$localFileHeute = IPS_GetKernelDir()."webfront\user\WetterEppstein\berichte\berichtHeute.txt";// anpassen
//$localFileMorgen = IPS_GetKernelDir()."webfront\user\WetterEppstein\berichte\berichtMorgen.txt";// anpassen

// Öffne Datei zum Schreiben
$handleHeute = fopen($localFileHeute, 'w');
//$handleMorgen = fopen($localFileMorgen, 'w');

$ftp_server = 'ftp-outgoing.dwd.de'; // Adresse FTP-Server
$ftp_user_name = 'XXXXX'; //  Username
$ftp_user_pass = 'XXXXX'; //  Passwort

// Verbindungsaufbau
$conn_id = ftp_connect($ftp_server);
// Login mit Username und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Schalte passiven Modus ein

// Verbindung überprüfen
if ((!$conn_id) || (!$login_result))
{
    echo "FTP Verbindung ist fehlgeschlagen!
";
     echo "Verbindungsaufbau zu $ftp_server mit Username $ftp_user_name versucht.";
    return;
}
else
{
    echo "Verbunden zu $ftp_server mit Username $ftp_user_name"."
";
}

// Ins Verzeichnis wechseln
$dir = "gds/specials/forecasts/text/";
if (ftp_chdir($conn_id, $dir))
{
    echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) ."
";
}
else
{
    echo "Verzeichnis Wechsel ist fehlgeschlagen.
";
}
/*
// Inhaltsliste erstellen und sortieren
$ftp_nlist = ftp_nlist($conn_id, ".");
sort($ftp_nlist);
$berichte = "";

foreach ($ftp_nlist as $data)
{
    $berichte = $data."
";
}
// Datei auf FTP
$file = substr($berichte, -8);
echo $file;
$remoteFileHeute = 'VHDL50_DWEG_'.trim($file);
*/
$fileHeute = GetValue(17414 /*[WetterDatenDWD\DatenHeute]*/);
$remoteFileHeute = 'VHDL50_DWEG_'.$fileHeute;
// Versuche $remote_file zu laden und in $handle zu speichern
if (ftp_fget($conn_id, $handleHeute, $remoteFileHeute, FTP_ASCII))
{
    echo $remoteFileHeute." wurde erfolgreich nach ".$localFileHeute." geschrieben.
";
    IPS_SetScriptTimer($IPS_SELF, 0);
}
else
{
    echo "Download von ".$remoteFileHeute." zu ".$localFileHeute." war nicht möglich.
";
    IPS_SetScriptTimer($IPS_SELF, 30);
}

// Verbindung und Verbindungshandler schließen
ftp_close($conn_id);
fclose($handleHeute);
//fclose($handleMorgen);

$berichtHeute = file_get_contents("../webfront/user/WetterEppstein/berichte/berichtHeute.txt");
$umlaute = array("ä","ö","ü","Ä","Ö","Ü","ß");
$replace = array("ä","ö","ü","Ä","Ö","Ü","ß");
$berichtHeute = str_replace($umlaute, $replace, $berichtHeute);
$berichtHeute = str_replace("<h2>Vorhersage für Hessen für heute</h2>", "<h3>Vorhersage für Hessen für heute</h3>", $berichtHeute);
$berichtHeute = str_replace("VHDL50 DWEG ".$fileHeute, "", $berichtHeute);
$berichtHeute = str_replace("Copyright (c) Deutscher Wetterdienst", "", $berichtHeute);
//$berichtHeute = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtHeute);
$berichtHeute = str_replace("<br></br>", "", $berichtHeute);
$berichtHeute = str_replace("=", "", $berichtHeute);
$berichtHeute = str_replace("", "", $berichtHeute);
$berichtHeute = str_replace("", "", $berichtHeute);
// Datei zum ändern öffnen
$handleHeute = @fopen($localFileHeute, 'wb+');
fwrite($handleHeute, $berichtHeute);
fclose($handleHeute);

echo $berichtHeute;

?> 

Diese in ein eigenes script kopieren und ausführen.

Das Ergebins hätte ich gerne hier.

<?

$ftp_server = 'ftp-outgoing.dwd.de'; // Adresse FTP-Server
$ftp_user_name = 'xxxxx'; //  Username
$ftp_user_pass = 'xxxxx'; //  Passwort

// Verbindungsaufbau
$conn_id = ftp_connect($ftp_server);

// Login mit Username und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Verbindung überprüfen
if ((!$conn_id) || (!$login_result))
{
    echo "FTP Verbindung ist fehlgeschlagen!";
     echo "Verbindungsaufbau zu $ftp_server mit Username $ftp_user_name versucht.";
    return;
}
else
{
    echo "Verbunden zu $ftp_server mit Username $ftp_user_name"."
";
}

// Ins Verzeichnis wechseln
$dir = "gds/specials/forecasts/text/";
if (ftp_chdir($conn_id, $dir))
{
    echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) ."
";
}
else
{
    echo "Verzeichnis-Wechsel ist fehlgeschlagen.
";
}

// Dateiliste erstellen und ausgeben
function rawlist_dump()
{
    global $conn_id;
      $ftp_rawlist = ftp_rawlist($conn_id, ".");
      foreach ($ftp_rawlist as $v)
    {
       $info = array();
        $vinfo = preg_split("/[\s]+/", $v, 9);
        if ($vinfo[0] !== "total")
        {
          $info['chmod'] = $vinfo[0];
          $info['num']   = $vinfo[1];
          $info['owner'] = $vinfo[2];
          $info['group'] = $vinfo[3];
          $info['size']  = $vinfo[4];
          $info['day']   = $vinfo[5];
          $info['month'] = $vinfo[6];
             $info['time']  = $vinfo[7];
             $info['name']  = $vinfo[8];
          $rawlist[$info['name']] = $info;
        }
      }
      $dir = array();
      $file = array();
      foreach ($rawlist as $k => $v)
    {
       if ($v['chmod']{0} == "d")
        {
           $dir[$k] = $v;
       }
        elseif ($v['chmod']{0} == "-")
        {
           $file[$k] = $v;
       }
    }
    foreach ($dir as $dirname => $dirinfo)
    {
        echo "[ $dirname ] " . $dirinfo['chmod'] . " | " . $dirinfo['owner'] . " | " . $dirinfo['group'] . " | "  . $dirinfo['day'] . " " . $dirinfo['month'] . " " . $dirinfo['time'] . "
";
    }
    foreach ($file as $filename => $fileinfo)
    {
        echo "$filename" . $fileinfo['chmod'] . " | " . $fileinfo['owner'] . " | " . $fileinfo['group'] . " | " . $fileinfo['size'] . " Byte | " . $fileinfo['day'] . " " . $fileinfo['month'] . " " . $fileinfo['time'] . "
";
    }
}
rawlist_dump();

// FTP Verbindung schließen
ftp_close($conn_id);


?>

Es muss so aussehen. Auszug davon.

Verbunden zu ftp-outgoing.dwd.de mit Username gds39260
Aktuelles Verzeichnis: /gds/gds/specials/forecasts/text
FPDL13_DWMZ_280600-rw-r--r-- | afdftp | ftp-dwd | 2317 Byte | May 28 07:11
FPDL13_DWMZ_290600-rw-r--r-- | afdftp | ftp-dwd | 2132 Byte | May 29 06:59
VHDL17_DWOG_281200-rw-r--r-- | afdftp | ftp-dwd | 2671 Byte | May 28 12:12
VHDL17_DWOG_291200-rw-r--r-- | afdftp | ftp-dwd | 2893 Byte | May 29 12:46
VHDL30_DWEH_271800-rw-r--r-- | afdftp | ftp-dwd | 857 Byte | May 27 18:28
VHDL30_DWEH_280200-rw-r--r-- | afdftp | ftp-dwd | 841 Byte | May 28 02:28
VHDL30_DWEH_280400-rw-r--r-- | afdftp | ftp-dwd | 889 Byte | May 28 04:58
VHDL30_DWEH_280800-rw-r--r-- | afdftp | ftp-dwd | 823 Byte | May 28 08:28
VHDL30_DWEH_281300-rw-r--r-- | afdftp | ftp-dwd | 875 Byte | May 28 13:28
VHDL30_DWEH_281800-rw-r--r-- | afdftp | ftp-dwd | 845 Byte | May 28 18:28
VHDL30_DWEH_290200-rw-r--r-- | afdftp | ftp-dwd | 811 Byte | May 29 02:28
VHDL30_DWEH_290400-rw-r--r-- | afdftp | ftp-dwd | 1074 Byte | May 29 04:58
VHDL30_DWEH_290800-rw-r--r-- | afdftp | ftp-dwd | 1174 Byte | May 29 08:28
VHDL30_DWEH_291300-rw-r--r-- | afdftp | ftp-dwd | 1226 Byte | May 29 13:28

Ich scheine wohl ein schwieriger Fall zu sein,denn:

Verbunden zu ftp-outgoing.dwd.de mit Username gds42193
Aktuelles Verzeichnis: /gds/gds/specials/forecasts/text

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\56133.ips.php on line 41

Notice: Undefined variable: rawlist in C:\IP-Symcon\scripts\56133.ips.php on line 61

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\56133.ips.php on line 61

Aber wenn es bei dir geht,dann muss es ja irgendwie an mir liegen.
Habe die IPS 2.21 BETA
Ging aber mit der derzeitigen Final auch nicht.

blockst Du irgendwo Port 21.

Nimm mal ein normales FTP-Programm und sieh mal ob Du da die Verzeichnisse lesen kannst.

Per CuteFTP geht es über Port21
FTP geht über Firefox auch.

Falls es nicht geht,werde ich es eben über das normale Script machen.

Du kannst das nochmal probieren. Einfach ersetzen.

// Login mit Benutzername und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Schalte passiven Modus ein
ftp_pasv($conn_id, true);

Das sieht super aus:

Verbunden zu ftp-outgoing.dwd.de mit Username gds42193
Aktuelles Verzeichnis: /gds/gds/specials/forecasts/text
FPDL13_DWMZ_280600-rw-r–r-- | afdftp | ftp-dwd | 2317 Byte | May 28 07:11
FPDL13_DWMZ_290600-rw-r–r-- | afdftp | ftp-dwd | 2132 Byte | May 29 06:59
VHDL17_DWOG_281200-rw-r–r-- | afdftp | ftp-dwd | 2671 Byte | May 28 12:12
VHDL17_DWOG_291200-rw-r–r-- | afdftp | ftp-dwd | 2893 Byte | May 29 12:46
VHDL30_DWEH_271800-rw-r–r-- | afdftp | ftp-dwd | 857 Byte | May 27 18:28
VHDL30_DWEH_280200-rw-r–r-- | afdftp | ftp-dwd | 841 Byte | May 28 02:28
VHDL30_DWEH_280400-rw-r–r-- | afdftp | ftp-dwd | 889 Byte | May 28 04:58

Vielen vielen Dank Rainer :slight_smile:

Ich habe ein neues Script eingestellt und den passiv Mod mit eingebaut.

Es wird nur noch das eine Script benötigt, keine weitere Variable usw.

Jetzt wird wohl vom DWD der FTP-Server auch nicht mehr aktualisiert :mad:

Komischer Verein.

Edit:Nach fast 2 Tagen stillstand geht es jetzt wieder.

Das liegt nicht am DWD, sondern an meinem Script. Da sortiert wird von niedrig nach hoch, gibt es das Problem nur am Monatswechsel.

Ich baue das ganze um, kann aber ein bischen dauern. Sind ja noch 27 Tage.:smiley:

Ah ok,dann weiß ich Bescheid.Nur kein Stress :smiley:

Habe aber gestern am Tag mal auf den DWD-FTP-Server geschaut.
Da war so ziemlich alles mit Änderungsdatum 1.6.

neues Script eingestellt.

Bug: Monatswechsel beseitigt.

hi rwn …

ich bin über den thread gestolpert und total begeistert … ich hab ihn jetzt schon 3 x komplett durch und muss leider gestehen, dass ich etwas den überblick verloren habe. kannst du in stichworten einfach mal kurz beschreiben, was jetzt genau wo hin muss? das ftp-script sammelt ja nur die daten ein, aber wie wird das dann grafisch aufbereitet, mit symbolen, usw. … mir fehlt etwas der durchblick …

weiterhin habe ich mal versucht, auf den ftp-server beim dwd zu kommen. anonymous-login wird zwar akzeptiert, bei übermittlung der e-mail-adresse als passwort bekomme ich aber keinen zugriff. gibt es irgendwelche logindaten?

danke für deine mühe und viele grüße …

@ sequeeezer,

Das FTP Script legst Du ganz normal in IPS an, um dieses nutzen zukönnen musst Du dich beim DWD registrieren, dann Username und PW eintragen.

Das andere Script gehört in den User Ordner und wird über eine externe Seite im Webfront Configurator eingebunden. user/name.php

Einen Ordner mit entsprechenden Namen nach User erstellen, Unter Ordner, icons und berichte. Dort werden dann der Breicht und die Icons abgelegt. Die Namen müssen dann in den Scripten angepasst werden.
Icons, entweder eigene oder die von Google.

Wenn Du nicht weiter kommst, einfach fragen.

Ich werde das ganze demnächst noch etwas erweitern.

Hi RWN …

danke für die Information. Ich werde das ganze heute abend ausprobieren und bin gespannt …

Bzgl. Registrierung beim DWD. Ich habe nur „professionelle“ Registrierungsmöglichkeiten (ab 79€ pro Jahr) gefunden. Gibt es einen freien Zugang oder bezahlt ihr die Kohle an den DWD?

viele Grüße …

New Portal Desktop

das ist kostenlos!

Hallo Rainer,

ich wollte heute damit beginnen, Dein Script ( super Arbeit ) für Aachen einzubauen.
Ich habe leider auch wie Sqeezer den Überblick etwas verloren. Einen FTp zugang habe ich gemacht.
Können wir evtl. ein for Dummies Projekt daraus machen :).
Kleiner scherz. wenn ich es richtig verstehe besteht das Ganze aus 2. Scripten, das eine welches unter user z.b. webfront\user\Wetter_Aachen kommt und eines welches in IPS angelegt wird.
Nur ist mir nicht so ganz klar, was ich anpassen muss damit es für Aachen den Bericht ausgibt.:confused:
Und noch eine Frage, hat jemand das Hintergrundbild nrw?

Gruss
Frank