Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Logikprozessor.pl

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

    Leider funktionierts nicht.

    Das Lesetelegramm wir nachwievor sofort beantwortet, danach wird dem Code entsprechend das Telegramm alle 10s wiederholt.

    Eigentlich möchte ich nur das Antworttelegramm verzögern, nicht aber ein zyklisches senden generieren. Aber warscheinlich könnte der LP das Lesetelegramm nach 5min gar nicht mehr beantworten ohne zyklisches senden?
    Man das zerlegt mir meine Hirnzellen!
    PS: ich nehme an in deiner memoryHillfsStatusGA sollte es schon receive heissen, und nicht recieve?


    Logik:
    Code:
     antwort_test => { receive=>'1/1/11', transmit=>'1/1/11', reply_to_read_requests=>1, translate=>sub{return $input}, delay=>10, debug=>1 },
    Gruppenmonitor ets.JPG


    Wiregate Plugin Log:
    Code:
     2016-02-17 21:16:04.004,logikprozessor,1/1/11:Lesetelegramm -> $logic->{antwort_test}{transmit}(memory) -> 1/1/11:0 gesendet;  ,0s, 2016-02-17 21:16:12.960,logikprozessor,$logic->{antwort_test}{transmit}(Logik) -> 1/1/11:0 gesendet (delay);  ,0s, 2016-02-17 21:16:12.971,logikprozessor,(circle logic?) 2016-02-17 21:16:12.983,logikprozessor,1.0.1 1/1/11:0 -> $logic->{antwort_test}{receive}(Logik) -> 1/1/11:0 wird in 10s gesendet;  ,0s, 2016-02-17 21:16:23.892,logikprozessor,$logic->{antwort_test}{transmit}(Logik) -> 1/1/11:0 gesendet (delay);  ,0s, 2016-02-17 21:16:23.902,logikprozessor,(circle logic?) 2016-02-17 21:16:23.915,logikprozessor,1.0.1 1/1/11:0 -> $logic->{antwort_test}{receive}(Logik) -> 1/1/11:0 wird in 10s gesendet;  ,0s, 2016-02-17 21:16:34.849,logikprozessor,$logic->{antwort_test}{transmit}(Logik) -> 1/1/11:0 gesendet (delay);  ,0s,
    Zuletzt geändert von mmarkus; 17.02.2016, 21:40.

    Kommentar


      Zuletzt geändert von mmarkus; 17.02.2016, 21:59. Grund: doppelpost

      Kommentar


        Zitat von mmarkus Beitrag anzeigen
        Eigentlich möchte ich nur das Antworttelegramm verzögern, nicht aber ein zyklisches senden generieren. ]
        OK, jetzt habe ich es glaube ich verstanden ... und befürchte der LP unterstützt das nicht. reply_to_read_request antwortet immer sofort. Ob das ein Bug oder evtl. ein neues Feature wäre, kann ich allerdings nicht beantworten ... Das könnte höchstens Fry

        VG
        Micha

        Kommentar


          Hallo!
          Ich hab ein kleines Problem mit einer Logik, irgendwie krieg ich das nicht so hin wie ich will:

          Code:
          Schlafzimmer_Steckdose_per_Jalousie => { receive=>'2/3/15', transmit=>'1/1/28', translate => sub { $input = 1 ? $input : 0 }, cool=>10, debug=>1 },
          Diese Logik schaltet ein kleines Licht ein sobald die Jalousie runtergefahren wird, soweit alles tutti. Nun soll aber dieses Licht nach 10 Min wieder ausgeschaltet werden, jedoch nur wenn das Einschalten durch die Jalousie erfolgt ist. In anderen Szenen wird die Adresse auch eingeschaltet, daher ist ein einfaches horchen auf der 1/1/28 nicht zielführend.
          Hab versucht das bekannte "delay => 600" einzubauen, aber das wirkt nur als Einschaltverzögerung...

          Danke & Gruß,
          Hannatz

          Kommentar


            Hallo Leute,

            ich versuche gerade mit dem Logikprozessor, des höchsten CO² Wert aus zewien herauszufinden und zurück zu senden. Anbei der Code (just for the laughs..)

            Wenn's so gar nicht geht, habt Ihr eine Idee für mich?

            Danke, Nik

            Code:
            %logic=(   
               und3 => { receive=>['6/0/1','6/0/0'], 
                         transmit=>'6/0/2', 
                         translate => sub { 
                                               if (($input->[0])>($input->[1]))
                                               {
                                                  return ($input->[0]);
                                               }
                                               else
                                               {
                                                  return ($input->[1]);
                                               }
                                           }, 
                          debug=>1 
                        },
             );

            Kommentar


              Hallo Hannatz, Hast du es schon mit follow probiert? Damit kannst du nach ausführen der Logik 10 Minuten später den ausschalt Befehl senden. Grüße Stefan

              Kommentar


                Zitat von erdtn Beitrag anzeigen
                Versuch es mal mit:
                Code:
                if ([COLOR=#FF0000]int([/COLOR]($input->[0][COLOR=#FF0000])[/COLOR])>[COLOR=#FF0000]int([/COLOR]($input->[1][COLOR=#FF0000])[/COLOR]))

                Kommentar


                  Zitat von Hammer69 Beitrag anzeigen
                  Hallo Hannatz, Hast du es schon mit follow probiert? Damit kannst du nach ausführen der Logik 10 Minuten später den ausschalt Befehl senden. Grüße Stefan
                  Hey Stefan,

                  da lag die Lösung doch direkt vor meiner Nase!!

                  Danke, genau das was ich brauche!

                  Gruss Hannatz

                  Kommentar




                    Zitat von mivola Beitrag anzeigen
                    hatte noch jemand gestern beobachten können, dass die Timer mit der Zeitumstellung nicht zurechtkommen (d.h. noch immer nach der alten Zeit ausgeführt wurden)? Erst nach einem Neustart des wiregated lief es wieder wie gewohnt.
                    Hallo Micha,

                    ich habe bei der Zeitumstellung exakt das gleiche Problem. Das WG hat schon die korrekte Systemzeit. Meine Timer (deutlich zu sehen an der Zeitschaltuhr für die Aquariumbeleuchtung) schalten morgens gar nicht ein (dies zeigt auch das KNX-Log). Dann gebe ich manuell einen Schaltbefehl über den Bus zum Einschalten der Beleuchtung. Abends schält der Timer 1 Stunde versetzt das Licht ab. Das WG starte ich nicht neu.
                    Der Timer ist am nächsten Tag irgendwie richtig mit der neuen Sommerzeit verheiratet und schält dann wieder zu den korrekten in der conf Datei konfigurierten Zeiten.

                    Hat jemand einen Lösungsansatz wie man das Thema Sommer-/Winterzeit korrekt in den Griff bekommen kann?

                    Danke im Voraus & Gruß Frank

                    Kommentar


                      Ersteinmal will ich mich für dieses Plugin bedanken. Wirklich super nützlich!

                      Ich habe leider ein Problem mit trigger, da ich Hauptgruppenadressen über 15 verwende, wie etwa 20/1/10. Das Wiregate unterstützt diese Bereiche auch schon. Allerdings scheint dieses Plugin diese Adressen zu filtern. Ich kann sie zwar lesen und darauf schreiben, aber triggern kann ich damit leider nichts. Kann es sein, dass diese Adressbereiche gefiltert werden?

                      Update:
                      Hat sich erledigt. Es liegt am Wiregate und nicht am Plugin...
                      Zuletzt geändert von alltime; 15.08.2016, 11:42.

                      Kommentar



                        Hallo,
                        ich bin in Sachen Logikprozessor noch ein blutiger Anfänger.
                        Ich hätte nun mal eine Frage um mich in die Materie besser einarbeiten zu können.
                        Wie kann man folgenden Code im Logikprozessor umsetzen?
                        Prinzipiell soll eine Lampe welche über einen Türkontakt schaltet erst angehen wenn es auch dunkel ist.

                        # Helligkeit draussen kleiner gleich 300Lux und Schaltbefehl Türkontakt
                        if (('12/7/200' =< 300) && ('14/5/136' = 1))
                        # dann Licht einschalten
                        than knx_write('1/1/136',1)
                        # sonst bleibt das Licht aus
                        else knx_write('1/1/136',0);

                        Vielen Dank im Voraus
                        Gruß Markus

                        Kommentar


                          Hallo Markus,

                          hier mal mein Vorschlag mit drei Logiken:
                          Code:
                          Licht_Abstellkammer => { receive=>'14/5/136', # hiermit wird die Logik aufgerufen
                                          fetch=>'12/7/200', # dies löst die logik nicht aus wird aber abgefragt
                                          transmit_changes_only => 1, execute_only_if_input_defined=>1,
                                          transmit=>'1/1/136',  # Die zu schreibende Adresse
                                           translate => sub{ if (($input->[0]==1) && int($input->[1]<=300))
                                           {return 1}  else {return 0} }, followup=>{'Licht_Abstellkammer_aus_nach_Zeit'=>90}, #wird vergessen die Tür zu schließen schaltet sich das Licht nach 90s wieder aus
                                            debug=>1, }, # für den Anfang wird hiermit ein im Pluginlog Eintrag erstellt.
                          Hier wird nur bei unter 300lux das Licht eingeschaltet und nach 90s wieder aus.

                          Code:
                           Licht_Abstellkammer_aus => { receive=>'14/5/136', transmit=>'1/1/136', translate => sub{ if ($input ==0)
                                           {return 0}  else {return undef;} }, },
                          Dies ist für den normalen Aus Befehl wenn die Tür geschlossen wird.

                          Code:
                           Licht_Abstellkammer_aus_nach_Zeit => { transmit=>'1/1/136', translate => 0, },
                          Und dies ist für den Ausbefehl nach 90s.

                          Es geht bestimmt auch etwas kürzer und eleganter.
                          Dafür sind aber auch meine perl Kenntnisse nicht ausreichend.

                          Schöne Grüße
                          Stefan

                          Kommentar


                            Schon mal Danke Stefan,

                            hat super funktioniert. Wie du schon vermutet hast, wird der Mittelteil

                            "Licht_Abstellkammer_aus => { receive=>'14/5/136', transmit=>'1/1/136', translate => sub{ if ($input ==0) {return 0} else {return undef;} }, }, "

                            nicht benötigt.

                            Gruß Markus

                            Kommentar


                              Hallo zusammen
                              Ich steh grad aufem Schlauch (bin absoluter perl neuling)
                              Wie schreibe ich den ausgabewert der Translate sub in den $plugin_info Hash?

                              Ich hab folgende Logik, aber der Wert wird irgendwie nicht gespeichert, jedenfals habe ich bei der weiterverarbeitung kein wert

                              Code:
                              schwellwert_t_UV1 =>  { receive=>'8/1/1', transmit=>'8/1/5', translate => sub {
                              if ($input >= 30) {return "1";} if ($input < 30) {return "0";} $plugin_info{"alarm_t_uv1"}=return;
                              }, debug=>1 },
                              DANKE für eure hilfe

                              Kommentar


                                Hallo
                                ich bin begeisterter User des logikprozessors und habe eine Frage zum Thema "month"

                                hier mein aktueller Code
                                Code:
                                pool_pumpe_ein_Fruehling_Herbst => { transmit=>'1/2/1',
                                timer=>{ time=>['09:00','12:00','16:00','20:00'], month=>'10' }, translate => 1, debug => 1 },
                                Pumpe schaltet im Oktober zu den Uhrzeiten ein.
                                Ich möchte aber auch im April einschalten ohne eine neue Codezeile.
                                month=>'04,10' funktioniert leider nicht

                                Kommentar

                                Lädt...
                                X