Ankündigung

Einklappen
Keine Ankündigung bisher.

Webserver: Icon Active/Inactive

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Webserver: Icon Active/Inactive

    Ich tätige gerade meine ersten Schritte mit dem Webserver. Ich habe mir einen button für das Licht angelegt und mich stark an den dem Beispiel aus dem Enertex Handbuch orierentiert. Soweit funktioniert auch alles, das Licht läßt sich auch an und aus schalten. Problem: Bei eingeschaltetem Licht wird das Icon nicht als Active (also leuchtendes Birnchen) dargestellt, sondern bleibt aus. Die GA die ich hierfür nehmen ist der Ausgang des Aktors.
    Wie finde ich nun heraus was das Problem ist?
    P.S. als Browser hatte ich nur das Iphone (Safari) zur Hand...

    #2
    Am besten nutzt Du von Anfang an Makros für solche sich wiederholende Funktionen. Dazu speicherst Du den folgende Code als lib-Datei (z.B. WebFunktionen.lib):

    [highlight=epc]
    :begin ButtonWeb(ID, PageID, GA, StatusGA, ICON)
    :info $Ein- und Ausschalten einer GA über einen seitenbezogenen Button (pbutton, pshifter). Der Datentyp der Gruppenaddresse ist b01. \\
    :$ID des Web Elements$ \\
    :$PageID$ \\
    :$Gruppenadresse des Schaltelements$ \\
    :$Gruppenadresse zur Rückmeldung des Schaltelementstatus$ \\
    :$Icon des Web Elements$
    :shortinfo $GA Umschalter über ein Web Element$

    if pbutton(ID,PageID) == 1 then \\
    write(GA,!StatusGA) \\
    endif
    if Init == EIN and \\
    StatusGA == EIN then \\
    pdisplay(ID,$$,ICON,ACTIVE,GREY,PageID) \\
    else \\
    pdisplay(ID,$$,ICON,INACTIVE,GREY,PageID) \\
    endif
    :end
    [/highlight]

    Im EibPC EPC Code bindest Du dann das Makro ein (Achtung Pfad an den Speicherort Deiner lib-Datei anpassen):

    [highlight=epc]
    [MacroLibs]
    /Users/michael/Documents/WebFunktionen.lib
    [/highlight]

    Um nach einem Systemstart immer stabile Anzeigewerte zu haben, führst Du im Bereich EibPC die Variable Init ein:

    [highlight=epc]
    [EibPC]
    // Während Systemstart andere Prozesse verzögern
    Init = AUS
    if after(systemstart(),5000u64) then \\
    Init = EIN \\
    endif
    [/highlight]

    Jetzt mußt Du nur noch im EibPC Bereich den Schalter über das Makro steuern. Hier sind natürlich die IDs und GAs an Deine Situation anzupassen:

    [highlight=epc]
    ButtonWeb(ID_OG_Diele_Deckenspots,PageID_Obergesch ossV,"Diele Deckenspots-2/2/0","Diele Deckenspots-2/2/0",LIGHT)
    [/highlight]

    Viele Grüße aus Ddorf

    Kommentar


      #3
      Sehr schön, schon mal Danke für die Info.
      Aber nochmal nachgefragt: Die Icons die Active/Inactive signalisieren sind mit dem Ausgang des Aktors verbunden um immer den tatsächlichen zustand mitzubekommen, oder?

      Gruß aus Kölle!

      Kommentar


        #4
        Im Makro siehst Du die Verwendung der GA und der StatusGA. Das ist die Basis für die Kommunikation zwischen Aktor und EibPC.

        Wenn Dein Aktor keine StatusGA bereitstellt, trägst Du auch dort die GA ein. Der EibPC sendet somit Befehle an die GA und lauscht auf der StatusGA bzw. der GA nach Status Änderungen.

        Kommentar


          #5
          Ok perfekt. Danke für Erläuterung. Werde es probieren!

          Kommentar


            #6
            Hallo,

            die Lösung von Jambala sieht gut aus.
            Du könntest du aber auch das mitgelieferte Makro "UmschaltButtonZustand" aus der "EnertexWebV2.lib" verwenden.

            Gruß,
            Jens.

            Kommentar


              #7
              Ich bekomme es nicht hin:
              Code:
              [MacroLibs]
              //Makro-Bibliotheken
              C:/temp/testLib.lib
              [Macros]
              ButtonWeb(Dach,Haus,"DachLedFront-2/1/29","DachLedFront-2/4/29",LIGHT)
              [EibPC]
              // Während Systemstart andere Prozesse verzögern
              Init = AUS
              if after(systemstart(),5000u64) then \\
                  Init = EIN \\
                  endif 
              
              // ##-- Webserver
              Haus=1
              
              //Wetterdaten
              if stime(0) then webdisplay(12,"Wind-0/0/1",WIND,DISPLAY,GREY)endif
              if stime(0) then webdisplay(13,"Temperatur-0/0/2",TEMPERATURE,DISPLAY,GREY)endif
              
              
              [WebServer]
              page(Haus)[$Gr1$,$SN1$]
              button(Dach)[LIGHT]$Dachbeleuchtung$
              line
              button(12)[WIND]$Wind Dach$ button(13)[TEMPERATURE]$Temp Dach$
              Meldung vom Parser
              Code:
              Laufzeitfehler in Zeile:Makro: "ButtonWeb" in Zeile [8] in C:/temp/testLib.lib
                  if pbutton(ID,PageID) == 1 then    write(GA,!StatusGA) endif    ==>  if pbutton(Dach,Haus) == 1 then    write("DachLedFront-2/1/29",!"DachLedFront-2/4/29") endif    in der Datei "C:/Enertex EibPc/EibstudioData/tmpApp.txt" in der Datei "C:/Enertex EibPc/EibstudioData/tmpApp.txt"
                Konstantes Argument erwartet: >Dach< in >pbutton(Dach<  in >==<  in >if_then<   
               ID:76
               EibParser wurde mit Fehler beendet.
              Bitte nochmal um Hilfe. Danke

              Kommentar


                #8
                So ich habe noch mal mich mit dem Debugger versucht.
                Wenn ich den Knopf drücke findet kein Write auf den Bus statt.

                Die Anweisung die das tun sollte ist doch:
                if pbutton(ID,PageID) == 1 then \\
                write(GA,!StatusGA) \\

                Die PageId ist auf jedenfall 1 und die ID sollte es auch sein.
                Die Frage ist halt nur warum kein write gemacht wird.
                Muss die StatusGA (das ! inventiert doch den aktuellen wert !?!) nicht vorher bekannt sein?

                Vielen Dank

                Kommentar


                  #9
                  Das kann so auch nicht klappen, da Du nicht alle IDs definiert hast (die ID Dach ist nicht definiert.

                  Die IDs definierst Du am besten wie hier im Beispiel an einer zentralen Stelle.

                  Bitte unbedingt beachten, dass auf einer Webpage jede Elemente ID nur einmal vorkommt. Hier passieren häufig Fehler.

                  Zur Verdeutlichung habe ich hier direkt einmal mehr IDs definiert.

                  [highlight=epc]
                  [MacroLibs]

                  //Makro-Bibliotheken
                  C:/temp/testLib.lib

                  [WebServer]

                  // Definition Webpage Haus
                  page(PageID_Haus)[$$,$Haus$]
                  header(0)
                  footer(0)
                  design $black$
                  line $Beleuchtung$
                  pbutton(ID_Haus_Dachbeleuchtung)[LIGHT]$Dachbeleuchtung$ \\
                  pbutton(ID_Haus_Gartenbeleuchtung)[LIGHT]$Gartenbeleuchtung$

                  [EibPC]

                  // Während Systemstart andere Prozesse verzögern
                  Init = AUS
                  if after(systemstart(),5000u64) then \\
                  Init = EIN \\
                  endif

                  // Webserver: IDs Webpages definieren
                  PageID_Haus = 1
                  PageID_Garten = 2
                  PageID_KG = 3
                  PageID_EG = 4
                  PageID_OG = 5

                  // Webserver: IDs Haus definieren
                  ID_Haus_Dachbeleuchtung = 1
                  ID_Haus_Gartenbeleuchtung = 2
                  ID_Haus_Fassadenbeleuchtung_Vorne = 3
                  ID_Haus_Fassadenbeleuchtung_Vorne = 4

                  // Webserver: IDs Garten definieren
                  ID_Garten_Beetbeleuchtung = 1
                  ID_Garten_Rasenbeleuchtung = 2
                  ID_Garten_Baumbeleuchtung_Vorne = 3

                  // Webserver: Haus
                  ButtonWeb(ID_Haus_Dachbeleuchtung, PageID_Haus, "DachLedFront-2/4/29", "DachLedFront-2/4/29", LIGHT)
                  [/highlight]

                  Kommentar


                    #10
                    Schon mal vielen Dank für die Hilfe.
                    Ich habe gestern Abend es dann exakt so gemacht wie in deinem Beispiel. An einer Stelle war eine Variable doppelt vergeben, war aber nicht weiter schlimm.
                    Habs auf den EibPC übertragen. Das Webinterface ist da und nachdem ich auf das Icon gedrückt habe ändert es auch seinen Zustand von Inactive auf Active (und vice versa). Fein.
                    Aber das Licht wird nicht angeschaltet. Der Monitor am EibPC zeigt mir nach dem betätigen des Buttons ein Sendebefehl an 2.1.29 mit Wert = EIN an aber in dem Busmonitor von der ETS ist diese Nachricht nicht vorhanden.
                    Schicke ich an die GA manuell einen Wert aus der ETS, so wird geschaltet.
                    Alle anderen Nachrichten die so auf dem Bus rumgeistern bekomme ich dennoch im EibStudio angezeigt. Also eine Verbindung scheint grundsätzlich da zu sein. Irgendeine Idee dazu?

                    Kommentar


                      #11
                      Hilft nicht direkt bei Deinem Problem aber setze noch vor den Mustercode von mir die folgenden Zeilen:

                      [InitGA]
                      // Initialisierte Gruppenaddressen
                      "DachLedFront-2/4/29"

                      Damit zieht sich der EibPC beim Neustart den Status der GA vom Bus.

                      Bei Deinem Problem würde ich einen Fehler in der Schreibweise der GA vermuten.

                      Hast Du die GA manuell abgetippt oder ein EFS-File aus der ETS exportiert?

                      Kommentar


                        #12
                        Habe ich aus der ETS importiert.
                        Anfangs hatte ich das ja alles ohne die Macros gemacht und da funtktionierte die Ansteuerung auch.
                        Ich zieh auch später mal alle Stecker und starte neu auf. Hoffentlich bringts was.
                        Den Eintrage ergänze ich noch.
                        Vielen Dank!

                        Kommentar


                          #13
                          So, alles richtig gemacht. Ein Neustart hatte dann doch den gewünschten Erfolg gebracht. Jetzt geht erstmal soweit alles. Vielen Dank für die Tips und die schnelle Hilfe!

                          Kommentar

                          Lädt...
                          X