Hallo zusammen,
ich hab mal eine Switch Komponente für das KMTronic Webrelay 8 zusammengekleistert.
KMTronic LAN Ethernet IP 8 channels WEB Relay board
Vielleicht kann es ja jemand gebrauchen.
Nicht schön aber selten… sagt man bei uns in Schwaben.
Viele Grüße
Chris
<?
/**@addtogroup ipscomponent
* @{
*
*
* @file IPSComponentSwitch_KMTronicWebRelay8.class.php
* @author Christian Lechner
*
*
*/
/**
* @class IPSComponentSwitch_KMTronicWebReplay8
*
* Definiert ein IPSComponentSwitch_KMTronicWebReplay8 Object, das ein IPSComponentSwitch Object für das KMTronic WebRelay 8 implementiert.
*
* @author Christian Lechner
* @version
* Version x.xx.x, 12.12.2015<br/>
*/
IPSUtils_Include ('IPSComponentSwitch.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentSwitch');
class IPSComponentSwitch_KMTronicWebRelay8 extends IPSComponentSwitch {
private $IPAddress;
private $Relais;
/**
* @public
*
* Initialisierung eines IPSComponentSwitch_KMTronicWebRelay8 Objektes
*
* @param string $IPAddress IP Adresse des KMTronic
* @param integer $Relay welches Relais geschalten werden soll
* Username und Passwort sind derzeit hardcoded.
*/
public function __construct($IPAddress, $Relais) {
$this->IPAddress = $IPAddress;
$this->Relais = $Relais;
}
/**
* @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 IPSModuleSwitch $module Module Object an das das aufgetretene Event weitergeleitet werden soll
*/
public function HandleEvent($variable, $value, IPSModuleSwitch $module){
$module->SyncState($value, $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->IPAddress.','.$this->Relais;
}
/**
* @brief Sends command to the KMTronic WebRelay8 using HTTP
*
* @param [in] $IP IP Adresse des KMTronic WebRelays
* @param [in] $rel Relais Kanal des KMTronic WebRelays
* @param [in] $val Value
* @return Gibt den Status des Relais zurück
*
*/
private function KMTronic_SendCommand($IP, $rel, $val) {
IPS_LogMessage("IPAdresse", $IP);
IPS_LogMessage("Relais", $rel);
IPS_LogMessage("State", $val);
$default_opts = array(
'http'=>array(
'header'=>"Authorization: Basic ".base64_encode("admin:admin"),
'ignore_errors'=>True,
)
);
$cred = stream_context_set_default($default_opts);
//$cred = stream_context_create(array('http' => array('header' => "Authorization: Basic ".base64_encode("admin:admin"))));
If ($val) {
$KMTronicReturn = file_get_contents("http://".$IP."/FF0".$rel."01",false,$cred);
}
Else {
$KMTronicReturn = file_get_contents("http://".$IP."/FF0".$rel."00",false,$cred);
}
$site = file_get_contents("http://".$IP."/relays.cgi",false,$cred);
$status1 = explode("Status:",$site);
$status2 = explode("Relay1:",$status1[1]);
$status3 = explode(" ",str_replace(" ", " ", trim($status2[0])));
if ($status3[$rel]) {
Return TRUE;
}
else {
Return FALSE;
}
}
/**
* @public
*
* Zustand Setzen
*
* @param boolean $value Wert für Schalter
*/
public function SetState($value, $onTime = false) {
$this->KMTronic_SendCommand($this->IPAddress, $this->Relais, $value);
}
/**
* @public
*
* Liefert aktuellen Zustand
*
* @return boolean aktueller Schaltzustand
*/
public function GetState() {
$cred = stream_context_create(array('http' => array('header' => "Authorization: Basic ".base64_encode("admin:admin"))));
$site = file_get_contents("http://".$IP."/relays.cgi",false,$cred);
$status1 = explode("Status:",$site);
$status2 = explode("Relay1:",$status1[1]);
$status3 = explode(" ",str_replace(" ", " ", trim($status2[0])));
if ($status3[$this->Relais]) {
Return TRUE;
}
else {
Return FALSE;
}
}
}
/** @}*/
?>