Hier die Klasse:
<<?
/**@addtogroup ipscomponent
* @{
*
*
* @file IPSComponentShutter_zwave.class.php
* @author Andreas Brauneis
* @zwave Anpassung Ingo Wupper
*
*/
/**
* @class IPSComponentShutter_zwave
*
* Definiert ein IPSComponentShutter_Homematic Object, das ein IPSComponentShutter Object für Homematic implementiert.
*
* @author Andreas Brauneis
* @version
* Version 2.50.1, 31.01.2012<br/>
*/
IPSUtils_Include ('IPSComponentShutter.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentShutter');
class IPSComponentShutter_zwave extends IPSComponentShutter {
private $instanceId;
private $reverseControl;
/**
* @public
*
* Initialisierung eines IPSComponentShutter_zwave Objektes
*
* @param integer $instanceId InstanceId des Homematic Devices
* @param boolean $reverseControl Reverse Ansteuerung des Devices
*/
public function __construct($instanceId, $reverseControl=false) {
$this->instanceId = IPSUtil_ObjectIDByPath($instanceId);
$this->reverseControl = $reverseControl;
}
/**
* @public
*
* Function um Events zu behandeln, diese Funktion wird vom IPSMessageHandler aufgerufen, um ein aufgetretenes Event
* an das entsprechende Module zu leiten.
*
* @param integer $variable ID der auslösenden Variable
* @param string $value Wert der Variable
* @param IPSModuleShutter $module Module Object an das das aufgetretene Event weitergeleitet werden soll
*/
public function HandleEvent($variable, $value, IPSModuleShutter $module){
if ($this->reverseControl) {
$module->SyncPosition(($value*100), $this);
} else {
$module->SyncPosition(100-($value*100), $this);
}
}
/**
* @public
*
* Funktion liefert String IPSComponent Constructor String.
* String kann dazu benützt werden, das Object mit der IPSComponent::CreateObjectByParams
* wieder neu zu erzeugen.
*
* @return string Parameter String des IPSComponent Object
*/
public function GetComponentParams() {
return get_class($this).','.$this->instanceId;
}
/**
* @public
*
* Hinauffahren der Beschattung
*/
public function MoveUp(){
if ($this->reverseControl) {
ZW_ShutterMoveDown($this->instanceId);
} else {
ZW_ShutterMoveUp($this->instanceId);
}
}
/**
* @public
*
* Hinunterfahren der Beschattung
*/
public function MoveDown(){
if ($this->reverseControl) {
ZW_ShutterMoveUp($this->instanceId);
} else {
ZW_ShutterMoveDown($this->instanceId);
}
}
/**
* @public
*
* Stop
*/
public function Stop() {
ZW_ShutterStop ($this->instanceId);
}
}
/** @}*/
?>
Die musst Du dann innerhalb von IPShadowing über den Dateinamen einbinden.
Meine Rollosteuerung ist im Grunde ganz einfach, halt ohne IPSHadowing wegen Wochentagswechsel:
Ich habe einzelne Rollos, welche auch als Gruppen von Rollos, meinetwegen UG, EG und OG zusammengefasst sind. (Passt bei mir weil: UG=Kind, EG=Wohnen, OG= Eltern)
Ich habe Skripts die jeden einzelnen Rollo runter, halb, Schlitz und hoch fahren. Somit kann ich Skriptgesteuert jeden Rollo durch Aufruf eines Skriptes in eine bestimmte Position fahren.
Dazu dann Gruppenskripts, welche eine Gruppe abarbeiten.
Beispiel: Gruppenskript Rollo_UG_Hoch.php beinhaltet:
<?
$id1 = 50904 /*[Rollos\Einzelsteuerung\Bad UG\Z-Wave Rollo Bad UG]*/;
$id2 = 20648 /*[Rollos\Einzelsteuerung\Gaeste UG\Z-Wave Rollo Gaestezimmer UG]*/;
$id3 = 49345 /*[Rollos\Einzelsteuerung\Kind UG\Z-Wave Rollo Kind UG]*/;
ZW_DimSet ($id1, 100);
ZW_DimSet ($id2, 100);
ZW_DimSet ($id3, 100);
setvalueboolean (23314 /*[Rollos\ Skripte & Vars\Rollos_UG_is_down]*/, False);
?>
Diese wird dann per IPS Skripttimer aufgerufen, bspw. MO-FR 6:30 und am WE um 9:00h
Du kannst aber auch andere Trigger benutzen, z.B. Windspeed, Helligkeit oder Sunset/rise basierend auf geokordinaten Deines Hauses.
Ich selbst ordne nach Fachgebiet und nicht nach Raum, aber da gibt es viele Ansichten und auch Diskussionsthreads.