Hallo liebe Forumsmitglieder,
Ich bin neu im Thema/Forum, und habe endlich auch meine Hardware zu spielen erhalten :).
Habe mir mittlerweile ein paar Gedanken zu einer sinnvollen halbwegs übersichtlichen Strategie zur Verwaltung der Instancen, Variablen und „Standart“ Events gemacht. Die ein oder andere Idee hab ich vom Lesen hier, aber es steht wirklich sehr viel auch unstrukturiert, so dass es möglich ist das es zu meiner Frage schon Antworten gibt. Wenn ja einfach mal verlinken aber auch gerne hier diskutieren.
Also offensichtlich macht es Sinn (Stichwort WAF / Ausfallsicherheit) viele Funktionen direkt mit einer FB ansteuern zu können. IPS sollte das aber mitbekommen/loggen. Sowohl um die Stati anzeigen zu können, als auch um gegebenfalls logische verknüpfungen durchführen zu können (Licht nur an wenn Dunkel z.B.)
Zur Sache habe mir folgendes überlegt:
Aktoren:
Instance anlegen und verbinden - Namen zuweisen in der Form
S_SW1_1 z.b. = Schlafzimmer _ switch nr.1 schalter 1
Dann eine zugehörige Variable
S_D_SW1_1 = Schlafzimmer _ Data _ Switch nr 1 _ Schalter 1
bei der Instanz als Data Variable eintragen
gegebenfalls noch
S_S_SW1_1 = Schlafzimmer _ Status _ Switch nr 1 _ Schalter 1
bei der Instanz als Status Variable eintragen
Eine zugehörige Funktion anlegen
S_T_SW1_1 = Schlafzimmer _ Trigger _ switch 1 _ schalter 1
So nun einen Trigger setzen mit UPDATE auf S_D_SW1_1
Die Funktion selber sieht nackt dann so aus:
switch (GetValueInteger ("S_D_SW1_3") {
case "19": // Hoch Dimmen
break;
case "20": // Runter Dimmen
break;
case "17": // Einschalten
break;
case "0": // Ausschalten
break;
}
So nun kann man im jeweiligen Case Fall was einfügen, was passieren soll wenn den Schalter gedrückt ist, oder nichts falls der Schalter rein direkt wirken soll.
Somit kann man über die Punkte Dimmen auch den Status eines Dimmers verfolgen indem man dann dort eine Interne Variable anpasst.
(Oder besteht eine Möglichkeit den Dimmstatus eines Dimmers auszulesen ?)
So analog Reaktoren:
Instance:
S_ST1 = Schlafzimmer Steckdose 1
Variable:
S_O_ST1_I = Schlafzimmer _ Out _ Steckdose1 _ Ist
S_O_ST1_S= Schlafzimmer _ Out _ Steckdose1 _ Soll
Eventscript:
S_O_ST1 Schlafzimmer _ Out _ Steckdose1 triggert wenn S_O_ST1_S ein update erhält. In dem Fall dann den Wert zur Physikalischen Einheit schreiben und auch S_O_ST1_I setzen.
S_O_ST1_I Sollte immer gesetzt werden wenn was empfangen wird was den Status der Steckdose ändert (FB)
Bei einem Dimmer kämmen noch zwei Soll/Ist Variablen mit der Intensität hinzu. Ist variablen müssten immer über obiges Case gepflegt werden. Z.b. so:
...
case "19": // Hoch Dimmen
if (GetValueInteger ("S_O_DI1I_I")< 16) SetValueInteger ("S_O_DI1I_I" , GetValueInteger ("S_O_DI1I_I")+1);
break;
case "17": // Runter Dimmen
if (GetValueInteger ("S_O_DI1I_I")> 0) SetValueInteger ("S_O_DI1I_I" , GetValueInteger ("S_O_DI1I_I")-1);
break;
...
Das sollte so eigentlich gut funktionieren und es z.b. einfach ermöglichen im Designer einen Dimmer Status per Schieberegler anzuzeigen und auch zu ändern. (Position Ist variable, onChange Soll Variable)
Was mich allerdings daran stört ist der doch recht hohe Auffwand für ein Schalter / Dimmer. Ich vermute allerdings das geht nicht wesentlich besser, oder ?
Wie macht ihr das? Kann an teile evtl. automatisieren ?
So ich hoffe das war jetzt nicht zu DAU für den ersten Post
Gruß,
Anti aka Jan