Ankündigung

Einklappen
Keine Ankündigung bisher.

Button dynamisch Wert ändern

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

    [Codebeispiel] Button dynamisch Wert ändern

    Guten Morgen,
    ich komme nicht drauf und sehe vermutlich den Wald vor Bäumen nicht.
    Auch in der Suche finde ich nichts, aus dem ich schlau geworden bin.

    Aufgabenstellung:
    Ich will zum sauberen austarieren vom Aussenlicht-Einschaltbefehl an die Helligkeitsschwellen dauerhaft einspeichern, und zwar durch Druck auf einen Button in der Visu.

    Hierzu habe ich in der Visu alle 5 gemessenen Helligkeiten genommen


    Code:
    uHellOst_Schaltschwelle = 5000u16
    uHellWest_Dach_Schaltschwelle = 5000u16
    uHellWest_Garage_Schaltschwelle = 5000u16
    uHellSued_Schaltschwelle = 5000u16
    uHellSky_Schaltschwelle = 5000u16
    
    OK_BUTTON_U_HELL_WEST_Dach = 0b01
    OK_BUTTON_U_HELL_WEST_Garage=0b01
    OK_BUTTON_U_HELL_OST = 0b01
    OK_BUTTON_U_HELL_Sued = 0b01
    OK_BUTTON_U_HELL_Sky = 0b01
    
    if (sun() and (hour() > 6u08))  then {
        b_night = 0b01;
    }endif;
    
    if after(!presun(0,0),cdelay) or (hour() > 21u08)  then {
        b_night = 1b01;
    }endif;
    
    
    if b_night == 1b01 then write("NACHT-0/0/8",1b01) endif;
    if b_night == 0b01 then write("NACHT-0/0/8",0b01) endif;
    
    if systemstart() then {
        readflashvar(uHellWest_Dach_Schaltschwelle);
        readflashvar(uHellWest_Garage_Schaltschwelle);  
        readflashvar(uHellOst_Schaltschwelle);
        readflashvar(uHellSued_Schaltschwelle);
        readflashvar(uHellSky_Schaltschwelle);
       } endif;
    
    
    
    if OK_BUTTON_U_HELL_WEST_Garage ==1b01 then {
        uHellWest_Garage_Schaltschwelle = "Helligkeitswert Garage West-0/1/2";
        writeflashvar(uHellWest_Garage_Schaltschwelle);
        OK_BUTTON_U_HELL_WEST_Garage = 0b01;
    } endif;
    
    if OK_BUTTON_U_HELL_WEST_Dach ==1b01 then {
        uHellWest_Dach_Schaltschwelle = "Hell West-0/1/34";
        writeflashvar(uHellWest_Dach_Schaltschwelle);
        OK_BUTTON_U_HELL_WEST_Dach = 0b01;
    } endif;
    
    if OK_BUTTON_U_HELL_OST == 1b01 then {
        uHellOst_Schaltschwelle = "Hell Ost-0/1/31";
        writeflashvar(uHellOst_Schaltschwelle);
        OK_BUTTON_U_HELL_OST = 0b01;
    } endif;
    
    if OK_BUTTON_U_HELL_Sued ==1b01 then {
        uHellSued_Schaltschwelle = "Hell Süd-0/1/33";
        writeflashvar(uHellSued_Schaltschwelle);
        OK_BUTTON_U_HELL_Sued = 0b01;
    } endif;
    
    if OK_BUTTON_U_HELL_Sky ==1b01 then {
        uHellSky_Schaltschwelle = "Hell Sky-0/1/32";
        writeflashvar(uHellSky_Schaltschwelle);
        OK_BUTTON_U_HELL_Sky = 0b01;
    } endif;​

    Das funktioniert soweit auch.
    Was mir nicht gefällt ist das "reset " des OK_BUTTON durch den Code und ich habe gelesen, ich kann den Button auch direkt irgendwie abfragen.
    Außerdem würde ich gerne dann im Button anstelle des 0x01 den Helligkeitswert der Schaltschwelle darstellen, um ein Gefühl dafür zu bekommen.

    Meine Fragen dazu:
    1.) wie kann ich im Button die ID erkennen?
    2.) Wie ändere ich die Anzeige der 2. Zeile?
    3.) wie kann ich denn den Buttondruck abfragen, dass bei gedrücktem Button eine 1 und beim loslassen eine 0 ausgewertet wird? Muss ich denn den Button dazu manipulieren?

    Soweit ich das verstanden habe muss ich irgendwie die Seite ansprechen und dann den Button.

    Hat da einer ein Beispiel oder einen Link zu einer Seite, die mir bislang verborgen geblieben ist?

    Vielen Dank für Help.
    Peter
    Zuletzt geändert von TRex; 07.10.2023, 11:31.
    never fummel a running system...

    #2
    Ich rate mal, wie du die Buttons angelegt hast. In der Visu als Schalten - Ein/Aus und dann Schalten und Status mit den angelegten Variablen OK_BUTTON_U_HELL_WEST_Dach, OK_BUTTON... verknüpft?

    Zitat von TRex Beitrag anzeigen
    1.) wie kann ich im Button die ID erkennen?
    Dann ändere Buttons und wähle "Mit Experte verknüpfen". Die ID für die pbutton/pdisplay-Funktionen gibst du beim Button in der Visu an. Außerdem legt die Visu noch jew. die Variable OK_BUTTON_U_HELL_WEST_Dach_P an, die die Seiten-ID enthält.

    Zitat von TRex Beitrag anzeigen
    2.) Wie ändere ich die Anzeige der 2. Zeile?
    Mit
    Code:
    if pbutton​(OK_BUTTON_U_WEST_Dach, OK_BUTTON_U_WEST_Dach_P) then {...} endif
    reagierst du auf das Drücken der Buttons.

    Mit
    Code:
    pdisplay(OK_BUTTON_U_WEST_Dach, $Beschriftung$, WEATHER, INACTIVE, GREY, OK_BUTTON_U_WEST_Dach_P)
    in obigem If änderst du bei Knopfdruck dann den Zustand des Buttons.

    Zitat von TRex Beitrag anzeigen
    dass bei gedrücktem Button eine 1 und beim loslassen eine 0 ausgewertet wird?
    Loslassen gibt es nicht. Ein Drücken erzeugt immer nur einen Auslöser 0-1-0-Übergang.


    Kommentar


      #3
      ich hole das nochmal hoch.
      Gibt es denn irgendeine Möglichkeit, beim Drücken eines Buttons eine 1 und beim loslassen eine 0 zu senden?
      Wäre interessant für die läden - Kurzzeitbedienung, z.b. verfahren von Lamellen
      never fummel a running system...

      Kommentar

      Lädt...
      X