Skript Ereignis "Bei Grenzüberschreitung" - wie aktivieren?

Ich lasse per www-reader/parser einen Wert (z.B. Kurswert Dollar „910,00“) in eine Variable schreiben.

Bei Überschreiten einer def. Grenze (z.B. 930 Dollar) soll per TT_SendMail (danke an Toni für die Klasse-Tools) eine Email versendet werden.

Da ich leider des php programmierens nicht mächtig bin (mir fehlt einfach die Zeit im Moment, auch wenn´s nur eine einfache if-then-Bedingung ist) wollte ich die Auslösung per „Ereignis hinzufügen“ festlegen. Leider sind hier nur die Felder „bei Variablenänderung/Aktualisierung/bestimmtem Wert“ aktivierbar, nicht aber „bei Grenzüberschreitung“.

Gibt es eine Möglichkeit das zu aktivieren/wo liegt mein Fehler?
Mit einem festen Wert kann ich leider nichts anfangen, da der Dollarkurs nicht unbedingt auf 930,00 Dollar geht bevor er weiter steigt (oder wieder fällt :wink: )

danke für jeden Hinweis!

Grüße & schönes WE!
Daniel
ps. falls jemand gerade einen „flow“ hat und mir im handumdrehen die if-then-bedingung in php schreiben kann wäre das ebenfalls klasse, dann hätte ich schonmal was gelernt.

Hi!

Mach das mit Variablenänderung und

$variable = floatval(ID deiner Parser-Variable);

if ($variable >= 930){
dein Script
}

Vielleicht gehts auch so…

if ($IPS_VALUE >= "930"){
dein Script
}

Hallo Daniel,

der Parser liefert einen Text(String) und keinen Zahlenwert(Float). Damit ist es natürlich nicht möglich eine Grenzüberschreitung festzustellen.
Du muß den String erst umwandeln und kannst dann die Grenzüberschreitung feststellen.

  $Kurs = str_replace(",",".",$Kurs); // Komma durch Punkt ersetzen
  settype($Kurs, "Float");             //in Float umwandeln
  If ($Kurs >= 930){
  // Mail senden
  }

Gruß

@nancilla
vielen dank, die 1. Variante funktioniert prima!

@attain
danke für deinen Hinweis, da hast du natürlich recht. Danke auch für den Code, jetzt weiß ich auch schonmal wie ich den Variablentyp umwandeln kann!

Gruß
Daniel

Hallo Daniel,

bitte beachte das Du , wenn es auf die Nachkommastelle ankommt, im String das „Komma“ durch einen „Punkt“ ersetzt. Da durch die floatval- oder auch durch die settype- Funktion, die Zahlen nach dem „Komma“ einfach abgeschnitten werden.
Ansonsten machen beide Funktionen das selbe.
Teste mal das aus:


$test = "2,65";
echo floatval($test)."
";
$test = str_replace(",",".",$test);
echo floatval($test)."
";

@Mod

sorry, eigentlich sollte der Beitrag im entsprechenden IPS V2.0 Board landen. Bitte ggf. verschieben - danke!

ps. Nebensache; Dollarkurs von 930 macht natürlich keinen Sinn, gemeint war der Goldkurs :rolleyes:

hallo attain,

ich habe mal versucht das mit einzubauen. Entsprechend meiner nicht vorhandenen php-Kenntnisse ist mir mein Rechner nun schon zum 10. Mal mit Bluescreen abgeschmiert.

Hier der Code (bitte nicht schlagen, ich habe wirklich keine Ahnung :o )

<?
$variable = floatval(49696 /*[Sonstige\Text Parser]*/);

$variable = str_replace(",",".",$variable); // Komma durch Punkt ersetzen
settype($variable, "Float");             //in Float umwandeln

if ($variable >= 930){
TT_SendMail("asdf@gmx.net", "Kurs ~930$", "$variable");
}

?>

Ich möchte einfach nur dass per TT_SendMail der Variablenwert $variable übergeben wird. In $variable soll eigentlich der Kurswert der ID 49696 stehen.

Das Script klappt bis auf die Übergabe von $variable. Hier scheine ich falsch zu machen was nur falsch zu machen geht… so viele Bluescreens habe ich in den letzten 5(!) Jahren nicht gesehen… es ist vermutlich mit das einfachste was man machen kann, aber ich krieg es nicht gebacken…
…wenn es nur nicht immer 5 Minuten dauern würde bis der Rechner wieder hochgefahren ist… :rolleyes:

Gruß
Daniel

Evtl. SMTP in der TT Konfiguration nicht eingestellt?

…das Versenden der Emails klappt ja, nur sobald ich versuche in den zu übergebenden Text den Variablenwert einzubauen schiesst sich (oder vielmehr schiesse ich :smiley: ) den Rechner ab.

