Seite 3 von 5

Re: RadioActiveatHome wieder "Down"

Verfasst: 03 Sep 2023, 21:57
von Marc S
Für alle, die wollen oder brauchen.

Code: Alles auswählen

<?php

// Ziel-URL
$url = 'http://www.gmcmap.com/historyData.asp?Param_ID=DEIN SENSOR ID';

// Daten von der Webseite abrufen
$data = file_get_contents($url);

// Neue DOMDocument-Instanz erstellen
$dom = new DOMDocument();

// Fehlerunterdrückung für ungültiges HTML aktivieren
libxml_use_internal_errors(true);

// HTML-Daten in das DOM laden
$dom->loadHTML($data);

// Fehlermeldungen ignorieren
libxml_clear_errors();

// DOMXPath-Objekt für die Navigation durch den DOM erstellen
$xpath = new DOMXPath($dom);

// Tabelle mit der Klasse 'table-hover' auswählen
$table = $xpath->query('//table[contains(@class, "table-hover")]')->item(0);

// Datenzeilen der Tabelle auswählen
$rows = $xpath->query('.//tbody/tr', $table);

// Array für die gespeicherten Daten initialisieren
$geigerData = [];

// Durch jede Datenzeile iterieren
foreach ($rows as $row) {
    // Werte der Spalten auslesen
    $columns = $row->getElementsByTagName('td');
    $date = $columns->item(0)->nodeValue;
    $cpm = $columns->item(1)->nodeValue;
    $acpm = $columns->item(2)->nodeValue;
    $usv = $columns->item(3)->nodeValue;

    // Daten in ein assoziatives Array speichern
    $geigerData[] = [
        'date' => $date,
        'cpm' => $cpm,
        'acpm' => $acpm,
        'usv' => $usv
    ];
}

// Die gewünschten Werte in Variablen speichern
$dateString = $geigerData[0]['date'];
$cpm = $geigerData[0]['cpm'];
$acpm = $geigerData[0]['acpm'];
$usv = $geigerData[0]['usv'];

// Datum konvertieren
$dateTime = new DateTime($dateString, new DateTimeZone('GMT'));
$dateTime->setTimezone(new DateTimeZone('Europe/Berlin'));

// Datum in europäisches Format umwandeln
$formattedDate = $dateTime->format('d.m.Y H:i:s');

// Das gewünschte Dateiformat erstellen
$fileContent = json_encode([
            '$formattedDate' => $formattedDate,
            '$CPM' => $cpm,
            '$ACPM' => $acpm,
            '$uSvh' => $usv,],
JSON_PRETTY_PRINT);

$fileContent = sprintf(
    '<?php' . PHP_EOL .
    '$formattedDate = "%s";' . PHP_EOL .
    '$CPM = "%s";' . PHP_EOL .
    '$ACPM = "%s";' . PHP_EOL .
    '$uSvh = "%s";' . PHP_EOL .
    '?>',
    $formattedDate,
    $cpm,
    $acpm,
    $usv
);

// Datei schreiben
$file = 'PFAD ZUM SPEICHERORT';
file_put_contents($file, $fileContent);

?>

Per Cronjob anrufen lassen.

Re: RadioActiveatHome wieder "Down"

