Statusabfrage träge,Semaphore?

Das eine schließt das andere ja nicht aus.

Erstmal zu den Kategorien:
Es gibt viele verschiedene Ansätze wie man den Objektbaum soritert.
Ich habe z.B. nicht nach Typ (also alle Steckdosen zusammen, egel welche Hardware) sondern nach Hardware sortiert.
Hier mal ein Auszug:


root
|
Hardware
|   |
|   HomeMatic (hier sind dann noch Kategorien je Geschoß und dann die Instanzen)
|   |
|   Elro
|   |
|   FritzBox (je Skript eine Dummy-Instanz)
|   |
|   Squeezbox (je Box eine Dummy-Instanz)
|   |
|   etc...
|
Software
|   |
|   Kalender (Dummy-Instanz je Kalender)
|   |
|   Müllabfuhr
|   |
|   RSEnergyForecast
|   |
|   etc...
|
Visualisierung
    |
    Gewerke (Dummy-Instanzen je Gewerk, welche in dann in den WF verlinke)
    |
    WebFronts
        |
        8Zoll
        |
        PC
        |
        Mobil

Sicherlich muß ich jetzt wissen das Steckdose Weihnachsbeleuchtung unter Elro liegt und nicht unter Homematic, aber ich finde das ist okay.

Für deine Skripte würde ich was in der Richtung vorschlagen:


HomePilot
|
Rollläden
|   |
|   Wohnzimmer rechts (Dummy-Instanz, Ident= HardwareAdresse vom HP)
|   |   |
|   |   Position (Var, Float, Ident = Pos)
|   |   |
|   |   Automation (Var, Int, Ident = Modus)
|   |   |
|   |   etc...
|   |   
|   Wohnzimmer links (Dummy-Instanz, Ident= HardwareAdresse vom HP)
|   |   |
|   |   Position (Var, Float, Ident = Pos)
|   |   |
|   |   Automation (Var, Int, Ident = Modus)
|   |   |
|   |   etc...
|   |
|   Skript für Rollläden
|
Steckdosen
|   |
|   Wohnzimmer Stehlampe (Dummy-Instanz, Ident= HardwareAdresse vom HP)
|   |   |
|   |   Helligkeit (Var, Float, Ident = Level)
|   |   |
|   |   Status (Var, Bool, Ident = State)
|   |   |
|   |   etc...
|   |
|   Skript für Steckdosen

Somit solltest du ohne Probleme über die Variable (bei Aktion über das WebFront) alles in Erfahrung bringen können:

[ul]
[li]Was soll gemacht werden ? IPS_GetObject($_IPS[‚VARIABLE‘])[ObjectIdent][/li][li]Welches Gerät ? IPS_GetObject(IPS_GetParent($_IPS[‚VARIABLE‘]))[ObjectIdent][/li][li]Welche Hardware IPS_GetObject(IPS_GetParent($_IPS[‚SELF‘]))[ObjectIdent][/li][/ul]

Michael

Okay du sortierst also nochmal nach Hersteller vorher. Schwere Entscheidung :slight_smile: Kommt vermutlich auch auf die Anzahl der Geräte an. Nur du hast 2 Skripte für Rollos und Steckdosen angelgt. Idealerweise habe ich nur ein Script, dann muss ich auch nur einmal getFullStatusAllDevices() aufrufen (dauert ca. 1000ms).

Hier mal mein jetziger Baum:

Vielen Dank!

Dann sortierte es bei meinem Beispiel eine Ebene höher ein, und lese noch den Ident der Kategorie (Rollo oder Steckdose) aus.
Gibt ja zig Möglichkeiten.
Auch wenn es eine globales Include-Script gibt, baue ich lieber kleinere Abfragescripte mit sep. Timern, welche quasi parallel laufen könnten. Außer die HW lässt nicht mehrere Verbindungen gleichzeitig zu, dann geht das natürlich nicht.
Michael