AktorSteuerung (alle Aktoren über eine zentrale Steuerung ansprechen/bedienen)

Hallo allerseits!

Oft genug habe ich von meiner AktorSteuerung gesprochen, aber die wird glaube ich niemals fertig sein, deshalb wird sie jetzt einfach veröffentlicht und kann mit eurer Hilfe sicher noch schneller/besser wachsen :slight_smile:

Wozu meine AktorSteuerung? Ganz einfach > normal steuert man seine Aktoren immer aus den entsprechenden Scripten, ändert sich ein Aktor, weil man z.B. den Hersteller wechselt, dann muss man an mehrere Stellen alles umändern und seine ganzen Scripte überarbeiten. Mit der AktorSteuerung gibt es nur eine Stelle an der etwas geändert werden muss und schon geht es wieder weiter :cool:

Außerdem werden die „Befehle“ zentral alle über die AktorSteuerung geleitet, damit bieten sich teilweise neue Funktionen, die die Geräte normaler weiße gar nicht unterstützen, z.B. ein langsames hoch/runter dimmen auf einen bestimmten Wert innerhalb einer bestimmten Zeit.

Ebenfalls werden durch diese zentrale Steuerung alle Schaltbefehle durch eine Semaphore geschickt, also gibt es nie mehrere Befehle gleichzeitig an z.B. seine HomeMatic CCU, was bei mir zu einem deutlich stabileren Verhalten geführt hat.

Es gibt sicher noch mehr Vorteile, aber ich will hier nicht lange rum schreiben :slight_smile:

Was braucht ihr?
> Nur das Script aus dem Anhang!

Einfach irgendwo im IPS ablegen, ausführen, der Rest passiert von alleine :slight_smile:
> Es wird eine Kategorie „AktorSteuerung“ angelegt und einige Unterkategorieren und Scripte. Das Zeug darf NICHT verschoben werden! Auch werden automatisch die Variablenprofile angelegt mit einem Suffix von mir, so dass euch nichts überschrieben wird.

Dann findet ihr unter 0-AktorSteuerung-Config ein Script mit Namen „AktorSteuerung_Config“. In dieses Script werden eure Aktoren eingetragen. Danach einfach das Script ausführen > taaadaaa :slight_smile:
Wenn sich ein Aktor ändert, einfach in der Config ändern, Script ausführen, weiter geht’s :slight_smile:

Was wird aktuell von der AktorSteuerung unterstützt? > AktorSteuerung_Vorlagen

// DIMMER UND SCHALTER > HOMEMATIC UND Z-WAVE
//AktorSteuerung("Wohnzimmer_Stehlampe_Hinten", "AN");             // AN/AUS >> Aktor einschalten/ausschalten
//AktorSteuerung("Wohnzimmer_Stehlampe_Hinten", "AN", 10);         // AN, Sekunden >> Aktor für 10 Sekunden einschalten
//AktorSteuerung("Wohnzimmer_Stehlampe_Hinten", "DIM", 50);        // DIM, 0-100 >> Aktor auf Wert X dimmen
//AktorSteuerung("Wohnzimmer_Stehlampe_Hinten", "DIMZEIT", 20);    // DIMZEIT, Sekunden >> Aktor in 20 Sekunden auf Wert von "DIM" dimmen (nur HomeMatic Dimmer)
//AktorSteuerung("Wohnzimmer_Stehlampe_Hinten", "SPERRE", "AN");   // SPERRE, AN/AUS >> Aktor sperren/entsperren (um diesen vor ungewünschtem ein-/ausschalten zu schützen)

