Lampen zusammenfassend schalten / Abbildung in ifront

Hallo,

nach nunmehr etlichen Stunden des Lesen in Bezug auf die Erstellung eines eigenen Scripts muss ich doch als blutiger Anfänger einige Fragen loswerden.
Grundsätzlich gibt es hier sicherlich einige Scripte aus welche man lernen könnte, ich muss aber feststellen das diese teilweise auf einem Niveau sind welches mir sicherlich noch die nächsten Jahre fehlen wird.

Ich habe mir die Homematic Komponenten problemlos in IPS eingebunden und kann diese über ifront auch bedienen.

Nun wollte ich mir einen Schalten in ifront basteln womit ich mehrere Lampen gleichzeitig schalten kann. Hier fehlt mir jedoch noch etwas Verständnis wie diese generell angelegt werden. Wenn ich im Objektbaum (habe hier eine Kategorie „Homematic“ angelegt) eine neue Instanz angelegt habe und dieser das HM-Gerät zugeordnet habe, ist dies ja automatisch in ifront und Webfront eingebunden.

Hier sind dann jedoch immer 3 Variablen angelegt, wobei ich der Meinung bin das mich nur „STATE“ interessiert. Können die anderen irgendwie ausgeblendet werden sodass ich nur den Zustand angezeigt bekomme?

Auf dieser Annahme habe ich mir gedacht einfach eine Variable (Switch) anzulegen und diese dann mittels eines Scriptes beide Lampen schalten zu können.

Als Script dachte ich mir folgendes

<?

 HM_WriteValueBoolean(56132 /*[Homematic\Licht\Außenlampe Eric]*/, "STATE", true); //Schalten Außenlampe Eric
 HM_WriteValueBoolean(26781 /*[Homematic\Licht\Außenlampe Maya]*/, "STATE", true); //Schalten Außenlampe Maya

?>

Dies wollte ich dann einer „Eigenen Aktion“ der Variable zuordnen.

Funktioniert soweit scheinbar auch ganz gut, aber das Wahre ist dies irgendwie nicht. Im Webfront habe ich doch durch die Variable „Switch“ die Möglichkeit direkt zu schalten sodass ich nicht eine separate Aktion benötige, nur wie würde ich das Schalten hierüber vornehmen? Wo werden also die Befehle hierfür hinterlegt?
Müsste ich dann für das Ausschalten das gleiche Script nochmals mit dem Wert False anlegen und wo zuordnen?

Vielen Dank für jegliche Unterstützung und entschuldigt bitte die Laienfragerei, aber irgendwie muss ich mal dahintersteigen.

Gruß aus Berlin, Tom

Also erstmal grundsätzlich (und das wurde an vielen Stellen breit durchgekaut) solltest Du den WebFront mit Links füttern. D.h. Du erstellst eine Struktur extra für den WebFront (da gleiche mache ich auch für iFront) und dort legst Du die Links entsprechend Deinen Wünschen an. Damit hast Du Dir künftig viel Arbeit erspart.

Hierkannste auch mal reinschaun.

Hallo Boui,

was meinst Du mit Links füttern? Im Webfront habe ich doch soweit für meine ersten Gehversuche schon einiges eingerichtet. :confused:

Wie ich die nicht relevanten Infos ausblende habe ich gerade herausgefunden. Im Objektbaum die Variable auswählen und unter Objekt bearbeiten / Optionen einfach verstecken.

Der Link geht in Richtung der Zuweisung der Funktion, ich werde mal versuchen diese durchzuarbeiten und hoffe dann auf eine Funktion beide Lampen schalten zu können.

Danke und entschuldige nochmals die Anfängerfragen :o

Gruß, Tom

EDIT:

Ich habe nun mir 2 Skripte angelegt welche die Lampen auch entsprechend ausschalten. Dies wird im WF aber nur als separate Funktion angezeigt. In dem von Boui verlinkten Thread geht es ja auch mehr einen Ein-Tasten-Knopf, mir geht es aber um den einfachen Switch. Diesem kann ich über die Eigene Aktion ja nur ein Script zuweisen, aber wie geht das ich auch beide Zustände schalten kann. Ich denke dies geht über ein entsprechendes Script welches ich aber leider nicht allein hinbekomme. Derzeitig habe ich folgende Scrpte mittels der „Befehl hinzufügen“ Option erstellt:

