• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten aus Server auslesen und in anderer Webseite anzeigen lassen

tribual

Neues Mitglied
Hi!

Ich habe folgendes Problem:

Ich möchte von einem Messgerät bzw. dessen Webserver (http://zerspanung.dyndns.info/) einige Daten (Status, Sensor Name, Value1 und Value2) auslesen und dann in einer anderen html Seite einfügen. Die Werte sollen in der 2. Seite in einem Frame alle 5 Sec. neu eingelesen werden.

Habt ihr da eine Idee??


THX and Greetz

tribual
 
Hab was gelesen von "HTTP Request". Bin aber leider nicht fitt darin. Kann dazu vielleicht jemand was sagen, tipps geben oder das grob umschreiben?

THX and Greetz


tribual
 
Hab das ganze nun so gelöst:

Code:
<script type="text/javascript">
String strHTMLPage = GetIQSHTMLPage("http://zerspanung.dyndns.info");
int nPosMValStart = strURL_IQSSystem.Find("<TD id=MVAL2>", 0) + Len(<TD id=MVAL2>);
int nPosMValEnd = strURL_IQSSystem.Find("<\TD>", nPosMValStart);
String strMVal = strURL_IQSSystem.Mid(nPosMValStart, nPosMValEnd - nPosMValStart);
</script>

Nur fehlt mir nun das wissen, wie ich die abgefragten Werte wieder ausgeben kann.

Wer weiss da mehr?

Gruß
 
Das ist ein merkwürdiges JavaScript, welches auf mir (und Google) nicht bekannte Funktionen zugreift. Woher hast Du das? Dort müsstest Du auch Antworten auf deine Fragen bekommen.
 
Das ist von Hersteller der Messgerätes, und, wie sich nun leider im nachhinein herausstellte, nur ein "denkanstos" in C++. Hilft mir also leider kein bisschen weiter.

Bin leider nur Laie, von daher versuche ich mal, meine "Idee/Vorstellung" etwas zu umschreiben:

An diesem Messgerät können mehrere Sonden angeschlossen werden, welche O² und Temp der Wassers messen. Pro Fischbecken (in einer Fischzucht) sollen eine Sonde und eine Unterwasserkamera verbaut werden. Das ganze ist somit auch ausbaufähig.
Um nun alles auf einer Übersichtsseite zu haben, möchte ich für jedes Becken (also für jeden Sensor) O² und Temp. auslesen und auf der Übersichtsseite anzeigen lassen. Automatische Aktualisierung alle 10-15 Sek. habe ich über
Code:
<meta http-equiv="refresh" content="5"/>
gelöst.

Jeder Sensor wird in einem eigenen Frame auf der Übersichtsseite über eine eigene html Seite aufgerufen. Somit klappt das schon mal.
Kameras sind auch schon eingebunden und laufen.

Nun zu meiner "Idee":

Ist es möglich, die Seite bzw. deren Inhalt, die vom Webserver des Sensors ausgegeben wird in so einer Art "Cookie" zu speichern, und diesen dann zu durchsuchen und die dort gesuchten und gefundenen Werte eben auf der Übersichtsseite bzw. deren unterseite, die dann im jeweiligen Frame angezeit wird auszugeben?


Gruß

tribual
 
PHP:
<?PHP

$url = "http://zerspanung.dyndns.info/";

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
curl_close($curl_handle);

echo $query;
 
DANKE!

So, XAMPP ist installiert. cURL ist in XAMPP laut phpinfo aktiv.

Nur leider passiert mit deinem PHP Code sowie auch mit vielen anderen cURL PHP Codes nichts. Was mache ich denn falsch?

Hier mal das ganze (wie gesagt nur mal als grobes Gerüst zum testen):

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Sauerstoffsättigung und Temperatur der einzelnen Becken</title>
<meta http-equiv="refresh" content="15"/>
</head>
<body bgcolor="#ffffff" text="#000000" link="#804080" vlink="#603060" alink="#804080">
<center>
<b><u>Sensor Becken 1</u></b>
<br>
<br>
<img src="becken.svg" width="100" alt="Becken Logo">
<br>
<br>

<?php
    /*
    * Created on 22.12.2009 by Nico Schubert
    */
    function daten_einlesen($webseiten_url, $useragent) {
        /**
        * cURL-Session initialisieren
        */
        $ch = curl_init($webseiten_url);
        /**
        * Weiter Parameter der cURL-Session übergeben
        */
        curl_setopt ($ch, CURLOPT_URL, $webseiten_url);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        /**
        * cURL Anweisen, das die Übergabe
            zurückgegeben werden soll
        */
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        /**
        * cURL mitteilen, welcher Useragent übergeben
            werden soll.
        */
        curl_setopt ($ch, CURLOPT_USERAGENT,
            $useragent);
        /**
        * cURL Rückgabe in $result speichern
        */
        $result = curl_exec ($ch);
        curl_close ($ch);
        return $result;
    }
    $rueckgabe_der_function =
        daten_einlesen("http://www.php.net",
        "Mozilla/4.0");
    echo $rueckgabe_der_function;
?>




</center>
</body>
</html>

Lade ich diese Seite, wird sie auch brav angezeigt, weiteres passiert jedoch nicht.

THX schon mal vorab!

Gruß
 
Zuletzt bearbeitet:
So, hab mich nun das Wochenende etwas mehr damit beschäftigt und bin nun auf folgendem Stand:

- PHP installiert und läuft
- cURL aktiviert und läuft
- "Testscript" eingebaut und funktioniert (Quellcode wird in 001.html geschrieben):

PHP:
<?php

$ch = curl_init("http://zerspanung.dyndns.info/");
$fp = fopen("001.html", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);

?>

Probleme macht mir folgendes:

mittels (ich denke das sollte das richtige sein) "preg_match_all" die Seite zu durchsuchen und folgende "Einträge" im Quellcode zu finden und dann auszugeben:

HTML:
<td id="STATE2">Measuring</td>
<td id="NAME2">seeforellen</td>
<td id="MVAL2">11.80&nbsp;mg/l</td>
<td id="SVAL2">18.7&nbsp;&deg;C</td>

Wenn ihr mir helfen könnt, das zu lösen, dann ist das genze erledigt und ich überglücklich!

Komme einfach nicht zurecht mit diesem "preg_match_all". Werde noch bekloppt!

Danke schon mal für alles bisher!

Greetz

tribual
 
Ich gehe davon aus, dass sich an der Zeilenweise Ausgabe der Seite nichts ändert.
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="refresh" content="5"/>
    <meta http-equiv="cache-control" content="no-cache">
    <title>IQS WebServer</title>
</head>
<body>
<?PHP

$url = "http://zerspanung.dyndns.info/";

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$werte = explode("\n",$query);
$werte = array_pad($werte,80,"");

for($i = 51; $i <=60; $i++)
{
   $ergebnis[] = strip_tags(trim($werte[$i]));
}

print_r($ergebnis);

?>
</body>
</html>
befüllt dir ein Array $ergebnis mit den Zeilen der Ausgabe der Messwerte.
Wenn du dir das Array $werte anzeigen lässt, kannst du dir jede einzelne Codezeile aus der Seite auslesen.

PS
Code ausgebessert, so dass auch ein 5 Sekunden Refresh erfolgt
 
Zuletzt bearbeitet von einem Moderator:
DANKE!!

Soweit klapp das alles bestens, die Daten werden ausgelesen und aktualisiert. Ihr seid hier echt die besten!!

Nun zur Darstellung:

Derzeit wird das ganze ja so wie im 1. Bild dargestellt.

Gewünscht ist eine Darstellung wie im 2. Bild.

Nun meine Frage:

Wie kann ich die einzelnen Werte ev. in einer Tabelle ausgeben, um in etwa die Darstellung wie im 2. Bild hinzubekommen?

Oder generell, wie kann ich jeden Wert an einer von mit festgelegten stelle darstellen?

Danke und Gruß

tribual
 

Anhänge

  • sonsor002.jpg
    sonsor002.jpg
    49,6 KB · Aufrufe: 14
  • sonsor001.jpg
    sonsor001.jpg
    39,4 KB · Aufrufe: 10
Ich komme langsam nicht mehr mit.
Im Post oben hast du gefragt, wie du einzelne Werte ausgeben kannst.
......
mittels (ich denke das sollte das richtige sein) "preg_match_all" die Seite zu durchsuchen und folgende "Einträge" im Quellcode zu finden und dann auszugeben:
PHP:
echo $ergebnis[0]." ".$ergebnis[1];
würde dir nur S02 Measuring ausgeben. Du kannst dir deine Anzeige also selber Zusammenbauen.


Deinem Wunsch entsprechend würde also
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="refresh" content="5"/>
    <meta http-equiv="cache-control" content="no-cache">
    <title>IQS WebServer</title>
</head>
<body>
<?PHP

$url = "http://zerspanung.dyndns.info/";

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$werte = explode("\n",$query);
$werte = array_pad($werte,80,"");

for($i = 51; $i <=60; $i++)
{
   $ergebnis[] = strip_tags(trim($werte[$i]));
}
?>
<table>
<tr>
   <td><?PHP echo $ergebnis[1]; ?></td>
   <td><?PHP echo $ergebnis[4]; ?></td>
   <td><?PHP echo $ergebnis[8]; ?></td>
   <td><?PHP echo $ergebnis[9]; ?></td>
</tr>
</table>
</body>
</html>
das ausgeben:

HTML:
Measuring    seeforellen    10.4    °C
Den Tabellencode kannst du mit eigenen Styleangaben selber formatieren und deinem Aussehen anpassen.
 
Hi!

Danke schon mal vielmals! Hast mir souverän an mein Ziel geholfen und meinen Horizont erweitert! DANKE!!

So, das hat soweit alles geklappt, und das Projekt ist im "groben" abgeschlossen. Auch wieder dank dir! Spitze!

Wenn du mir jetzt vielleicht noch den Hintergrund erklären kannst, warum das alles so funktioniert, wie es funktioniert (z.B. anhand der letzten Seite)

Code:
[COLOR=#000000]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="refresh" content="5"/>
    <meta http-equiv="cache-control" content="no-cache">
    <title>IQS WebServer</title>
</head>
<body>
[COLOR=#0000CC]<?PHP

$url [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#CC0000]"http://zerspanung.dyndns.info/"[/COLOR][COLOR=#006600];

[/COLOR][COLOR=#0000CC]$curl_handle [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]curl_init[/COLOR][COLOR=#006600]();
[/COLOR][COLOR=#0000CC]curl_setopt[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$curl_handle[/COLOR][COLOR=#006600], [/COLOR][COLOR=#0000CC]CURLOPT_URL[/COLOR][COLOR=#006600],[/COLOR][COLOR=#0000CC]$url[/COLOR][COLOR=#006600]);
[/COLOR][COLOR=#0000CC]curl_setopt[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$curl_handle[/COLOR][COLOR=#006600], [/COLOR][COLOR=#0000CC]CURLOPT_CONNECTTIMEOUT[/COLOR][COLOR=#006600], [/COLOR][COLOR=#0000CC]2[/COLOR][COLOR=#006600]);
[/COLOR][COLOR=#0000CC]curl_setopt[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$curl_handle[/COLOR][COLOR=#006600], [/COLOR][COLOR=#0000CC]CURLOPT_RETURNTRANSFER[/COLOR][COLOR=#006600], [/COLOR][COLOR=#0000CC]1[/COLOR][COLOR=#006600]);
[/COLOR][COLOR=#0000CC]$query [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]curl_exec[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$curl_handle[/COLOR][COLOR=#006600]);
[/COLOR][COLOR=#0000CC]curl_close[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$curl_handle[/COLOR][COLOR=#006600]);

[/COLOR][COLOR=#0000CC]$werte [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]explode[/COLOR][COLOR=#006600]([/COLOR][COLOR=#CC0000]"\n"[/COLOR][COLOR=#006600],[/COLOR][COLOR=#0000CC]$query[/COLOR][COLOR=#006600]);
[/COLOR][COLOR=#0000CC]$werte [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]array_pad[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$werte[/COLOR][COLOR=#006600],[/COLOR][COLOR=#0000CC]80[/COLOR][COLOR=#006600],[/COLOR][COLOR=#CC0000]""[/COLOR][COLOR=#006600]);

for([/COLOR][COLOR=#0000CC]$i [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]51[/COLOR][COLOR=#006600]; [/COLOR][COLOR=#0000CC]$i [/COLOR][COLOR=#006600]<=[/COLOR][COLOR=#0000CC]60[/COLOR][COLOR=#006600]; [/COLOR][COLOR=#0000CC]$i[/COLOR][COLOR=#006600]++)
{
   [/COLOR][COLOR=#0000CC]$ergebnis[/COLOR][COLOR=#006600][] = [/COLOR][COLOR=#0000CC]strip_tags[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]trim[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$werte[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$i[/COLOR][COLOR=#006600]]));
}
[/COLOR][COLOR=#0000CC]?>
[/COLOR]<table>
<tr>
   <td>[COLOR=#0000CC]<?PHP [/COLOR][COLOR=#006600]echo [/COLOR][COLOR=#0000CC]$ergebnis[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]1[/COLOR][COLOR=#006600]]; [/COLOR][COLOR=#0000CC]?>[/COLOR]</td>
   <td>[COLOR=#0000CC]<?PHP [/COLOR][COLOR=#006600]echo [/COLOR][COLOR=#0000CC]$ergebnis[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]4[/COLOR][COLOR=#006600]]; [/COLOR][COLOR=#0000CC]?>[/COLOR]</td>
   <td>[COLOR=#0000CC]<?PHP [/COLOR][COLOR=#006600]echo [/COLOR][COLOR=#0000CC]$ergebnis[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]8[/COLOR][COLOR=#006600]]; [/COLOR][COLOR=#0000CC]?>[/COLOR]</td>
   <td>[COLOR=#0000CC]<?PHP [/COLOR][COLOR=#006600]echo [/COLOR][COLOR=#0000CC]$ergebnis[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]9[/COLOR][COLOR=#006600]]; [/COLOR][COLOR=#0000CC]?>[/COLOR]</td>
</tr>
</table>
</body>
</html>
[/COLOR]

- Wie genau werden die Daten denn aus dem Dokument ausgelesen, und nach welchen Kriterien?
- Wie müsste es aussehen, um z.B. die Uhrzeit bzw. das Datum oder was beliebig anderes auszulesen? Oder ist schon vorab alles ausgelesen?
- Woher weisst du, was z.B. $ergebnis[1] ist?

Würde nur gerne auch verstehen, was dort geschieht, um auch etwas daraus gelernt zu haben.

Danke schon mal vorab und für deine Zeit!!!


Gruß

tribual
 
Hallo

Die curl Geschichte simuliert über PHP gewissermassen einen Browser und liest den Quelltext so ein, dass man ihn in PHP weiter verarbeiten kann. Die einzelnen curl-Optionen kannst du ja selber nachlesen.

Wie schon gesagt, gehe ich von einer Seite aus, die sich nicht dynamisch verändert, also nicht mal 120 und mal 170 Zeilen hat sondern immer die gleiche Ausgabe generiert.

$werte = explode("\n",$query);

$query beinhalten die gesamte Ausgabe der Webseite. Wenn man sich mal den Quellcode ansieht, sieht man, dass der Inhalt aus mehreren Zeilen besteht.

Das explode zerlegt die Seite in einzelne Zeilen. \n ist dabei ein Umbruch in eine neue Zeile. Jedes Mal, wenn ein Umbruch ausgegeben wird, lese ich die Zeile in eine neue Variable ein.
Ist die Seite immer gleich, stehen auch die Werte immer in der gleichen Zeile (logisch denke ich).
Deshalb kann ich genau sagen, dass in Zeile 51 bis 60 deine Werte liegen, die du abfragen möchtest. Ändert sich der Aufbau nicht, liegen die Werte IMMER in diesen Zeilen.

$werte = array_pad($werte,80,"");

Ist eine reine Vorsichtsmassnahme. Weil ich weiter unten in der Schleife auf die Variablen $werte[51] bis $werte[60] zugreife, stelle ich sicher, dass es die Variablen auch gibt, indem ich einfach alles bis $werte[79] mit Leer auffülle, sollte es die Variablen mal nicht geben. Es könnte z.B. mal vorkommen, dass der Server nicht erreichbar ist. Dann würde die Ausgabe der Variablen $ergebnis einen Fehler verursachen, weil sie auf Inhalte ($werte[51]) zugreifen möchte, es diese Variable aber nicht gibt.
Man beachte meine bestechende Logik und unglaubliche weise Voraussicht: Zerlegt man NICHTS in Zeilen, kommt wieder NICHTS dabei raus.;ugl

for(
$i = 51; $i <=60; $i++)
{
$ergebnis[] = strip_tags(trim($werte[$i]));
}


Macht nichts anderes als ein neues Array befüllen, und zwar mit den Inhalten der Zeilen 51 bis 60. Bei dieser Gelegenheit entferne ich gleich alle HTML-Zeichen wie z.B. deine Tabellen-Tags und im Pfusch auch noch überflüssige Leerzeichen (durch strip_tags() werden alle html-Tags entfernt, trim() entfernt unnötige Leerzeichen vor und nach dem Text).

Woher weiss man nun, in welcher Zeile was steht?
Dazu nochmal ein kleiner Code, der die gesamte Webseite ausliest und komplett Zeilenweise ausgibt.

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="refresh" content="5"/>
    <meta http-equiv="cache-control" content="no-cache">
    <title>IQS WebServer</title>
</head>
<body>
<?PHP

$url = "http://zerspanung.dyndns.info/";

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$werte = explode("\n",$query);
$werte = array_pad($werte,80,"");

for($i = 1; $i <= count($werte); $i++)
{
   $ergebnis[] = strip_tags(trim($werte[$i]));
}

echo "<pre>";
print_r($ergebnis);
echo "</pre>";

?>
</body>
</html>
Da brauchst du eigenlich nur noch ablesen.
Die Uhrzeil steht z.B. in der Variablen $ergebnis[20], der Controller in der Variablen $ergebnis[17].

echo "<pre>";
print_r($ergebnis);
echo
"</pre>";


formatiert die Ausgabe nur etwas schöner lesebar, damit die Ergebnisse schön untereinander stehen. Dass ich bei deinem Code in der Schleife nur die Zeilen 51 bis 60 durchlaufe sind reine Sparmassnahmen an den Variablen. Wenn du auch die Uhrzeit willst musst du diese Schleife nehmen:

PHP:
for($i = 1; $i <= count($werte); $i++)
{
   $ergebnis[] = strip_tags(trim($werte[$i]));
}
 
Zuletzt bearbeitet von einem Moderator:
Hi!

THX!! Das passt schon mal sowas von! Blick jetzt auch mal etwas mehr durch.

Hab das "alte" Script von dir belassen, und lese nun die Uhrzeit direkt vom Server aus. Das reicht mir auch.

PHP:
<?php
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
echo $datum," - ",$uhrzeit," Uhr";
?>

Nun zur nächsten Herausforderung:

--> Ein Formular erstellen, in welchem folgendes eingetragen werden kann:

- Schwellenwert O2 gehalt
- Schwellenwert Wassertemperatur
- E-Mail Adresse, an welche bei Unterschreitung eines oder beider Schwellenwerte eine Mail geschickt wird

PHP:
$schwelle1 // Schwellenwert O2 Gehalt
$schwelle2 // Schwellenwert Wassertemp.
$mail1 // Mailadresse

--> Abfrage und vergleich der beiden Werte:

PHP:
$ergebnis[5];
$ergebnis[8];

mit den im Formular eingegebenen Schwellenwerten

PHP:
$schwelle1 // Schwellenwert O2 Gehalt
$schwelle2 // Schwellenwert Wassertemp.

Ist der gemessene Wert (z.B. $ergebnis[5]) über dem eingegebenen Schwellenwert (hier $schwelle1), soll nichts passieren.
Ist der gemessene Wert (z.B. $ergebnis[5]) gleich oder unter dem eingegebenen Schwellenwert (hier $schwelle1), soll eine Mail an die Mailadresse ($mail1) gesendet werden.


Habe mal versucht, meine Idee zumindest teilweise "auf Papier" zu bringen:

PHP:
<?php
$schwelle1=20; // O2 Gehalt
$schwelle2=20; // Temp.
[email protected]

// $schwelle1 soll durch Formular eingegeben und verändert werden können --> O2 Gehalt
// $schwelle2 soll durch Formular eingegeben und verändert werden können --> Wassertemperatur
// $ergebnis[5] --> O2 Gehalt 
// $ergebnis[8] --> Wassertemperatur

if($ergebnis[5]<$schwelle1){
echo "$ergebnis[5] ist kleiner $schwelle1"; // Mail an durch Formular eingegebene E-Mail Adresse senden --> $mail1
} else {
// wird nur ausgeführt wenn das vorangegangenen 
// "else" als false 
// ausgewertet wurden.
echo "$ergebnis[5] ist gleich 0"; // hier nur als Beispiel. Hier gehört denke ich eine Funktion zum Mailversand hin, oder
}
?>

Hier noch der erste Entwurf (Ideensammlung, einfach mal alles zusammengeschrieben) der Setup.php:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Setup Seite</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#804080" vlink="#603060" alink="#804080">
<center>
<br>
<br>
Hier können Sie die Schwellenwerte für O² und Wassertemperatur definieren.<br>
Desweiteren können Sie die E-Mail Adresse angeben, an welche der Alarm bei Unterschreitung des Schwellenwertes gesendet werden soll.<br>
<br>
<br>
<form action="action.php" method="post">
    O² Schwellenwert  <input type="text" name="schwelleo2" /><br />
    Temp. Schwellenwert  <input type="text" name="schwelletemp" /><br />
    Email: <input type="text" name="mail1" /><br />
    <input type="submit" name="submit" value="Speichern" />
</form>
</center>


<?php
$schwelle1=20; // O2 Gehalt
$schwelle2=20; // Temp.
[email protected];

// $schwelle1 soll durch Formular eingegeben und verändert werden können --> O2 Gehalt
// $schwelle2 soll durch Formular eingegeben und verändert werden können --> Wassertemperatur
// $ergebnis[5] --> O2 Gehalt 
// $ergebnis[8] --> Wassertemperatur

if($ergebnis[5]<$schwelle1){
echo "$ergebnis[5] ist kleiner $schwelle1"; // Mail an durch Formular eingegebene E-Mail Adresse senden --> $mail1
} else {
// wird nur ausgeführt wenn das vorangegangenen 
// "else" als false 
// ausgewertet wurden.
echo "$ergebnis[5] ist gleich 0";
}

// Empfänger
$empfaenger = '[email protected]';

// Betreff
$betreff = '!A-c-h-t-u-n-g! O2 oder Wassertemperatur unterschreiten den Schwellenwert!';

// Nachricht
$nachricht = '
<html>
<head>
  <title>Schwellenwertunterschreitung</title>
</head>
<body>
  <p>Schwellenwertunterschreitung:</p>
<br>
Einer der von Ihnen eingestellte Schwellenwerte wurde unterschritten!
<br>
<br>
Version: V.02
</body>
</html>
';

// für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
$header  = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// zusätzliche Header
$header .= 'From: XXX <[email protected]>' . "\r\n";

// verschicke die E-Mail
mail($empfaenger, $betreff, $nachricht, $header);
?>


</body>
</html>

Ist das überhaupt machbar? Und wenn ja, wie? Bin ich auf dem richtigen Weg?

@sysop
Wäre auch hier sehr dankbar für deine Hilfe. Hast ja bisher auch absolut den Vogel abgeschossen und lagst immer 100% richtig!


Greetz

tribual
 
Zuletzt bearbeitet:
Das ganze artet in Arbeit aus ....

index.php
PHP:
<?PHP
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="refresh" content="5"/>
    <meta http-equiv="cache-control" content="no-cache">
    <title>IQS WebServer</title>
</head>
<body>
<?PHP

$url = "http://zerspanung.dyndns.info/";

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$werte = explode("\n",$query);
$werte = array_pad($werte,80,"");

for($i = 51; $i <=60; $i++)
{
   $ergebnis[] = strip_tags(trim($werte[$i]));
}

$_SESSION['o2gehalt'] = $ergebnis[5];
$_SESSION['temperatur'] = $ergebnis[8];

?>
<table>
<tr>
   <td><?PHP echo $ergebnis[1]; ?></td>
   <td><?PHP echo $ergebnis[4]; ?></td>
   <td><?PHP echo $ergebnis[8]; ?></td>
   <td><?PHP echo $ergebnis[9]; ?></td>
</tr>
</table>

<form action="action.php" method="post">
    <input type="submit" name="submit" value="eigene Werte eingeben" />
</form>

</body>
</html>

Der Button unten leitet zu deiner action.php und stellt das Formular da.

action.php
PHP:
<?PHP
session_start();

if($_POST['schwelleo2'] == "" or ($_POST['schwelletemp'] == "") or ($_POST['yourmail'] == ""))
{

   ?>

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
   <title>Setup Seite</title>
   </head>
   <body bgcolor="#ffffff" text="#000000" link="#804080" vlink="#603060" alink="#804080">
   <center>
   <br>
   <br>
   Hier können Sie die Schwellenwerte für O² und Wassertemperatur definieren.<br>
   Desweiteren können Sie die E-Mail Adresse angeben, an welche der Alarm bei Unterschreitung des Schwellenwertes gesendet werden soll.<br>
   <br>
   <br>
   <form action="action.php" method="post">
       O² Schwellenwert  <input type="text" name="schwelleo2" /><br />
       Temp. Schwellenwert  <input type="text" name="schwelletemp" /><br />
       Email: <input type="text" name="yourmail" /><br />
       <input type="submit" name="submit" value="Speichern" />
   </form>
   </center>


   <?php
}


else
{

   $send_mail = 0;

   // $schwelle1 soll durch Formular eingegeben und verändert werden können --> O2 Gehalt
   // $schwelle2 soll durch Formular eingegeben und verändert werden können --> Wassertemperatur
   // $ergebnis[5] --> O2 Gehalt
   // $ergebnis[8] --> Wassertemperatur

   if($_SESSION['o2gehalt'] < $_POST['schwelleo2'])
   {
      $send_mail = 1;
   }

   else
   {
   // wird nur ausgeführt wenn das vorangegangenen
   // "else" als false
   // ausgewertet wurden.
      echo "der O2 Gehalt ist höher als die Messung ...";
   }


   if($_SESSION['temperatur'] < $_POST['schwelletemp'])
   {
      $send_mail = 1;
   }

   else
   {
      echo "die Temperatur ist höher als die Messung ...";
   }




   // Empfänger
   $empfaenger = $_POST['yourmail'];

   // Betreff
   $betreff = '!A-c-h-t-u-n-g! O2 oder Wassertemperatur unterschreiten den Schwellenwert!';

   // Nachricht
   $nachricht = '
   <html>
   <head>
     <title>Schwellenwertunterschreitung</title>
   </head>
   <body>
     <p>Schwellenwertunterschreitung:</p>
   <br>
   Einer der von Ihnen eingestellte Schwellenwerte wurde unterschritten!
   <br>
   <br>
   Version: V.02
   </body>
   </html>
   ';

   // für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
   $header  = 'MIME-Version: 1.0' . "\r\n";
   $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

   // zusätzliche Header
   $header .= 'From: XXX <[email protected]>' . "\r\n";

   // verschicke die E-Mail
   if($send_mail == 1)
   {
      mail($empfaenger, $betreff, $nachricht, $header);
   }
}
   ?>


</body>
</html>

Den Rest bekommst du aber nun selber hin...

Das Formular kann übrigens super zum Spammen benutzt werden, das musst du noch verhindern. Eventuell noch auf Zahleneingaben bei O2 und Temperatur prüfen etc.
 
Zurück
Oben