// ROLLLÄDEN UND LEINWÄNDE > HOMEMATIC UND Z-WAVE
//AktorSteuerung("Heimkino_Leinwand", "HOCH");                // HOCH/RUNTER >> Leinwand nach oben bzw. unten fahren
//AktorSteuerung("Heimkino_Leinwand", "STOP");                // STOP >> Leinwand stoppt die Fahrt nach oben/unten
//AktorSteuerung("Heimkino_Leinwand", "POSITION", 50);        // POSITION, 0-100 >> Leinwand auf 50% fahren
//AktorSteuerung("Wohnzimmer_Rollladen", "ÖFFNEN");           // ÖFFNEN/SCHLIESSEN >> Rollladen öffnen bzw. schliessen
//AktorSteuerung("Wohnzimmer_Rollladen", "STOP");             // STOP >> Rollladen stoppt das Öffnen/Schliessen
//AktorSteuerung("Wohnzimmer_Rollladen", "POSITION", 50);     // POSITION, 0-100 >> Rollladen auf 50% fahren

// THERMOSTATE > HOMEMATIC
//AktorSteuerung("Gaestezimmer_Heizung", "TEMPERATUR", 21);               // Thermostat auf 21 Grad stellen
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "AUS");           // Thermostat auf AUS stellen, entspricht "Sommer-Modus"
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "AUTO");          // Thermostat auf "Auto" stellen
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "BOOST");         // Thermostat auf "Boost" stellen
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "MANUELL", 21);   // Thermostat auf "Manuell" und 21 Grad stellen
//AktorSteuerung("Gaestezimmer_Heizung", "KOMFORT-TEMPERATUR");           // Thermostat auf Komfort-Temperatur stellen
//AktorSteuerung("Gaestezimmer_Heizung", "ABSENK-TEMPERATUR");            // Thermostat auf Absenk-Temperatur stellen

// THERMOSTATE > Z-WAVE STELLAZ
//AktorSteuerung("Gaestezimmer_Heizung", "VENTILPOSITION", 50);             // Thermostat Ventilpostition für manuelle Steuerung auf 50% stellen
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "AUS");             // Thermostat auf AUS stellen, entspricht "Frostschutz-Modus" bei 5 Grad
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "KOMFORT");         // Thermostat auf Komfort-Automatik stellen
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "ENERGIESPAREN");   // Thermostat auf Energiesparen-Automatik stellen
//AktorSteuerung("Gaestezimmer_Heizung", "CONTROLMODE", "MANUELL");         // Thermostat auf manuelle Ventildirektsteuerung stellen
//AktorSteuerung("Gaestezimmer_Heizung", "KOMFORT-TEMPERATUR", 21);         // Temperatur für Komfort-Modus auf 21 Grad setzen
//AktorSteuerung("Gaestezimmer_Heizung", "ENERGIESPAREN-TEMPERATUR", 17);   // Temperatur für Energiesparen-Modus auf 17 Grad setzen

Unter VARIABLEN findet ihr dann eure Aktoren mit zugehörigen Variablen, diese könnt ihr dann einfach ins WebFront verlinken.

Die SPERRE hat den Sinn, wenn man z.B. eine Schaltung eines Aktor durch ein anderes Script für eine bestimmte Zeit verhindern will (nutze ich z.B. bei meinen Bewegungsmeldern), dann kann man die Aktoren SPERREN. Oder nur manuelle Schaltung durch einen Taster erlauben und alles durch Scripte sperren, oder andersrum oder was auch immer. Da könnt ihr kreativ sein!

Wenn man einen Aktor über das WebFront schaltet, dann werden die Variablen mit geändert. Wenn man einen Aktor über z.B. einen extra Taster schaltet, dann wird durch die Aktorenüberwachung die Variablenänderung erkannt und die Variable in der AktorSteuerung mit geändert. Also hat man eine zentrale Stelle an der immer alles aktuell ist und man den richtigen Status hat! Sofern man nicht etwas neben der AktorSteuerung vorbei schaltet.

Es gibt viel zu entdecken, einfach mal ausprobieren. Weitere Erklärungen und Beispiele findet ihr in den nächsten Beiträgen.

Probiert einfach mal ein wenig rum, tragt ein paar Aktoren ein, testet, habt Spaß damit, …
Wenn es euch gefällt, dann benutzt es, wenn euch nur ein Teil gefällt, dann klaut euch den Teil raus, wenn es euch nicht gefällt, dann benutzt es nicht :smiley:

