Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - WebPageTemperatureSet

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

    [Codebeispiel] - √ - WebPageTemperatureSet

    Ich versuche mich gerade am Webserver mit den Makros von BMX (DANKE! dafür)...

    Was ich aber nicht zusammenbringe ist die Definition des pshifters der von WebPageTemperatureSet angesprochen wird...

    Bei
    Code:
    pshifter(LisaRTRID)[PLUS,MINUS,UP,DOWN]$Temperaturen$
    passiert gar nix...
    bei
    Code:
    pshifter(LisaRTRID)[PLUS,MINUS]$Temperaturen$
    funktioniert nur die PLUS Schaltfläche
    bei
    Code:
    pshifter(LisaRTRID)[PLUS,MINUS,TEMPERATURE]$Temperaturen$
    ist's auch nicht anders ..

    @BMX: kannst du bitte den Definitionsteil in der WEBSERVER Section posten ...

    LG
    Erich
    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    #2
    Kenne ja nicht alle Makros von BMX, aber pshifter in der Webserver-Section ist ja nur ein Teil der Miete...

    Hast Du denn pbutton-Abfragen irgendwo darunterliegen?
    Ich meine sowas wie "if pbutton(ID,PageID)==1 then ...", wobei die pbuttons 1,2,3 eben von links nach rechts gezählt werden....
    Cheers,
    Oliver

    Kommentar


      #3
      Moin Erich,

      [highlight=epc]

      //EibPC Sektion
      // Definition: WebPageTemperatureSet(PageID, ButtonID, KomfortTemperatur, KomfortTemperaturGA, ActualTemperatureGA )
      WebPageTemperatureSet(WEBPageElternLicht, WEBID_Eltern_Raumtemperatur, KTemp_ElternSchlafzimmer, "Eltern Raumthermostat-4/5/10", "Eltern Ist RT-4/2/10")

      //WebPage Sektion
      pshifter(WEBID_Eltern_Raumtemperatur)[PLUS,TEMPERATURE,MINUS]$Raumtemperatur$
      [/highlight]

      sieht dann so aus:
      Raumtemperatur.png

      [highlight=epc]
      // Vorbelegen und definieren
      ButtonID_SymbolAuszeichnung = INACTIVE

      // Hier wird die KomfortTemperatur über den Button angepasst
      if pbutton(ButtonID, PageID)==1 then KomfortTemperatur = KomfortTemperatur + 0.5f16 endif
      if pbutton(ButtonID, PageID)==3 then KomfortTemperatur = KomfortTemperatur - 0.5f16 endif

      // Wenn sich was an der KomfortTemperatur ändert oder aber sich die aktuell gemeldete Temperatur ändert dann soll die Anzeige aktualisiert werden:
      if change(KomfortTemperatur) or change( ActualTemperatureGA) or InitWebserver then {
      if ActualTemperatureGA > KomfortTemperatur + 1.0f16 then ButtonID_SymbolAuszeichnung = BRIGHTRED endif;
      if ActualTemperatureGA < KomfortTemperatur - 1.0f16 then ButtonID_SymbolAuszeichnung = ACTIVE endif;
      if (ActualTemperatureGA >= KomfortTemperatur - 1.0f16) and (ActualTemperatureGA <= KomfortTemperatur + 1.0f16) then ButtonID_SymbolAuszeichnung = INACTIVE endif;
      pdisplay(ButtonID,$Soll: $+convert(KomfortTemperatur,$$)+$°C, Ist: $+convert(ActualTemperatureGA,$$)+$°C$,TEMPERATURE ,ButtonID_SymbolAuszeichnung,GREY, PageID)
      } endif
      [/highlight]

      Allerdings muß ich auch fairerweise sagen, das noch was dazugehört, was mit der Visu nichts zu tun hat:

      [highlight=epc]

      // Eine Remanente Variable anlegen:
      RemanentVariable( KTemp_ElternSchlafzimmer, 19f16 )

      //Wertebereich sicherstellen
      SecureVariable( KTemp_ElternSchlafzimmer, 16f16, 25f16 )

      // Sicherstellen, das die Temperatur bei Systemstart, in Abständen von 60 min und bei Änderung der Variable auch auf die passende GA gesendet werden.
      if after(systemstart(),15000u64) or cycle(60,0) or change(KTemp_ElternSchlafzimmer) then write("Eltern Raumthermostat-4/5/10", KTemp_ElternSchlafzimmer) endif

      [/highlight]

      Ich hoffe, es hilft ein wenig.

      Gruß,
      Bernd

      Kommentar


        #4
        @BMX: Danke!!
        muß die Variable Remanent sein?
        (nur zur Info, dass man sie definieren muss habe ich schon herausgefunden - und wurde auch vom Compiler dann akzeptiert) - oder gibt es da eine Möglichekiet?

        noch etwas - als reine Neugier (oder damit man es wie ein "Profi" macht):
        wie hast du das ganze organisiert?

        der zusammengehörige Code ist ja auf verschiedene Sections verteilt:
        ein Teil ist im [eibPC], der Makroaufruf in der Makro-abteilung und der Button wird im [Webserver] definiert - bei mehreren Räumen eine unendlich lange Code-Datei...

        Hast du dann in der jeweiligen Sektion jeweils eine #include Datei mit den Definitionen?
        Die Möglichkeit, in einer #include Datei die ganzen zusammengehörenden Sektionen zu definieren geht ja nicht - oder geht das irgendwie doch?
        EPIX
        ...und möge der Saft mit euch sein...
        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

        Kommentar


          #5
          Moin Erich,

          Zitat von EPIX Beitrag anzeigen
          muß die Variable Remanent sein?
          Nein.

          Zitat von EPIX Beitrag anzeigen
          wie hast du das ganze organisiert?
          ... eine unendlich lange Code-Datei...
          Ja, derzeit ist alles in einer langen Code-Datei. Ich hatte mal angefangen, alle Räume auszugliedern aber das ist dann zu unübersichtlich geworden.

          Aber so sind es ja auch nur knapp über 3000 Zeilen...

          Gruß,
          Bernd

          Kommentar


            #6
            Danke für die Rückmeldung...
            Gibt es eigentlich bei deinen Makros noch mehr so Feinheiten zum "Drüberstolpern"?

            Beim "Nachvollziehen" habe ich zwar einiges aus deiner Web15.lib lernen können, aber einige Fragen sind geblieben..
            zB hat es einen Grund warum die Codezeile
            Code:
            if after(systemstart(),15000u64) or cycle(60,0) or change(KTemp_ElternSchlafzimmer) then write("Eltern Raumthermostat-4/5/10", KTemp_ElternSchlafzimmer) endif
            NICHT im Makro untergebracht ist?
            "Eigentlich" könnte man die Aktualisierung ja auch ins Makro auslagern oder?

            Jedenfalls ist deine *.lib ein Super-Beitrag zu einer lebendigen Community

            Grüße aus Salzburg
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Moin Erich,

              Zitat von EPIX Beitrag anzeigen
              Gibt es eigentlich bei deinen Makros noch mehr so Feinheiten zum "Drüberstolpern"?
              Klar, aber das findet man nicht so leicht

              Zitat von EPIX Beitrag anzeigen
              hat es einen Grund warum die Codezeile [highlight=epc]if after(systemstart(),15000u64) or cycle(60,0) or change(KTemp_ElternSchlafzimmer) then write("Eltern Raumthermostat-4/5/10", KTemp_ElternSchlafzimmer) endif [/highlight]NICHT im Makro untergebracht ist?
              "Eigentlich" könnte man die Aktualisierung ja auch ins Makro auslagern oder?
              Ja das könnte man auch in ein Makro auslagern, würde dann heißen

              [highlight=epc]
              SendOnInitChangeOrCycle( GA, Value, CyclusTime )
              [/highlight]

              Was passendes ohne regelmäßiges Senden dann entsprechend

              [highlight=epc]
              SendOnInitOrChange( GA, Value, CyclusTime )
              [/highlight]

              Man kann sich allerdings auch mit Makros selbst zupflastern...

              Gruß,
              Bernd

              Kommentar


                #8
                nein ich meinte das Makro ergänzen:
                Code:
                // Vorbelegen und definieren
                ButtonID_SymbolAuszeichnung = INACTIVE
                 
                // Hier wird die KomfortTemperatur über den Button angepasst
                if pbutton(ButtonID, PageID)==1 then KomfortTemperatur = KomfortTemperatur + 0.5f16 endif
                if pbutton(ButtonID, PageID)==3 then KomfortTemperatur = KomfortTemperatur - 0.5f16 endif
                 
                // Wenn sich was an der KomfortTemperatur ändert oder aber sich die aktuell gemeldete Temperatur ändert dann soll die Anzeige aktualisiert werden:
                if change(KomfortTemperatur) or change( ActualTemperatureGA) or InitWebserver then {
                    if ActualTemperatureGA > KomfortTemperatur + 1.0f16 then ButtonID_SymbolAuszeichnung = BRIGHTRED endif;
                    if ActualTemperatureGA < KomfortTemperatur - 1.0f16 then ButtonID_SymbolAuszeichnung = ACTIVE endif;
                    if (ActualTemperatureGA >= KomfortTemperatur - 1.0f16) and (ActualTemperatureGA <= KomfortTemperatur + 1.0f16) then ButtonID_SymbolAuszeichnung = INACTIVE endif;
                    pdisplay(ButtonID,$Soll: $+convert(KomfortTemperatur,$$)+$°C, Ist: $+convert(ActualTemperatureGA,$$)+$°C$,TEMPERATURE,ButtonID_SymbolAuszeichnung,GREY, PageID)
                } endif 
                [COLOR="Red"][B]if after(systemstart(),15000u64) or cycle(60,0) or change(KomfortTemperatur) then write(ActualTemperatureGA, KomfortTemperatur) endif [/B][/COLOR]
                Klar, aber das findet man nicht so leicht
                Solange dich die dämliche Fragerei nicht stört oder setzt du mich dann auf "IGNORE"
                EPIX
                ...und möge der Saft mit euch sein...
                Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                Kommentar


                  #9
                  Moin Erich,

                  klar kannst Du das direkt im Makro ergänzen. Allerdings macht es durchaus Sinn verschiedene Bereiche voneinander zu trennen.

                  Da ist mir der Sandman60 ein Vorbild der z.B. Visu und Logik streng voneinander getrennt hat und nur über Gruppenadressen kommuniziert.

                  Ich habe also zum Einen die Logikbereiche, zum Anderen den EibPC als Speicher für nicht vorhandene Busgeräte und zuletzt die Visu über die ich sowohl den einen als auch den anderen Bereich ansteuere.

                  Wenn ich jetzt alles in eine Riesen Webschnittstellenfunktion reinpacke, würde ich diese Webschnittstell überfrachten und der Code wäre nicht lesbarer dadurch.

                  Zitat von EPIX Beitrag anzeigen
                  Solange dich die dämliche Fragerei nicht stört oder setzt du mich dann auf "IGNORE"
                  Nee, natürlich nicht ...

                  Gruß,
                  Bernd

                  Kommentar


                    #10
                    OK, klingt einleuchtend....

                    irgendwie schwebt mir (in meiner Unwissenheit) so ein Codemodul vor, das ich mit PagedID, ButtonID, GAs füttere und mir einen standardisierten Button für zB einen RTR generiert - komplett, incl Definition, Ansteuerung und Buskommunikation....

                    Aber das wird wohl so nix...

                    Darum:
                    EPIX
                    ...und möge der Saft mit euch sein...
                    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                    Kommentar


                      #11
                      Leider

                      Hoi

                      Das ist auch einer meiner Hauprkritikpunkte am EibPC, die Programierung wird sehr komplex. Einfach ist anders. KISS wird nicht genügend berüksichtigt.
                      Schade...
                      Grüsse Bodo
                      Fragen gehören ins Forum, und nicht in mein Postfach;
                      EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                      Kommentar


                        #12
                        Zitat von Bodo Beitrag anzeigen
                        Einfach ist anders. KISS wird nicht genügend berüksichtigt.
                        auch Schade... wobei etwas konstruktiver an dieser Stelle sicher mehr bringen würde.
                        Der Visuassistent ist hier der Enertex-Ansatz: Beim letzten Einsteigerseminar haben immerhin 3 User erzhählt, dass sie die Visu mit dem Assistenten erstellt haben, und zwar ohne große Vorkenntnisse (sonst wäre das Einsteigerseminar sicher wenig sinnvoll). Natürlich ist man da begrenzt auf das, was der Assistent möglich macht aber das, was damit geht, ist sicher unbestritten KISS.
                        Konkret hier: Das KISS des Visuassistenten gibt einen Raumkontroller ohne Temperaturen an; für die Darstellung der Temperarturen klickt man einfach ein "Ich will einen Chartverlauf". Klar, manchem reicht das nicht oder der will anders sein, als der Standard, dann muss er halt tiefer einsteigen. Immerhin ist die Programmierung flexibel genug, um das zu leisten.
                        So, das musste sein .
                        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                        Enertex Produkte kaufen

                        Kommentar


                          #13
                          sorry, aber....
                          für die Darstellung der Temperarturen klickt man einfach ein "Ich will einen Chartverlauf"

                          WO KLICKT MAN? *netversteh*

                          und da es "mein" Thread ist:
                          natürlich wäre es hilfreich wenn die schon öfter genannten Erleichterungen beim Programmieren vorhanden wären, dazu würde eine Ordnerstruktur genauso zählen wie die Möglichkeit mehrfache [Webpage] verwendung zu können, da man dann die zusammengehördenen Teile in #include Dateien auslagern könnte....

                          ich hoffe das ist jetzt konstruktiv....
                          EPIX
                          ...und möge der Saft mit euch sein...
                          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                          Kommentar


                            #14
                            Da muß ich doch glatt mal eine Lanze für Enertex brechen...

                            Aus meiner Sicht ist die Balance zwischen KISS und Flexibilität/Individualität insbesondere durch die Verwendbarkeit von Makros sehr gut gelungen.

                            Das hier angesprochene "Problem" würde m.E. nämlich dazu führen, dass die individuellen Möglichkeiten stark eingeschränkt wären oder aber der Code zu komplex wäre...

                            Für mich war seinerzeit (noch ohne Visu-Assistent) genau dieser Punkt das Kaufargument. Man kommt mit wenigen Kenntnissen an eine Grundlogik/-visu, kann aber dann unter Aufwendung von Gehirnschmalz und Zeit individualisieren. Vergleiche ich das insb. bzgl. Visus mit der Konkurrenz sehe ich entweder KISS ohne bzw. mit stark eingeschränkter Flexibilität oder aber einen hohen initialen Einstiegsaufwand (klar, durch Einwurf "kleiner" Münzen bei einem windigen Integrator kann man das überwinden).

                            Die angesprochene Strukturierung des Codes muß IMHO jeder selbst für sich entscheiden...

                            Bei mir hat sich im Kopf folgende "Leitlinie" eingebrannt:
                            1. Verwendung von Makros soweit als möglich zur Vermeidung von direktem Code in der EIBPC-Section (Modularisierung)
                            2. Die Makros sind aufgeteilt in Logik- oder Displaycode. Mischungen sind zu vermeiden
                            3. Das Layout der Visualisierung wird in der Webserver-Section definiert ohne Funktion, diese wird durch Makros realisiert (Steuerung der VISU).
                            4. Die Übergaben von Logikinformationen an die Visumakros erfolgt durch GA's oder durch Variablen, wobei ich versuche alles über GA's zu übermitteln zwecks besserer Tracebarkeit in der ETS und ggf. zur Verwendung in anderen Visus.
                            5. Im Handbuch und in der Makrobib. sind jede Menge Beispiele und Hilfsmittel und diese entwickeln sich stetig weiter, daher öfter mal nachlesen und verstehen als autodidaktisch zu arbeiten.

                            Es gibt m.E. schon jede Menge Makros mit enormen Zusatzfunktionen, allerdings scheint sich die Makroentwicklung auf ein paar wenige Köpfe in der Community zu verteilen und es viele Nehmer und wenig Geber gibt. Insbesondere fällt mir in letzter Zeit die steigende Anzahl an fordernden Nehmern auf die es am Ende dann noch nicht mal für nötig erachten ein Danke zu äußern sondern stattdessen auch noch a la Schlaubischlumpf rummeckern und Verbesserungen einfordern (ich meine hier nicht Bodo oder EPIX).

                            Cheers,
                            Oliver

                            P.S.: Ich stehe nicht bei Enertex auf der Payroll und gebe nur meine Meinung und Sicht wieder

                            Kommentar


                              #15
                              Zitat von EPIX Beitrag anzeigen
                              sorry, aber....
                              WO KLICKT MAN? *netversteh*
                              Siehe Bild anbei
                              genauso zählen wie die Möglichkeit mehrfache [Webpage] verwendung zu können, da man dann die zusammengehördenen Teile in #include Dateien auslagern könnte....
                              Das könnte ich schon auf die Wunschliste setzen, wenn das hier gewünscht wird - mit ggf. Seiteneffekten (Fehlersuche etc.)
                              Angehängte Dateien
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X