ShutterControl Instanz: Position anfahren funktioniert nicht

Hallo zusammen,

ich habe heute versucht die Zeiten für meine ShutterControl Instanz einzutragen, aber trotzdem fährt das Rollo immer auf 0% oder 100%, wo ist mein Fehler? Die Buttons „Hoch“, „Stop“, „Runter“ in der Konfiguration funktionieren alle drei.

Konfiguration:

Objektbaum:

ShutterControlSkript:


<?
//Variables provided by ShutterControl Module
//IPS_LogMessage("InstanceID", $_IPS['INSTANCE']); /* InstanceID */
//IPS_LogMessage("Direction", $_IPS['DIRECTION']); /* {0..2} Stop, Up, Down */
//IPS_LogMessage("Duration", $_IPS['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($_IPS['INSTANCE']);
switch($instance['ModuleInfo']['ModuleID'])
{

    case "{485D0419-BE97-4548-AA9C-C083EB82E61E}": //Dummy Modul
        switch($_IPS['DIRECTION'])
        {
            case SC_DIRECTION_STOP:
        		    ModBus_WriteCoil(27210 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Stop]*/, true);
					 ModBus_WriteCoil(27210 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Stop]*/, false);
                break;
            case SC_DIRECTION_UP:
        		   ModBus_WriteCoil(26335 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Auf]*/, true);
					ModBus_WriteCoil(26335 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Auf]*/, false);
                break;
            case SC_DIRECTION_DOWN:
        		    ModBus_WriteCoil(48606 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Ab]*/, true);
					 ModBus_WriteCoil(48606 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Ab]*/, false);
                break;
        }
        break;
    default:
        die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
?>

Vielen Dank!

Gruß Basti

Du musst den Duration Parameter in deinem Skript entsprechend auswerten und im Skript warten, bis du explizit den STOP sendest.

paresy

Ah, okay da hätte ich lange suchen können, das probiere ich nachher mal aus!

Danke!

Ich habe das Skript jetzt analog zu den anderen Shutter Skripten angepasst. Aber irgendwie passt es nicht immer. Manchmal fährt es „echt komisch“, oder garnicht.

Liegt das daran, dass ich das Profil von ~ShutterAssociation auf ~Shutter geändert habe? Manchmal stelle ich eine Prozentzahl ein und er fährt garnicht (Variable ändert sich garnicht). Manchmal fährt er die richtige Position an, manchmal aber auch nicht.


<?
//Variables provided by ShutterControl Module
IPS_LogMessage("InstanceID", $_IPS['INSTANCE']); /* InstanceID */
IPS_LogMessage("Direction", $_IPS['DIRECTION']); /* {0..2} Stop, Up, Down */
IPS_LogMessage("Duration", $_IPS['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($_IPS['INSTANCE']);

switch($instance['ModuleInfo']['ModuleID']) {

	case "{485D0419-BE97-4548-AA9C-C083EB82E61E}": //Dummy Module
		switch($_IPS['DIRECTION']) {
			case SC_DIRECTION_STOP:
            POKEYS_ShutterStop();
				break;
			case SC_DIRECTION_UP:
				POKEYS_ShutterMoveUp();
				if($_IPS['DURATION'] > 0) {
               IPS_Sleep($_IPS['DURATION']);
               POKEYS_ShutterStop();
				}
				break;
			case SC_DIRECTION_DOWN:
         	POKEYS_ShutterMoveDown();
         	if($_IPS['DURATION'] > 0) {
               IPS_Sleep($_IPS['DURATION']);
               POKEYS_ShutterStop();
				}
				break;
		}
		break;
		default:
			die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}

function POKEYS_ShutterStop() {
	ModBus_WriteCoil(27210 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Stop]*/, true);
	ModBus_WriteCoil(27210 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Stop]*/, false);
}

function POKEYS_ShutterMoveUp() {
	ModBus_WriteCoil(26335 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Auf]*/, true);
	ModBus_WriteCoil(26335 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Auf]*/, false);
}

function POKEYS_ShutterMoveDown() {
	ModBus_WriteCoil(48606 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Ab]*/, true);
	ModBus_WriteCoil(48606 /*[Schnittstellen\PoKeys57E Dachfensterollos\Rollo Gästezimmer\Ab]*/, false);
}
?>

Vielen Dank!

Gruß Basti

Das klingt komisch. Du hast ja bei dir im Skript, welches übrigens recht gut ausschaut, oben das Debug Logging drin… Hast du geschaut, was wie aufgerufen wird?

paresy

Hm das ist echt komisch, mit dem Profil ~ShutterAssociation funktioniert es immer. Die Logs sind scheinbar immer korrekt. Dann lass ich es bei den Rollos auf diesem Profil. Ich habe irgendwie kein Glück mit dem ~Shutter Profil. Ich habe auch ein Problem mit meinen Rademacher Rollosteuerungen und dem ~Shutter Profil, siehe Probleme mit Profil ~Shutter und Aktualisieren der Variable

Vielen Dank nochmal für den Tipp mit der Duration, ohne diesen hätte ich noch lange gesucht.

Gruß Basti