Die AktorSteuerung hat klein angefangen, weil ich Probleme mit HomeMatic hatte, wenn zu viele Lampen gleichzeitig geschaltet wurden (bei ALL OFF), damit habe ich jetzt endlich keine Probleme mehr und auch sonst hatte ich viele Vorteile durch diese AktorSteuerung.

Was wirklich toll wäre, wenn man das/so etwas in der Art, direkt in IPS mit einbauen könnte. Als z.B. PHP Modul, wo man einzelne Hersteller nachpflegen kann, weil dann könnten Anfänger sehr einfach alle möglichen Aktoren steuern, ohne tiefer in PHP eintauchen zu müssen. Und auch die Verwaltung wäre viel einfacher. Wo ich auch wieder beim modularen Aufbau von IPS wäre…

So, genug gesabbelt, viel Spaß mit diesem Projekt!

Grüße,
Chris

PS: Wenn ihr die AktorSteuerung in Kombination mit diesem geilen Projekt (HomeMatic EasyInstall ) verwendet, dann könnt ihr eine ganze Menge anstellen, ohne auch nur eine Zeile programmiert zu haben!

AktorSteuerung_v1.01.zip (13.9 KB)

Eine Beispiel-Config ist im Script enthalten, aber hier nochmal eine vorab Übersicht:

<?
include("AktorSteuerung_Funktionen.ips.php");

/******KONFIGURATION************************************************************
*
*   !WICHTIG! -   Dieses Script muss nach Hinzufügen/Ändern/Entfernen von Aktoren manuell ausgeführt werden,
*                 damit die Variablen erstellt/verschoben werden. Die Variablen von aus der Config
*                 entfernten Aktoren werden in den Unterordner "Entfernte Variablen" verschoben, falls
*                 man die Variablenwerte geloggt hatte und die geloggten Daten noch benötigt.
*                 Das Logging der AktorSteuerung-Variablen muss manuell aktiviert werden!
*
*                 Zusätzlich werden für alle Aktoren in der Config Events angelegt, welche die Variablen
*                 der Aktoren auf Änderung überwachen. Damit werden auch alle Schaltungen über Schalter
*                 oder direkt an Thermostaten von der AktorSteuerung in die eigenen Variablen übernommen.
*
*
*   Feld 00   -   Instanz ID des Aktors (bei Intertechno der Hauscode - z.B. "A1")
*   Feld 01   -   Name des Aktors (z.B.: "Wohnzimmer_Stehlampe_Links")
*   Feld 02   -   Hersteller (HomeMatic/Z-Wave/Intertechno)
*   Feld 03   -   Art (Dimmer/Schalter/Leinwand/Rollladen/Thermostat/Thermostat-StellaZ)
*   Feld 04   -   Optionales Feld für Rollläden/Leinwand ("normal" / "reverse")
*
*
*   # Aktuell werden folgende Hersteller/Geräte/Befehle unterstützt:
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Dimmer"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Schalter"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Thermostat"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Rollladen", "normal"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Rollladen", "reverse"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Leinwand", "normal"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","HomeMatic","Leinwand", "reverse"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Dimmer"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Schalter"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Thermostat-StellaZ"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Rollladen", "normal"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Rollladen", "reverse"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Leinwand", "normal"),
*   Beispiel  - array(12345/*,"AktorOrt_AktorName","Z-Wave","Leinwand", "reverse"),
*   Beispiel  - array("A1","AktorOrt_AktorName","Intertechno","Schalter"),
*   Beispiel  - array("A2","AktorOrt_AktorName","Intertechno","Leinwand", "normal"),
*   Beispiel  - array("A2","AktorOrt_AktorName","Intertechno","Leinwand", "reverse"),
*   Beispiel  - array("A3","AktorOrt_AktorName","Intertechno","Rollladen", "normal"),
*   Beispiel  - array("A3","AktorOrt_AktorName","Intertechno","Rollladen", "reverse"),
*
*******************************************************************************/