HM_WriteValueBoolean(56132 /[Homematic\Licht\Außenlampe Eric]/, „STATE“, true)
HM_WriteValueBoolean(56132 /[Homematic\Licht\Außenlampe Eric]/, „STATE“, false)

und erhalten dann im WF folgende Funktion:
IPS_2.JPG

Danke, Tom

Und genau das ist Mist. Damit schaffst Du Dir unendlich Arbeit und Probleme.
Du legst eine eigene Struktur für den WebFront im Objektbaum an auf die Du im WebFront zeigst.

Kleines Beispiel für eine einfache Seite im Webfront mit 3 Spalten:

>Webfront>
<Zimmer A>
…<Beleuchtung>
------Link auf State Deckenlampe
------Link auf State Stehlampe
…<Sicherheit>
------Link auf State Fenster 1
------Link auf State Fenster 2
------Link auf State Terrassentür
…<Heizung>
------Link auf Raumtemperatur IST
------Link auf Raumtemperatur SOLL
------Link auf Stellung Stellantrieb
------Link auf Luftfeuchtigkeit

Hallo Boui,

das habe ich verstanden. Ist einleuchtend und ich werde dies mal heute abend gleich umsetzen. Muss mir in diesem Zuge nur noch mal ansehen wir ich das WF einteilen konnte. Aber das habe ich ja schon mal hinbekommen.
Danke für den Tipp!

Dann noch eine Idee wie ich das mit den Skripten hinbekomme?

Vielen Dank für die Geduld.
Gruß, Tom

EDIT: Kleine Rückfrage noch hierzu. Als ich alles im WF dargestellt hatte, war auch die Option da wo die Zeiten für die zeitlichen Zyklen eingesehen und auch geändert werden können. Wenn ich nun nur den Link auf STATE einfüge, erscheint diese Option nicht mehr und ein Link auf das Ereignis geht auch nicht. Wie bringe ich dies wieder rein?

Danke, Tom

Da bin ich jetzt raus.
Zeitliche Zyklen? Vielleicht mal ein Beispiel, was damit gemeint ist.
Und wieso ein Link auf ein Ereignis?

Hallo,

man kann doch jeder Instanz ein Ereignis zuordnen, sodass diese dann z. Bsp. immer zur gleichen Zeit geschaltet wird. Eingestellt wird dies in den Eigenschaften der Instanz im Reiter Ereignisse. Sobald dies geschehen ist hatte ich im Webfront ein Uhrensymbol welches man anklicken konnte und daraufhin die eingegenen Uhrzeit angezeigt und geänder werden konnte.

Ich kann echt schlecht erklären, daher noch ein Bild.

Wenn ich das mit den Links so mache, was echt übersichtlicher wirkt, habe ich diese Funktion nicht mehr. Ein Link auf eben solch ein Ereignis im Objektbaum funktioniert dann nicht.

Gruß, Tom

Einfachste Ausführung.

Boolvariable anlegen, Script anlegen mit diesem Inhalt.

if($_IPS['SENDER'] == "WebFront")
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    
    if($_IPS['VALUE'])
    {
       HM_WriteValueBoolean(56132 /*[Homematic\Licht\Außenlampe Eric]*/, "STATE", true); //Schalten Außenlampe Eric
         HM_WriteValueBoolean(26781 /*[Homematic\Licht\Außenlampe Maya]*/, "STATE", true); //Schalten Außenlampe Maya
    }
    else
    {
       HM_WriteValueBoolean(56132 /*[Homematic\Licht\Außenlampe Eric]*/, "STATE", false); //Schalten Außenlampe Eric
         HM_WriteValueBoolean(26781 /*[Homematic\Licht\Außenlampe Maya]*/, "STATE", false); //Schalten Außenlampe Maya
    }
}

Das ganze der Variable als Aktion übergeben, fertig.

Zu deinem Timer, der Link auf die Instanz, dann ist auch der Timer da.

