Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin Parameter auf Bus statt in Config

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

    [wiregate] Plugin Parameter auf Bus statt in Config

    Hallo zusammen,

    bei mir laufen so langsam die einzelnen Steuerungsparameter bzw. Schwellwerte aus dem Ruder...
    Wenn das so weitergeht, verliere ich bald den Überblick.
    So richtig unübersichtlich ist es mit der Optimierung meines Heizungskessels geworden.

    Jetzt besinne ich mich zurück auf die "reine" Lehre und will alle (wirklich alle) Steuerungsparameter auf den Bus holen und mit der CV pflegen.
    Ziel ist es nur noch die GA bzw. deren logischen Zusammenhänge in Plugins bzw. deren Config "hart" zu schreiben.

    Da der eibd ja bei jeden Neustart die urspr. eingestellten Werte vergisst, brauche ich ein Plugin, welches bei allen relevanten GA die in der CV eingestellten Werte empfängt in plugin_info zwischenspeichert und zyklisch bzw. bei jedem Neustart wiederholt. siehe auch https://knx-user-forum.de/202280-post5.html

    Bin ich da auf dem Holzweg?
    Hat damit schon jemand gute/schlechte Erfahrungen gesammelt?

    Gruß
    Sascha

    #2
    -> https://knx-user-forum.de/code-schni...statesave.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


      #3
      Geht ansonsten auch mit dem Logikprozessor.
      Fry

      Kommentar


        #4
        Zitat von Fry Beitrag anzeigen
        Geht ansonsten auch mit dem Logikprozessor.
        Fry
        Ich glaube, du meinst diese Funktion:
        Code:
            # 4. Memory-Funktion. Fuer KNX-Ger�te, die kein Auslesen ihres Statuswerts zulassen (z.B. MDT DaliControl 
            # bei Einzel-EVG-Ansteuerung). Sehr einfach:
            memory => { transmit=>'1/2/9' },
            # Hier wird folgende Eigenschaft der Logik ausgenutzt: Wenn ein Write-Telegramm auf die Transmit-Adresse kommt, 
            # speichert der Logikprozessor den Wert immer automatisch ab. Eine Leseanfrage auf der transmit-GA hingegen wird 
            # immer mit dem letzten Wert (hier also dem gespeicherten) beantwortet. Eine receive-Adresse oder translate-Logik 
            # werden hier gar nicht gebraucht.
        Das liefert doch nur die Werte bei einem Lesetelegramm?
        Ziel ist aber, die gemerkten Werte zyklisch zu senden, bzw. bei jedem Neustart des WG zu senden.

        Meinst du evtl. eine andere Funktion im Logikprozesor?

        Danke
        Sascha

        Kommentar


          #5
          Auch das zyklische Senden geht mit dem Logikprozessor. Konfigurationszeile in etwa wie folgt:

          Code:
          repeater => { transmit=>'1/2/3', translate => sub { $state }, timer=>{ time=>'00:00+5m'  } },
          Das merkt sich den jeweils aktuellen Wert, der von irgendwoher per Write (nicht per Response!) auf die GA 1/2/3 geschickt wird, und wiederholt diesen Wert auf Anfrage (Read) mit einem Response sowie alle 5min ungefragt per Write.

          Hab's gerade ausprobiert: kostet ca. 0.5s bei jedem Aufruf.

          VG, Fry

          Kommentar


            #6
            Wenn du 20 Adressen hast, mit denen du das Gleiche tun willst, schreib in conf.d/Logikprozessor.conf einfach rein:

            Code:
            for my $ga (qw(1/2/3 1/2/4 1/2/5)) # und so weiter
            {
               $logic{'repeater'.$ga}={transmit=>$ga, timer=>{time=>'00:00+5m'}, translate=>sub{$state}};
            }
            Damit hast du eine Repeater-Logik pro GA.

            VG, Fry

            Kommentar


              #7
              Zitat von haegar80 Beitrag anzeigen
              Hat damit schon jemand gute/schlechte Erfahrungen gesammelt?
              Grundsätzlich sollte man niemals irgendwelche Stati irgendwo speichern, die eigentlich von einer anderen Quelle kommen (sollten). Der Klassiker wäre sich den Status eines Aktorkanals oder Dimmers zu "merken", das ist murks..

              Für Sollwerte o.ä. die ausschliesslich vom WG kommen sollen ist das aber natürlich sinnvoll und Ok.

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

              Kommentar


                #8
                Zitat von makki Beitrag anzeigen
                Grundsätzlich sollte man niemals irgendwelche Stati irgendwo speichern, die eigentlich von einer anderen Quelle kommen (sollten). Der Klassiker wäre sich den Status eines Aktorkanals oder Dimmers zu "merken", das ist murks..
                Stimme zu, aber Murks wird es immer geben :-)
                Fry

                Kommentar


                  #9
                  Zitat von Fry Beitrag anzeigen
                  Stimme zu, aber Murks wird es immer geben :-)
                  Zitat von makki Beitrag anzeigen
                  Für Sollwerte o.ä. die ausschliesslich vom WG kommen sollen ist das aber natürlich sinnvoll und Ok.
                  Nee, das ist kein Murks, sondern das sind Parameter, die bisher "hart" in Plugins verdrahtet wurden und die ich jetzt auf GA holen will, um diese in der CV zu pflegen.

                  z. B.
                  - Temperatur, bei der sich die Zirkulation ein-/ausschaltet
                  - Offset für Soll-Bodentemperatur, basierend auf der Soll Raumtemperatur
                  - Lautstärke für Durchsagen/Klingel
                  - usw.

                  @Fry: Danke für die Hilfe für die Definition im Logikprozessor.
                  Sascha

                  Kommentar


                    #10
                    Hallo Fry,

                    ich habe jetzt deinen Logikprozessor im Einsatz.
                    Die in der Visu vorgegebenen Parameter werden auch schön brav in dem gewählten Intervall auf dem Bus wiederholt.

                    Wenn ich das WG aber neu starte, dann weiß der eibd nix mehr von den Werten.
                    Kannst du evtl. dein Plugin so umstellen, daß die gemerkten Werte bei einem Neustart auf jeden Fall wiederholt werden?

                    makki hat hier mal einen passenden Hinweis gegeben: https://knx-user-forum.de/202280-post5.html

                    Danke
                    Sascha

                    Kommentar


                      #11
                      Hi Sascha,
                      ich nehme an, du hast die neueste Version vom SVN (wenn nicht: hol sie dir).

                      Relativ am Anfang findet sich der Abschnitt:

                      Code:
                          # alle Variablen loeschen
                          for my $k (grep /^$plugname\_/, keys %plugin_info)
                          {
                              delete $plugin_info{$k};
                          }
                      Den mal auskommentieren, sollte die erhoffte Wirkung haben.

                      VG, Fry

                      PS. Kannst du mal beschreiben, was du alles vom Logikprozessor machen lässt? Wäre vielleicht für alle Leser hier interessant...

                      Kommentar


                        #12
                        Zitat von Fry Beitrag anzeigen
                        Hi Sascha,
                        ich nehme an, du hast die neueste Version vom SVN (wenn nicht: hol sie dir).
                        Die hab ich, vielleicht führst du in deinen nächsten Änderungen ein Versionskürzel mit. Das macht es bestimmt einfacher...

                        Zitat von Fry Beitrag anzeigen
                        Relativ am Anfang findet sich der Abschnitt:

                        Code:
                            # alle Variablen loeschen
                            for my $k (grep /^$plugname\_/, keys %plugin_info)
                            {
                                delete $plugin_info{$k};
                            }
                        Den mal auskommentieren, sollte die erhoffte Wirkung haben.
                        Genau das hat geholfen!


                        Zitat von Fry Beitrag anzeigen
                        PS. Kannst du mal beschreiben, was du alles vom Logikprozessor machen lässt? Wäre vielleicht für alle Leser hier interessant...
                        Zur Zeit merke ich mit nur die Busparameter, ich will aber Stück für Stück meine Plugins rückbauen und auf deinen Logikprozessor setzen.
                        Das passiert aber Stück für Stück, weil mein (noch nicht angelegter) Garten zur Zeit ganz laut nach mir schreit...

                        Danke für die Hilfe!
                        Sascha

                        Kommentar


                          #13
                          Zitat von Fry Beitrag anzeigen
                          PS. Kannst du mal beschreiben, was du alles vom Logikprozessor machen lässt? Wäre vielleicht für alle Leser hier interessant...
                          Mal ne andere Frage:
                          Kann das Ding auch einen Sammelstatus? z. B.
                          - ein Fenster ist offen
                          - ein Licht ist an

                          Danke
                          Sascha

                          Kommentar


                            #14
                            Zitat von Fry Beitrag anzeigen
                            Code:
                                # alle Variablen loeschen
                                for my $k (grep /^$plugname\_/, keys %plugin_info)
                                {
                                    delete $plugin_info{$k};
                                }
                            Den mal auskommentieren, sollte die erhoffte Wirkung haben.
                            Ganz auskommentieren ist aber auch nicht die endgültige Lösung.
                            Er soll doch trotzdem alle gemerkten Werte löschen, wenn die GA nicht als transmit oder receive definiert wurde?

                            Gruß
                            Sascha

                            Kommentar


                              #15
                              Sascha,
                              freut mich, dass du das Tool nutzt!

                              Zitat von haegar80 Beitrag anzeigen
                              Kann das Ding auch einen Sammelstatus? z. B.
                              - ein Fenster ist offen
                              - ein Licht ist an
                              Ja, wie folgt:

                              Code:
                              neuelogik => { receive=>['1/2/3','1/2/4'], transmit=>'1/2/5', translate=>sub { (int($input->[0])==1 && int($input->[1])==1) ? 1 : undef  } },
                              Diese Beispiellogik wird ausgelöst, falls auf einer der beiden GAs ein Telegramm ankommt. Die andere GA wird dann ausgelesen (üblicherweise kommt der Wert wohl aus dem Cache des eibd) und dann wird 1 übermittelt, wenn beide Werte 1 waren. Ansonsten wird nichts (undef) übermittelt.

                              Beantwortet das Beispiel deine Frage ausreichend?

                              Zu deiner Frage "Gemerkte Werte löschen" weiß ich leider nicht genau, was du suchst. Der eibd, das ist ein Abstraktionslayer unterhalb des Wiregate-Daemons und damit auch unterhalb des Logikprozessors, hat einen Cache für Bustelegramme, und ich weiß nicht, wie man den löscht.

                              Versionsnummer: bitte füg eine ein und commite im SVN. Ich weiß nicht genau, wie das geht.

                              VG,
                              Fry

                              Kommentar

                              Lädt...
                              X