Ablaufplan triviale Frage

Hallo Gemeinde, ich versuche mich grade an einem Ablaufplan und verzweifle schon bei den einfachsten Versuchen. Ich hab eine Webfront Variable die gesetzt werden soll, wenn ein auslösendes Ereignis auftritt und das will einfach nicht. Folgendes habe ich versucht:

  • Auslösendes Ereignis, wenn eine Prüf Variable den Wert 5 bekommt => Aktion: Schalte eine Integer Variablke auf den Wert 1
  • Auslösendes Ereignis bei Änderung und zusätzliche Bedingung die Prüf Variable muss 5 sein => gleiche Aktion.

Ich mache wohl irgendetwas grundlegend falsch aber ich komme einfach nicht drauf.

Magst du uns noch kurz verraten an welcher Stelle es nicht „will“? Kannst du die Variable aus dem WebFront heraus schalten? Oder was soll in der Variable am Ende stehen?

paresy

Ich schalte die Variable über das WebFront, die Aktion dahinter wird gestartet (ein .HM_WriteValueInteger wird abgesetzt). Das Ereignis wird ausgelöst, der Plan wird aufgerufen aber die zu setzende Variable ändert ihren Wert nicht.

Zeig mal deinen Ablaufplan. Welche Aktion nutzt du zum Setzen?

paresy

Ich hab es inzwischen klassisch mit men Skript gelöst aber es sah so aus:


1 „Gefällt mir“

Interessieren würde mich schon, was ich falsch gemacht habe, würde diese Pläne gerne öffter nutzen und ggf. Skripte dafür löschen können.

Ok, wie sah das Aktionsskript denn für diese Variable „Zustand“ aus?

paresy

Genauso wie jetzt auch:

<?
	include 'SetHMStatus.inc.php';
	IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");
    
    $tor      = 29126;
	$state    = GetValueInteger(31375);
    $process  = GetValueInteger(11655);
	
	if($_IPS['SENDER'] == "WebFront")
	{
    	$value = $_IPS['VALUE'];

		switch($value){
			case 6:  //Schließen
				if ($process == 0 && $state != 0) //keine Fahrt und nicht geschlossen
				{
                    IPSLogger_Inf (__file__, "Webfront Garagentor schließen");
					HM_WriteValueInteger($tor, "DOOR_COMMAND", 3);
				}
				break;
			case 7:  //Stop
                if ($process == 1) //Fahrt aktiv
                {
                    IPSLogger_Inf (__file__, "Webfront Garagentor stop");
                    HM_WriteValueInteger($tor, "DOOR_COMMAND", 2);
				}
				break;
			case 8:  //Lüften
				if ($process == 0 && $state != 2) //keine Fahrt und nicht Lüftung
                    IPSLogger_Inf (__file__, "Webfront Garagentor lüften");
                    HM_WriteValueInteger($tor, "DOOR_COMMAND", 4);
                break;
			case 9:  //Öffnen
				if ($process == 0 && $state != 1) //keine Fahrt und nicht offen
				{
                    IPSLogger_Inf (__file__, "Webfront Garagentor öffnen");
                    HM_WriteValueInteger($tor, "DOOR_COMMAND", 1);
				}
				break;
		}
	}
?>

Der Sender ist beim Ablaufplan aber nicht WebFront → D.h. ich vermute deshalb wurde nicht ausgeführt.

paresy

Der Sender ist ja auch eine andere Variable!

MIt dem Wenfront wird nur der Tastendruck für das HM IP Hörmann Gateway gesendet. Das Gateway schaltet dann den Wert Process auf 1 (fährt) oder 0 (steht) und den Wert Section auf 2 (auf) oder 5 (ab).

Im Plan frage ich Section ab und setzte den Wert der Integervariablen Zustand (oder versuche es zumindest was ja nicht klappt). Das mache ich jetzt ähnlich, nur dass ich das Skript auf Änderung von Prozess starte und da dann die Richting abfrage.

<?php

    IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");

    $zustand  = 16450;
	$section  = GetValueInteger(45924);

    Switch ($section){
        case 2:
            SetValueInteger($zustand, 9); //öffnen
            IPSLogger_Inf (__file__, "Garagentor fährt in Richtung auf");
            break;
        case 5:
            SetValueInteger($zustand, 6); //schließen
            IPSLogger_Inf (__file__, "Garagentor fährt in Richtung zu");
            break;
    }

PS: Der Plan wird ja laut Log ausgeführt aber es passiert halt nichts.

Wenn der Ablaufplan die Zustand Variable setzt, dann ist der Ablaufplan der Sender.

paresy

OK verstanden aber er setzt ja nur einen Wert wie jetzt das Skript (also das zuletzt gepostete). Trotzdem geht es damit nicht.

Keiner eine Idee, was das sein könnte?

Teilweise, auch bei KNX, hilft es nichts, nur die Variable zu verändern - man muss da direkt auf die Instanz schreiben. Hast Du das schon mal versucht?

Nein das werde ich mal testen. Habe inzwischen einen anderen Plan gebaut, da scheint alles zu funktionieren wie es soll.