Ankündigung

Einklappen
Keine Ankündigung bisher.

eBus->USB->Plugin->KNX

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

    Wenn du nichts an der Konfiguration geändert hast, sollte der Daemon auf Port 8888 lauschen.

    Kannst einfach mit >telnet hostname 8888< testen.

    Die Ausgabe wie von Mirko gepostet macht ein Skript, welches die csv Konfiguration Zeile für Zeile abarbeitet und an den Daemon schickt.

    Code:
    #!/usr/bin/perl
    
    use IO::Socket;
    use warnings;
    
    #### Einstellungen
    my $config = "./vaillant_get.csv";
    #my $ip = 'localhost';
    my $ip = '192.168.1.16';
    my $port = '8888';
    #### Ende Einstellungen
    
    my @set;
    open (cfg,"<$config") || die $!;
    while (<cfg>){
        if ($_ =~ /\#/)
        {
            #print ("skipped","\n")
        }
        else
        {
            #print $_;
            my @array = split (/;/,$_);
            #print (@array[0],"\n");
            my $befehl = $array[0];
            my $short1 = $array[1];
            my $short2 = $array[2];
            my $datatyp = $array[10];
            my $command = $befehl." ".$short1." ".$short2;
            push @set,$command unless (($short2 =~ /-/) or  ($datatyp =~ /\?/))
        }
    }
    #print @set;
    close cfg;
    
    my $sock = new IO::Socket::INET (
        PeerAddr => $ip,
        PeerPort => $port,
        Proto => 'tcp',
    );
    die "Error: $!\n" unless $sock;
    
    foreach (@set){
    #    print $_."\n";
        print $sock ($_."\n");
        my $answer = <$sock>;
        print ($_." ".$answer."\n");
        sleep 1;
    }
    print $sock ("quit \n");
    close($sock);
    Fehlt hier ein HowTo für den ebusd?

    Kommentar


      @Frank: Du gibst einen aus ?
      Schnapszahl zum Karneval !

      @yuhu: Der ebusd hat ja --help . Was jetzt fehlt ist ein richtiges Packerl ala "apt-get install"
      Wir müssten uns da noch auf ein paar Pfade einigen ... wäre schön wenn man so langsam den ebusd und alles andere zusammen bekommt. Ohne dass man später 1000 config-files ändern muss.

      Ich für meinen Teil würde das so machen, aber da fehlen mir auch ein paar Linux Basics ob das wirklich so richtig ist.

      /usr/sbin/
      - ebusd
      - perl-ebusd-knx-daemon

      /etc/init.d/
      - jeweils ein init-script

      /etc/ebusd/
      - die configs
      /etc/perl-knxd/
      - die configs
      - die kleinen datenbanken
      /etc/perl-knxd/plugin
      - die plugin-dateien (baugleich wiregate-plugin)

      /var/log/
      - die logdateien

      /tmp/
      - für sonstiges was auch mal weg kann


      EDIT:
      Was ich eigentlich wollte ... vorläufige SET-Befehle sind nun korrekt im SVN. Falls noch jemand mit Vaillant WP sich an die fehlenden Befehle machen möchte, Danke, Bitte, gerne!

      Grüße
      Angehängte Dateien
      Umgezogen? Ja! ... Fertig? Nein!
      Baustelle 2.0 !

      Kommentar


        Hi,

        Heute habe ich mein ebus Inerface, selbst gebautes, zum lesen und schreiben angeschlossen.

        Gerade habe ich ebusd compiliert und lasse es gerade laufen. Morgen probiere ich das Senden:-) Vorschlag mit den dirs klingt gut:-)

        Noch eine Frage, hat noch jemand hier eine Hautec WP oder speziell dem TEM Kontroller, ich finde niergnedswo die Befehle herfür...


        Gruß
        Thomas

        Kommentar


          Nur kurz zur Info an alle Mitleser / Mitdenker!

          Mit JuMi2006 habe ich das schon etwas diskutiert.

          In den nächsten Tagen pflege ich eine allgemeinere Struktur für die CSV Files ein. Die Datenstruktur sieht dann wie folgt aus.

          Mit diesem Aufbau ist es nun möglich alle Elemente in den Datenbytes, unabhängig vom Telegrammtyp, abzubilden.


          Code:
          struct element {
              char d_sub[CMD_SIZE_D_SUB+1]; /**< pin1 */
              int d_len; /**< number of data bytes */
              char d_pos[CMD_SIZE_D_POS+1]; /**< data position at bytes */
              char d_type[CMD_SIZE_D_TYPE+1]; /**< data type */
              float d_fac; /**< facter */
              char d_unit[CMD_SIZE_D_UNIT+1]; /**< unit of data like °C,...) */
              char d_com[CMD_SIZE_D_COM+1]; /**< just a comment */
          };
          
          struct commands {
              int key; /**< internal number - do we need this ? */
              char type[CMD_SIZE_TYPE+1]; /**< type of message */
              char class[CMD_SIZE_CLASS+1]; /**< ci */
              char cmd[CMD_SIZE_CMD+1]; /**< hydraulic */
              char com[CMD_SIZE_COM+1]; /**< just a comment */    
              int s_type; /**< message type */
              char s_zz[CMD_SIZE_S_ZZ+1]; /**< zz */ 
              char s_cmd[CMD_SIZE_S_CMD+1]; /**< pb sb */
              int s_len; /**< number of send bytes */
              char s_msg[CMD_SIZE_S_MSG+1]; /**< max 15 data bytes */
              int d_elem; /**< number of elements */
              struct element *elem; /**< pointer of array with elements */
          
          };
          In der CSV Datei
          Code:
          cyc;cyc;date_time_temp;Datum, Uhrzeit und Aussentempertur;1;FE;0700;9;-;4;time;3;3,4,5;tim;1.0;-;Uhrzeit;date;3;6,7,9;dat;1.0;-;Datum;day;1;8;bcd;1.0;-;Wochentag;temp;2;1,2;d2b;1.0;°C;Aussentemperatur
          set;cir2;mode;Heizkreis - Betriebsart;3;50;B509;4;0E2B00;1;-;1;1;bcd;1.0;-;01=Ein 02=Aus 03=Auto 04=Eco 05=Absenken;;;;;;;;;;;;;;;;;;;;;
          set;cir2;type;Heizkreis - Kreis Typ;3;50;B509;4;0E3C00;1;-;1;1;bcd;1.0;-;Kreis Typ;;;;;;;;;;;;;;;;;;;;;
          set;cir2;rt_day;Heizkreis / Raumsolltemperatur;3;50;B509;4;0E3200;1;-;1;1;d1b;0.5;°C;Raumsolltemperatur;;;;;;;;;;;;;;;;;;;;;
          get;ci;password;Passwort Konfiguration;3;15;B509;3;0D2C00;4;pin1;1;1;bcd;1.0;-;Pin 1;pin2;1;2;bcd;1.0;-;Pin 2;pin3;1;3;bcd;1.0;-;Pin 3;pin4;1;4;bcd;1.0;-;Pin 4
          get;ci;hw_heat_time;Heizzeit max. bei WW-Anforderung;3;15;B509;3;0D4D00;1;-;1;1;d1b;1.0;min;;;;;;;;;;;;;;;;;;;;;;
          get;mv;brine_in;Quellentemperatur;3;08;B509;3;0D0F00;2;temp;2;1,2;d2c;1.0;°C;Temperatur;stat;1;3;bcd;1.0;-;Status;;;;;;;;;;;;;;
          Die Ausgabe vom Parser
          Code:
          $ ./csv ~/src/csv/.
          
          [000] cyc :   cyc.date_time_temp          (type: 1) FE0700           (len: 9) [4] ==> Datum, Uhrzeit und Aussentempertur
          
                    time       (len: 3) pos: 3,4,5         tim [ 1.00] [-]     Uhrzeit
                    date       (len: 3) pos: 6,7,9         dat [ 1.00] [-]     Datum
                    day        (len: 1) pos: 8             bcd [ 1.00] [-]     Wochentag
                    temp       (len: 2) pos: 1,2           d2b [ 1.00] [°C]    Aussentemperatur
          
          
          [001] set :  cir2.mode                    (type: 3) 50B5090E2B00     (len: 4) [1] ==> Heizkreis - Betriebsart
          
                               (len: 1) pos: 1             bcd [ 1.00] [-]     01=Ein 02=Aus 03=Auto 04=Eco 05=Absenken
          
          [002] set :  cir2.type                    (type: 3) 50B5090E3C00     (len: 4) [1] ==> Heizkreis - Kreis Typ
          
                               (len: 1) pos: 1             bcd [ 1.00] [-]     Kreis Typ
          
          [003] set :  cir2.rt_day                  (type: 3) 50B5090E3200     (len: 4) [1] ==> Heizkreis / Raumsolltemperatur
          
                               (len: 1) pos: 1             d1b [ 0.50] [°C]     Raumsolltemperatur
          
          [004] get :    ci.password                (type: 3) 15B5090D2C00     (len: 3) [4] ==> Passwort Konfiguration
          
                    pin1       (len: 1) pos: 1             bcd [ 1.00] [-]     Pin 1
                    pin2       (len: 1) pos: 2             bcd [ 1.00] [-]     Pin 2
                    pin3       (len: 1) pos: 3             bcd [ 1.00] [-]     Pin 3
                    pin4       (len: 1) pos: 4             bcd [ 1.00] [-]     Pin 4
          
          
          [005] get :    ci.hw_heat_time            (type: 3) 15B5090D4D00     (len: 3) [1] ==> Heizzeit max. bei WW-Anforderung
          
                               (len: 1) pos: 1             d1b [ 1.00] [min]     
          
          
          [006] get :    mv.brine_in                (type: 3) 08B5090D0F00     (len: 3) [2] ==> Quellentemperatur
          
                    temp       (len: 2) pos: 1,2           d2c [ 1.00] [°C]     Temperatur
                    stat       (len: 1) pos: 3             bcd [ 1.00] [-]      Status

          Kommentar


            O.K. jetzt hab ich das auch verstanden ... ich war da gestern zu sehr durch den Wind.

            So richtig klar wird das aber auch erst mit der Office-Datei die Du mir gesendet hast. Ich häng die mal für die anderen zur Übersicht mit an (einfach das .zip entfernen).

            Jetzt kommt mein "aber" weswegen ich relativ wenig davon halte. Die "Länge" (Anzahl der Spalten) wird einfach unkontrollierbar. PIN ist ja noch recht harmlos aber was machst Du mit Ferienzeitraum ?
            Code:
            StartTag#1,StartMonat#1,StartJahr#1,StartTag#2,StartMonat#2,StartJahr#2,EndTag#1,EndMonat#1,EndJahr#1,EndTag#2,EndMonat#2,EndJahr#2,
            Ich würde das nur für cycle machen und get/set zusammenführen. Ich hätte nämlich auch gern noch 3 Spalten in der config für KNx und RRDs und bei dem Aufbau ist nichts mehr mit copy&paste.

            Grüße
            Angehängte Dateien
            Umgezogen? Ja! ... Fertig? Nein!
            Baustelle 2.0 !

            Kommentar


              Tja,

              das mit dem Ferienzeitraum ist auch nichts anderes als 4 mal Datum oder 4 mal Pin.

              Bei dem Cycle Telegramm sind ja bereits der Tag, Monat und Jahr zum Datum-Typ zusammengefasst.

              Das würde dann eher so aussehen

              Code:
              get;ci;holiday_period;Ferienzeitraum;3;15;B509;3;0D4300;4;date_start_1;3;1,2,3 dat;;1.0;-;Datum Start 1;date_start_2;3;4,5,6;dat;1.0;-;Datum Start 2;date_end_1;3;7,8,9;dat;1.0;-;Datum Ende 1;date_end_2;3;10,11,12;dat;1.0;-;Datum Ende 2
              bzw.
              Code:
              [007] get :    ci.holiday_period          (type: 3) 15B5090D4300     (len: 3) [4] ==> Ferienzeitraum
                        date_start_1         (len: 3) pos: 1,2,3         dat [ 1.00] [-]     Datum Start 1
                        date_start_2         (len: 3) pos: 4,5,6         dat [ 1.00] [-]     Datum Start 2
                        date_end_1           (len: 3) pos: 7,8,9         dat [ 1.00] [-]     Datum Ende 1
                        date_end_2           (len: 3) pos: 10,11,12      dat [ 1.00] [-]     Datum Ende 2
              Wenn das eine gemeinsame Konfiguration für den perl Daemon und ebusd werden soll, müsste das vor der Wiederholgruppe stehen und nicht danach.

              Welche Teile der ebusd Konfiguration benötigt der Perl daemon überhaupt?

              Kommentar


                Eigentlich benötige ich nur die ersten 4 (type,class,command,comment).
                Der Perl Daemon braucht dann noch (Gruppenadresse,Datentyp,RRD). Wobei man beim RRD zwischen Zählerdaten (COUNTER) oder einfachen Messwerten (GAUGE) sowie dem jeweiligen Zeitraum unterscheiden muss, das ließe sich aber über ein Array machen. xxx;xx;xx;GAUGE,300;xxx;xxx;xxx
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  Zitat von JuMi2006 Beitrag anzeigen
                  Eigentlich benötige ich nur die ersten 4 (type,class,command,comment).
                  Mit der geänderten Struktur müsstest Du auch sub benötigen. Diese kann auch leer sein.
                  Zitat von JuMi2006 Beitrag anzeigen
                  Der Perl Daemon braucht dann noch (Gruppenadresse,Datentyp,RRD). Wobei man beim RRD zwischen Zählerdaten (COUNTER) oder einfachen Messwerten (GAUGE) sowie dem jeweiligen Zeitraum unterscheiden muss, das ließe sich aber über ein Array machen. xxx;xx;xx;GAUGE,300;xxx;xxx;xxx
                  Das mit den RRD müsste ja dann beim jeweiligen Datum dabei sein. - Somit wäre es Teil der Wiederholgruppe.

                  Kommentar


                    Zitat von yuhu Beitrag anzeigen
                    Mit der geänderten Struktur müsstest Du auch sub benötigen. Diese kann auch leer sein.
                    Eigentlich nicht aber irgendwie doch. Ich übergebe dem Daemon dann einen ganz konkreten Befehl und der sollte sich eigentlich aus nichts weiter als "get/set" + "class" + "cmd" + "sub" zusammensetzen.

                    Wo wird denn jetzt CYC bearbeitet? Willst Du das im Daemon puffern und auf Anfrage den letzten Wert raus senden?

                    Ich glaube es macht wirklich Sinn die configs dann zu trennen. Das wird sonst Bloatware . Ich schreib dann lieber ein Script was die entsprechende csv für den Perl Daemon vorbereitet.

                    @all:
                    Macht es Sinn dann fortlaufende GAs zu verwenden? Oder wollt ihr die unbedingt manuell einpflegen ?
                    Ich hab bei mir momentan folgendes Schema:
                    Werte lesen 0/5/0xx
                    Werte setzen 0/5/1xx
                    Also 100 GAs sollten ja genügen .

                    Zitat von yuhu Beitrag anzeigen
                    Das mit den RRD müsste ja dann beim jeweiligen Datum dabei sein. - Somit wäre es Teil der Wiederholgruppe.
                    Das verstehe ich nicht. Was meinst Du mit Datum? Was verstehst Du unter Wiederholungsgruppe?

                    Brauchts für den ebusd noch ein init-script? Würde ich dann machen.

                    Grüße
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      Zitat von JuMi2006 Beitrag anzeigen
                      Eigentlich nicht aber irgendwie doch. Ich übergebe dem Daemon dann einen ganz konkreten Befehl und der sollte sich eigentlich aus nichts weiter als "get/set" + "class" + "cmd" + "sub" zusammensetzen.
                      Ja, das würde so passen.

                      Zitat von JuMi2006 Beitrag anzeigen
                      Wo wird denn jetzt CYC bearbeitet? Willst Du das im Daemon puffern und auf Anfrage den letzten Wert raus senden?
                      Es sollten mal die Leute was sage, die sowas benötigen.
                      • Wann Puffern und wieviel?
                      • Senden an welche Empfänger in welcher Form?
                      • Vielleicht einfach in eine Datei oder RRD schreiben?

                      Zitat von JuMi2006 Beitrag anzeigen
                      Ich glaube es macht wirklich Sinn die configs dann zu trennen. Das wird sonst Bloatware . Ich schreib dann lieber ein Script was die entsprechende csv für den Perl Daemon vorbereitet.
                      Gute Idee, dass aus den csv für den ebusd die entsprchende Config für den Perl Daemon geholt wird.

                      Zitat von JuMi2006 Beitrag anzeigen
                      Das verstehe ich nicht. Was meinst Du mit Datum? Was verstehst Du unter Wiederholungsgruppe?
                      Datum = Wert, Variable, ....

                      Wiederholgruppe:

                      Jede Zeile der Konfiguration besteht aus einem vordernem Teil (fixer Teil) und x Elementen (Wiederholgruppe).

                      fixer Teil:
                      • ci.password

                      Wiederholgruppe:
                      • pin1 <<< Element 0
                      • pin2 <<< Element 1
                      • pin3 <<< Element 2
                      • pin4 <<< Element 3


                      Zitat von JuMi2006 Beitrag anzeigen
                      Brauchts für den ebusd noch ein init-script? Würde ich dann machen.
                      Ich Moment nicht, jedoch könnte es jemand brauchen.

                      Kommentar


                        Zitat von yuhu Beitrag anzeigen
                        Es sollten mal die Leute was sage, die sowas benötigen.
                        • Wann Puffern und wieviel?
                        • Senden an welche Empfänger in welcher Form?
                        • Vielleicht einfach in eine Datei oder RRD schreiben?
                        Na dann mal los!
                        Zitat von yuhu Beitrag anzeigen
                        Gute Idee, dass aus den csv für den ebusd die entsprchende Config für den Perl Daemon geholt wird.
                        Irgendwie wird sich das schon lösen lassen.

                        Datum = Wert, Variable, ....
                        Zitat von yuhu Beitrag anzeigen
                        Wiederholgruppe:

                        Jede Zeile der Konfiguration besteht aus einem vordernem Teil (fixer Teil) und x Elementen (Wiederholgruppe).
                        Also Wäre beim Temperatursensor die 1. Wiederholgruppe die Temperatur und die zweite Wiederholgruppe der Status? Bei der PIN verstehe ich das aber immer noch nicht. Wenn ich die setzen will muss ich 4 bytes gleichzeitig senden.

                        Vaillant-WP-Besitzer:
                        Ist jemand hier der mal den Daemon testen kann/möchte?
                        Was wird benötigt:
                        - irgend ein Linux-Rechner im Netzwerk
                        - vorzugsweise ein laufender eibd im Netzwerk

                        Grüße
                        Umgezogen? Ja! ... Fertig? Nein!
                        Baustelle 2.0 !

                        Kommentar


                          Hi,

                          habe zware eine WP von Hautec (TEM Kontroller) würde aber gerade das ganze testeten, dauert bei mir aber noch bis ich alles (ebusd) am laufen habe.
                          Sobald ich ein paar TEM Protokolle gesehen habe, bis jetzt nur sehe ich nur die Boradcast (0700, 0801, 0802) melde ich mich.

                          So ganz verstehe ich es abr noch nicht mit den CSV Dateien, da solle doch die Befehle rein oder? Wie werden die denn kodiert gibt es eine Übersicht? Habe mir schon die Bsp. im SVN angeschaut. Was ich aber ncih verstehe wozu sind dann die *.ODS Dateien?

                          EIBD mit einer selbstgemachten VISU nutze ich schon seit Jahren.

                          Gruß
                          Thomas

                          Kommentar


                            Zitat von JuMi2006 Beitrag anzeigen
                            Also Wäre beim Temperatursensor die 1. Wiederholgruppe die Temperatur und die zweite Wiederholgruppe der Status?
                            Genau so ist es.
                            Zitat von JuMi2006 Beitrag anzeigen
                            Bei der PIN verstehe ich das aber immer noch nicht. Wenn ich die setzen will muss ich 4 bytes gleichzeitig senden.
                            Beim Setzen gibt es nur einen Befehl, der alle 4 Bytes auf einmal benötigt. Daher muss es auch bei SET die 4 Bytes geben.
                            Durch die Aufteilung in die 4 Pins kommen wir mit dem Datentyp BCD (je Pin) aus.

                            Hoffe, dass ich nun etwas Licht in die Sache bringen konnte.

                            Kommentar


                              Zitat von kobza Beitrag anzeigen
                              So ganz verstehe ich es abr noch nicht mit den CSV Dateien, da solle doch die Befehle rein oder? Wie werden die denn kodiert gibt es eine Übersicht? Habe mir schon die Bsp. im SVN angeschaut. Was ich aber ncih verstehe wozu sind dann die *.ODS Dateien?
                              Ich denke, dass ich dazu noch eine Beschreibung machen muss. Bis jetzt haben das JuMi und ich vorangetrieben. Für uns beiden in das viel klarer.

                              Kommentar


                                Hi Oliver,

                                noch mal zu dem TEM Kontroller. Bei mir ist alles stabil im Display, auch mit dem 2ten eBUS Interface (das erste war das mit Arduion uController Board).

                                Wegen TEM Protokoll habe ich jetzt direkt bei TEM.ch nachgefragt, jemand soll sich bei mir nächste Woche melden, mal schauen...

                                Gruß
                                Thomas

                                Kommentar

                                Lädt...
                                X