Rollladensteuerung mit FS20SM4

Hallo,

ich möchte gerne mit den FS20SM4-Modulen meine Rollläden steuern da ich schon vor längerem einen zentralen Schaltkasten mit Relais für alle Rollläden installiert habe. Da ich noch neu hier, und in der PHP-Programmierung bin, und ich auch im Forum kein passendes Script gefunden habe versuche ich es mal selbst. Aber leider scheitere ich schon an ein paar kleinen Befehlen!
Ich möchte mir die Laufzeit in Abhängigkeit der Position errechnen und darf logischerweise nur Zahlen ohne Komma als Ergebnis für den „FS20_ SwitchDuration“ Befehl errechnen. Nur leider funzt es nicht so wie ich will:confused: Wenn ich die Laufzeit-Variable auf eine fixe Zahl setze funzt es aber bei meiner errechneten kommt immer der Fehler „Notice: Undefined variable: Laufzeit in line 11“

File : Rollladen_Test.ips.php
Trigger :
Interval :
*/
$Position = 10;
$Laufzeit = round(20 * $Position / 100,0);
#$Laufzeit = 2;

echo $$Laufzeit;

FS20_SwitchDuration(10817, True, $Laufzeit); //Esszimmer runter

Bitte um eine Tip sonst verzweifel ich noch! Und das bei nur 3 Zeilen.

Gruß

LiteOn (oder eher Off)

was passiert denn bei:

 
$Position = 10;
$Laufzeit = round(20 * $Position / 100);
// $Laufzeit = 2;

echo $Laufzeit;

FS20_SwitchDuration(10817, True, $Laufzeit); //Esszimmer runter

?

$Laufzeit = round(20 * $Position / 100,0);

Also hier liegt mal ein Fehler ! 100,0 darf nicht sein ! Also wenn schon Komma, dann bitte ein Punkt: 100.0 !
Und Normalerweise geht 100 auch schon ohne Komma.

mfG Franz

Hallo,

@Olli
Nein, geht auch nicht!

@guyabano
Laut PHP-Befehl ist die Zahl nach dem Komma die Stellenzahl auf die gerundet wird!

Befehl: round($var[,stelle])
Autor: Tobias Hetzel

Erklärung bzw. Beschreibung des Befehls:
Rundet auf eine angegebene Stellenzahl.
Beispiel:

<?php
$var = „10.256652“;
echo round($var,2);
?>
Ausgabe:
10,26

Gruß

dann mach mal folgendes:

 
$Laufzeit = intval(round(20 * $Position / 100, 0));

Hallo LiteOn,

meine erste Annahme ist, das die Variable $Laufzeit keine Integervariable ist. Soweit ich mich erinnere ist das Ergenbis der round() Funktion ein Double Wert.

Du musst sicherstellen, dass im Befehl

FS20_SwitchDuration(10817, True, $Laufzeit);

die Laufzeit ein Integerwert ist.

Gruss babba

Hallo LiteOn,

versuche es mal so:

FS20_SwitchDuration(10817, True, (integer)($Laufzeit) );

die Laufzeit ein Integerwert ist.

Gruss Torro

Hallo,

danke an alle:)

Die Lösung war, das es natürlich ein Integerwert sein muss!

Damit

$Laufzeit = intval(round(17 * $Position / 100));

oder damit

FS20_SwitchDuration(14871, True, (integer)$Laufzeit);

funzt es!

So, jetzt kann es weiter gehen:rolleyes:

Hat eigendlich hier noch keiner ein Script für Rollladensteuerung mit einfachen Schaltmodulen wie FS20ST oder FS20SM4 geschrieben oder vielleicht auch 1-Wire?:confused:

Gruss LiteOn

PS: Jetzt geht es sogar ohne „round“-Befehl und mit einer var weniger!

FS20_SwitchDuration(14871, True, (integer)(17 * $Position / 100));

hmm, ich nicht - ich hab das FS20MS verwendet…