Mist…Tippfehler gehabt. Probier bitte das hier nochmal und mach mal selbst die Augen auf
<?
// Hier die Instanz-IDs der HM-Rollladen-Aktoren eintragen, welche gesteuert werden sollen:
$Aktoren_Array = array(14615,38652);
// Nur Rollladen herunterfahren, die nicht bereits komplett unten sind
foreach($Aktoren_Array as $HM_InstanzID) {
$LEVEL_ID = IPS_GetVariableIDByName("LEVEL", $HM_InstanzID);
if(GetValue($LEVEL_ID) != 1) {
$HochgefahreneRolllaeden_Array[] = $HM_InstanzID;
}
}
// Wenn nicht runtergefahrende Rollläden gefunden wurden, dann werden diese jetzt heruntergefahren
if ($HochgefahreneRolllaeden_Array) {
foreach ($HochgefahreneRolllaeden_Array as $HM_InstanzID) {
HM_WriteValueFloat($HM_InstanzID, "LEVEL", 1);
IPS_Sleep(300); // zwischen den Schaltvorgängen einen kleinen Moment warten
}
}
?>
Also, habs eben mit HomeMatic Dimmern getestet (haben auch eine „Level“-Variable)…das Skript funktioniert einwandfrei.
Hast du auch sicher die HomeMatic-INSTANZ-IDs eingetragen oben im Array und nicht die VARIABLEN-IDs??
<?
// Hier die Instanz-IDs der HM-Rollladen-Aktoren eintragen, welche gesteuert werden sollen:
$Aktoren_Array = array(11111,22222);
// Nur Rollladen herunterfahren, die nicht bereits komplett unten sind
foreach($Aktoren_Array as $HM_InstanzID) {
$LEVEL_ID = IPS_GetObjectIDByIdent("LEVEL", $HM_InstanzID);
if(GetValue($LEVEL_ID) != 1) {
$HochgefahreneRolllaeden_Array[] = $HM_InstanzID;
}
}
//print_r($HochgefahreneRolllaeden_Array);
// Wenn nicht runtergefahrende Rollläden gefunden wurden, dann werden diese jetzt heruntergefahren
if (isset($HochgefahreneRolllaeden_Array)) {
foreach ($HochgefahreneRolllaeden_Array as $HM_InstanzID) {
HM_WriteValueFloat($HM_InstanzID, "Level", 1);
//echo $HM_InstanzID;
IPS_Sleep(300); // zwischen den Schaltvorgängen einen kleinen Moment warten
}
}
?>
ich habe mich mit 0 und 1 verhaspelt, 0 = zu, 1 = auf, habe also immer verkehrt herum getestet …:eek:
Notice: Undefined variable: HochgefahreneRolllaeden_Array in /mnt/data/symcon/scripts/47049.ips.php on line 15
besagt also nichts weiter als das Array ist leer und das Script wird weiter abgearbeitet.
Heute abend lief das Script nämlich plötzlich fehlerfrei weil die Rollos geschlossen waren.
Vielen Dank für Deine Bemühungen mir zu helfen …
o:o
Hab das Skript im Post davor nochmal überarbeitet und „isset“ eingebaut. Kannst du bitte damit nochmal testen, ob das Skript dann nicht mehr mit Fehler abbricht, wenn das Array nicht existiert?
Kein Problem Aber das nächste Mal schaffst du sowas auch allein
Und der Vollständigkeit halber, für die Suche.
IPS_GetVariableIDByName ist ‚böse‘.
Was ist denn wenn die Variablen ‚Küche Jalousie‘ oder ‚Wohnzimmer Jalousie‘ heißen ? Dann läuft das Script nicht.
Für Statusvariablen nutzt man besser IPS_GetObjectIDByIdent.
Dort wird ‚LEVEL‘ dann auch groß geschrieben.
Michael