Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Logikprozessor.pl

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

    Gern geschehen.
    Gute Nacht!
    Fry

    Kommentar


      hallo zusammen,
      hab hier auch noch eine frage.

      Code:
      tagNacht => { receive=>'0/2/10', transmit=>'0/2/50', translate => sub { if(defined $input && int($input) == 0) { 0; }},debug=>1},
      Wenn auf 0/2/10 (Tag/Nacht) eine Null kommt, soll auf 0/2/50 (Zentral E/A) auch eine Null gesendet werden. Wenn auf 0/2/10 eine 1 kommt, soll nichts passieren.

      Die Null kommt sauber an. Mir ist nur nicht klar, wie ich die Logik ins leere laufen lassen soll, wenn die 1 kommt.

      Code:
      2012-11-24 23:02:59.912,Logikprozessor.pl,1.2.80 0/2/10:0 -> $logic{tagNacht}{receive}(Logik) -> 0/2/50:0 gesendet ,0s,
      2012-11-24 23:03:04.119,Logikprozessor.pl,1.2.80 0/2/10:1 -> $logic{tagNacht}{receive}(Logik) -> 0/2/50: gesendet ,0s,
      Hab versucht einen ungültigen Wert mit else zu senden, dann gehen aber trotzdem alle Leuchten an.

      Gruß Thomas

      Kommentar


        "return undef" in der Logikdefinition führt dazu, dass nichts gesendet wird.
        VG, Fry

        Kommentar


          Ein Hinweis:

          In den Beispielen ist für die Variablen $day und $night folgendes beschrieben
          Code:
          $day (1 falls zwischen 7 und 23 Uhr, 0 sonst) und $night (entsprechend umgekehrt)
          Beim Anlegen der Variablen wird meiner Meinung nach aber $day erst ab 8:00 aktiv.
          [So ist es mir bei meinen Logiken für Lichtdimmwerte auch aufgefallen, es wird bis um 8 Uhr gedimmt, nicht nur bis um 7]

          Code:
          my $day=($hour>7 && $hour<23);
          my $night=!$day;
          IMHO ist also entweder die Beschreibung in der Beispielconfig zu korrigieren, oder den Vergleich auf >6 (oder auch >=7) im Script zu ändern, so dass ab 7 Uhr bereits Tag ist.

          luigi

          Kommentar


            Zitat von Fry Beitrag anzeigen
            "return undef" in der Logikdefinition führt dazu, dass nichts gesendet wird.
            VG, Fry
            Hi,

            super funktioniert.

            Code:
            tagNacht => { receive=>'0/2/10', transmit=>'0/2/50', translate => sub { if(defined $input && int($input) == 0) { 0; } else {return undef;}},debug=>1},
            Mit der Logik sende ich dem "Es ist Nacht" einen Zentral aus hinterher. Ich muss mit dem Nacht Flag aber noch weitere Aktionen durchführen. Kann ich auch zwei transmit Adressen angeben?

            Also so ungefähr
            Code:
            transmit=>['0/2/50','0/2/51']

            Kommentar


              Zwei transmit-Adressen gehen nicht. Teil der KNX-Philosophie.
              Ich hätte es aber auch schon mal gebraucht. Vielleicht implementiere ich es später einmal. Bis dahin - sorry.
              Viele Grüße, have fun!
              Fry

              Kommentar


                Neue Version im SVN.

                Effizientere Berechnung des nächsten Aufrufzeitpunktes bei Timer-Schedules mit enger Periode (zB time=>'00:00+5min-16:00') spart Zyklen. Solche Schedules führten bisher manchmal zu Timeouts des Logikprozessors. Das sollte nun nicht mehr so sein.

                Update: es war auch noch ein kleiner Bug drin, der dazu führte, dass Timer falsch berechnet wurden und dann korrigiert werden mussten. FIXED.

                VG, Fry

                PS. bitte IMMER die aktuelle Version aus dem SVN nehmen, bevor ihr Bugs reportet.

                Kommentar


                  ok, das update scheint wieder ein problem gelöst zu haben. Der Logikprozessor hat sich nach einiger Zeit irgendwie aufgehängt. In der Log stand dann nur noch

                  Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                  Ich schlag mich aber noch mit einem anderen Problem herum ... und zwar schreibt folgender Timer bei einer Leseanfrage auf die Adresse 0/2/10 jedesmal eine 1. Ist das gewollt? Es gibt doch für einen Timer normal keinen Grund auf Leseanforderungen zu reagieren ...

                  Code:
                  #TagFlagTimer => { transmit=>'0/2/10', timer=>[{ time=>'06:00', weekday=>1},{ time=>'08:00', weekend=>1}], translate =>1, debug=>1},

                  Kommentar


                    Hallo Firefox,
                    neue Version im SVN extra für dich: mit ignore_read_requests=>1 kannst du dieses Verhalten unterdrücken.
                    Have fun,
                    Fry

                    Kommentar


                      Hallo zusammen,
                      ich habe die Dokumentation des Logikprozessors nochmal geordnet zusammengeschrieben - das Meiste stammt aus dem Muster-Konfigurationsfile, lässt sich aber wohl so besser lesen.

                      Die Doku ist in folgende Kapitel unterteilt:

                      0. Globale Definitionen
                      1. Einfache Fälle
                      2. Bedingtes und verzögertes Senden
                      3. Mehrere Inputs, Debugging und zeitabhängiges Verhalten
                      4. Timerfunktionen und sonstige Optionen
                      5. Prowl-Funktionen

                      Have fun!
                      Fry
                      Angehängte Dateien

                      Kommentar


                        Super! Danke!

                        Gesendet von unterwegs

                        Kommentar


                          Hi Fry,

                          das Problem mit dem Logikprozessor hat sich leider doch noch nicht erledigt.

                          Wenn ich das Wiregate neu starte, funktioniert zunächst alles. 1 / 2 Tage später erhalte ich nachfolgende Einträge in der Plugin Log Datei und außerdem hab ich festgestellt, dass das Memory des Wiregates immer voller wird.

                          Ich kann noch nicht sagen ob die zwei Probleme im Zusammenhang stehen.

                          Auszug Plugin Log:

                          Code:
                          2012-12-27 14:56:11.551,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 14:56:11.744,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 14:56:11.831,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 14:56:12.126,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 14:56:22.086,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:00:40.217,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:00:40.279,Logikprozessor.pl,1.2.82 1/2/6:1 -> $logic{SchlafDownDim}{receive}(Logik) -> 1/2/90:10 gesendet ,0s,
                          2012-12-27 15:00:40.580,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:00:47.228,Tag_Nacht_DMX.pl,Es ist Tag! Flur Licht schaltet,0s,
                          2012-12-27 15:00:54.582,Tag_Nacht_DMX.pl,Es ist Tag! Flur Licht schaltet,0s,
                          2012-12-27 15:01:03.583,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:01:03.602,Logikprozessor.pl,1/2/6:0 -> $logic{SchlafDownDim}{receive}(Logik) -> nichts zu senden ,0s,
                          2012-12-27 15:01:22.424,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:01:22.452,Logikprozessor.pl,1.2.82 1/2/6:1 -> $logic{SchlafDownDim}{receive}(Logik) -> 1/2/90:10 gesendet ,0s,
                          2012-12-27 15:01:22.628,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:01:25.411,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:01:25.430,Logikprozessor.pl,1/2/6:0 -> $logic{SchlafDownDim}{receive}(Logik) -> nichts zu senden ,0s,
                          2012-12-27 15:03:43.464,Tag_Nacht_DMX.pl,Es ist Tag! Flur Licht schaltet,0s,
                          2012-12-27 15:03:43.639,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:03:43.833,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:03:44.124,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                          2012-12-27 15:03:44.914,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.

                          Kommentar


                            Die Meldung »Datum/Uhrzeit nicht lesbar:« gibt es bei mir auch öfter – allerdings nicht immer, noch täglich. Hier mal ein Auszug:
                            Code:
                            2012-12-14 17:26:09.806,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''. 
                            2012-12-14 17:26:29.892,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:26:32.803,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:26:34.413,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:26:35.794,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:26:49.854,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:26:52.726,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:27:00.952,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:27:02.416,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:27:03.994,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:27:05.401,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:27:07.849,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-14 17:27:14.483,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 16:38:12.390,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:20:16.952,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:20:18.403,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:20:24.266,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:20:25.871,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:20:27.361,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:20:28.980,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:21:05.617,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:21:07.123,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-17 22:21:08.577,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 01:17:51.146,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 01:18:14.068,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:12.683,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:14.088,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:27.955,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:39.607,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:42.982,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:44.435,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:55:45.852,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            2012-12-21 13:56:23.948,Logikprozessor.pl,Datum/Uhrzeit nicht lesbar: ''.
                            Die folgende Zeile (#32) liefert wohl manchmal ein leeres Ergebnis zurück:
                            PHP-Code:
                            my $date=`/bin/date +"%W,%a,%u,%m,%d,%Y,%j,%H,%M,%T"`; 
                            KA warum? Ich bin bisher nicht dazu gekommen, mir das genauer anzusehen
                            KNX: MDT, Gira TS3, Berker, Theben, PEAR, Preussen BWM, B.E.G., BMS Quadra, WireGate, Timberwolf 2500 | Baublog

                            Kommentar


                              Gebt doch mal per Hand auf der Kommandozeile ein

                              Code:
                              /bin/date +"%W,%a,%u,%m,%d,%Y,%j,%H,%M,%T"
                              und postet das Ergebnis hier.

                              VG, Fry

                              PS. Ich hatte diese Meldung übrigens noch nie. Falls es tatsächlich an der Systemzeit liegen sollte, kommen wir der Sache hoffentlich auf diese Weise auf die Schliche. Oder es ist ein "locale"-Problem. Wait and see.

                              Kommentar


                                @Fry: die meiste Zeit funktioniert es ja, das ist ja das komische

                                Code:
                                52,Do,4,12,27,2012,362,22,12,22:12:58
                                KNX: MDT, Gira TS3, Berker, Theben, PEAR, Preussen BWM, B.E.G., BMS Quadra, WireGate, Timberwolf 2500 | Baublog

                                Kommentar

                                Lädt...
                                X