$Debug = false;  // false/true >> Debug-Ausgaben im Log und im WebFront
$DeviceConfig =
[
   array(35330 /*[Hardware\HomeMatic\Schaltaktor-1fach\SA01 (Haustür Öffner)\Schalter]*/, "Haustuer_Oeffner", "HomeMatic", "Schalter"),
	array(48786 /*[Hardware\HomeMatic\Zwischenstecker\L06 (Terarrium)\Schalter]*/, "Terrarium_Hauptschalter", "HomeMatic", "Schalter"),
	array(56824 /*[Hardware\HomeMatic\Dimmer\DIM02 (Wohnzimmer hinten - Deckenlampe)\Dimmer]*/,"Wohnzimmer_Deckenlampe_Hinten","HomeMatic","Dimmer"),
	array(47714 /*[Hardware\HomeMatic\Dimmer\DIM01 (Wohnzimmer Stehlampe 1)\Dimmer]*/,"Wohnzimmer_Stehlampe_Hinten","HomeMatic","Dimmer"),
	array(53464 /*[Hardware\HomeMatic\Dimmer\DIM04 (Wohnzimmer Stehlampe 2)\Dimmer]*/,"Wohnzimmer_Schreibtischlampe","HomeMatic","Dimmer"),
	array(11402 /*[Hardware\HomeMatic\Dimmer\DIM03 (Schlafzimmer Nachttischlampe)\Dimmer]*/,"Schlafzimmer_Nachttischlampe","HomeMatic","Dimmer"),
	array(16545 /*[Hardware\Z-Wave\Zwischenstecker\ZL01 (HM Funk-LAN-Gateway)]*/,"HomeMatic_FunkLANGateway","Z-Wave","Schalter"),
	array(33443 /*[Hardware\Z-Wave\Schalter\ZSA05 (Küche - Deckenlampe/Esstischlampe)\ZSA05-1 (Küche - Deckenlampe)]*/,"Kueche_Deckenlampe","Z-Wave","Schalter"),
	array(28342 /*[Hardware\Z-Wave\Schalter\ZSA05 (Küche - Deckenlampe/Esstischlampe)\ZSA05-2 (Küche - Esstischlampe)]*/,"Kueche_Esstischlampe","Z-Wave","Schalter"),
	array(24597 /*[Hardware\Z-Wave\Schalter\ZSA03 (SZ - Deckenlampe/FREI) - (FGS221)\ZSA03-1 (SZ - Deckenlampe)]*/,"Schlafzimmer_Deckenlampe","Z-Wave","Schalter"),
	array(44353 /*[Hardware\Z-Wave\Dimmer\ZDIM01 (Bad oben - Deckenlampen)]*/,"BadOben_Deckenbeleuchtung","Z-Wave","Dimmer"),
	array(17821 /*[Hardware\Z-Wave\Dimmer\ZDIM02 (Gaestezimmer - Deckenlampe)]*/,"Gaestezimmer_Deckenlampe","Z-Wave","Dimmer"),
	array(28543 /*[Hardware\Z-Wave\Sirenen\Sirene01 (Flur unten)\Sirene01 (Flur unten)]*/,"Flur_Sirene","Z-Wave","Schalter"),
	array(56711 /*[Hardware\Z-Wave\Sirenen\Sirene02 (Gaestezimmer)\Sirene02 (Gaestezimmer)]*/,"Gaestezimmer_Sirene","Z-Wave","Schalter"),
	array(41347 /*[Hardware\Z-Wave\Schalter\ZSA02 (WZ - Deckenlampe/-ventilator) - (FGS221)\ZSA02-2 (WZ - Deckenlampe vorne)]*/,"Wohnzimmer_Deckenlampe_Vorne","Z-Wave","Schalter"),
	array(52058 /*[Hardware\Z-Wave\Schalter\ZSA02 (WZ - Deckenlampe/-ventilator) - (FGS221)\ZSA02-1 (WZ - Deckenventilator)]*/,"Wohnzimmer_Deckenventilator","Z-Wave","Schalter"),
	array(36534 /*[Hardware\HomeMatic\Zwischenstecker\L08 (Stehlampe Flur unten)\Schalter]*/,"Flur_Stehlampe_Unten","HomeMatic","Schalter"),
	array(24935 /*[Hardware\HomeMatic\Schaltaktor-1fach\SA02 (Treppenlicht Wand)\Schalter]*/,"Flur_Treppenlicht_Wand","HomeMatic","Schalter"),
	array(37453 /*[Hardware\HomeMatic\Zwischenstecker\L09 (Stehlampe 4 - Gästezimmer)\Schalter]*/,"Gaestezimmer_Stehlampe","HomeMatic","Schalter"),
	array(39707 /*[Hardware\HomeMatic\Zwischenstecker\L07 (Stehlampe 3 - Wohnzimmer vorne)\Schalter]*/,"Wohnzimmer_Stehlampe_Vorne","HomeMatic","Schalter"),
	array(16464 /*[Hardware\HomeMatic\Zwischenstecker\L04 (Aquarium)\Schalter]*/,"Aquarium_Beleuchtung","HomeMatic","Schalter"),
	array(25177 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT01 (Heizungsthermostat Wohnzimmer Hofseite)\Thermostat]*/,"Wohnzimmer_Heizung_Vorne","HomeMatic","Thermostat"),
	array(45405 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT02 (Heizungsthermostat Wohnzimmer Straßenseite)\Thermostat]*/,"Wohnzimmer_Heizung_Hinten","HomeMatic","Thermostat"),
	array(38297 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT03 (Heizungsthermostat Bad oben Türecke)\Thermostat]*/,"BadOben_Heizung_Vorne","HomeMatic","Thermostat"),
	array(16170 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT04 (Heizungsthermostat Bad oben Duschecke)\Thermostat]*/,"BadOben_Heizung_Hinten","HomeMatic","Thermostat"),
	array(27616 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT05 (Heizungsthermostat Bad unten)\Thermostat]*/,"BadUnten_Heizung","HomeMatic","Thermostat"),
	array(57870 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT06 (Heizungsthermostat Küche)\Thermostat]*/,"Kueche_Heizung","HomeMatic","Thermostat"),
	array(12675 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT07 (Heizungsthermostat Gästezimmer)\Thermostat]*/,"Gaestezimmer_Heizung","HomeMatic","Thermostat"),
	array(39576 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT08 (Heizungsthermostat Schlafzimmer)\Thermostat]*/,"Schlafzimmer_Heizung","HomeMatic","Thermostat"),
	array(48777 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT09 (Heizungsthermostat Flur) \Thermostat]*/,"Flur_Heizung","HomeMatic","Thermostat"),
	array(53893 /*[Hardware\HomeMatic\Heizung und Temperaturen\HT10 (Heizungsthermostat RESERVE)\Thermostat]*/,"RESERVE_Heizung","HomeMatic","Thermostat"),
	array(56145 /*[Hardware\HomeMatic\Heizung und Temperaturen\WT01 (Wandthermostat Wohnzimmer)\Thermostat]*/,"Wohnzimmer_Heizung","HomeMatic","Thermostat"),
	array(19937 /*[Hardware\Z-Wave\Schalter\ZSA04 (Heimkino Leinwand hoch/runter) - (FGS221)]*/,"Heimkino_Leinwand","Z-Wave","Leinwand-2xSchalter","normal"),
];