Scheint das Script soweit i.O. zu sein? Kann ich mir fast nicht vorstellen… :confused:

Grüße
Daniel

Hallo Daniel,

hat wahrscheinlich nichts mit deinen Abstürzen zu tun, aber wenn du „str_replace“ verwendest, dann mache das in einer anderen Reihenfolge, sonst bringt dir das nichts:

$textp = 49696 /*[Sonstige\Text Parser]*/;
$text = str_replace(",",".",$textp);
$variable = floatval($text);  

Da fällt mir gerade etwas auf…

Du darfst die Variable nich in Gänsefüsschen einbetten.
Es müsste so lauten:

TT_SendMail("asdf@gmx.net", "Kurs ~930$", $variable);

Danke für die Hinweise.
Leider gibt´s immer noch Bluescreen. Sind nur ca. 1.5 Sekunden bevor der Rechner neu startet, das Einzige was ich lesen kann ist „Driver_IRQ_not_less_or_equal“ als Fehlermeldung.

Ich hatte das Skript wie folgt geändert:

<?
$variable = floatval(42597);

$textp = 42597;
$text = str_replace(",",".",$textp);
$variable = floatval($text);

if ($variable >= 900){
TT_SendMail("asdf@gmx.net", "Goldk ~930$", $variable);
}
?>

verstehe das nicht…
Achso; Muss ich eigentlich die ID des Textparsers oder die der Variable angeben, in welche der geparste Wert geschrieben wird? (beides scheint zu funktionieren - und mit entsprechender Änderung durch den Zusatz „$variable“ bei TT_SendMail endet beides beim Bluescreen)… :confused:

ich habe jetzt nochmal rumprobiert (wieder 3 Abstürze in Reihe).
Also selbst wenn ich

TT_SendMail(„asdf@gmx.net“, „Goldk ~930$“, „12345“);

schreibe schmiert er ab. Schreibe ich „test“ anstelle „12345“ verrichtet er seinen Dienst wie er soll und im Textfeld der Email steht „test“.

Also muss es doch daran liegen dass nur Buchstaben aber keine Zahlenwerte übergeben werden können… oder sehe ich das falsch?

Laut Tonis Syntax des Befehls muß $variable ein String sein, da hier aber ein Float Wert übergeben wird, sollte das die Fehlerquelle sein.

Bitte so verwenden:

TT_SendMail("asdf@gmx.net", "Goldk ~930$", (string)$variable);

danke für den Tipp.
Leider immer noch ohne Erfolg mit nun wie folgt aussehendem Skript:

<?
$variable = floatval(42597);

$textp = 42597;
$text = str_replace(".",",",$textp);
$variable = floatval($text);

if ($variable >= 900){
TT_SendMail("asdf@gmx.net", "Goldk ~930$", (string)$variable);
}
?>

Hatte zwischenzeitlich selbst einige Dinge versucht, ist immer wieder abgeschmiert. Kann man mit „(string)$variable“ so einfach eine float- in eine string-Variable umwandeln?
Langsam nervt der Bluescreen… muss erstmal was arbeiten jetzt und versuche es später noch einmal… vielleicht fällt dir/euch ja doch noch ein Fehler auf.

Gruß
Daniel

Wenn, dann müsste es so lauten:

<?
$textp = 42597;
$text = str_replace(".",",",$textp);
$variable = floatval($text);

if ($variable >= 900){
TT_SendMail("asdf@gmx.net", "Goldk ~930$", $textp);
}
?>

oder du machst aus dem float wieder einen string:

<?
$textp = 42597;
$text = str_replace(".",",",$textp);
$variable = floatval($text);
$mailtext = strval($variable);

if ($variable >= 900){
TT_SendMail("asdf@gmx.net", "Goldk ~930$", $mailtext);
}
?>

Ich kenne die Anforderungen von Tonis „TT_SendMail“ nicht, da ich es (noch) nicht verwendet habe.
Aber dass „TT_SendMail“ einen Bluescreen erzeugt finde ich buggy :rolleyes:
Vielleicht hats ja auch eine andere Ursache…

:frowning: danke für eure Mühe…
klappt leider immer noch nicht. Dass sich dabei immer der komplette Rechner abschiesst finde ich schon krass (vor allem nervig).
Vielleicht muss ich Toni nochmal eine pm schreiben, vielleicht weiß er woran es liegen kann…

Gruß & einen schönen Sonntagnachmittag!
Daniel

Hier eine Alternative zu TT_SendMail:

paresy

@nancilla

Die (string) Variante macht genau das was Sie soll. Das ist hier aber scheinbar nicht das Problem. Und laut paresy wandelt der Befehl ansich die Variable schon in einen String.

Es führen viele Wege nach Rom, wie man so schön sagt. Deshalb ein paar Varianten mehr schaden auch nicht;)

Das ist hier aber scheinbar nicht das Problem.

Eben!:confused: