String von SPS lesen

Es bezog sich auf die von 1007 angefragte Zeile 17, die trotz meiner Hinweise und des Beispielskripts bei Dir noch falsch ist. Die Worte „zusätzliche Zeile“ bedeuten, dass Du eine neue Zeile in Dein Skript einfügen musst, mit dem geschriebenen Inhalt.

Hier, da das offensichtlich schwierig ist :rolleyes:

<?
    if($_IPS['SENDER'] == "WebFront")
        {
        $value    = $_IPS['VALUE'];
        $zeit     = explode(":",$value);
        $stunden  = $zeit[0];
        $minuten  = $zeit[1];
        $sekunden = $zeit[2];
        $tagsek   = ($stunden*3600)+($minuten*60)+$sekunden;
        
        $mitternacht = mktime(0, 0, 0, date("n"), date("j"), date("Y"));
        $zeit = $mitternacht + $tagsek;
        $zk = date("H:i:s",$zeit);
        
        // $zk ist ein formatierter Uhrzeitstring
       SetValue($_IPS['VARIABLE'], $zk); //                <---  muss so bleiben !!
       // $tagsek sind die Sekunden heute , ab in Richtung SPS

       SetValue(37943, $zk); //                            <---  Zeile eingefügt !!

       ModBus_WriteRegisterInteger(45394, $tagsek);

        }

?>

DANKE, für eure Hilfe!!!:slight_smile:
jetzt geht es endlich!

Gibt es so etwas wie ein Dropdown Menü oder eine Auswahlbox wie im Dashboard worin man dann zB Zeiten vordefiniert, für das Webfront?

Hab heut ein IPS Update gemacht, und seit dem geht die Sache mit dem Zeiten schreiben nicht mehr.
Nur Fehlermeldungen.
Vor dem Update hat alles funktioniert.

Kann mir Bitte jemand bei dem Fehler weiterhelfen?
Warum kommt seit dem IPS Update gestern dieser Fehler? Was ist der Fehler? Wie behebe ich den Fehler?

Der erste Fehler in Zeile 8 kommt, weil der Wert der Variable keinen String mit 2 Doppelpunkten enthält, die der explode-Befehl auftrennen kann.
Die Zeile 19 kann nie funktioniert haben, weil es kein $_IPS[<zahl>] gibt. Wenn ich in das Script Beispiel weiter oben anschaue, ist das da auch nicht drin.

Tommi

Also muss/soll ich in Zeile 8 nicht „$sekunden = $zeit[2]“ sondern „$sekunden = $zeit[1]“ schreiben.?
Kannst Du mir das mit Zeile 19 genauer erklären? Am besten mit einem Beispiel.

Das Script hatte aber bis zum Update funktioniert.

Also muss/soll ich in Zeile 8 nicht „$sekunden = $zeit[2]“ sondern „$sekunden = $zeit[1]“ schreiben.?

Nein, diese Zeile ist richtig. Allerdings muss dann auch in der Variable, deren Wert durch $_IPS[‚VALUE‘] ausgelesen wird, auch ein String mit einer gültige Uhrzeit (mit zwei Doppelpunkten) stehen, z.B. „08:15:32“. Dann kann das expolode auch $zeit[2] mit den Sekunden füllen.

Kannst Du mir das mit Zeile 19 genauer erklären? Am besten mit einem Beispiel.

Das hat Dir Powerfreddy schon in seinem Beispiel erklärt. Wenn die IPS-Variable zum Speichern die ID 37943 hat, sollte Zeile 19 so aussehen:

 SetValue(37943, $zk); 

Nichts für ungut, aber evtl. könnte es zielführender sein, wenn Du erst einmal versuchst, die Grundlagen von IPSymcon und PHP zu verstehen, anstatt blind etwas abzutippen.

Tommi