Ankündigung

Einklappen
Keine Ankündigung bisher.

Temperatur-Sollwert verändert bei Berker RTR

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

    Temperatur-Sollwert verändert bei Berker RTR

    Hallo zusammen,
    seit einigen Wochen ist smartvisu meine Freizeitbeschäftigung Nr.1. Einfach eine super Visualisierungslösung. Danke an alle Unterstützer und Treiber!
    Seit einiger Zeit hänge ich jedoch an der Implementierung meines Berker RTRs.
    Will man am RTR von extern die Solltemperatur verstellen, funktioniert das bei Berker ein wenig anders (Basis-Sollwertverschiebung). Es gibt hier eine Basistemperatur und einen Temperatur-Offest. Um die Soltemperatur zu verstellen muss man diesen Temperatur-Offest auslesen um die gewünscht Gradzahl erhöhen und wieder zurück senden.

    Mit meinen sehr mageren HMTL- und JavaScript-Kenntnissen haben ich mir das mal wie folgt aus einigen Beispielen hier zusammengebastelt:
    Code:
    /
    **
    * Temperatur Offset
    *
    * @param unique id for this widget
    * @param a gad/item for the set temperature
    * @param a gad/item for the Temperatur Offset (get)
    * @param a gad/item for the Temperatur Offset (set)
    */
    {% macro myTempOffset(id, gad_set, gad_getoffset, gad_setoffset) %}
        {% import "basic.html" as basic %}
    	{% set uid = uid(page, id) %}
    	
        <div id="{{ uid }}" class="set">
                {{ basic.button(id~'minus', '', '', 'minus', '', 'micro') }}
                <div class="temp">{{ basic.float(id~'getoffset', gad_getoffset, '°C' ) }}</div>
                <div class="temp">{{ basic.float(id~'gad_set', gad_set, '°C' ) }}</div>
                {{ basic.button(id~'plus', '', '', 'plus', '', 'micro') }}
    	
            /** Events */
            <script type="text/javascript">
                // plus / minus
                $("#{{ uid~'minus' }}").unbind('click').bind('click', function(){
                var temp = parseInt($("#{{ uid~'getoffset' }}").html()) - 1;
                io.write("{{ gad_setoffset }}", temp);
                });
                $("#{{ uid~'plus' }}").unbind('click').bind('click', function(){
                var temp = parseInt($("#{{ uid~'getoffset' }}").html()) + 1;
                io.write("{{ gad_setoffset }}", temp);
                });
            </script>
    
    	</div>
    
    {% endmacro %}
    Wie das (für diesen Frage reduzierte) Widget aussieht siehe Anhang.
    Das Widget funktioniert auch mittlerweile genau so, wie ich mir das vorstelle.
    Nun hänge ich noch an einem kleinen Schönheitsfehler. Eigentlich will ich den Offest gar nicht anzeigen, sondern nur den Sollwert. Wenn ich nun aber die Zeile
    Code:
    <div class="temp">{{ basic.float(id~'getoffset', gad_getoffset, '°C' ) }}</div>
    rausnehmen, funktioniert das Skrip nicht mehr, weil hier wohl auf die ID verwiesen wird.
    Nun die eigentlich einfache Frage: Wie kann ich im Skript eine Variable einlesen, die ich im Widget gar nicht anzeige?

    Vielen Dank für eure Unterstützung!
    Angehängte Dateien

    #2
    Ich habe nun eine Lösung (oder besser gesagt, einen Workaround) gefunden, wie es gehen kann. Ich verwende das Attribut " style=display:none "
    Code:
    <div class="temp" style="display:none" >{{ basic.float(id~'getoffset', gad_getoffset, '°C' ) }}</div>
    Ich bin etwas verunsichert, da sich keiner auf meine Frage gemeldet hat.
    Ist das Thema so speziell, dass hier keiner was zu sagen kann, oder habe ich eine Netiquette verletzt?

    Gruß
    Christian

    Kommentar


      #3
      Ich bin etwas verunsichert, da sich keiner auf meine Frage gemeldet hat.
      Ist das Thema so speziell, dass hier keiner was zu sagen kann, oder habe ich eine Netiquette verletzt?
      Ja manchmal ist das so das keiner Antwortet. Aber ch denke das liegt nicht an deiner Frage sondern daran das es viele Suchende und nur wenig Wissende im Forum gibt. Und darum wird es auch manchmal mit einer Antwort dauern.
      Ich hätte Dir bei dieser Frage keine hilfreiche Antwort geben können.
      Finde es aber gut das Du deine Lösung hier postest.
      Gruß

      Guido

      Kommentar


        #4
        Zitat von ChristianM Beitrag anzeigen
        Nun die eigentlich einfache Frage: Wie kann ich im Skript eine Variable einlesen, die ich im Widget gar nicht anzeige?
        Gar nicht, du musst die Variable schon an das Javascript übergeben! Das geht aber super einfach, indem du data-item erweiterst (mit Komma trennen)

        Die dort definierten kommen auch im script an.

        Gruss
        Join smartVISU on facebook. Web: smartvisu.de.
        Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

        Kommentar


          #5
          @Höhlenbär: Danke für die Rückmeldungen. Da bin ich ja erleichtert

          @Apollo: Danke für die Antwort, kann ich leider nicht ganz zuordnen. Gibt es irgendwo ein Beispiel, das zum Verständnis beiträgt? Googlen hierzu ergab nichts brauchbares.

          Kommentar


            #6
            Hallo, gibt es hier was neues?
            Ich stehe auch mit den berker b.iq rtr vor dem Problem
            Gruß FedEx

            Kommentar


              #7
              Ich denke er meint das zB so...


              Code:
              /
              **
              * Temperatur Offset
              *
              * @param unique id for this widget
              * @param a gad/item for the set temperature
              * @param a gad/item for the Temperatur Offset (get)
              * @param a gad/item for the Temperatur Offset (set)
              */
              {% macro myTempOffset(id, gad_set, gad_getoffset, gad_setoffset) %}
              {% import "basic.html" as basic %}
              {% set uid = uid(page, id) %}
              
              <div id="{{ uid }}" class="set">
              {{ basic.button(id~'minus', '', '', 'minus', '', 'micro') }}
              <div class="temp">{{ basic.float(id~'gad_set', gad_set, '°C' ) }}</div>
              <p id="{{ uid~'getoffset' }}" style='display: none;' data-item="{{ gad_getoffset }}"></p>
              {{ basic.button(id~'plus', '', '', 'plus', '', 'micro') }}
              
              /** Events */
              <script type="text/javascript">
              // plus / minus
              $("#{{ uid~'minus' }}").unbind('click').bind('click', function(){
              var temp = parseInt($("#{{ uid~'getoffset' }}").html()) - 1;
              io.write("{{ gad_setoffset }}", temp);
              });
              $("#{{ uid~'plus' }}").unbind('click').bind('click', function(){
              var temp = parseInt($("#{{ uid~'getoffset' }}").html()) + 1;
              io.write("{{ gad_setoffset }}", temp);
              });
              </script>
              
              </div>
              
              {% endmacro %}
              Ungetestet

              Kommentar


                #8
                Zitat von ChristianM Beitrag anzeigen
                * @param unique id for this widget * @param a gad/item for the set temperature * @param a gad/item for the Temperatur Offset (get) * @param a gad/item for the Temperatur Offset (set
                Kannst du mir mal kurzen zeigen wie du dein Widget aufrufst bzw. was übergeben wird? Ich stehe vor dem gleichen Prob mit dem RTR. Verstehe nicht ganz welche Werte du mit "getOffset" und "setOffset" meinst.

                Danke!

                Kommentar

                Lädt...
                X