Global $config;
if (((@$_IPS["SENDER"] == "Execute") AND ($config === NULL)) OR (@$_IPS["CheckUpdate"] == "UpdX1")) {
   Variablen_Erstellen($DeviceConfig, $Kategorie_AktorSteuerung_ID);
   Aktoren_EventTrigger_Erstellen($DeviceConfig);
}

?>

Es gibt einen Ordner „User-Scripte“. Dazu hier mal ein paar Beispiele:

AktorStrg_UserScripte_Kategorien.png

Inhalt vom Script „BadOben_Deckenbeleuchtung“ (Aktor AN mit Sperre):

<?
include 'AktorSteuerung.ips.php';

$Aktor = IPS_GetName($_IPS['SELF']);

AktorSteuerung($Aktor, 'SPERRE', 'AUS');
AktorSteuerung($Aktor, 'AN');
AktorSteuerung($Aktor, 'SPERRE', 'AN');
?>

Inhalt vom Script „BadOben_Deckenbeleuchtung“ (Aktor AUS):

<?
include 'AktorSteuerung.ips.php';

$Aktor = IPS_GetName($_IPS['SELF']);

AktorSteuerung($Aktor, 'SPERRE', 'AUS');
AktorSteuerung($Aktor, 'AUS');
?>

Wie ihr seht ist immer der Name des Scriptes wichtig. Ihr könnt dann entweder ein Trigger-Event an solche Scripte hängen oder einen Timer. Das ganze funktioniert natürlich auch ohne Sperre.

