Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugins auslagern - eBus/KNX Daemon

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

    [wiregate] Plugins auslagern - eBus/KNX Daemon

    Sollte es hier nicht passen dann verschiebt es einfach in das passende Forum.

    Basierend auf dem (mittlerweile sehr langen) Thread zum eBus Plugin ist eine Lösung entstanden. https://knx-user-forum.de/forum/supp...wiregate/20771
    Ich würde es eine Übergangslösung nennen ... die vielleicht auch einen gewissen Charme hat.

    [WICHTIG]Dies bezeichne ich mal als "Expertenfunktion". Man sollte also wissen was man tut .[/WICHTIG]

    Die Anbindung des ebusd efolgt über 2 Programmteile.

    Teil 1- knxd:

    Der knxd ist ein abgespeckter WiregateDaemon. Dieser wurde von sämtlichen Abhängigkeiten zum originalen wiregated.pl befreit und konfigurierbar gemacht. Dadurch kann dieser auch auf dem original WireGate neben dem wiregated.pl eingesetzt werden.

    Im Kern besteht dieser für ein Fremdsystem (non WireGate) aus der folgenden Dateistrutktur:
    Die Teile die schon bestandteil des WireGates sind markiere ich im folgenden mit einem *.

    /etc/init.d/knxd
    Hier sind i.d.R. Keine Änderungen erforderlich.
    Dies ist das init-script für den knxd. Dieser lässt sich später einfach mit /etc/init.d/knxd start starten. Ein Neustart oder stop wird durch /etc/init.d/knxd restart bzw. /etc/init.d/knxd stop erreicht.

    /etc/knxd/
    Das Hauptverzeichnis des knxd. Hier werden die Konfigurationsdateien, die Plugin-Datenbank und im Unterverzeichnis die Plugins abgelegt.

    /etc/knxd/plugin/
    Dies ist das Verzeichnis in dem die mehr oder weniger bekannten WireGate-Plugins abgelegt werden.

    /etc/logrotate.d/knxd
    Hier sind i.d.R. Keine Änderungen erforderlich.
    Diese Datei enthält die notwendigen infos für einen laufenden logrotate … Der logrotate wird dringend empfohlen. Auf dem WireGate und den meisten Systemen sicherlich schon installiert.

    /usr/sbin/knxd.pl
    Hier sind i.d.R. Keine Änderungen erforderlich.
    Das ist der eigentliche knxd.

    /usr/lib/perl5*
    Hier sind i.d.R. Keine Änderungen erforderlich.
    Lediglich die Datei EIBConnection.pm muss vorhanden sein.*

    K O N F I G U R A T I O N:
    Folgende Dateien müssen angepasst werden damit der knxd grundsätzlich funktioniert:

    /etc/knxd/knxd.conf
    Enthält die globale config für den knxd.
    Code:
    ### Global Settings ###
    # name of knxd – recommend not to change
    name = knxd
    
    # path to init-script  – recommend not to change
    init_script = /etc/init.d/knxd
    
    # max. Memory usage of knxd. If reached knxd restart through itself by init-script
    mem_max = 20
    
    
    
    ### RRD Settings ###
    # directory where rrds will be saved
    rrd_dir = /var/www/rrd/
    
    # global cycle of sending values to rrd  – recommend not to change
    cycle = 240
    
    # global rrd-heartbeat 300 is equal to rrd-tools default  – recommend not to change
    rrd_interval = 300
    
    # some settings for people who know wha they do
    rra1_row = 2160
    rra5_row = 2016
    rra15_row = 2880
    rra180_row= 8760
    
    
    ### KNX/EIB Settings ###
    # eib enables/disables EIB/KNX 
    eib = 1
    
    # URL of eibd, can be in network or local.
    eib_url = ip:192.168.2.220:6720
    #eib_url = local:/tmp/eib
    
    eib_mininterval = 10
    
    # eib_logging enables/disables EIB/KNX Logging
    eib_logging = 0
    
    # eiblogfile is path and name of the EIB/KNX Logfile
    eiblogfile = /var/log/knxd-eib.log
    
    
    ### Plugins ###
    #name of the plugin-Database
    plugin_db_name = plugin_database.db
    
    #path to plugin-Database
    plugin_db_path = /etc/knxd/
    
    #path of the plugin directory
    plugin_path = /etc/knxd/plugin/
    
    # path and name of the Plugin-Logfile
    plugin_logfile = /var/log/knxd-plugin.log
    
    
    ### Ramdisk/Temp ###
    #path to /tmp or ramdisk 
    ramdisk = /tmp/
    
    #creates a alive for use with monit
    alive = /tmp/knxd.alive
    
    
    #udp_port = 13001
    #udp_ip = 172.30.40.50
    /etc/knxd/eibga.conf
    Hier müssen die Gruppenadressen eingetragen werden auf die ein Plugin reagieren soll. Statt einer weiteren Datei wäre auch ein Symlink für Wiregate-Benutzer mit gleichem Namen denkbar.
    Die Gruppenadressen müssen in diesem Format gespeichert werden:

    Code:
    [0/5/0]
    DPTId = 6
    DPTSubId = 6.020
    name = WP-Betrieb
    
    [0/5/1]
    DPTId = 1
    DPTSubId = 1.001
    name = Status HZ-WW
    Der knxd lässt sich noch mit folgenden Optionen starten:
    perl /usr/sbin/knxd.pl -d #Debug-Modus
    perl /usr/sbin/knxd.pl -c /path/to/knxd.conf #separates config file
    perl /usr/sbin/knxd.pl -e /path/to/eibga.conf #separate eibga.conf

    Auf einem „Standard-Linux“ sollten sich sämtliche Abhängigkeiten (eibd ausgenommen) mit folgendem auflösen lassen.*

    Code:
    apt-get install libmath-round-perl libmath-basecalc-perl librrds-perl libproc-pid-file-perl libproc-daemon-perl
    Lediglich die EIBConnection.pm ist neben den knxd Dateien im System zu ergänzen, liegt aber im richtigen Ordner im SVN.*

    SVN-Link: SourceForge.net Repository - [openautomation] Index of /tools/ebus/knxd
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    #2
    Teil 2 – ebus_plugin.pl

    Der zweite Teil ist das ebus-Plugin. Theoretisch könnten die WireGate-Benutzer dies direkt ohne knxd nutzen. Die ist aber nur der aktuelle Stand der Entwicklung. Die Laufzeiten bewegen sich noch im erträglichen Bereich und bleiben selbst im Einzelfall noch unter 10 Sekunden.

    Im Plugin selbst ist der Pfad zu eBus_plugin.conf „hard“ in der sub readconf auf /etc/knxd/eBus_plugin.conf festgelegt. Wer diese woanders liegen haben will muss dort Hand anlegen. Das würde ich nach derzeitigem Entwicklungsstand allerdings nicht empfehlen da wir noch nicht genau wissen wohin die Reise geht.

    /etc/knxd/eBus_plugin.conf
    Code:
    #### Einstellungen
    $config = "/etc/knxd/knxd-ebusd.csv";
    $ip = '192.168.2.221';		#IP des ebusd
    $port = '8888';			#Port des ebusd
    $base_time = 120; 			#Abrufzyklus
    $debug = "";
    #### Ende Einstellungen
    Eigentlich ist das schon selbsterklärend. $ip und $port sind IP-Adresse und Port des ebusd. Mit der Variablen $base_time wird die festgelegt wie oft jeder abzurufende Wert gesendet wird. Fürs debuggen gibt es noch $debug.

    Die eigentliche Konfiguration der eBus-Befehle erfolgt in einer CSV-Datei. Der Pfad dazu wird in $config angegeben.

    /etc/knxd/knxd-ebus.csv
    Die CSV kann man sich automatisch aus einer ebusd-csv erstellen lassen. Dafür gibt es unter /etc/knxd/tools das Perl-Script make_config.pl. Der Aufruf erfolgt mit den Parametern -i und -o welche Input und Output angeben.
    Beispiel:
    perl /etc/knxd/tools/make_config.pl -i /etc/ebusd/vaillant.csv -o /etc/knxd/knxd-ebus.csv
    Damit erhalten wir eine csv mit sämtlichen Befehlen die die Datei vaillant.csv enthält. Diese kann nun mit einem Editor um GA,DPT,RRD_type und RRD_step erweitert werden.
    Bei SET Kommandos handelt es sich um GAs die vom Plugin abboniert werden und deren Inhalt dann an den ebusd übergeben werden. DPT sollte der passende Datentyp sein.
    RRD_type gibt an ob es sich um ein COUNTER oder GAUGE RRD handelt (c bzw. g). Mit RRD_step kann man bei einem COUNTER-RRD den Zeitraum in Stunden festlegen. I.d.R. Handelt es sich ja um Tagesverbräuch und damit „24“.
    Hier mal eine kleine fertige Test-Konfiguration. Nicht benötigte Elemente kann man mit # auskommentieren oder löschen. Sofern kein RRD_type oder eine GA eingetragen wurde werden diese auch ignoriert.

    Für das setzen von Werten (SET) kann/sollte eine Rückmeldeadresse beim entsprechenden GET-Befehl eingetragen werden. Diese wird dann automatisch zyklisch mit ausgelesen und nach jedem SET aktualisiert.

    Beispiel:
    Code:
    #GA;DPT;RRD_TYPE;RRD_STEP;TYPE;CMD;COMMENT
    0/5/120;1;;;set;hw mode;WW/ Betriebsmodus 
    0/5/121;9;;;set;hw temp;WW/ Solltemperatur 
    0/5/111;1;;;set;short cir2_party;Quick/ Party-Modus 
    0/5/110;1;;;set;short cir2_mode;Quick/ Heizkreis Betriebsmodus 
    0/5/123;1;;;set;short hw_load;Quick - WW Speicherladung 
    0/5/202;9;g;;get;ci cir2_set_temp;Heizkreis2-Solltemperatur 
    0/5/203;12;c;24;get;ci yield_transfer;Mitternacht Übertragswert Energieertrag 
    0/5/206;12;c;0.5;get;mv yield_sum;Energieertrag 
    0/5/204;9;g;;get;mv brine_in temp;Quellentemperatur 
    0/5/205;9;g;;get;mv brine_out temp;Austrittstemperatur 
    0/5/201;9;g;;get;mv VF2_temp temp;Vorlauftemperatur VF2 
    0/5/200;9;g;;get;mv at_temp temp;Aussentempertur 
    0/5/102;9;g;;get;cir2 rt_day;Heizkreis – Raumsolltemperatur 
    0/5/101;9;g;;set;cir2 rt_day;Heizkreis – Raumsolltemperatur
    Sofern sich das Plugin jetzt im Plugin-Ordner befindet sollte das jetzt alles laufen.

    RRDs werden automatisch erstellt und gefüllt.
    Die Werte werden auf die entsprechenden Gruppenadressen gesendet.
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      Was macht der knxd funktional?
      Derzeit zwischen Kistenauspacken und Garten anlegen.
      Baublog im Profil.

      Kommentar


        #4
        Lauscht dem eibd (lokal/ip) und bearbeitet WG-Plugins.
        Mehr ist es derzeit eigentlich nicht. Eigentlich sollte die eBus-Anbindung mit rein, aber das klappt momentan noch als Plugin.
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Ich...

          ...hab das mal nach Deiner Anleitung durchgeführt aber es wird nichts auf die GA geschrieben noch meldet sich der knxd am ebusd an.
          Ab welcher Revision funktioniert der knxd mit dem ebusd?
          Sofern sich das Plugin jetzt im Plugin-Ordner befindet sollte das jetzt alles laufen.
          Welches Plugin und welchen Ordner meinst Du hier. Nur zur Sicherheit falls ich noch etwas anderes irgendwohin kopieren muss.
          Hab genau Deine config benutzt um es danach dann Stück für Stück auf meine Bedürfnisse anzupassen.


          Grüße

          Frank

          Kommentar


            #6
            Das Plugin müsste im Ordner /etc/knxd/plugin liegen ... bzw. dort wo Du es in der knxd.conf vorgegeben hast.

            Liegt der knxd in /usr/sbin ? Starte ihn mal mit:
            perl /usr/sbin/knxd.pl -d
            Umgezogen? Ja! ... Fertig? Nein!
            Baustelle 2.0 !

            Kommentar


              #7
              Ja das funktioniert bis...

              ...eben diese Meldung kommt.

              Code:
              ...
              2013-02-24 20:07:47.762 INFO - Cannot connect to eibd ip:192.168.0.101:6720
              2013-02-24 20:07:47.762 INFO - eibd connection lost - retrying
              Hier geb ich ja schon meinen KNX/IP Router an? (Ist ein Weinzierl 750).
              Die Multicast Adresse hab ich auch schon getestet. Das geht nicht.

              Grüße

              Frank

              Kommentar


                #8
                Der braucht einen eibd lokal oder im Netzwerk, also am besten auf das WireGate verlinken.
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  Ist der knxd auch auf neueren Debianten lauffähig? Also sind diese Abhängigkeiten auch aufgelöst?
                  Derzeit zwischen Kistenauspacken und Garten anlegen.
                  Baublog im Profil.

                  Kommentar


                    #10
                    Läuft hier auf einem Pi mit Debian (squeeze oder wheezy) und ist auch in einer VM Ubuntu schon gelaufen.

                    Die Abhängigkeiten halten sich bis auf eibd und ein paar Perl-Module ja in Grenzen. Wobei der eibd nichtmal lokal laufen muss sondern irgendwo im LAN (z.B. WireGate reicht)
                    Ich muss mich da mal durchs packaging kämpfen dann gibts da evtl. nen Paket zu.

                    Derzeit muss aber endlich mal das Treppenauge verkleidet werden ... der Estrich sieht Sch*** aus
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      #11
                      Nur ein paar Notizen:
                      - Der wiregated(*) - und damit ebus/knxd - läuft wunderbar von Lenny bis Ubuntu 12.10, kritische Abhängigkeiten die in die CPAN-Hölle führen, wurden schon immer vermieden - oder im Zweifel ein Packerl gemacht
                      - eibd-API (6720/tcp) ist ungleich KNXnet/IP (3671/udp), selber Inhalt, kann der eib auch, aber andere Baustelle..
                      - die Plugin-Verzeichnisse (/etc/wiregate/plugin/generic/.. würden das durchaus hergeben, das es dort /ebusd/.. oder so gibt!

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

                      Kommentar


                        #12
                        Dann ist das ja ein netter Schritt hin zu einzelnen Komponenten.
                        Das WG macht 1wire/KNX und die aufwändigeren, komplexen Sachen können auf anderen Kisten laufen.
                        Derzeit zwischen Kistenauspacken und Garten anlegen.
                        Baublog im Profil.

                        Kommentar


                          #13
                          Auch wenns stellenweise 5J gedauert hat:
                          Es ist ok, ja sogar gewollt, OSS selbst zu verbessern
                          Will sagen: Man muss sich dafür nicht entschuldigen, das geht Ok..

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

                          Kommentar


                            #14
                            Wird das in den WG Code einziehen?
                            Vorteil wäre schon, das essentielle Funktionen und Plugins sich nicht blockieren können...
                            Derzeit zwischen Kistenauspacken und Garten anlegen.
                            Baublog im Profil.

                            Kommentar


                              #15
                              Darüber werden wir, wie bei so vielem, natürlich nachdenken.

                              Hier und heute können wir das nicht sagen, aber jede Form von Modularisierung ist, sofern effizient, natürlich zu begrüßen.

                              Danke für die schöne Arbeit, JuMi2006, ich hoffe die Community schätzt das auch, weil es ist im Detail sehr viel Arbeit.

                              lg

                              Stefan

                              Kommentar

                              Lädt...
                              X