Ankündigung

Einklappen
Keine Ankündigung bisher.

RTR Makro für Z38, warum verzögerter Textupdate

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

    RTR Makro für Z38, warum verzögerter Textupdate

    Hallo beinander,

    ich habe mir mal ein RTR Makro aus einem anderen Thread geborgt und für mein Z38 geändert. Soweit funktioniert das prima.

    Aber warum bekommt das Icon einen sofortigen update, aber der Sollwert nicht. Der Sollwert wird erst nach ein paar Sekunden beim normalen Refresh ausgeführt.

    1. Warum geht das beim Icon? Weil ich eine Veränderung erzwinge indem ich Icon_^ID_^PageID=ABSENT setze und danach nochmal einen update drauf mache?

    2. Kann ich den Sollwert-Update anders erzwingen?


    Code:
    :begin RTR_Z38(PageID,ID,Sollwert,Istwert,Standby,Komfortbetrieb,Nachtbetrieb,Aktiv)
    :info $Einen Raumtemperaturregler im Webinterface mit einem pshifter ansteuern. Der Raumkontroller wird über die 1-Bit Adresse Komfortbetrieb / Nachtbetrieb gesteuert (Umschaltung in Standby,\\
    Komfort, Nachtmodus).Der pshifter sollte folgende Form haben(§ mit Dollarzeichen ersetzen): pshifter(ID)[ABSENT,PRESENT,NIGHT,ABSENT]§Raumkontroller§. $\\
        $Page ID des pshifters$ \\
        $ID des pshifters$ \\
        $GA Sollwert$ \\
        $GA Istwert$ \\
        $GA Standby$ \\
        $GA Komfortbetrieb$ \\
        $GA Nachtbetrieb$ \\
        $GA Aktiv$
    :shortinfo $Raumtemperaturregler_Z38_mit_Statusanzeige$
    //System
     
    if after(systemstart(),5000u64) then {
     read(Sollwert);
     read(Istwert);
     read(Aktiv)
    } endif
    Icon_^ID_^PageID=ABSENT
    if pbutton(ID,PageID)==1 then {
     write (Standby, ON);
     Icon_^ID_^PageID=ABSENT;      
    }endif
    if pbutton(ID,PageID)==2 then {
     write (Komfortbetrieb, ON);
     Icon_^ID_^PageID=PRESENT
    }endif
    if pbutton(ID,PageID)==3 then {
     write (Nachtbetrieb, ON);
     Icon_^ID_^PageID=NIGHT        
    }endif
    if change(Icon_^ID_^PageID) then read(Sollwert) endif
    text_rtr_^ID_^PageID = $ Soll:$+convert(Sollwert,$$)+$°C Ist:$+convert(Istwert,$$)+$°C$
    if (change(Icon_^ID_^PageID) or change(Sollwert) or change(Istwert) or change(Aktiv)) and Aktiv==ON then {
      pdisplay(ID,text_rtr_^ID_^PageID,Icon_^ID_^PageID,BRIGHTRED,GREEN,PageID)
    } endif
    if (change(Icon_^ID_^PageID) or change(Sollwert) or change(Istwert) or change(Aktiv)) and Aktiv==OFF then {
      pdisplay(ID,text_rtr_^ID_^PageID,Icon_^ID_^PageID,ACTIVE,GREEN,PageID)
    } endif 
    :end
    Merci,

    Harry

    #2
    Upsieee,

    da war noch'n kleiner Fehler. Wer am Z38 die Modi umgestellt hat, bekam in der Visu keinen Update darüber.

    Nach wie vor, aber der verzögerte Textupdate.

    So geht jetzt wenigstens der update vom Z38 in die Visu:
    Code:
    :begin RTR_Z38(PageID,ID,Sollwert,Istwert,Standby,Komfortbetrieb,Nachtbetrieb,Aktiv)
    :info $Einen Raumtemperaturregler im Webinterface mit einem pshifter ansteuern. Der Raumkontroller wird über die 1-Bit Adresse Komfortbetrieb / Nachtbetrieb gesteuert (Umschaltung in Standby,\\
    Komfort, Nachtmodus).Der pshifter sollte folgende Form haben(§ mit Dollarzeichen ersetzen): pshifter(ID)[ABSENT,PRESENT,NIGHT,ABSENT]§Raumkontroller§. $\\
        $Page ID des pshifters$ \\
        $ID des pshifters$ \\
        $GA Sollwert$ \\
        $GA Istwert$ \\
        $GA Standby$ \\
        $GA Komfortbetrieb$ \\
        $GA Nachtbetrieb$ \\
        $GA Aktiv$
    :shortinfo $Raumtemperaturregler_Z38_mit_Statusanzeige$
    //System
    
    if after(systemstart(),5000u64) then {
     read(Sollwert);
     read(Istwert);
     read(Aktiv)
    } endif
    Icon_^ID_^PageID=ABSENT
    if event(Standby)==ON then Icon_^ID_^PageID=ABSENT endif  
    if event(Komfortbetrieb)==ON then Icon_^ID_^PageID=PRESENT endif 
    if event(Nachtbetrieb)==ON then Icon_^ID_^PageID=NIGHT endif 
    if pbutton(ID,PageID)==1 then {
     write (Standby, ON);
     Icon_^ID_^PageID=ABSENT;      
    }endif
    if pbutton(ID,PageID)==2 then {
     write (Komfortbetrieb, ON);
     Icon_^ID_^PageID=PRESENT
    }endif
    if pbutton(ID,PageID)==3 then {
     write (Nachtbetrieb, ON);
     Icon_^ID_^PageID=NIGHT        
    }endif
    if change(Icon_^ID_^PageID) then read(Sollwert) endif
    text_rtr_^ID_^PageID = $ Soll:$+convert(Sollwert,$$)+$°C Ist:$+convert(Istwert,$$)+$°C$
    if (change(Icon_^ID_^PageID) or change(Sollwert) or change(Istwert) or change(Aktiv)) and Aktiv==ON then {
      pdisplay(ID,text_rtr_^ID_^PageID,Icon_^ID_^PageID,BRIGHTRED,GREEN,PageID)
    } endif
    if (change(Icon_^ID_^PageID) or change(Sollwert) or change(Istwert) or change(Aktiv)) and Aktiv==OFF then {
      pdisplay(ID,text_rtr_^ID_^PageID,Icon_^ID_^PageID,ACTIVE,GREEN,PageID)
    } endif 
    :end
    Angehängte Dateien

    Kommentar


      #3
      Zitat von FHarry Beitrag anzeigen
      text_rtr_^ID_^PageID = $ Soll:$+convert(Sollwert,$$)+$°C Ist:$+convert(Istwert,$$)+$°C$
      if (change(Icon_^ID_^PageID) or change(Sollwert) or change(Istwert) or change(Aktiv)) and Aktiv==ON then {
      ...
      } endif
      Du fragst nach Änderung von Sollwert, willst aber die text_rtr_^ID_^PageID anzeigen, was ja erst nach dem Eintreffen des Telegramms auftritt. Also in die if-Abfrage lieber change(text_rtr_^ID_^PageID) anstelle change(Sollwert) einbauen
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar

      Lädt...
      X