Oder in 10er Schritten einen Aktor dimmen lassen:

<?
include 'AktorSteuerung.ips.php';

$AktorStrgOrdner = IPS_GetCategoryIDByName("AktorSteuerung", 0);
$VariablenOrdner = IPS_GetCategoryIDByName("Variablen", $AktorStrgOrdner);
$Aktor = IPS_GetName($_IPS['SELF']);
$WFLEVEL = GetValue(@IPS_GetVariableIDByName($Aktor."_LEVEL", $VariablenOrdner));

$Level = $WFLEVEL + 10;
if ($Level > 100) {
	$Level = 100;
}

AktorSteuerung($Aktor, 'SPERRE', 'AUS');
AktorSteuerung($Aktor, 'DIM', $Level);
AktorSteuerung($Aktor, 'SPERRE', 'AN');
?>

Oder auf eine bestimmte Helligkeit dimmen lassen, dazu einfach das Script z.B. so benennen:
BadOben_Deckenbeleuchtung_20

Mit Script-Inhalt:

<?
include 'AktorSteuerung.ips.php';

$ScriptName = IPS_GetName($_IPS['SELF']);
preg_match("|(.*)_(.*)\z|", $ScriptName, $MatchLevel);
$Aktor = $MatchLevel[1];
$Level = (int)$MatchLevel[2];
AktorSteuerung($Aktor, 'SPERRE', 'AUS');
AktorSteuerung($Aktor, 'DIM', $Level);
AktorSteuerung($Aktor, 'SPERRE', 'AN');
?>

oder oder oder :slight_smile:

Man kann die AktorSteuerung auf beliebig viele Hersteller erweitern. An sich wollte ich das komplett über eigene Dateien machen, so ähnlich wie bei der IPSLibrary mit den ComponentClass Dingern, aber das wurde mir dann einfach zu viel Arbeit. Und dazu bin ich auch nicht gut genug in PHP :smiley:

Ihr könnt dieses Script gerne als IPS-PHP-Modul umbauen und dann nach belieben erweitern oder was auch immer damit machen. Optimal wäre es halt, wenn alle zusammen diese, wie ich finde, gute Basis erweitern könnten. Also wäre ein IPS-Modul schon toll. Leider kann ich nicht auf die Linux Version umsteigen, weil nach wie vor Basis-Features fehlen…aber das ist ein anderes Thema g Mal davon abgesehen würde das vmtl. mein Können übersteigen.

Also, das Projekt gehört euch, macht bitte was daraus, wäre Schade um die viele Zeit, die ich in das Projekt gesteckt habe :slight_smile:

Etwas spät aber leider die einzige Rückmeldung bisher.

Danke dir für die Arbeit! Hab das jetzt mal für mich eingerichtet (Zwave Dimmer, StellaZ sowie Rolladen).
Wäre noch total praktisch, wenn er Unterordner erstellen würde anhand des Raums der Übersicht wegen. Oder ist das speziell so gewollt als lange Liste?

