Ankündigung

Einklappen
Keine Ankündigung bisher.

Dimmwert nachsenden

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

    [WireGate-Plugin] Dimmwert nachsenden

    Und hier der versuch in der Nacht einen dimmwert nachzusenden.
    Die Tag/Nacht umschaltung wird von linknx erledigt, da ich keine Feste Uhrzeit möchte. Linknx rechnet das über den Sonnenuntergang.

    Wie immer bitte Fehler oder verbesserungen melden, da ich in Perl noch keine Erfahrung hab, und böse überaschungen vermeiden möchte

    Code:
    my $lichtein_ga = "5/4/0";  # Gruppenadresse Licht Ein/Aus
    my $lichtdim_ga  = "5/4/9";   # Gruppenadresse Licht Dimmwert
    my $dimvalue = 40;   # Dimmwert
    my $dimvalue_tag = 80;
    my $Tag = '13/4/0';   # Stunde, ab der gedimmt werden soll
    
    ### Ende Definitionen
    
    # Eigenen Aufruf-Zyklus auf 1x täglich setzen, hört ja auf GA
    $plugin_info{$plugname.'_cycle'} = 0;
    
    # Plugin an Gruppenadresse "anmelden"
    $plugin_subscribe{$lichtein_ga}{$plugname} = 1;
    $plugin_subscribe{$Tag}{$plugname} = 1;
    
    # Nur bei einer gesendeten 1 reagieren
    if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $lichtein_ga) { 
    if ($msg{'value'} == "1" ) {
       my $tag_stat = knx_read($Tag,0,1);
        if ($tag_stat == 00) {
            knx_write($lichtdim_ga,$dimvalue,5); # Dimmwert senden
            return "Gedimmt";
        }
        if ($tag_stat == 01) {
        knx_write($lichtdim_ga,$dimvalue_tag,5); # Dimmwert senden
            return "Tag";
        }
        $plugin_info{$plugname.'_' . ($Tag) } = knx_read($Tag ,0,1);
    }
    if ($msg{'value'} == "0" ) {
    knx_write($lichtdim_ga,0,5);
    } else {
    return;
    }
    }
    return 0;
    Danke

    Gruß

    #2
    Meine Version ist unten. Das "besondere" ist, dass auf den Tür-Öffnungkontakt in der Wohnungstür Rücksicht genommen wird, d.h. wenn die offen ist, dann bitte volle Helligkeit.
    (Ansonsten ist das Skript 1:1 ohne Überarbeitung und Verschönung kopiert)
    Code:
    my $GA_DieleAnAus = '1/5/60';
    my $GA_DieleWert  = '1/5/62';
    my $GA_TuereOffen = '4/3/70';
    my $helligkeit = 90;
    
    $plugin_subscribe{$GA_DieleAnAus}{$plugname} = 1;
    $plugin_subscribe{$GA_TuereOffen}{$plugname} = 1;
    $plugin_info{$plugname.'_cycle'} = 0;
    
    my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings);
       ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
    
    my $ret_val = '';
    if( $hour >= 23 || $hour < 6 )
    {
      $ret_val .= 'Nacht;';
      if( knx_read( $GA_TuereOffen ) == 0 ) # nur wenn Türe zu
      {
        $helligkeit = 50;
        $ret_val .= 'TüreZu;';
      } else {
        $ret_val .= 'TüreAuf;';
      }
    }
    
    # Check ob gelesen wird
    if($msg{'dst'} eq $GA_DieleAnAus)
    {
      if( $msg{'apci'} eq "A_GroupValue_Write" ) 
      {
        if( $msg{'value'} eq 1 )
        {
          knx_write( $GA_DieleWert, $helligkeit, 5 );
          return $ret_val . 'send "$helligkeit" wegen PM'; 
        } else {
          return $ret_val . 'value ne 1 (=' . $msg{'value'} . ') des PM';
        }
      }
      return $ret_val;
    } elsif($msg{'dst'} eq $GA_TuereOffen)
    {
      if( $msg{'apci'} eq "A_GroupValue_Write" ) 
      {
        if( $msg{'value'} eq 1 )
        {
          knx_write( $GA_DieleWert, $helligkeit, 5 );
          return $ret_val . 'send "$helligkeit" wegen Tür'; 
        } else {
          return $ret_val . 'value ne 1 (=' . $msg{'value'} . ') der Tür';
        }
      }
      return $ret_val;
    }
    return $ret_val . 'NOP';
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Meinst du mit dem kopiert mich?
      Ja ist es, abgeändert wurde im großen und ganzen nur dass es mit den Tag werten aus linknx arbeitet, da ich wie oben schon geschrieben keine festen Zeiten wollte.

      War keine böse absicht dahinter!!

      Gruß

      Kommentar


        #4
        Zitat von vlamers Beitrag anzeigen
        Meinst du mit dem kopiert mich?
        Nö, ich meinte, dass der von mir gepostete Code von mir ungesehen aus meinem Plugin-Verzeichnis kopiert wurde...

        Übrigens habe ich nun gesehen, dass es dzu schon ein Posting gibt :
        https://knx-user-forum.de/code-schni...nschalten.html
        TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

        Kommentar


          #5
          Jup das meinte ich. Das geht nach Zeit, ich wollte dass aber per Sonnenuntergangsberechnung aus der linknx geschalten haben.
          Auch wenns am Tag nur geschätzte 2-3 minuten ausmacht summiert sich das übers jahr

          Kommentar


            #6
            Hallo Volker,

            wenn ich das richtig verstehe, hast Du bereits Logiken mittels LINKNX abgebildet ... machst das "Nachtriggern" aber mittels Plugin im Wiregate. Da ich mich auch gerade mit dem Kauf eines Wiregates beschäftige wollte ich den Thread kurz wiederbeleben und 2 Fragen stellen:

            1. läuft LINKNX bei Dir auch auf'm Wiregate?
            2. Warum bildest Du das Nachtriggern nicht direkt in LINKNX ab (das hat bei mir super funktioniert)?

            Viele Grüße,

            Stefan

            p.s.: wenn jemand außer Volker noch gute Gründe hat, die Logik in einem Plugin abzubilden würde ich mich natürlich auch über eine Antwort freuen.
            Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

            Kommentar


              #7
              Hi,
              so direkt nützliche gründe hab ich gar nicht.
              wollte das auch mal probieren.

              ist Perl nicht PHP

              ich wollte langfristig darauf hinaus dass der dimm wert (Tag - Nacht Absenkung) Variabel wird (in linknx nicht möglich denke ich).

              Der Plan war alle dimmbaren werte in ein Array. so kann ich für jedes licht einen eigenen wert angeben. diesen dann im plugin_Info oder in ner Datei zu speichern, dass erst automatisch gesetzt werden kann, aber doch noch über die visu änderbar ist. Grund: dass soll auch meine Frau können (wenn sie will) ohne dass ich ihr winscp putty oder ähnliches erklären muss (und erst mal den Aufbau von Ordnern und unterordnern im Dateisystem ausserhalb von: Eigene Dateien im Windows ).

              Punkt2: weil es geht

              frei nach dem Motto: "ever change a running System"


              Gruß Volker

              Deut: ja linknx läuft auf dem WG. bei mir die 0.1.27 da die 0.1.28 Probleme gemacht hat und ich die 0.1.29 nicht zum laufen bekommen hab.

              Kommentar


                #8
                Ah, OK - danke für die Antwort. Das PHP (Fehler zu vorgerückter Stunde - ich hatte noch was anderes im Hinterkopf ) habe ich bereits geändert.

                Momentan triggere ich Dimmwerte z.B. im Flur nach einer Bewegungserkennung. Es gibt (abhängig von der Tageszeit) 3 Dimmwerte und "Aus". Umschaltung des Betriebsmodus erfolgt über ein Zennio Z38. Das hat super funktioniert - so konnte meine Frau damit, wenn der Kleine Mittagsschlaf hält, das Licht im Flur reduzieren.

                Bisher lief das auf meiner Dockstar, aber die muss ich neu installieren - und eigentlich läuft auch alles drauf (inkl. linknx 0.0.29-1), nur mit den Startscripten habe ich noch Probleme --- und langsam keine Lust mehr, denn ich merke, ich bin echt abhängig von den Zusatzlogiken in LInknx geworden (ich mache damit auch Szenen und das Umsetzen von 1-Bit in 8-Bit Werte z.B. zum Auslösen von Szenen mit einem 1-Bit Befehl). Daher überlege ich mir ein Wiregate zu kaufen - nicht für 1-wire, sondern für vieles Anderes

                Viele Grüße,

                Stefan
                Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                Kommentar

                Lädt...
                X