Probleme mit Status Schalter

Hallo liebe Webfront- User und -Programmierer.
Ich habe ein kleines Problem mit meinen Lampenschaltern. Ich bin Anfänger und habe mich (mit den super Forenbeiträgen) so durchgewurschtelt.

Ich habe folgendes Script um meine Stehlampen im Wohnzimmer gemeinsam an- oder ausschalten zu können (separat habe ich sie auch im Webfront aufgeführt):

 
<?
if($IPS_SENDER == "WebFront") 
{
SetValue($IPS_VARIABLE, $IPS_VALUE); 
if($IPS_VALUE) { 
HM_WriteValueBoolean(16550 , "STATE", true); 
HM_WriteValueBoolean(24596 , "STATE", true); 
}
 
else 
{
HM_WriteValueBoolean(16550 , "STATE", false);
HM_WriteValueBoolean(24596 , "STATE", false);
}
}
?>

Einzelnes Schalten geht gut, gemeinsames auch. Leider zeigt mir der Schalter für das Schalten beider Lampen nicht den aktuellen Status. Wenn ich beide Lampen über den gemeinsamen Schalter anschalte und dann separat ausschalte, dann zeigt der „gemeinsame“ Schalter noch immer „an“ (grün).
Wie kann ich hier eine „Statusabfrage“ einbauen, die den „gemeinsamen“ Schalter immer das aktuelle anzeigen lässt?

Über eine kleine Hilfestellung würde ich mich freuen.
In der Hoffnung das jemand mein Problem versteht :slight_smile: wünsche ich allen einen schönen Abend.

Lieschen

Hi,

Du musst dein etwas erweitertes Script auch noch durch einen Trigger / Event starten lassen, nämlich dann wenn sich der Zustand einer deiner Lampen ändert.

Dann kannst Du im Script die Variable, die den gemainsamen Zustand repräsentiert, entsprechend setzen. Allerdings brauchst Du dafür eigentlich mehr als „An“ und „Aus“, weil ja auch nur eine von zwei Lampen „An“ sein kann.

Das ist dann „teilweise an“ oder „teilweise aus“ wie mans nimmt.

Gruß Steve

Hallo Steve,

vielen Dank für die schnelle Antwort (ist ja toll :slight_smile: )!
Wenn noch eine Lampe an ist, dann ist es für mich ok, wenn der gemeinsame Status „an“ ist. Es sieht nur doof aus, wenn beide (separat geschaltet) aus sind und der Status für beide noch auf an.
Wie ich schon erwähnte, bin ich ein blutiger Anfänger. Wie und vor allem wo kann ich das mit dem Trigger realisieren?

Habe es schon mit SetValue probiert, jedoch nimmt er die ID von meinem Script nicht, sonder nur die meiner Homematic- Komponenten. Ich bin leider noch sehr, sehr weit an der Oberfläche von IP- Symcon… aber begeistert und lernwillig.

Danke im Voraus
Lieschen

Rechts im Script Editor gibts „Ereignis hinzufügen“, dann „ausgelöstes Ereignis“, dann „Bei Wertänderung“ und die Status Variable die Du überwachen willst.

Das machst Du in Deinem Fall zweimal für die beiden Lampen um die es geht.

Im Script noch die UND-Logik implementieren und fertig.

Gruß steve

Hallo Steve,

ich habe jetzt eine Ereignis bei Variablenwechsel für jede Lampe angelegt. Jedoch verstehe ich nicht so recht, wieso jetzt das Script für die gemeinsame Lampenschaltung ausgeführt werden soll. Ich möchte ja eigentlich nur einen aktualisierten Status des „Schalters“ in Webfront. Wenn ich das so ausführe, passiert rein gar nichts.
Auch habe ich die und- verknüpfung nicht ganz verstanden.
Hättest du ein Beispielscript aus deiner Sammlung, das ich mir ansehen könnte.
Für alle Anfänger - wie mich - ist das System sehr interessant, aber der erste Einstieg ist schwierig. Ich habe hier im Forum leider kein Tutorium gefunden, das diese Anfangsfragen beantwortet.

Liebe Grüße
Lieschen

Hi,

Du willst eine Variable dann setzen / löschen, wenn andere Variabeln eine bestimmte Bedingung erfüllen (hier die Statusvars der Lampen).

Also definierst Du ein Script mit Ereignissen bei Wertänderungen der interessanten Vars das Script starten.

Das Script macht dann ungefähr sowas: Relevante Vars lesen, „verrechnen“ und Zielvar setzen. In deinem Fall liest Du die Status-Vars der Lampen und setzt Deine Ziel-Var dann auf true, wenn beide Status-Vars auch true sind.

Fertig. IPS ist am Anfang nicht so leicht zu verstehen, mußt Du etwas Geduld aufbringen.

Gruß Stefan

Hallo Stefan,

habe das Problem mit deiner Hilfe gelöst.

Ich habe je ein Trigger für die einzelnen Lampen gesetzt, der auf Statusänderung reagiert und dann das folgende Script ausführt:

<

?

 if ((GetValue(58078 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampe links\STATE]*/) == false) and (GetValue(22932 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampe rechts\STATE]*/) == false))
 Setvalue (30139 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampen]*/, false);
 
 else {
    Setvalue (30139 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampen]*/, true);
    }
?>

Dieses Script Steht dann unter der Variable „Stehlampen“ (hier ist die gemeinsame Variable für beide Lampen zusammen gemeint).

Ebenfalls unter der Variable „Stehlampen“ steht das folgende Script zum einfachen Schalten der Lampen (Toggle):

<?
if($IPS_SENDER == "WebFront") // wenn Sender ist Webfornt
{
   SetValue($IPS_VARIABLE, $IPS_VALUE); // Variable in Webfront umschalten

 if($IPS_VALUE) { // wenn TRUE
  HM_WriteValueBoolean(16550 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampe links]*/, "STATE", true); //Stehlampe links ein
  HM_WriteValueBoolean(24596 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampe rechts]*/, "STATE", true); //Stehlampe rechts ein
 }
 
 else // wenn nicht oder false
 {
  HM_WriteValueBoolean(16550 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampe links]*/, "STATE", false); //Stehlampe WZ links aus
  HM_WriteValueBoolean(24596 /*[Wohnzimmer\Licht Wohnzimmer\Stehlampe rechts]*/, "STATE", false); //Stehlampe WZ rechts aus
 }
}
?>

Das Script ist beliebig erweiterbar, um z.B. Anwesenheits/ Abwesenheitsschaltungen zu realisieren.

Ich hoffe das ist für alle „Beginner“ wie ich es einer bin verständlich.
Leider fehlen Anleitungen für diese einfachen Basissachen. Nicht jeder ist PHP- Spezialist.

Nochmals vielen Dank für deine Hilfe Stefan!!!