+ Antworten
Ergebnis 1 bis 9 von 9
  1. #1
    Registriert seit
    Aug 2009
    Beiträge
    35

    Standard Webfront reload Frage

    Hallo zusammen,

    inzwischen ist meine IPS Installation (2.2 beta) reichlich gewachsen und so langsam habe ich das Gefühl, etwas mehr zu verstehen auch und gerade wegen des Forum, das immer wieder tolle Anregungen bietet!

    Nun zu meiner Frage:

    Ich habe ein "Aktuell" Modul im Webfront angelegt, daß mir alle möglichen aktuellen Hinweise gibt. Das ist zum Beispiel der Kalender und auch alle derzeit eingeschalteten und an IPS angeschlossenen Verbraucher. Wenn diese ausgeschaltet werden, werden sie über IPS_Sethidden ausgeblendet und das Webfront wird über WFC_reload neu geladen. Entsprechend natürlich auch andersherum, wenn der Verbraucher eingeschaltet wird, erscheint er im "Aktuell" Modul.

    So weit so gut.

    Nun hat man ja meistens mehrere Module im Webfront angelegt. Zum Beispiel ein Modul mit entsprechenden Kategorien für alle Räume. In den Kategorien sind dann vielleicht 3 Leuchten im Raum angelegt. Jetzt möchte ich über meinen Touch mal eben zack zack z.b. 2 von den 3 Lampen ausschalten zu einem anderen Raum wechseln und auch dort etwas schalten etc.

    Allerdings bekommt das "Aktuell" Modul natürlich mit, daß etwas passiert ist und lädt das gesamte Webfront jedesmal neu, nachdem der erste Schaltvorgang durchgeführt wird und bevor der 2 Schaltvorgang am Touch ausgelöst werden kann. Zwischendurch ist vielleicht noch jemand von einem Bewegungsmelder erfaßt worden und das "Aktuell" Modul lädt noch einmal... usw. => Das Webfront ist wird somit sehr häufig neu geladen und eine "flüssige" Bedienung geht nicht wirklich, da der Reload jedesmal ca. 2 Sekunden dauert.

    Nun meine eigentliche Frage: Gibt es eine Möglichkeit, den Reload nur dann zu machen, wenn das "Aktuell" Modul im Webfront aktiv angezeigt wird? Wenn ich von einem anderen Modul zum "Aktuell" wechsel wird ja ohnehin der aktuelle Zustand dargestellt also wäre der Reload nicht notwendig, wenn ein anderes Modul aktiv ist.

    Ich hoffe, es ist klar geworden, was ich meine

    Gibt es einen Befehl oder eine Möglichkeit zu erkennen, welches Modul gerade am Touch aktiv angezeigt wird? Dann könnte man ja den WFC_Reload in Abhängigkeit des angezeigten Moduls durchführen.

    Hat jemand eine Idee?

    Gruß

    Axel

  2. #2
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,330

    Hallo Axel,

    zeig mal dein Script dazu.
    Ich nutze das auch, allerdings in Abhänigkeit von der zu schaltenden Variable. Das wird nur neu geladen wenn es nötig ist und nicht wenn was anderes schaltet.
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  3. #3
    Registriert seit
    Aug 2009
    Beiträge
    35

    Hallo Rainer,

    so sieht das z.B. für eines der Lichter in der Küche aus

    PHP-Code:
     <?
    $eid
    =@GetValue(49396 /*[Küche\Licht Schrank\Status]*/ );
    if (
    $eid == false) {

    IPS_SetHidden(44824 /*[.Aktuell\Licht Schrank Küche]*/ true); //Objekt verstecken
    }
    else {
    IPS_SetHidden(44824 /*[.Aktuell\Licht Schrank Küche]*/ false); //Objekt anzeigen

    }
    WFC_Reload(40353 /*[WebFront Configurator]*/);
    ?>
    Und das habe ich für ca. 20-30 IPS Instanzen aktiv.

    Damit visualisiert mein "Aktuel" Modul sozusagen in Echtzeit, was passiert.

    Hilft das?

    Gruß

    Axel

  4. #4
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,330

    Hallo Axel,

    das ist klar, bei jedem Scriptaufruf wird die Seite neu geladen.

    Ich versteht jetzt ehrlich gesagt nicht ganz den Sinn und Zweck was Du da versteckst. Schalter, Icons oder was?
    Geändert von RWN (17.01.10 um 01:12 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  5. #5
    Registriert seit
    Sep 2008
    Beiträge
    204

    Rainer wie machst du das denn? Gibts da ne elegantere Lösung?
    Ich denke der Sinn ist, dass man z.B. von eine "Liste" von Links macht und die auf einer Seite anzeigt. Dann hat man eine Seite nur mit den Geräten die aktuell an sind!

  6. #6
    Registriert seit
    Aug 2009
    Beiträge
    35

    Hallo Rainer,

    ich habe eine Seite (Modul), wo nur die aktuell eingeschalteten Verbraucher, geöffneten Fenster etc. angezeigt werden. Wenn sie aus/geschlossen sind, werden sie eben versteckt.

    Das geht m.E. nur in quasi-Echtzeit, wenn man den WFC_Reload Befehl verwendet.

    Wie Pollibus geschrieben hat, ist die "Aktuell" Seite nichts anderes als eine Liste von Links.

    Nun wäre es eben schön, wenn man den Reload nur dann machen würde, wenn die "Aktuell" Seite angzeigt wird und eben nicht, wenn ein anderes Modul dargestellt wird.

    Gruß

    Axel

  7. #7
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,330

    Hallo Axel,

    Echtzeit! Im Webfront werden (fast)alle Zustände direkt nach Änderung angezeigt. Dafür braucht man kein WFC_Reload.
    Ausnahme(noch)IPS_SetHidden. Dafür braucht man dann WFC_Reload.

    Ich baue auch nicht den Lichtschalter ein und aus wenn ich ihn brauche.






    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  8. #8
    Registriert seit
    Aug 2009
    Beiträge
    35

    Hallo Rainer,

    klar wird fast alles in Echtzeit angezeigt.

    Nochmal, mir geht es um ein Modul / Seite, wo nur alle eingeschalteten / geöffneten Aktoren angezeigt werden. Sozusagen als Gesamt-Statusübersicht, die würde natürlich ewig lang, wenn ich tatsächlich alle Aktoren darstellen würde. Daher "baue" ich die nicht aktiven in der Übersicht mit dem IPS_SetHidden tatsächlich virtuell aus.

    Natürlich kann ich den Status der einzelnen Aktoren auch in allen anderen Modulen oder Kategorien sehen aber eben nicht als Gesamtübersicht und genau darum geht es mir hier.

    Da es mit dem IPS_SetHidden nur nach Reload funtioniert, suche ich einen Weg herum, wenn es ihn den überhaupt geben sollte.

    Gruß

    Axel

  9. #9
    Registriert seit
    Mar 2008
    Ort
    83379
    Beiträge
    558

    Zitat Zitat von Pollibus Beitrag anzeigen
    Rainer wie machst du das denn? Gibts da ne elegantere Lösung?
    Ich denke der Sinn ist, dass man z.B. von eine "Liste" von Links macht und die auf einer Seite anzeigt. Dann hat man eine Seite nur mit den Geräten die aktuell an sind!
    Hallo zusammen,

    ich habe mir ein Skript gebastelt in dem ich in einer Kategorie für alle eingeschaltene LCN-Verbraucher ein Link erstelle.

    PHP-Code:
    <?
    $links 
    = (IPS_GetChildrenIDs(58273 /*[Verbraucher]*/));     // alle Links in 58273 (Kategorie Verbraucher)
    //print_r ($links);
    foreach($links as $ID)
        {
           if (
    $ID != 22799 /*[Verbraucher\eingeschaltene Verbraucher suchen]*/)
           {
            
    IPS_DeleteLink $ID );
            }
        }


     foreach(
    IPS_GetInstanceList() as $item){   // alle Unterobjekte
        
    $M IPS_GetInstance($item);
       
    $MInfo $M['ModuleInfo'];
       
    //print_r ($MInfo);
        
    if ($MInfo['ModuleName'] == "LCN Unit") {
           
    $O IPS_GetObject($item);
           
    $Oh IPS_GetName($O['ParentID']);
           
    //echo $Oh ."\n";
            //print_r(IPS_GetChildrenIDs($item));
          
    foreach(IPS_GetChildrenIDs($item) as $item_2){
             
    $name IPS_GetName($item_2);
             
    //echo "Name: ".$name."\n";
               
    if ($name == "Status"){
               
    //print_r(IPS_GetVariable($item_2));
                        
    $Object IPS_GetObject($item_2);
                  if (
    GetValue($item_2) == true and $Object['ObjectIsHidden'] == 0){
                      
    $LinkID IPS_CreateLink();
                      
    IPS_SetParent($LinkID,58273 /*[Verbraucher]*/);
                      
    IPS_SetName($LinkID,$Oh.":    ".$O['ObjectName']); //Link benennen
                      
    IPS_SetLinkChildID($LinkID,$item_2);
                       
    //echo "ID: " . $item_2 .  " " . $O['ObjectName'] . " " . $Oh . "\n<p>";
                    
    }
                }
            }
       }
     }

    WFC_Reload(55585 /*[WebFront Configurator]*/);
    WFC_SwitchPage(55585 /*[WebFront Configurator]*/"item2314");

    ?>
    Jetzt suche ich auch noch eine Möglichkeit das Skript beim Aufruf der WF-Seite zu triggern.

    Vieleicht hat einer eine Idee?

    Gruß
    Christian

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 10.11.09, 11:37
  2. Webfront konfigurieren
    Von maku83 im Forum WebFront
    Antworten: 1
    Letzter Beitrag: 29.08.09, 16:55
  3. Umstellung V1 auf V2 mit Designer oder Webfront?
    Von hmpf99 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 3
    Letzter Beitrag: 22.04.09, 20:51
  4. Antworten: 0
    Letzter Beitrag: 09.02.09, 23:59