Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Blinken mit eibPC erzeugen

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

    [EibStudio] - √ - Blinken mit eibPC erzeugen

    wie kann man einfach ein Blinken erzeugen?

    Zur Signalisierung der Auslösung eines Zentral-AUS soll auf eine GA 5x ein EIN/AUS Blinken (ca. 1sec Periode) erzeugt werden.
    "Muss" man dass mittels mehrfachen Delays erzeugen oder gibt es etwas eleganteres.....


    Lt. Handbuch darf delay nicht im then Zweig stehen - wie umgeht man das?
    Eine Variable im then Zweig auf EIN setzen und so die Delays auslösen?
    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    #2
    Hi,

    auch so ein Ding, was ich nicht getestet habe, aber probier mal folgendes:

    [highlight=epc]
    :begin Blink(Name,GA,Anzahl,Aktion,WaitTime)
    Name^Counter=0u32
    if event(GA) and GA == EIN and (Bedingung) then Name^Counter=1u32 endif

    if after(change(Name^Counter) and !(Name^Counter == 0u32) ,WaitTime) then {
    if (Name^Counter <= Anzahl*2u32) then {
    Name^Counter=Name^Counter+1u32;
    Aktion;
    } else {
    /* Abbruchbedingung setzen */
    Name^Counter == 0u32;
    } endif
    }endif
    :end
    [/highlight]

    z.B. Aktion:

    [highlight=epc]
    write( MyGA, !MyGA);
    [/highlight]

    Gruß,
    Bernd

    Kommentar


      #3
      Zitat von EPIX Beitrag anzeigen
      Zur Signalisierung der Auslösung eines Zentral-AUS soll auf eine GA 5x ein EIN/AUS Blinken (ca. 1sec Periode) erzeugt werden.
      "Muss" man dass mittels mehrfachen Delays erzeugen oder gibt es etwas eleganteres.....
      Ich setze für Blinken immer auf cycle:
      [highlight=epc]
      MyZentralVar=AUS
      if event(ZentralAUS) then MyZentralVar=EIN endif
      // Man beachte das !-Zeichen in der write-Anweisung
      if MyZentralVar and cycle(0,1) then write(BlinkGA,!BlinkGA) endif
      // Nach dieser Zeitspanne wieder zurücksetzen
      if after(MyZentralVar,5000u64) then {
      MyZentralVar=AUS;
      write(BlickGA,AUS)
      }endif
      [/highlight]
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #4
        Das ist der bessere Vorschlag

        Gruß,
        Bernd

        Kommentar


          #5
          Danke!!

          und als "gelöst" gekennzeichnet
          EPIX
          ...und möge der Saft mit euch sein...
          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

          Kommentar


            #6
            Funktioniert!!

            Nachlese: und bei Zeitintervallen unter 1 sek? - zB 0.5sek
            Verwendet man da dann das Beispiel von BMX?
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Zitat von EPIX Beitrag anzeigen
              Funktioniert!!
              Nachlese: und bei Zeitintervallen unter 1 sek? - zB 0.5sek
              Verwendet man da dann das Beispiel von BMX?
              nun, es führen viele Wege nach Rom. Um im meinem Beispiel zu bleiben
              [highlight=epc]
              MyZentralVar=AUS
              if event(ZentralAUS) then MyZentralVar=EIN endif
              // Man beachte das !-Zeichen in der write-Anweisung
              if MyZentralVar and cycle(0,1) then write(BlinkGA,!BlinkGA) endif
              if MyZentralVar and after(cycle(0,1),500u64) then write(BlinkGA,!BlinkGA) endif
              // Nach dieser Zeitspanne wieder zurücksetzen
              if after(MyZentralVar,5000u64) then {
              MyZentralVar=AUS;
              write(BlickGA,AUS)
              }endif
              [/highlight]
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Weil es so schön ist:
                [highlight=epc]
                MyZentralVar=AUS
                if event(ZentralAUS) then MyZentralVar=EIN endif
                // Man beachte das !-Zeichen in der write-Anweisung
                if (change(MyZentralVar) and MyZentralVar) or after(change(BlinkGA),500u64) then write(BlinkGA,!BlinkGA) endif
                // Nach dieser Zeitspanne wieder zurücksetzen
                if after(MyZentralVar,5000u64) then {
                MyZentralVar=AUS;
                write(BlickGA,AUS)
                }endif
                [/highlight]
                Hier kann man anstelle von 500u64 (500ms) quasi jeden beliebigen Wert setzen und den Bus wenn man will auch zumüllen.
                Ich hab da so ein Lauflicht mit den LEDs meiner Raumkontroller programmiert, aber als ich die Zeit zwischen den Telegrammen unter 300ms programmierte, dann machte die IP-Schnittstelle schlapp und die Telegramme kommen nicht mehr äquidistant am Raumkontroller an bzw. zeigt sie dieser nicht mehr so an.
                [ Das geht mit meinem neuem Router besser ]
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  ich muss das mal rauskramen, komme nicht drauf.

                  Code:
                  if ("Garagentor Bewegung auf-2/0/20" or "Garagentor Bewegung zu-2/0/21") then MyZentralVar=EIN endif;
                  
                  if (change(MyZentralVar) and MyZentralVar) or after(change("Blitzlicht-2/0/15"),500u64) then {
                      write("Blitzlicht-2/0/15",!"Blitzlicht-2/0/15");
                  } endif;
                  
                  //Nach dieser Zeitspanne wieder zurücksetzen
                  if after(MyZentralVar,1000u64) then {
                      MyZentralVar=AUS;
                      write("Blitzlicht-2/0/15",AUS)
                  }endif;​
                  Die blöde GA hört einfach nicht auf zu blinken.
                  Sieht einer adHoc den Fehler=
                  Gruß Peter
                  never fummel a running system...

                  Kommentar


                    #10
                    Ich denke, das "and MyZentralVar" in der zweiten Zeile sollte besser für beide der oder-Fälle gelten.

                    Kommentar


                      #11
                      Zitat von DerRenovator Beitrag anzeigen
                      Ich denke, das "and MyZentralVar" in der zweiten Zeile sollte besser für beide der oder-Fälle gelten.
                      genau:
                      Code:
                      if (change(MyZentralVar) and MyZentralVar) or (after(change("Blitzlicht-2/0/15"),500u64) and MyZentralVar) then...
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar

                      Lädt...
                      X