Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik - Präsensmelder Nachlaufzeit erhöhen

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

    KNX/EIB Logik - Präsensmelder Nachlaufzeit erhöhen

    Leute ich habe ein Problem bei dem ich eine Lösung weiß die ich leider nicht programieren kann.

    Meine Freundin duscht und wird hinter der Glasscheibe nicht mehr vom PM erkannt (zu klein :-D ).

    Ich habe einen Temp-Fühler am Wasserrohr der Dusche. Leider bin ich grade nicht so bewandert eine Logik auf dem Wiregate zu schreiben um die Nachlaufzeit des PM zu erhöhen.

    Kann mir jemand helfen?

    #2
    Warum sperrst Du den PM nicht wenn der Temp Fühler aktiv ist?


    Sent from my iPhone using Tapatalk

    Kommentar


      #3
      Siehste und da gehts bei mir los.

      Was ich mir auch gedacht habe das ich das Sperrobjekt benutzen könnte.
      Dazu müsste ich aber doch eine If-Schleife programmieren auf dem Wiregate. Oder wie soll ich defenieren wann der aktiv ist und wann nicht?
      Ich meine ein Temp-fühler ist doch immer aktiv. Oder gibts da irgendwelche Einstellmöglichkeiten?

      Kommentar


        #4
        Wenn die Temperatur der GA auf die der Temp Fühler sendet eine gewisse Schwelle überschreitet dann sperrst du den PM mittels der passenden GA. Wird die Temperatur wieder unterschritten gibst du ihn wieder frei. Natürlich sollte da ne Hysterese gemacht werden. Also z.B. ab 30 Grad wird gesperrt, fällt die Temperatur unter 28 Grad gibst du ihn wieder frei. In Pseudocode:

        Code:
        var temp = read(GA_Temp);
        if (temp > 30)
          send(GA_Sperrobjekt, 1);
        else if (temp < 28)
          send(GA_Sperrobjekt, 0);
        Mit freundlichen Grüßen
        Niko Will

        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

        Kommentar


          #5
          Ah vielen Dank.

          Also eine If-Schleife (logik) muss ich auf jedenfall haben oder?

          Ist der Code schnipsel so vollständig?

          Das erste deklariert die Vaiable, da muss ich dann die GA eintragen, richtig?
          und GA_Sperrobjekt muss ich mir mal anschauen was das auf sich hat, bin aber grad nicht zu hause.

          Kommentar


            #6
            Der Codeschnipsel ist Pseudocode, das ist Code, der zwar logisch korrekt ist (oder sein sollte) aber so nicht funktioniert, da er von keinem Interpreter verstanden wird. Sprich, damit wollte ich dir verdeutlichen wie so ein Programm aussehen müsste. Die genauen Befehle in Perl kenne ich noch nicht, da ich noch nicht so weit bin (Haus ist noch im Bau). Aber einfach mal das eine oder andere WG Plugin anschauen die hier gepostet wurden oder im SVN liegen, das dürfte nicht so schwer sein. Du brauchst nur die Befehle fürs Lesen und Schreiben auf den Bus und den generellen Aufbau für ein Plugin und schon solltest du das selber hinbekommen.
            Mit freundlichen Grüßen
            Niko Will

            Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
            - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

            Kommentar


              #7
              Ja vielen Dank,

              ich bin zwar schon eingezogen muss aber auch noch Pflastern, Fassade und OG ausbauen. Stehe grade selber bischen vor dem Zeitproblem.

              Ich werde mal schauen wie lange ich brauche bis ich das alles rausgefunden habe. Hinkriegen werd ich das wohl, aber ich glau da muss die Dame noch paar Tage im dunkeln duschen ;-)

              Kommentar


                #8
                Okay, bevor der WAF sinkt will ich dir etwas unter die Arme greifen. Aber wie gesagt, alles ungetestet:

                Code:
                my $temp;
                my $GA_Tempsensor = "4/2/21";
                my $GA_Sperrobjekt = "1/1/30";
                
                $plugin_subscribe{$GA_Tempsensor}{$plugname} = 1;
                
                if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $GA_Tempsensor) {
                  $temp = $msg{'value'};
                
                  if ($temp > 30) {
                    knx_write($GA_Sperrobjekt,1,1);
                  } else if ($temp < 28) {
                    knx_write($GA_Sperrobjekt,0,1);
                  }
                }
                Ist nun mehr oder minder aus folgendem Thread kopiert: https://knx-user-forum.de/wiregate/1...er-plugin.html
                Du kannst auch den kompletten Code von dort nehmen, ist ein Schwellwertplugin und sollte genau das machen was du brauchst!
                Mit freundlichen Grüßen
                Niko Will

                Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                Kommentar


                  #9
                  Super, danke!

                  Das werde ich ausprobieren und mir auch die Zeit nehmen und mich dort bischen reinfuchsen.

                  Ich melde mich und berichte!

                  Kommentar


                    #10
                    Moin, ich hab es nicht hinbekommen. Kann mal jemand über den Code schauen was dawohl nicht passt?

                    Ich ahbe eine GA angelegt für den Tempsensor und die wird auch korrekt auf den Bus gesendet.

                    Ich habe eine GA angelegt um den PM zu sperren, diese habe ich in der ETS mit den Sperrobjekt des PM verknüpft und die Applikation neu aufgespielt.

                    Folgende Meldung hab ich vom Wiregate:
                    Global symbol "$pm_sperren" requires explicit package name at (eval 253) line 5, line 3135. Global symbol "$wert_ga" requires explicit package name at (eval 253) line 7, line 3135. syntax error at (eval 253) line 12, near "else if" syntax error at (eval 253) line 15, near "} }"

                    Ich hab keine Ahnung was das bedeutet.


                    Code:
                    my $temp;
                    my $GA_Tempsensor = "3/1/10";
                    my $GA_Sperrobjekt = "1/1/4";
                    
                    $plugin_subscribe{$GA_Tempsensor}{$pm_sperren} = 1;
                    
                    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $wert_ga) {
                      $temp = $msg{'value'};
                    
                      if ($temp > 40) {
                        knx_write($GA_Sperrobjekt,1,1);
                      } else if ($temp < 38) {
                        knx_write($GA_Sperrobjekt,0,1);
                      }
                    }

                    Kommentar


                      #11
                      den Code hast du bestimmt aus der Forenbenachrichtigungsemail kopiert, richtig? Gleich nach dem Abschicken hab ich den Code nochmal durchgelesen und nen Copy and Paste Fehler gefunden. Hab vergessen in der IF das wert_ga gegen GA_Tempsensor zu tauschen. Habs dann aber gleich korrigiert. Der Code oben sollte also gehen bzw. zumindest diesen Fehler nicht mehr bringen. Zur Not kannst ja auch das Schwellwertplugin aus dem oben verlinkten Thread mal tesen, das sollte auf alle Fälle funktionieren.
                      Mit freundlichen Grüßen
                      Niko Will

                      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                      Kommentar


                        #12
                        Zitat von HolgerT Beitrag anzeigen
                        Folgende Meldung hab ich vom Wiregate:
                        Global symbol "$pm_sperren" requires ...
                        Global symbol "$wert_ga" ...
                        Code:
                        my $temp;
                        my $GA_Tempsensor = "3/1/10";
                        my $GA_Sperrobjekt = "1/1/4";
                        
                        $plugin_subscribe{$GA_Tempsensor}{[COLOR=Red][B]$pm_sperren[/B][/COLOR]} = 1;
                        
                        if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq [B][COLOR=Red]$wert_ga[/COLOR][/B]) {
                          $temp = $msg{'value'};
                        
                          if ($temp > 40) {
                            knx_write($GA_Sperrobjekt,1,1);
                          } else if ($temp < 38) {
                            knx_write($GA_Sperrobjekt,0,1);
                          }
                        }
                        Zitat von 2ndsky Beitrag anzeigen
                        Code:
                        my $temp;
                        my $GA_Tempsensor = "4/2/21";
                        my $GA_Sperrobjekt = "1/1/30";
                        
                        $plugin_subscribe{$GA_Tempsensor}{[B][COLOR=Red]$plugname[/COLOR][/B]} = 1;
                        
                        if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $GA_Tempsensor) {
                          $temp = $msg{'value'};
                        
                          if ($temp > 30) {
                            knx_write($GA_Sperrobjekt,1,1);
                          } else if ($temp < 28) {
                            knx_write($GA_Sperrobjekt,0,1);
                          }
                        }
                        Hoi Holger

                        $pm_sperren ersetzen durch $plugname und was ist $wert_ga ?
                        Grüsse Bodo
                        Fragen gehören ins Forum, und nicht in mein Postfach;
                        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                        Kommentar


                          #13
                          Zitat von Bodo Beitrag anzeigen
                          $pm_sperren ersetzen durch $plugname
                          Oops, hab ich übersehen

                          Zitat von Bodo Beitrag anzeigen
                          und was ist $wert_ga ?
                          siehe mein vorheriger Post
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar


                            #14
                            Ah und ich dachte das ich dort den Plugin-Namen eintragen muss.

                            Danke Jungs heute abend werde ich das mal direkt ausprobieren!

                            Wenn das klappt, dann habt ihr bei meiner besseren Hälfte ein Stein in der Duschwand :-D

                            Kommentar


                              #15
                              Hat nicht geklappt...

                              jetzt steht da noch folgendes:

                              pm_sperren_result syntax error at (eval 25271) line 12, near "else if" syntax error at (eval 25271) line 15, near "} }"

                              oh man, ich muss perl lernen....

                              Kommentar

                              Lädt...
                              X