Hallo RWN,

vielen Dank, kurz und knapp alles beantwortet. Vielen Dank hierfür, werde mich anhand dieser Daten versuchen weiter einzuarbeiten.

PS: machst Du solche „einfachen“ Scripte aus dem Kopf oder nutzt Du irgendwelche IPS Features die ich mir genauer ansehen sollte?

Gruß, Tom

Einen Großteil, kann ich schon auswendig. :slight_smile: Ansonsten hilft die Doku oder php.net.

Hier ein Beispiel zum schalten über Webfront und Timer.

Wie gehabt, Boolvariable anlegen, Script und dieses der Variable als Eigene Aktion übergeben. In die Ereignisse die zu schalteten Geräte eintragen.

<?

switch($_IPS['SENDER'])
{
    case "WebFront":
        SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
        if($_IPS['VALUE'])
        {
           GruppeEin();
        }
        else
        {
           GruppeAus();
        }
    break;
}

function GruppeEin()
{
    HM_WriteValueBoolean(56132 /*[Homematic\Licht\Außenlampe Eric]*/, "STATE", true); //Schalten Außenlampe Eric
   HM_WriteValueBoolean(26781 /*[Homematic\Licht\Außenlampe Maya]*/, "STATE", true); //Schalten Außenlampe Maya
}

function GruppeAus()
{
   HM_WriteValueBoolean(56132 /*[Homematic\Licht\Außenlampe Eric]*/, "STATE", false); //Schalten Außenlampe Eric
   HM_WriteValueBoolean(26781 /*[Homematic\Licht\Außenlampe Maya]*/, "STATE", false); //Schalten Außenlampe Maya
}

?>

Nabend Rainer,

ich habe hierzu noch Fragen, sorry, aber ich möchte das Verstehen.

Wie hast Du die Ereignisse unter das Script bekommen? Liegt das unter einer Instanz? Wenn ich mich so durch das Script durchkämpfe scheint doch hier nichts mit Zeiten hinterlegt zu sein!? Und ich kann doch nur Instanzen zyklische Ereignisse zuordnen?

Irgendwie wollte ich das eh Fragen wie man die Funktion alles in eine Zeile bekommt. Das sieht irgendwie besser aus als meine Lösungen.

Zudem habe ich scheinbar das Phänomen das wenn der Status auf an ist, die Lampen aus sind. Ich denke aber nicht das es an IPS liegt, im WebUI ist dass das Gleiche. Was ist jetzt hier passiert?

Danke, Tom

Skript anklicken (1x), rechte Mt, „Objekt hinzufügen“, „Ereignis hinzufügen“

Gruß
Bruno

Die Ereignisse sind unter der Boolvariablen.

Ich bin auch noch ein IPS Neuling ist mir ist das Thema „Links“ noch ein bisschen fremd.
Bisher habe ich mir Kategorien für die Etagen im Haus und sonstige Dinge (Informationen, Staumeldungen etc.) angelegt und dann dort die Geräte eingerichtet.

Im Anhang mal ein Screenshot von meinem Objektbaum.
Bis jetzt werden die Elemente genau in dieser Ordnung im WebFront und im iFront (iPad hängt mit Halterung an der Wand) dargestellt.

Ist es jetzt günstig so vorzugehen oder wie ist es mit den Links gemeint?
Bei mir stehten jetzt Sachen wie Zeitschaltuhr für verschiedene Außenlampen usw an.

Hallo,

ich bin ja auch noch vollends neu, versuche es aber trotzdem mal mit meinem derzeitigen Verständnis.

Wenn Du die ganzen Instanzen für die Geräte angelegt hast, hast Du im Webfront ja alle Variablen mit angezeigt, es sei denn Du blendest diese jeweils einzeln aus.
Nach dem Tipp von Boui habe ich eine neue Kategorie angelegt (HM Darstellung) und dort dann Dummy Insanzen angelegt. In diese habe ich dann jeweils einen Link zu den STATE Variabeln angelegt. Dadurch würden nur die jeweils benötigten Elemente in der Darstellung angezeigt und es wird schon übersichtlicher.

Gruß, Tom