Tja, warum das keiner verwendet…keine Ahnung…dabei ist es extrem sinnvoll und praktisch :slight_smile:

Naja, zum Thema :slight_smile: Die Variablenliste ist nicht zur Darstellung im WebFront gedacht, sondern einfach nur zur „Ansammlung“. Und wie man aus meinen Beispielen erkennen kann, habe ich die Variablen passend mit Räumen usw. benannt (z.B. „Wohnzimmer_Stehlampe_hinten“). Danach erfolgt die Verlinkung ins WebFront und fertig.

Grüße,
Chris

Ich benutze schon längst aus einer Zeit vor dem 05.07.15, 11:36 für meine Schalter eine ähnliche Systematik aus eigener Softwareschmiede, nennt sich logischerweise Schalter.ips.php :stuck_out_tongue:

Weil’s funktioniert bin ich nicht gleich hurrahh-schreiend auf Deine Methode gewechselt.

Wie heißt es bei PERL: „There’s more than one way to do it“

Viele Grüsse
Harald

Hallo BY,

der ist mir doch glatt druchgegangen. Hört sich interessant an. Werd ich bei Gelegeneheit testen.

Hallo Zusammen,
hört sich super interessant an.

Läuft das auch unter IPS 4?
Gibt es das mittlerweile als Modul?

Wünsche einen schönen Abend.

Läuft unter 4.1 Testing bei mir. Modul wohl leider noch nicht.

läuft leider seit dem Update auf 5.5 nicht mehr sauber, bzw. erhalte viele identische Fehlermeldungen, siehe Beilage

Hat jemand Aktorsteuerung mit 5.5 im Einsatz une könnte den geänderten COde teilen. Wäre Super

Vielen Dank

Grus Daniel

Das folgende IF muss in den Block vom Skript „AktorSteuerung_Aktorenueberwachung“ eingebaut werden (statt Zeile 19):

if (array_key_exists('VariableType', $VarAusloeser_TYPx)) {
	$VarAusloeser_TYP = $VarAusloeser_TYPx['VariableType'];
}
else {
	$VarAusloeser_TYP = $VarAusloeser_TYPx["VariableValue"]["ValueType"];
}

Der 1. große Block sieht dann wie folgt aus:

Global $DeviceConfig;
Global $Kategorie_Variablen_ID;
$AktorName = IPS_GetName($_IPS["EVENT"]);
$VarParentInstanzID = IPS_GetParent($_IPS["VARIABLE"]);
$VarAusloeser_ID = $_IPS["VARIABLE"];
$VarAusloeser_INSTANZ = IPS_GetParent($VarAusloeser_ID);
$VarAusloeser_NAME = IPS_GetName($VarAusloeser_ID);
$VarAusloeser_WERT = $_IPS["VALUE"];
$VarAusloeser_TYPx = IPS_GetVariable($VarAusloeser_ID);
if (array_key_exists('VariableType', $VarAusloeser_TYPx)) {
	$VarAusloeser_TYP = $VarAusloeser_TYPx['VariableType'];
}
else {
	$VarAusloeser_TYP = $VarAusloeser_TYPx["VariableValue"]["ValueType"];
}
$VarAusloeser_NAMEx = "__".$VarAusloeser_NAME;
$AktorName = str_replace($VarAusloeser_NAMEx, "", $AktorName);
$AktorName = str_replace("Heimkino_Leinwand1", "Heimkino_Leinwand", $AktorName);  // spezial - wegen Leinwand-2xSchalter
$AktorName = str_replace("Heimkino_Leinwand2", "Heimkino_Leinwand", $AktorName);  // spezial - wegen Leinwand-2xSchalter

$index = SearchArray($AktorName, 1, $DeviceConfig);
$AktorArt = $DeviceConfig[$index][3];
$Hersteller = $DeviceConfig[$index][2];

Ob das die einzige Änderung war/ist die notwendig ist … keine Ahnung … ist schon wieder eeeewig her. Läuft bei mir aber nach wie vor gut die AktorSteuerung :slight_smile:

Grüße,
Chris