Ankündigung

Einklappen
Keine Ankündigung bisher.

Heizung - eigene VISU-Seite

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

    Heizung - eigene VISU-Seite

    Ich habe eine eigene VISU-Seite erstellt, um die Temperaturen im Haus etwas besser überwachen zu können.
    Die Ausgabe der GA vom MDT-Heizungsaktor war mir zu wenig.
    Verbesserungsvorschläge sind gerne willkommen.

    Ausgabebild.jpg​Hierzu ist folgendes notwendig.
    Anlegen der VISU-Seite mit folgenden Elementen:
    Button_01.jpg
    button02.jpg

    slider01.jpg
    Zeitdiagramm 01.jpgZeitdiagramm 02.jpg

    Dann im Experten noch die Makros bei Eigenen Makros einbauen:
    Code:
    :begin ProzentVonU08(InZahl)
    :info $Liefert einen ganzzahligen Wert in Prozent für den gegebenen Wert. Aus 128u08 wird z. B. 50% \\
        :$Ein numerischer Wert (u08)$
    :shortinfo $Prozent-Darstellung für Ganzzahl$
    :return convert(convert(InZahl,0f32)/2.55f32,0s16)
    :end
    
    :begin Rundenin05Dezimalschritte(Eingangswert)
    :info $Eingangswert vom Typ f16 wird auf 0,5 Schritte gerundet$
    :shortinfo $Rundet f16 Wert auf 0,5$
    :return ((Eingangswert*2f16+0.5f16)/2f16)
    :end
    
    
    :begin HVACMODUSAUSU08(HVACMODUSu08)
    :info $wandelt HVAC MODUSZAHL in Klartext um$
    :shortinfo $Umwandlung HVAC Modus in Klartext$
    :var returnVal@
        returnVal@ = $undefined$
        if HVACMODUSu08 == 1u08 then returnVal@ = $KOMFORT$ endif;
        if HVACMODUSu08 == 2u08 then returnVal@ = $STANDBY$ endif;    
        if HVACMODUSu08 == 15u08 then returnVal@ = $ECONOMY$ endif;    
        if HVACMODUSu08 == 146u08 then returnVal@ = $BUILDING PROTECTION$ endif;        
    :return returnVal@
    :end
    
    
    :begin STRINGINFOTEXT(TEMPERATUR, AKTUELLERSOLLWERT, STELLWERT)
    :var returnTXT@
    :info $setzt die diversen Werte dann zu einem String für die Icondarstellung zusammen$
        returnTXT@ = stringformat(TEMPERATUR,4,1,0,1) + $°C/$ \\
                + stringformat(AKTUELLERSOLLWERT,4,1,0,1) +  $°C | $ \\
                + convert(STELLWERT,$$) +  $%<BR>$ \\
                + CLOCK_STRING
    :return returnTXT@
    :end
    
    :begin HVACMODUS2ICON(HVACMODUSu08)
    :info $sucht den passenden Icon für den HVACMODUS raus$
    :var retICON@
        retICON@ = 0u08
        if HVACMODUSu08 == 1u08 then retICON@ = 20u08 endif;
        if HVACMODUSu08 == 2u08 then retICON@ = 21u08 endif;
        if HVACMODUSu08 == 3u08 then retICON@ = 15u08 endif;
        if HVACMODUSu08 == 4u08 then retICON@ = 14u08 endif;
    :return retICON@
    :end
    
    
    :begin HVACMODUS2ICONCOL(HVACMODUSu08)
    :info $sucht den passenden Icon für den HVACMODUS raus$
    :var retICON1@
        retICON1@ = 0u08
        if HVACMODUSu08 == 1u08 then retICON1@ = DARKRED endif;
        if HVACMODUSu08 == 2u08 then retICON1@ = ACTIVE endif;
        if HVACMODUSu08 == 3u08 then retICON1@ = DISPLAY endif;
        if HVACMODUSu08 == 4u08 then retICON1@ = INACTIVE endif;
    :return retICON1@
    :end
    ​
    und das Programm "Heizung Küche" erstellen:

    Code:
    EG_KUECHE_HZ_ICON              = 0u08
    EG_KUECHE_HZ_ICONCOL           = 0u08
    EG_KUECHE_HZ_INFOTXT           = $$
    EG_KUECHE_HZ_INFOTXTCOL        = 0u08
    EG_KUECHE_RESET_HVAC           = 0u08
    
    //Definitionen
    EG_KUECHE_RESETTMP             = 22f16
    EG_KUECHE_RESET_VORWAHL        = KOMFORT
    EG_KUECHE_TEMPERATURMESSWERT   = "EG Küche Temperaturmesswert-4/2/2"
    EG_KUECHE_AKTUELLER_SOLLWERT   = "EG Küche Sollwert Komfort-4/2/20"
    EG_KUECHE_HVAC_MODUS           = "EG Küche HVAC Modus-4/2/44"
    EG_KUECHE_HVAC_VORWAHL         = "EG Küche HVAC Vorwahl-4/2/38"
    EG_KUECHE_HVAC_VORWAHL_GA      = getaddress("EG Küche HVAC Vorwahl-4/2/38")
    EG_KUECHE_SOLLWERT_KOMFORT     = "EG Küche Sollwert Komfort-4/2/20"
    EG_KUECHE_SOLLWERT_KOMFORT_GA  = getaddress("EG Küche Sollwert Komfort-4/2/20")
    EG_KUECHE_STELLWERT_U          = ProzentVonU08("EG Küche Status Stellwert-4/2/8")
    EG_KUECHE_TMP_RND              = Rundenin05Dezimalschritte(EG_KUECHE_TEMPERATURMESSWERT)
    EG_KUECHE_RESET_VORWAHLTXT     = HVACMODUSAUSU08(EG_KUECHE_RESET_VORWAHL)
    EG_KUECHE_RESETTXT             = $Soll Komfort:$ + convert(EG_KUECHE_RESETTMP,$$) + $<br>($ + EG_KUECHE_RESET_VORWAHLTXT + $)$
    
    if SHUTDOWN or change(EG_KUECHE_SOLLWERT_KOMFORT) or change(EG_KUECHE_HVAC_VORWAHL) then {
            writeflashvar(EG_KUECHE_SOLLWERT_KOMFORT);
            writeflashvar(EG_KUECHE_HVAC_VORWAHL);
    }endif;
    
    if (systemstart()) then {
        readflashvar(EG_KUECHE_SOLLWERT_KOMFORT);
        write(address(EG_KUECHE_SOLLWERT_KOMFORT_GA), EG_KUECHE_SOLLWERT_KOMFORT);
        readflashvar(EG_KUECHE_HVAC_VORWAHL);
        write(address(EG_KUECHE_HVAC_VORWAHL_GA),EG_KUECHE_HVAC_VORWAHL);
        pdisplay(EG_KUECHE_RESET,EG_KUECHE_RESETTXT,RESET,GREEN,GREEN,EG_KUECHE_RESET_P);
    } endif;
    
    //RESET
    if pbutton(EG_KUECHE_RESET,EG_KUECHE_RESET_P) == INACTIVE then {
        if EG_KUECHE_RESET_VORWAHL == BUILDINGPROTECTION then EG_KUECHE_RESET_HVAC = 4u08 else EG_KUECHE_RESET_HVAC = EG_KUECHE_RESET_VORWAHL endif;
        write(address(EG_KUECHE_HVAC_VORWAHL_GA),EG_KUECHE_RESET_HVAC);
        write(address(EG_KUECHE_SOLLWERT_KOMFORT_GA),EG_KUECHE_RESETTMP);
    } endif;
    
    if  change(EG_KUECHE_STELLWERT_U) or  \\
        change(EG_KUECHE_TEMPERATURMESSWERT) or \\
        change(EG_KUECHE_AKTUELLER_SOLLWERT) \\
        then { \\
            EG_KUECHE_HZ_INFOTXT   = STRINGINFOTEXT(EG_KUECHE_TMP_RND,EG_KUECHE_AKTUELLER_SOLLWERT,EG_KUECHE_STELLWERT_U);
            EG_KUECHE_HZ_ICON      = HVACMODUS2ICON(EG_KUECHE_HVAC_MODUS);
            EG_KUECHE_HZ_ICONCOL   = HVACMODUS2ICONCOL(EG_KUECHE_HVAC_MODUS);
            EG_KUECHE_HZ_INFOTXTCOL= GREY;
            pdisplay(EG_KUECHE_HZ_INFO_BUTTON,EG_KUECHE_HZ_INFOTXT , EG_KUECHE_HZ_ICON,EG_KUECHE_HZ_ICONCOL,EG_KUECHE_HZ_INFOTXTCOL,EG_KUECHE_HZ_INFO_BUTTON_P);
    }endif;
    
    if pbutton(EG_KUECHE_HZ_INFO_BUTTON,EG_KUECHE_HZ_INFO_BUTTON_P) == INACTIVE then {
        if EG_KUECHE_HVAC_MODUS == KOMFORT then write(address(EG_KUECHE_HVAC_VORWAHL_GA), STANDBY) endif;
        if EG_KUECHE_HVAC_MODUS == STANDBY then write(address(EG_KUECHE_HVAC_VORWAHL_GA), NIGHTMODE) endif;
        if EG_KUECHE_HVAC_MODUS == NIGHTMODE then write(address(EG_KUECHE_HVAC_VORWAHL_GA), 4u08) endif;
        if EG_KUECHE_HVAC_MODUS == 4u08 then write(address(EG_KUECHE_HVAC_VORWAHL_GA), KOMFORT) endif;
    } endif;
    
    ​
    Danach müssen nur noch die Gruppenadressen
    EG_KUECHE_TEMPERATURMESSWERT = "EG Küche Temperaturmesswert-4/2/2"
    EG_KUECHE_AKTUELLER_SOLLWERT = "EG Küche Sollwert Komfort-4/2/20"
    EG_KUECHE_HVAC_MODUS = "EG Küche HVAC Modus-4/2/44"
    EG_KUECHE_HVAC_VORWAHL = "EG Küche HVAC Vorwahl-4/2/38"
    EG_KUECHE_HVAC_VORWAHL_GA = getaddress("EG Küche HVAC Vorwahl-4/2/38")
    EG_KUECHE_SOLLWERT_KOMFORT = "EG Küche Sollwert Komfort-4/2/20"
    EG_KUECHE_SOLLWERT_KOMFORT_GA = getaddress("EG Küche Sollwert Komfort-4/2/20")
    EG_KUECHE_STELLWERT_U = ProzentVonU08("EG Küche Status Stellwert-4/2/8")​

    Ensprechend "verdrahtet" werden.

    Beste Grüße
    Peter
    never fummel a running system...

    #2
    TRex, kommt man bei Deiner Rechnung oben bei 100% (255) Stellgröße nicht auf 100,25%?

    convert(convert(InZahl,0f32)/2.55f32,0s16) --> bei 255 = 100
    Eingangswert*2f16+0.5f16)/2f16) --> 200,5/2 = 100,25%​

    Kommentar

    Lädt...
    X