Verfasst: 04 Sep 2023, 00:53
von gargamel
Hallo Marc,
danke für das Script.
Nur bei läuft es nicht:
GeigerID eingetragen
"PFAD ZUM SPEICHERORT" wird nur sporadisch angelegt (Zeintintervall??)
Im FTP Programm sind die Werte da, aber iich kann die nicht im Broswer abrufen (Auch beim Ändern des "PFAD ZUM SPEICHERORT"

Re: RadioActiveatHome wieder "Down"

Verfasst: 04 Sep 2023, 09:41
von Marc S
Hi Wilfried

Das Script musst du per Cronjob anrufen lassen. Da der Zeitintervalle bei denen 5 min ist, reicht es auch aus das Script alle 5 min auszuführen.


Zum Beispiel

Code: Alles auswählen


include "Pfad zum Speicherort";

<?php echo $uSvh;?> µSv/h


Re: RadioActiveatHome wieder "Down"

Verfasst: 04 Sep 2023, 10:52
von gargamel
Was meinst du mit "iclude Pfad zum Speicherort" ???
Verstehe nur Bahnhof

Re: RadioActiveatHome wieder "Down"

Verfasst: 04 Sep 2023, 12:30
von gargamel
Cronjob läuft werte werden aktualisiert.
Die daten kann ich NUR im FTP Programm einsehen NICHT per URL aufrufen. Was ist falsch?
Der Aufruf im FTP-Programm:

Code: Alles auswählen

<?php
$formattedDate = "04.09.2023 12:23:54";
$CPM = "21";
$ACPM = "24.91";
$uSvh = "0.14";
?>
Was meinst du mit "include"?

Re: RadioActiveatHome wieder "Down"

Verfasst: 04 Sep 2023, 17:50
von Marc S
include "Pfad zum Speicherort"; -> Hier kommt der Speicherort hin z.B. include "./Menue/Aktuelle_Daten/Radioaktive.php";

Und das schreibst du auf der gleichen Seite, an der Stelle, wo es angezeigt werden soll. Also den Wert, den du anzeigen willst.

<?php
echo $uSvh;
?>

oder

<?php
echo $ACPM;
?>

Re: RadioActiveatHome wieder "Down"

Verfasst: 04 Sep 2023, 18:59
von gargamel
Sobald mehr als Aktuell.php in der Betreffenden Zeile 86 Steht aktualisiert sich es nicht.
Hier die codes:
Geigerzaehler:

Code: Alles auswählen

<?php

// Ziel-URL
$url = 'http://www.gmcmap.com/historyData.asp?Param_ID=xxxxxxxxxxx';

// Daten von der Webseite abrufen
$data = file_get_contents($url);

// Neue DOMDocument-Instanz erstellen
$dom = new DOMDocument();

// Fehlerunterdrückung für ungültiges HTML aktivieren
libxml_use_internal_errors(true);

// HTML-Daten in das DOM laden
$dom->loadHTML($data);

// Fehlermeldungen ignorieren
libxml_clear_errors();

// DOMXPath-Objekt für die Navigation durch den DOM erstellen
$xpath = new DOMXPath($dom);

// Tabelle mit der Klasse 'table-hover' auswählen
$table = $xpath->query('//table[contains(@class, "table-hover")]')->item(0);

// Datenzeilen der Tabelle auswählen
$rows = $xpath->query('.//tbody/tr', $table);

// Array für die gespeicherten Daten initialisieren
$geigerData = [];

// Durch jede Datenzeile iterieren
foreach ($rows as $row) {
    // Werte der Spalten auslesen
    $columns = $row->getElementsByTagName('td');
    $date = $columns->item(0)->nodeValue;
    $cpm = $columns->item(1)->nodeValue;
    $acpm = $columns->item(2)->nodeValue;
    $usv = $columns->item(3)->nodeValue;

    // Daten in ein assoziatives Array speichern
    $geigerData[] = [
        'date' => $date,
        'cpm' => $cpm,
        'acpm' => $acpm,
        'usv' => $usv
    ];
}

// Die gewünschten Werte in Variablen speichern
$dateString = $geigerData[0]['date'];
$cpm = $geigerData[0]['cpm'];
$acpm = $geigerData[0]['acpm'];
$usv = $geigerData[0]['usv'];

// Datum konvertieren
$dateTime = new DateTime($dateString, new DateTimeZone('GMT'));
$dateTime->setTimezone(new DateTimeZone('Europe/Berlin'));

// Datum in europäisches Format umwandeln
$formattedDate = $dateTime->format('d.m.Y H:i:s');

// Das gewünschte Dateiformat erstellen
$fileContent = json_encode([
            '$formattedDate' => $formattedDate,
            '$CPM' => $cpm,
            '$ACPM' => $acpm,
            '$uSvh' => $usv,],
JSON_PRETTY_PRINT);

$fileContent = sprintf(
    '<?php' . PHP_EOL .
    '$formattedDate = "%s";' . PHP_EOL .
    '$CPM = "%s";' . PHP_EOL .
    '$ACPM = "%s";' . PHP_EOL .
    '$uSvh = "%s";' . PHP_EOL .
    '?>',
    $formattedDate,
    $cpm,
    $acpm,
    $usv
);

// Datei schreiben
$file = 'PFAD ZUM SPEICHERORT';
file_put_contents($file, $fileContent);

?>
Diese Aktuell.php wird ezeugt :

Code: Alles auswählen

<?php
$formattedDate = "04.09.2023 18:41:23";
$CPM = "21";
$ACPM = "24.93";
$uSvh = "0.14";
?>
Wenn ich zeile86

Code: Alles auswählen

$file = 'PFAD ZUM SPEICHERORT';
in

Code: Alles auswählen

$file = 'include "http://www.wilfried-monika.de/Radioactivitaet/Aktuell.php';
ändere,
dann läuft nix mehr. Bei Beiden versionen bleibt beim Aufruf der Php-Datei im Broswer der Bildschirm weiss.

Bin nun völlig Ratlos

Re: RadioActiveatHome wieder "Down"

Verfasst: 05 Sep 2023, 04:40
von Marc S
gargamel hat geschrieben: 04 Sep 2023, 18:59

Code: Alles auswählen

$file = 'include "http://www.wilfried-monika.de/Radioactivitaet/Aktuell.php';
ändere,
dann läuft nix mehr. Bei Beiden versionen bleibt beim Aufruf der Php-Datei im Broswer der Bildschirm weiss.

Bin nun völlig Ratlos
Nicht in das Script schreiben.

include "http://www.wilfried-monika.de/Radioacti ... ktuell.php";


Das kommt in den HEAD (<head></head>), auf der Seite, auf der du es Anzeigen lassen möchtest.

<?php
echo $uSvh;
?>


Das in die Zeile /Tabelle oder auch was immer, wo es ausgegeben werden soll.

Re: RadioActiveatHome wieder "Down"

Verfasst: 05 Sep 2023, 11:03
von gargamel
Ich probier es mal aus, Marc,
hab das Ding aber irgendwie anders zu Laufen gebracht (Ohne Cronjob)

Re: RadioActiveatHome wieder "Down"

Verfasst: 07 Sep 2023, 12:20
von gargamel
Der "Support" von QC-Electronics in den USA ist wirklich hervoragend.
Die haben mir einen speziellen Link für eine FW Update gegeben (Aktuell 2.48) klappte alles OHNE zus. Hardware.