kann ich das ShutterControl auch verwenden, wenn die Rolläden per HM-LC-Sw4-PCB und 230V-Relais anschaltet sind. Habe im Modul die HM-Instanz (für hoch) als erste Sendeinstanz eingetragen; die für runter als zweite Sendeinstanz. Als Aktionsscript dienst das folgende:
<?
//Variables provided by ShutterControl Module
//IPS_LogMessage("InstanceID", $SC_INSTANCE); /* InstanceID */
//IPS_LogMessage("Direction", $SC_DIRECTION); /* {0..2} Stop, Up, Down */
//IPS_LogMessage("Duration", $SC_DURATION); /* ms */
if($IPS_SENDER != "ShutterControl")
die("This script can only be started by the ShutterControl Module");
define("SC_DIRECTION_STOP", 0);
define("SC_DIRECTION_UP", 1);
define("SC_DIRECTION_DOWN", 2);
$instance = IPS_GetInstance($SC_INSTANCE);
switch($instance['ModuleInfo']['ModuleID'])
{
case "{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}": //Homematic Shutter
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
HM_WriteValueBoolean($SC_INSTANCE, "STATE", false);
HM_WriteValueBoolean($SC_INSTANCE2, "STATE", false);
break;
case SC_DIRECTION_UP:
HM_WriteValueBoolean($SC_INSTANCE, "STATE", true);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
HM_WriteValueBoolean($SC_INSTANCE, "STATE", false);
}
break;
case SC_DIRECTION_DOWN:
HM_WriteValueBoolean($SC_INSTANCE2, "STATE", true);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
HM_WriteValueBoolean($SC_INSTANCE2, "STATE", false);
}
break;
}
break;
default:
die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
?>
Einmessen geht nicht.
EDIT: Hatte soeben bei LCN abgucken wollen … leider auch ohne Erfolge. Ich hatte gehofft, per $SC_INSTANCE2 die zweite im Modul eingetragene Instanz ansprechen zu können. Script ist oben aktualisiert.
EDIT2: Über bei drei Button ganz unten im Modul kann ich den Rolladen in die jeweils richtige Richtung bewegen und bei STOP ist auch wirklich stop. Anhand der Zeiten der STATE-Variablen der HM-Instanzen sehe, ich diese beide angesrochen werden. Somit gehe ich doch davon aus, das $SC_INSTANCE2 der richtige Weg ist. Leider ist nun kein Einmessen möglich.
wie kann ich die Rollöden einmessen? Da es keine Doku dafür gibt, gilt probieren. Ich kann Hoch, Stop, Runter erfolgreich klicken. Auch Werte manuell eintragen und dann auf Position fahren geht. Nur das Einmessen nicht. Warum?
Ich glaube mich zu erinnern (ca. 8 Monate her), dass ich verzweifelt (nach mehreren Versuchen) auch die Zeiten mit einer Stoppuhr genommen und dann manuell eingetragen habe…
Das manuelle Eingeben der Zeiten ist kein Problem, funktioniert genauso. Wichtig, „Setzen“ und „Übernehmen“ öfters betätigen. Das Ding ist etwas zickig.
Alternativ die Rolläden über „Switch_Duration“ für die gewünschte Zeit laufen lassen. Funktioniert bei meinen FS20 besser wie der Shutter.
Hatte ich auch anfangs parallel zum Test laufen … ist aber nur ein kleiner Kompromiss! Besser ist es, wenn man auf HM umstellt gleich mit den passenden Befehlen arbeitet, weil es sonst nur komplizierter wird.
Aber das war der Ursprungsdeganke des Themenerstellers und es ist in der Anwendung/Ausführung doch etwas „komfortabler“ und dem Dedanken der IPS-Supplier für eine weitere Evulation näher.
danke für eure Mithilfe bis hierhin. @nancilla: Wie jetzt?
Zitat von hrahlers
An sowas hatte ich auch gedacht - bei HM in meinem Fall mittels „ON_TIME“.
So, nun haste mich abgehängt… Was
Mit dem „ON_TIME“ kann ich vor dem eigentlichen Abschicken des Befehls für die Aktion noch eine Zeit festlegen, für wielange der Aktor schaltet. Somit läuft das Script weiter und der Timer läuft im Aktor. Dieser schaltet sich dann selbst aus.
Stand nun: Einmessen geht immer noch nicht - manuelles Eintragen erfolgreich -> Teilproblem erledigt. Mit SC_Move fährt auch alles in die richtige Position, auch Anzeige im WFE ok.
Nun habe ich ja auch die Taster im Zimmer. Es soll so sein, daß bei Taste_runter der Roll. nach unten bewegt wird. Bei erneuten Druck auf Taste_runter soll er stehen bleiben. Die Anzeige im WFE stimmt nicht, und bei erneuten Bewegen per Script z.B. auf 50% steht der Roll. irgendwo, aber nicht halboffen. Denn bei erstmaligen Tasten ist ja nicht immer bekannt, welche Stellung zuletzt erreicht wird. Meine Hoffnung war, daß der Shutter die gefahrene Zeit mitbekommt und un die Position prozentual anzeigt. Dem scheint jedoch nicht so zu sein.
Kann ich das dem Shutter beibringen? Alternative Idee ist auch, diese Zeit (zw. 1. u. 2. Tasterdruck) Variable zu schreiben.
Stichwort „Toggle-Button“, Abfrage einer Variablen, wenn „Aus“, dann fährt der Rolladen (und setzt Var auf true), wenn „An“ Stopp des Rolladens (Var aus false). Zwangs-Rücksetzung der Var zum Ende der Fahrzeit.
Nur am Rande…ich hatte mal an der Umgebung der Shutter Control rumgespieltund etwas gebastelt, um die Rolladen während der Fahrt WebFront-Konform anhalten zu können. hrahlers hatte in dem Thread auch mal angefragt…könnte das hier weiterhelfen?
ich habe das mit den HM-LC-Sw4-PCB jetzt so gelöst.
<?
//Variables provided by ShutterControl Module
//IPS_LogMessage("InstanceID", $SC_INSTANCE); /* InstanceID */
//IPS_LogMessage("Direction", $SC_DIRECTION); /* {0..2} Stop, Up, Down */
//IPS_LogMessage("Duration", $SC_DURATION); /* ms */
if($IPS_SENDER != "ShutterControl")
die("This script can only be started by the ShutterControl Module");
define("SC_DIRECTION_STOP", 0);
define("SC_DIRECTION_UP", 1);
define("SC_DIRECTION_DOWN", 2);
$instance = IPS_GetInstance($SC_INSTANCE);
switch($instance['ModuleInfo']['ModuleID'])
{
case "{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}": //Homematic
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
HM_WriteValueBoolean($SC_INSTANCE, "STATE", false);
HM_WriteValueBoolean($SC_INSTANCE2, "STATE", false);
break;
case SC_DIRECTION_UP:
HM_WriteValueBoolean($SC_INSTANCE2, "STATE", false);
HM_WriteValueFloat($SC_INSTANCE, "ON_TIME", $SC_DURATION / 1000);
HM_WriteValueBoolean($SC_INSTANCE, "STATE", true);
break;
case SC_DIRECTION_DOWN:
HM_WriteValueBoolean($SC_INSTANCE, "STATE", false);
HM_WriteValueFloat($SC_INSTANCE2, "ON_TIME", $SC_DURATION / 1000);
HM_WriteValueBoolean($SC_INSTANCE2, "STATE", true);
break;
}
break;
default:
die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
?>
Der Vorteil ist das die Aktoren selber nach der defienierten Zeit abschalten und das Skript kein Sleep macht!
Ich hoffe ich habe keinen Denkfehler. Soweit läuft aber alles und das Einlernen geht auch.
Man könnte vielleit noch die Hardwareabfrage rausnehmen.