Ankündigung

Einklappen
Keine Ankündigung bisher.

Sabotageüberwachung mit dem WG

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    ^^

    Ich war wohl doch zu langsam mit meiner Zusatzfrage...

    Zitat von swiss
    Und gleich noch eine kleine Verständnissfrage...

    knx_write($alarm_ga,1,1); # schreibe 1 als DPT 1 auf GA

    Sind die DPT nach EIS hinterlegt? Also EIS1 = 1bit, EIS2=4bit (dimmen auf/ab), EIS6=8bit Wert usw...?
    Gruss Patrik alias swiss

    Kommentar


      #17
      EDIT: Ich hab den Fehler behoben...

      Im Script wird mit "eq" als Vergleicher gearbeitet. Ich habe nach diversen erfolglosen Tests mit dem Script die Operatoren auf die mir von PHP bekannte Notation mit "==" für gleich und "!=" für NOT eingesetzt. Nun funktioniert das Script einwandfrei.

      Danke für die Starthilfe
      Gruss Patrik alias swiss

      Kommentar


        #18
        Vorsicht, == ist ein nummerischer Vergleich, eq vergleicht Strings! Perl operators
        Wenn noch was nicht stimmte, poste es doch bitte, dann tausche ich das für die Nachwelt oben aus..

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #19
          Hmmm...

          Ich habe noch einmal etwas rum experimentiert. Das Problem ist folgende Zeile:

          Code:
          if (! $msg{'src'} eq $allowed_pa)
          Da scheint die Auswertung nicht zu funktionieren. Wenn ich da im Originalcode "!=" eintrage funktionierts Vermutlich stimmt da die Syntax für die Negotation nicht ganz.
          Gruss Patrik alias swiss

          Kommentar


            #20
            Stimmt, ich habs oben korrigiert..

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #21
              Vielen Dank.

              Ich habe die Änderung mit "ne" übernommen und getestet. Nun funktioniert das Script.
              Gruss Patrik alias swiss

              Kommentar


                #22
                Ich stell die Frage gleich mal hier...

                Kann man eigentlich mehrere GA's für den Pluginaufruf anmelden? Wenn ja wie würde dann die Codezeile aussehen?
                Gruss Patrik alias swiss

                Kommentar


                  #23
                  Klar, einfach mehrfach
                  Code:
                  $plugin_subscribe{"ANZUMELDENDE_GA"}{$plugname} = 1;
                  dann muss man im Plugin aber natürlich schauen, durch welche GA es aufgerufen wurde; etwas umfangreicheres Beispiel hier (fs20_sende_ga)

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #24
                    Danke für die Info

                    Zitat von makki
                    dann muss man im Plugin aber natürlich schauen, durch welche GA es aufgerufen wurde
                    Nicht unbedingt Ich fange erst mal klein an. Also mit relativ einfachen Logiken. Momentan ist gerade der Startschuss für ein Fensterüberwachungs-Plugin gefallen. Damit die Werte immer aktualisiert werden, muss ich alle Fenster-GA's überwachen und die Zustände neu berechnen. Desshalb die Frage nach mehreren angemeldeten GA's pro Plugin.
                    Gruss Patrik alias swiss

                    Kommentar


                      #25
                      Gut, und wenn fertig immer gerne posten, andere freuen sich über Beispiele

                      Aber dran denken: das ist ganz "KNX-like" eventgetrieben, wenn man also die Stati von 8 Fenstern empfängt überschreibt ggfs. das nächste Telegramm von Fenster7 den Status von Fenster6 sogleich.
                      Das also besser hübsch separat in ein Array oder einen Hash verstauen..

                      Makki
                      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                      -> Bitte KEINE PNs!

                      Kommentar


                        #26
                        Hmmm...

                        Taucht das Problem auch auf, wenn ich alle ein- und Ausgaben sauber trenne?

                        z.B.:

                        1/1/1 und 1/1/2 sind MK Fenster1, 1/2/1 ist der Status für Fenster1 als 8bit.
                        1/1/3 und 1/1/4 sind MK Fenster2, 1/2/2 ist der Status für Fenster2 als 8bit.
                        usw...

                        Am besten wäre ein mehrdimensionales Array das alle MK- und Fensterzustände beinhaltet. Oder wie würdest du das lösen?
                        Gruss Patrik alias swiss

                        Kommentar


                          #27
                          Zitat von swiss Beitrag anzeigen
                          Am besten wäre ein mehrdimensionales Array das alle MK- und Fensterzustände beinhaltet. Oder wie würdest du das lösen?
                          Kommt drauf an, aber laienhaft gesagt (ein Perl-Guru würde mich dafür vermutlich verprügeln) ist ein Hash ein einfach handhabbares, "mehrdimensionales Array".
                          Wenn man es mal geblickt hat, ist es nicht so schlimm wie es sich manchmal liest; wie auch immer Du es realisierst: nicht verwirren lassen, es gibt noch Hashrefs und Array of arrays uvm IMHO hirnkrankes, wo sich dann keiner merken wie man das mit \$@{}%{} ausliest
                          An dem Beispiel fs20_sende_ga kann man aber IMHO gut ableiten, wie es trotzdem einfach geht..

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #28
                            Na dan habe ich das Wochenende ja wieder was zu tun Vor allem in das Thema Hash muss ich mich noch einlesen. Ich weiss zwar wie man in Pearl ein Array erzeugt aber wie man es mehrdimensional macht weiss ich noch nicht.

                            Mir schwebt folgendes vor...

                            In der Config oben wird es eine Variabel geben, in der man die Anzahl Fenster eingibt, die zu überwachen sind. Das Script legt für jedes Fenster ein Array mit dem Inhalt "MK oben", "MK unten" und "Status Fenster" (später noch mehr) an. Es soll also eine Art Tabelle erzeugen. Nun wird beim eintreffen einer angemeldeten GA der Status im Array aktualisiert und daraus der neue Status berechnet, der dann auf den BUS gesendet wird.

                            Bei PHP würde ein solcher Array aufruf so aussehen:

                            Status Fenster1 MK oben = $Fenster[1][MK oben]
                            Status Fenster2 MK oben = $Fenster[2][MK oben]
                            usw...

                            sollte doch so ähnlich auch mit Pearl zu machen sein oder?
                            Gruss Patrik alias swiss

                            Kommentar


                              #29
                              Perl, nicht mit dem Billigversender Pearl verwechseln, hilft auch beim Googeln

                              PHP ist "vernünftig", einfache Mehrdimensonale Datenstrukturen (vgl. struct) ohne irgendwelchen OO-Kram und völlig obskure Syntax gibts in Perl IMHO leider erst wenn man sich mindestens ein Bein selbst mit der Kettensäge amputiert hat
                              (Nein, manche sachen - um nicht zu sagen die meisten - mag ich in Perl mittlerweile garnicht mehr.. woanders hats dafür Vorteile..)

                              Egal. Mit einem Hash (man darf sich da eben nur nicht verzetteln!) kann man das wunderbar machen:
                              my %fenster;
                              $fenster{'1'}{'MK oben'} = ...
                              oder wenn man es etwas härter mag, könnte man auch die MK als Bits dort ablegen.
                              Wiegesagt, ich glaube man kann sich da an dem CUL/CUN-Plugin ganz gut orientieren.

                              Makki

                              P.S.: Wer es genau wissen will: klick, klick
                              (wer beides umfänglich versteht und erlären kann, warum man sich das freiwillig antut, zu dem komme ich dann auch gerne mal kostenpflichtig auf eine Schulung )
                              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                              -> Bitte KEINE PNs!

                              Kommentar


                                #30
                                Ok. Das Konzept existiert schon mal. Nun geht es an's programmieren...

                                Hier noch eine wichtige Frage, die Einfluss auf meinen Lösungsansatz hat:

                                Was geschieht mit den Variabeln die in einem Plugin erzeugt werden, wenn das Programm abgearbeitet wurde? Bleiben die Variabeln bestehen oder werden sie automatisch gelöscht?

                                Wenn sie bestehenbleiben ist das Handling mit den Zuständen relativ einfach. Wenn nicht, müsste ich die Daten eventuell zwischenspeichern und bei jedem Aufruf neu einlesen.
                                Gruss Patrik alias swiss

                                Kommentar

                                Lädt...
                                X