Ansteuerung eines Stromstoßschalters mit IPS

Hallo,

da ich das Problem hatte und des öfteren auch im Forum die Frage dazu kam, wie das geht, ich jedoch nirgendwo eine Antwort gefunden habe, hier mal meine Lösung, wie man einen Stromstoßschalter ansteuern kann. Bei mir über das Velleman-Board, aber kann man ja einfach für FS20 umschreiben, wenn das gewünscht ist…

if(GetValueBoolean("Licht_Aufenthalt") == True)
{
  SetValueBoolean("Licht_Aufenthalt", False);
}
else SetValueBoolean("Licht_Aufenthalt", True);

VELLEUSB_WriteDigitalChannel(10942, 3, True);
IPS_Sleep(200);
VELLEUSB_WriteDigitalChannel(10942, 3, False);

Für die Visualisierung wird beim ausführen des Scriptes jedesmal der Status von True auf False und anderstrum gewechselt, strommässig geht aber immer nur ein Impuls von 200 ms raus…

Gruss Daniel

Vielen Dank dass du diene Erfahrung mit uns teilst. Davon lebt ein Forum.

Das Problem bei FS20 ist, dass es wahrscheinllich wesendlich länger dauert. Die Komponenten sind zu träge als das man „mal eben“ 200ms abmessen könnte. Viele Stromstoßrelais reagieren wohl seltsam wenn man sie mit SwitchDuration zu lange ansteuert. Ich kann das zwar selbst nicht bestätigen, aber es wird berichtet.

Gruß,

Toni

Das ganze ist mit Funk auch sehr riskant. Bei mir im Haus muss ich erfahrungsgemäss ~800 ms warten, bevor ich einen neuen Funkbefehl absetzen kann.
Ausserdem ist Funk nicht so zuverlässig.
Was ist, wenn der ‚Stromstossrelais‘ den TRUE mitbekommt, aber nicht den FALSE? Dann bleibt das ganze hängen.

Also bei solchen Anwendungen ist hier unbedingt der Befehl FS20_SwitchDuration vorzuziehen !

mfG Franz

Für so kleine Schaltzeiten (Impulse) nehme ich auch gern folgende Scripts.
Das erste liefert die eigentliche Funktion für den Impuls. Es wird die gleiche Syntax wie beim FS20_SwitchDuration verwendet. Das Ergebnis der Befehle wird zudem auch weitergereicht. Bei einer Schaltzeit >= 1 Sek. wird die Funktion mit einem Fehler (=false) aber abgebrochen.

Damit können kleinere Impulse als 1 Sekunde erreicht, und bei Problemen während der Übertragung ist der Impuls max. 1 Sekunde lang.

<?
//   File     : global_functions_fs20.ips.php

// ........

function FS20_SwitchModePulse($id,$status,$duration) {
   //Impulsverzögerung : Schaltdauer in Sekunden
   if ($duration<1) {
      $erfolg = FS20_SwitchDuration($id,$status,1); // Einschalten mit Sicherheit:
                                                    //    falls Ausschaltbefehl nicht ankommt
      if ($erfolg) {
         If ($duration<0.25) $duration=0.25;        // lt. FS20-Protokoll:
                                                    // kleinstmögliche Timerprogrammierung (=nicht veröffentlicht)
         IPS_Sleep((int)($duration*1000));          // Impulsdauer
         $erfolg = FS20_SwitchMode($id,!$status);   // Ausschalten
      }
      return $erfolg;
   }
   else return false;
}

// ........

?>

… und hier der Aufruf der Funktion. Die Instanz des FS20 Aktor muss natürlich angepasst werden. Viel Spass!
Als Anwendung bei Stromstossrelais, überprüft trotzdem die Daten des Relais. Bei einem Impuls von 1 Sekunde können die Relais unvorgesehen darauf reagieren.

<?
//   File     : stromstossrelais.ips.php

include_once("global_functions_fs20.ips.php");

//Toggle FlipFlop Variable
SetValueBoolean("Licht_Aufenthalt",!GetValueBoolean("Licht_Aufenthalt"));

//Stromstossrelais schalten
FS20_SwitchModePulse(12345,true,0.2);

?>

Das ist nur eine mögliche Variante. Durch IPS gibt es derer sicherlich auch noch andere. :slight_smile:

Gruß
Günter.

Schöne Funktion, danke fürs posten. Ist quasi eine Erweiterung zu der von Daniel.

Es sei aber noch kurz angemerkt, dass zwei Befehle, die im Abstand von 200ms gesendet werden sollen nicht auch zwangsläufig mit dem selben Abstand beim Empfänger ankommen. Was aber auch nicht heisst, dass es ausgeschlossen ist. Ich denke die Chancen, dass es zumindest ungefähr passt sind sogar recht gut.

Da Stromstoßrelais meiner Erfahrung nach recht unempfindlich gegenüber Impulsdauer sind wird das schon klappen. habs aber selbst nicht getestet.

Toni

Das sieht schon viel besser aus !

SwitchDuration, ‚SwitchPulse‘ …

mfG Franz