Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfänger: EibPC Visu

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

    #16
    Ich habe das Vorgehen eben in der Windows-Version nachvollzogen. Habe hier keine Probleme. In meiner OSX Version geht es auch.
    Allerdings ist dieses Betriebssystem nicht mehr auf dem neuesten Stand.
    Besteht das genannte Problem auch in Windows?
    Was man in OSX noch ausprobieren kann:
    Das Vorschaufenster schließen, dann die Lichtschalter hinzufügen und mit Name und GA parametrieren. Dann den Parametrierbereich wieder verlassen und ins Hauptmenü gehen. Erst dann wieder die Vorschau aktivieren. Tritt der Fehler dann auch auf?
    Enertex-Entwickler

    Kommentar


      #17
      Hallo Schuhmi,

      danke für deine Bemühungen. Ich habe das Problem mal nachvollzogen: Der Assistent vergibt beim Anlegen des zweiten shifters diesem die gleiche ID wie dem Ersten. Daher tritt das Problem immer erst beim zweiten Element auf. Ich dachte mit dem Assistenten könnte ich eine Visu ohne großen Aufwand per plug´n play erstellen. Da ich nun doch tiefer in das Thema einsteigen muss, verzichte ich auf den Assistenten und habe eine lange Nacht mit vielen try&error Versuchen hinter mir ;-)

      So weit bin ich nun:

      Ohne Titel.jpeg

      Hier ergeben sich folgende Fragen bei denen ich Eure Hilfe benötige:

      1) Uhrzeit, Azimuth und Elevation aktualisieren sich nur nach dem Systemstart. Anschließend bleiben die Variablen konstant. Muss ich eine Vorgabe machen dass die im Webserver laufend aktualisiert werden?

      2) Die Temperatur wird immer =0 angezeigt. Der Busmonitor zeigt aber das zyklische senden des f16 Wertes. Hier gehe ich mal nicht näher drauf ein, vielleicht hängt das ja mit Punkt 1) zusammen

      3) Anforderung: Textausgabe wenn Garagentor offen / geschlossen ist. Ich bekomme einen b01-Wert bei Zustand offen auf GA1 und bei Zustand geschlossen einen Wert auf GA2. Wie setze ich das nun um, meine Idee war:
      if (GA1==EIN) then (Variable1,c14==$Tor1 geschlossen$) endif => für ein Tor
      if (GA1==EIN) AND (GA3==EIN) then (Variable2,c14==$beide Tore geschlossen$) endif => für beide Tore

      Könnt ihr mir hierzu sagen wie der Code richtig aussehen muss?
      Angehängte Dateien
      Zuletzt geändert von Marcus78; 18.05.2017, 07:55.

      Kommentar


        #18
        1) Der Webserver aktualisiert sich grundsätzlich selbstständig, es ist also kein extra "Befehl" nötig, um die Anzeige zu aktualisieren. Voraussetzung ist natürlich, dass sich Werte tatsächlich ändern UND das geänderte Werte dem Webserver auch "mitgeteilt" werden. Da kommt das Validierungsschema wieder zum Tragen.

        Ein "pdisplay(ID, Text, Icon, State, TextStil, PageID, [Mbutton])" schreibt den "Text" eben auch nur einmalig in den Webserver.

        Dir fehlt vermutlich ein "if x=y then pdisplay....." oder ein "if change(Text) then pdisplay(..."

        2) vermutlich das gleiche. Die 0 verm. weil du den Wert an den Webserver übergibst, bevor das erste mal was über den Bus angekommen ist.

        3) Wo kommt die GA3 in der letzten Zeile her? Warum zwei Tore? Sind das zwei getrennte Fragen?
        Für den ersten Fall:
        If event(GA1) AND GA1==EIN then "Tor zu"
        if evevt(GA2) AND GA2==EIN then "Tor offen"
        Das "event" brauchts Du, weil ja weder GA1 noch GA2 jemals wieder "AUS" wird, wenn ich Dich richtig verstehe. Damit (Validierung) würden beide Zeilen ohne event nur ein einziges mal bearbeitet.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #19
          Hi Uwe,

          super, damit kann ich heute Abend weiterarbeiten. Ganz kurz:

          zu 1 und 2) ich habe das bisher wie folgt umgesetzt:
          shifter(6)[TEMPERATURE]$Außentemperatur$
          webdisplay(6,AussentemperaturBWM,TEMPERATURE,INACT IVE,GREY)
          AussentemperaturBWM = stringformat("BWM außen Fühler intern Ist Tempertur-6/1/0",4,0,2,2)+$°C$

          zu 3)
          Warum zwei Tore? Weil zwei Garagen ;-) Eigentlich sind es drei Tore, aber bisher sind nur zwei (zur Strassenseite) am BUS
          Demnach:
          Tor1: GA1=EIN bei Impuls geschlossen, GA2=EIN bei Impuls offen
          Tor2: GA3=EIN bei Impuls geschlossen, GA4=EIN bei Impuls offen

          zu Deiner Lösung: If event(GA1) AND GA1==EIN then "Tor zu"
          Hier muss dann noch die Variable rein, oder? D.h. then Variable1=$Tor zu$, richtig?
          Muss die Variable vorher definiert werden?
          Variable=$$c14?






          Kommentar


            #20
            Danke!
            You do not have permission to view this gallery.
            This gallery has 1 photos.

            Kommentar


              #21
              Zitat von Marcus78 Beitrag anzeigen
              Hallo Schuhmi,

              danke für deine Bemühungen. Ich habe das Problem mal nachvollzogen: Der Assistent vergibt beim Anlegen des zweiten shifters diesem die gleiche ID wie dem Ersten. Daher tritt das Problem immer erst beim zweiten Element auf.
              Das Problem ist mir nicht ganz klar. Wenn ich meinen Assistenten eine Webseite mit mehreren Shiftern generieren lasse, dann vergibt er keine doppelten IDs.
              Siehe Auszug aus VA_EibPC:
              /Definition der globalen Variablen für den Visalisierungsassistenten
              //Initialisierung der Webelement IDs für den Visalisierungsassistenten
              Licht1ID = 3
              Licht2ID = 4
              Licht3ID = 5
              Licht4ID = 6
              Siehe Auszug aus VA_Webserver:
              pshifter(Licht1ID)[LIGHT]$Licht 1$
              pshifter(Licht2ID)[LIGHT]$Licht 2$
              pshifter(Licht3ID)[LIGHT]$Licht 3$
              pshifter(Licht4ID)[LIGHT]$Licht 4$
              Siehe Auszug aus VA_Macros:
              UmschaltShifter( Licht1ID,EGBadID,'2/2/3'b01,'2/2/4'b01,LIGHT)
              UmschaltShifter( Licht2ID,EGBadID,'2/2/5'b01,'2/2/6'b01,LIGHT)
              UmschaltShifter( Licht3ID,EGBadID,'2/2/7'b01,'2/2/8'b01,LIGHT)
              UmschaltShifter( Licht4ID,EGBadID,'2/2/9'b01,'2/2/10'b01,LIGHT)
              UmschaltShifter( Licht5ID,EGBadID,'2/2/9'b01,'2/2/10'b01,LIGHT)
              Probleme mit den IDs gibt es da nur dann, wenn man per Hand einen Webserver bastelt und nachträglich mit dem Assistenten neue Seite hinzufügt.
              Besser ist es mit dem Assistenen anzufangen und dann manuell die Webseiten nachträglich erweitern.

              Ich benutze das eibstudio V3.203.

              vg



              Enertex-Entwickler

              Kommentar


                #22
                Zitat von Schuhmi Beitrag anzeigen

                Ich benutze das eibstudio V3.203.
                Ich nutze auch v3.203 - als MAC Version

                Kommentar


                  #23
                  Zitat von Marcus78 Beitrag anzeigen
                  Hi Uwe,

                  zu Deiner Lösung: If event(GA1) AND GA1==EIN then "Tor zu"
                  Hier muss dann noch die Variable rein, oder? D.h. then Variable1=$Tor zu$, richtig?
                  Muss die Variable vorher definiert werden?
                  Variable=$$c14?
                  @Uwe:
                  Ich habe mal einen kurzen Testlauf gemacht - funktioniert. thanks a lot

                  Testvariable=$$c14
                  if event("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0") AND ("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0"==EIN) then Testvariable=$Licht an$c14 endif
                  if event("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0") AND ("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0"==AUS) then Testvariable=$Licht aus$c14 endif

                  Kommentar


                    #24
                    Zitat von Marcus78 Beitrag anzeigen
                    zu 1 und 2) ich habe das bisher wie folgt umgesetzt:
                    und das schreibt den Wert eben nur einmalig.

                    Zitat von Marcus78 Beitrag anzeigen
                    zu 3)
                    Warum zwei Tore? Weil zwei Garagen ;-)
                    Dein Beispiel ging da nur etwas durcheinander oder war für mich zumindest nicht klar.

                    Zitat von Marcus78 Beitrag anzeigen
                    Hier muss dann noch die Variable rein, oder?
                    Ja, klar, das war nur "Pseudo-Code"!
                    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                    Kommentar


                      #25
                      Zitat von Marcus78 Beitrag anzeigen
                      if event("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0") AND ("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0"==EIN) then Testvariable=$Licht an$c14 endif
                      if event("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0") AND ("Büro: Deckenleuchte 3 x 1 fach schalten -1/0/0"==AUS) then Testvariable=$Licht aus$c14 endif
                      in dem Fall kannst (uns solltest!) Du dir das event sparen, da hier ja immer die gleich GA den Zustand wechselt und damit bei jedem Wechsel automatisch verarbeitet wird!

                      Bei deinen Toren kommt immer wieder der gleiche Wert über die gleiche GA, der Inhalt ändert sich also nie, wird nur von Zeit zu Zeit neu auf den Bus geschrieben. Hier würde der EibPC ohne event nichts machen, da sich ja nichts ändert.
                      Event nur bewusst in Ausnahmefällen nehmen!
                      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                      Kommentar


                        #26
                        Die Logik habe ich jetzt so umgesetzt und funktioniert:
                        (das kleine Tor ist noch nicht gefahren)

                        // ### Garagentore ###
                        Garagentor_links=$$c1400
                        Garagentor_rechts=$$c1400
                        if event ("Garagentor links Straßenseite Status unten = 0-3/3/4") AND ("Garagentor links Straßenseite Status unten = 0-3/3/4"==AUS) then Garagentor_links=$Tor geschlossen$c1400 endif
                        if event ("Garagentor links Straßenseite Status oben = 0-3/3/3") AND ("Garagentor links Straßenseite Status oben = 0-3/3/3"==AUS) then Garagentor_links=$Tor offen$c1400 endif

                        if event ("Garagentor rechts Straßenseite Status unten = 0-3/4/4") AND ("Garagentor rechts Straßenseite Status unten = 0-3/4/4"==AUS) then Garagentor_links=$Tor geschlossen$c1400 endif
                        if event ("Garagentor rechts Straßenseite Status oben = 0-3/4/3") AND ("Garagentor rechts Straßenseite Status oben = 0-3/4/3"==AUS) then Garagentor_links=$Tor offen$c1400 endif
                        Ohne Titel.jpeg

                        Bei der Logik hatte ich allerdings einen Denkfehler.
                        Wenn das Tor geschlossen war und hoch fährt bleibt der Wert so lange auf "Tor geschlossen" bis es die Endposition oben erreicht hat und umgekehrt.
                        Das baue ich heute Abend noch um.

                        Wie setze ich die gleiche Anforderung mit einem f16-Wert um?
                        if event passt ja hier nicht und if change funktioniert nicht, oder habe ich hier einen anderen Fehler drin:
                        // ### Automower ###
                        Ladezustand=$$c14
                        //if change("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35") AND ("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35"=0f16) then Ladezustand=$laedt nicht$c14 endif
                        Wenn der Stromwert der Steckdose gleich null ist, hätte ich auf der Variablen gerne den Text ausgegeben.
                        Vom Ansatz her das gleiche wie bei den Toren, allerdings nicht mit einem b01 sondern f16 Wert
                        Angehängte Dateien

                        Kommentar


                          #27
                          zum Tor: Du bekommst eine 0 / AUS, wenn das Tor in der entsprechenden Endlage ist? Weil oben hast du noch EIN geschrieben!?

                          Zum Rasenmäher: also die Logik geht mit f16 grundsätzlich genau gleich. Bekommst Du einen Fehler?
                          Und das Change() brauchst du hier auch nicht. Dafür fehlt die Abfrage mit dem Ergebnis "Lädt"

                          PS: persönlicher Geschmack: der Webserver versteht Umlaute!
                          ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                          Kommentar


                            #28
                            Tor: ja, genau - aber das bekomme ich heute Abend hin.

                            Rasenmäher: Fehler bekomme ich nicht, das hier macht er auch nicht:

                            Ladezustand=$$c14
                            if ("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35"=0f16) then Ladezustand=$lädt nicht$c14 endif

                            P.S.: irgendwann versucht man jeden Fehler auszuschließen ;-)

                            Kommentar


                              #29
                              Ich hab´s - funktioniert:
                              // ### Automower ###
                              Ladezustand=$$c14
                              //if ("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35") AND ("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35"=0f16) then Ladezustand=$lädt nicht$c14 endif
                              if ("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35"==0f16) then Ladezustand=$laedt nicht$c14 endif
                              if ("Stromwert: Anschluss Gartenseite 4 - Steckdose Automower-6/3/35"!=0f16) then Ladezustand=$laedt$c14 endif
                              Übrigens ;-)

                              Ohne Titel.jpeg
                              Angehängte Dateien

                              Kommentar


                                #30
                                Zitat von Marcus78 Beitrag anzeigen
                                Ich hab´s - funktioniert:
                                ist doch aber genau der gleiche Code wie drüber, oder?
                                Die Klammer ist da auch überflüssig, aber nur Optik.


                                Zitat von Marcus78 Beitrag anzeigen
                                Übrigens ;-)
                                hm..ich hätt schwören können, das ist kein Problem.
                                Achso, liegt vermutlich nur dran, weil Du es als c14 definiert hast, das ist ja ein genormter KNX-Datentyp und der kann keine Umlaute!
                                Mach da mal einen c20 draus.
                                ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                                Kommentar

                                Lädt...
                                X