12-05-2014, 23:00:27
Hallo zusammen,
ist zwar kein direktes SH Thema, sondern geht eher in den Bereich der PHP Programmierung, aber vielleicht kann mir ja doch jemand einen Tip geben.
Kurz zum Hintergrund, da mir die Zwischenstecker von RWE zu teuer sind, habe ich mir einen anderen Weg über meinen Raspberry Pi gebaut (433MHZ Sendemodul und ein paar Scripte) und kann hierrüber meine Funksteckdosen von Elro bedienen (Für interessierte: http://www.forum-raspberrypi.de/Thread-t...-version-2)
Um es von der Usebility einfach zu halten, habe ich mir gedacht, die Funksteckdosen via ZVs in das RWE SmartHome zu integrieren und mit einem Script entsprechend auszuwerten.
Als Basis dienst mir hierfür das SmatHome-PHP Framework, die SmartHome-Utils von michaelano und die Script-Grundlage von Smarter als dem Sonos Threat (http://www.rwe-smarthome-forum.de/thread...1#pid16221).
Mein Script läuft ansich Problemlos und schaltet die Funksteckdosen je Zustand der ZVs wie gewünscht leider habe ich bisher keinen Weg gefunden, das entsprechende Script zur Ansteuerung meines 433MHz Senders nur dann anzusteuern, wenn sich ein Zustand verändert hat. Das Prüfscript der ZVs läuft im Hintergrund alle 10 Sekunden, und ich würde jedes mal ein Signal an die Funksteckdosen senden.
Nun zur eigentlichen Frage, habt ihr eine Idee, wie ich die Variablen $VALUE1, $VALUE2 & $VALUE3 quasi auf ein "HasChanged" prüfen kann, und um nur dann, das Shell Script auszuführen?
Ja, ich weiß es ist alles sehr unsauber geschrieben, aber wie es halt so ist...Hautsache es funktioniert.
Danke & Grüße
zwaen
ist zwar kein direktes SH Thema, sondern geht eher in den Bereich der PHP Programmierung, aber vielleicht kann mir ja doch jemand einen Tip geben.
Kurz zum Hintergrund, da mir die Zwischenstecker von RWE zu teuer sind, habe ich mir einen anderen Weg über meinen Raspberry Pi gebaut (433MHZ Sendemodul und ein paar Scripte) und kann hierrüber meine Funksteckdosen von Elro bedienen (Für interessierte: http://www.forum-raspberrypi.de/Thread-t...-version-2)
Um es von der Usebility einfach zu halten, habe ich mir gedacht, die Funksteckdosen via ZVs in das RWE SmartHome zu integrieren und mit einem Script entsprechend auszuwerten.
Als Basis dienst mir hierfür das SmatHome-PHP Framework, die SmartHome-Utils von michaelano und die Script-Grundlage von Smarter als dem Sonos Threat (http://www.rwe-smarthome-forum.de/thread...1#pid16221).
Mein Script läuft ansich Problemlos und schaltet die Funksteckdosen je Zustand der ZVs wie gewünscht leider habe ich bisher keinen Weg gefunden, das entsprechende Script zur Ansteuerung meines 433MHz Senders nur dann anzusteuern, wenn sich ein Zustand verändert hat. Das Prüfscript der ZVs läuft im Hintergrund alle 10 Sekunden, und ich würde jedes mal ein Signal an die Funksteckdosen senden.
Nun zur eigentlichen Frage, habt ihr eine Idee, wie ich die Variablen $VALUE1, $VALUE2 & $VALUE3 quasi auf ein "HasChanged" prüfen kann, und um nur dann, das Shell Script auszuführen?
Ja, ich weiß es ist alles sehr unsauber geschrieben, aber wie es halt so ist...Hautsache es funktioniert.
Danke & Grüße
zwaen
PHP-Code:
<?
require_once 'SmartHome-PHP-master/SmartHome.php';
require_once 'SmartHome-PHP-master/Request/BaseRequest.php';
require_once 'SmartHome-PHP-master/Request/LoginRequest.php';
require_once 'SmartHome-PHP-master/Request/GetEntitiesRequest.php';
require_once 'SmartHome-PHP-master/Request/GetShcInformationRequest.php';
require_once 'SmartHome-PHP-master/Request/GetAllLogicalDeviceStatesRequest.php';
require_once 'SmartHome-PHP-master/Request/GetApplicationTokenRequest.php';
require_once 'SmartHome-PHP-master/Request/GetShcTypeRequest.php';
require_once 'SmartHome-PHP-master/Request/GetAllPhysicalDeviceStatesRequest.php';
require_once 'SmartHome-PHP-master/Request/GetMessageListRequest.php';
require_once 'michaelano/SmartHome-Utils.php';
// --- init variables
$optdebug = false; # switch debug messages on true or false
$newLine = php_sapi_name() == 'cli' ? "\n" : '<br />';
$configcachefile = 'Configuration.cache'; #file name
$configIniFile = __DIR__ . '/config.ini';
$hostname = "smarthome"; #SmartHome Zentrale
$userid = "";
$passwd = "";
$device1 = "Brunnen";
$device2 = "Ambilight";
$device3 = "Dekolicht";
$lengtNameprefixd1 = strlen($device1); //Brunnen WZ
$lengtNameprefixd2 = strlen($device2); //Ambiligth SZ
$lengtNameprefixd3 = strlen($device3); //Dekolicht AZ
$sh = michaelano\SmartHomePHP\SmartHomeLogin($configIniFile,$hostname,$userid,$passwd);
$CONFIGR = michaelano\SmartHomePHP\GetConfigR($sh,$configcachefile, $optdebug);
$ROOMS = $CONFIGR['Rooms'];
$BDS = $CONFIGR['BDs'] ;
$LDS = $CONFIGR['LDs'] ;
$devstates = $sh->getAllLogicalDeviceStates();
$LDSARR = $devstates->States->LogicalDeviceState;
// --- Device Summary
foreach ($LDSARR as $LD) {
$LID = $LD["LID"]->__toString(); if ($optdebug){echo $LID.$newLine;}
$ROOM = $LDS["$LID"][4]; if ($optdebug){echo $ROOM.$newLine;}
$LDNAME = $LDS["$LID"][0]; if ($optdebug){echo $LDNAME.$newLine;}
$leftLDNAME1 = substr($LDNAME,0,$lengtNameprefixd1);
$leftLDNAME2 = substr($LDNAME,0,$lengtNameprefixd2);
$leftLDNAME3 = substr($LDNAME,0,$lengtNameprefixd3);
// --- Device 1
if ( $leftLDNAME1 == $device1){
$VALUE1 = isset ($LD->Ppts->Ppt["Value"]) ? $LD->Ppts->Ppt["Value"]->__toString() : null; if ($optdebug){echo $VALUE1.$newLine;}
$ZVDATA["ZV"] = array($LID, $LDNAME, $VALUE1, $ROOM); if ($optdebug) { echo '<pre>' , print_r($ZVDATA). $newLine, '</pre>';}
if($VALUE1== "True" ) {shell_exec("/home/pi/sh_worker/scripts/./set_device.sh 3 1");} else {shell_exec("/home/pi/sh_worker/scripts/./set_device.sh 3 0");}}
// --- Device 2
if ( $leftLDNAME2 == $device2){
$VALUE2 = isset ($LD->Ppts->Ppt["Value"]) ? $LD->Ppts->Ppt["Value"]->__toString() : null; if ($optdebug){echo $VALUE2.$newLine;}
$ZVDATA["ZV"] = array($LID, $LDNAME, $VALUE2, $ROOM); if ($optdebug) { echo '<pre>' , print_r($ZVDATA). $newLine, '</pre>';}
if($VALUE2== "True" ) {shell_exec("/home/pi/sh_worker/scripts/./set_device.sh 2 1");} else {shell_exec("/home/pi/sh_worker/scripts/./set_device.sh 2 0");}}
// --- Device 3
if ( $leftLDNAME3 == $device3){
$VALUE3 = isset ($LD->Ppts->Ppt["Value"]) ? $LD->Ppts->Ppt["Value"]->__toString() : null; if ($optdebug){echo $VALUE3.$newLine;}
$ZVDATA["ZV"] = array($LID, $LDNAME, $VALUE3, $ROOM); if ($optdebug) { echo '<pre>' , print_r($ZVDATA). $newLine, '</pre>';}
if($VALUE3== "True" ) {shell_exec("/home/pi/sh_worker/scripts/./set_device.sh 1 1");} else {shell_exec("/home/pi/sh_worker/scripts/./set_device.sh 1 0");}}
}
?>
1x Zentrale
7x Heizkörperthermostat
2x Zwischenstecker (Innen)
1x Wandtaster
5x Fenstersensoren
3x Philips Hue Lampen
1x RapsberryPi (openHAB)
7x Heizkörperthermostat
2x Zwischenstecker (Innen)
1x Wandtaster
5x Fenstersensoren
3x Philips Hue Lampen
1x RapsberryPi (openHAB)