Ankündigung

Einklappen
Keine Ankündigung bisher.

Raspberry PI3 und die serielle Schnittstelle...

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

    #16
    Hi,

    sorry for my delayed answer. You need to do following:

    To set BAOS module to the right mode you need to switch to link mode.

    Replace following in /knxd/src/libserver/cemi.cpp:

    CEMILayer2::Open ()
    {
    if (!Layer2::Open ())
    return false;
    const uchar t1[] = { 0xF6, 0x00, 0x08, 0x01, 0x34, 0x10, 0x01, 0x00 };
    TRACEPRINTF (t, 1, this, "(CEMILayer2) Open");
    iface->SendReset ();
    iface->Send_Packet (CArray (t1, sizeof (t1)));
    while (!iface->Send_Queue_Empty ())
    {
    pth_event_t
    e = pth_event (PTH_EVENT_SEM, iface->Send_Queue_Empty_Cond ());
    pth_wait (e);
    pth_event_free (e, PTH_FREE_THIS);
    }

    return true;
    }

    replace in file : src/server/Makefile.am

    -BACKEND_CONF= b-EIBNETIP.h b-FT12.h b-PEI16s.h b-TPUARTs.h b-EIBNETIPTUNNEL.h b-USB.h b-NCN5120.h b-DUMMY.h
    +BACKEND_CONF= b-EIBNETIP.h b-FT12.h b-FT12cemi.h b-PEI16s.h b-TPUARTs.h b-EIBNETIPTUNNEL.h b-USB.h b-NCN5120.h b-DUMMY.h

    create this file:


    src/server/b-FT12cemi.h

    /*
    EIBD eib bus access and management daemon
    Copyright (C) 2005-2011 Martin Koegler <mkoegler@auto.tuwien.ac.at>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    */

    #ifndef C_FT12CEMI_H
    #define C_FT12CEMI_H

    #include "ft12.h"
    #include "cemi.h"
    #include "layer3.h"

    #define FT12CEMI_URL "ft12cemi:/dev/ttySx\n"
    #define FT12CEMI_DOC "ft12cemi connects over a serial line with the FT1.2 Protocol to a Boas module\n\n"
    #define FT12CEMI_PREFIX "ft12cemi"
    #define FT12CEMI_CREATE ft12cemi_Create

    inline Layer2Ptr
    ft12cemi_Create (const char *dev, L2options *opt)
    {
    return std::shared_ptr<CEMILayer2>(new CEMILayer2 (new FT12LowLevelDriver (dev, opt->t), opt));
    }

    #endif


    add this one line with "+" src/server/layer2conf.h
    #ifdef HAVE_FT12
    #include "b-FT12.h"
    +#include "b-FT12cemi.h"
    #endif
    #ifdef HAVE_EIBNETIP
    #include "b-EIBNETIP.h"
    add this one line with "+" in src/server/layer2create.h
    #ifdef HAVE_FT12
    L2_NAME (FT12)
    + L2_NAME (FT12CEMI)
    #endif
    #ifdef HAVE_EIBNETIP
    L2_NAME (EIBNETIP)
    After recompile it should work. Come back to me with your results :-)

    Br, Robert
    Zuletzt geändert von jeff25; 29.12.2016, 22:03.

    Kommentar


      #17
      Robert,

      Thank you very much. Which string to you use to start KNXD? Is it KNXD_OPTS="-DTRS -t 0xffc -f 9 -b ft12:/dev/ttyAMA0"?

      Best regards,

      Geert

      Kommentar


        #18
        Hi Geert,

        i start it on command line.. But there is a fault in your opt line.

        You need to use:

        -DTRS -t 1023 -f9 -b ft12cemi:/dev/ttyAMA0

        "ft12cemi" instead of ft12:.....

        you can find the new option also if you start knxd with help option

        br,
        robert
        Zuletzt geändert von jeff25; 03.01.2017, 20:23.

        Kommentar


          #19
          Hi Robert,

          Which version of knxd do you use? If I compile it with 0.11.17 . I can use knxd in ETS 5.0 but there are problems with the visualization. Matthias Urlichs (knxd) told me that there is a problem "the CGI programs on 0.11 ((master branch -- new features here) seem to be somewhat broken" so he released a version

          0.12.x (libev branch -- getting rid of the pthsem library)
          • removed PEI16s (alais bcuserial) driver; unused and difficult to port
          • removed duplicate routing code in eibnetserver.cpp
          So I decide to go fot 0.10.x (stable branch) but their I had a compile error with the instruction "inline Layer2Ptr" in the b-FT12cemi.h file.

          Thanks a lot,

          Geert

          Kommentar


            #20
            Hallo Robert,
            vielen Dank für deinen Hinweis zum Link Mode. Ich habe die Änderung übernommen.
            Wenn ich nun den KNXD starte, versucht er permanent auf den Bus zu schreiben:

            Layer 0 [6:ft12cemi:/dev/ttyS0 0.002] Send(004): 10 40 40 16

            Mittlerweile weiß ich, dass ihm das ACK als Antwort fehlt. Wenn ich diesen Fall betrachte, würde ich sagen, die Nachricht wird entweder nicht vom BAOS verarbeitet oder sie kommt gar nicht auf dem Bus an.

            Ein weiterer Test zeigt aber, dass ich Nachrichten vom EIB-Bus emfangen kann.
            Im Logfile ist der Start des KNXD, das Senden von 2 Nachrichen via groupswrite sowie die mitgeschnittenen Nachrichten vom EIB-Buses die durch das Licht an- und ausschalten per Lichtschalter gesendet wurden.

            Den BAOS 838 habe ich mittes ETS4 konfiguriert. Geladen wurde die Applikation für BAOS830, phy.Adr: 1.1.24 mit 5 Kommunikationsobjekten. Das 1. KO zum Schalten habe ich in die Gruppe 1/0/14 gelegt. Ohne diese Verknüpfung kann ich auch nicht die Schalt-Telegramme (Log) nicht empfangen.

            Im Moment bin ich ziemlich ratlos. Hast du noch eine Idee?

            VG Thomas
            Angehängte Dateien

            Kommentar


              #21
              Hallo Robert,
              Vielen Dank für die Anleitung zum Link Mode. Werde das in den nächsten Tagen testen.

              Grüsse,
              Marc,

              Kommentar


                #22
                Current 0.11 has a fixed eibread-cgi. (I was being stupid when I rewrote that.)

                I'll port the ft12cemi modification to the 0.12 branch head soon.
                DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                Kommentar


                  #23
                  Hallo Thomas,

                  ich glaube du hast einen anderen Fehler drinnen. Warum nutzt du /dev/ttyS0? Bei mir ist das /dev/ttyAMA0 und du musst vorher die console deaktivieren.
                  Ich glaube bei dir funktioniert die Serielle Kommunikation nicht, du schreibst ja im Moment immer auf die Adressen die du im BAOS Objectserver eingerichtet
                  hast. Da siehst du auch immer was ist klar denn der BAOS Mode ist per default immer so eingestellt. Daher habe ich ja auch link mode umgestellt, hier kann ich senden
                  und empfangen wie ich will. Ich sehe was auf dem Bus passiert und ich kann auch telegramme rausschicken...

                  Übrigens hat der ObjectServer von dem BAOS Modul nichts mit dem knxd zu tun! Dieser kann über BAOS SDK gesetzt bzw abgefragt werden das ist zwar eine interessante Geschichte aber eine ganz andere Baustelle. Du kannst das BAOS Modul ruhig zurücksetzen auf Auslieferungszustand für das KNXD thema. Dafür muss am Modul nichts eingestellt sein außer halt der Link Mode....

                  Gruß
                  RObert
                  Zuletzt geändert von jeff25; 08.01.2017, 13:02.

                  Kommentar


                    #24
                    Moin Robert,
                    vielen Dank für deine schnelle Antwort. Ich benutze eine PI3 und habe den BT deaktiviert. /dev/ttyS0 liegt auf serial0. Der AMA0 auf serial1. Die Console habe ich in der cmdline.txt entfernt.
                    Das witzige ist, das ich die Telegramme, die auf dem BUS für die Gruppe 1/0/14 sind auf dem PI sehen kann.

                    Wenn ich mal zusammenfasse, sagst du:
                    1) den BAOS auf Auslieferungzustand bringen (Prog drücken und Bús-Spannung anlegen)
                    2) den BAOS aus der ETS entfernen

                    und sollte es gehen?

                    VG
                    Thomas

                    Kommentar


                      #25
                      Hallo Thomas,

                      das ist klar das du die 1/0/14 telegramme siehst. Dein Modul ist noch irgendwie im BAOS Modus. Setze es mal zurück. in der ETS muss es nicht umbedingt sein, dann prüfe mal warum es nicht in den Link Mode geht, dafür ist das hier verantwortlich.... hast du es eingebaut?

                      Replace following in /knxd/src/libserver/cemi.cpp:

                      CEMILayer2::Open ()
                      {
                      if (!Layer2::Open ())
                      return false;
                      const uchar t1[] = { 0xF6, 0x00, 0x08, 0x01, 0x34, 0x10, 0x01, 0x00 };
                      TRACEPRINTF (t, 1, this, "(CEMILayer2) Open");
                      iface->SendReset ();
                      iface->Send_Packet (CArray (t1, sizeof (t1)));
                      while (!iface->Send_Queue_Empty ())
                      {
                      pth_event_t
                      e = pth_event (PTH_EVENT_SEM, iface->Send_Queue_Empty_Cond ());
                      pth_wait (e);
                      pth_event_free (e, PTH_FREE_THIS);
                      }

                      return true;
                      }

                      Gruß
                      Robert

                      Kommentar


                        #26
                        Thanks Smurf to implement ft12cemi into 0.12 branch. Works on my site without problems... :-)

                        Kommentar


                          #27
                          Hallo Robert,
                          irgend wie ist der Wurm drin.

                          Als erstes habe ich Serials überprüft (TX und RX) kurzgeschlossen. Siehe da ttyS0 ist OK die gesendeten Daten kommen auch wieder rein.
                          Bei mir liegt ttyS0 auf serial0.

                          Die Console habe ich aus /boot/cmdline.txt VOLLSTÄNDIG entfernt.

                          KNXD: Deine Änderungen noch einmal geprüft. Alles OK.
                          ETS: Den BAOS habe ich vollständig rausgenommen. Die ETS kennt ihn nun nicht mehr.
                          BAOS: Auf Werkseinstellung zurückgesetzt.

                          Wenn ich den KNXD start sendet den LinkMode Befehl F6 00 08 01 34 10 01 00 und anschließend
                          permanent 10 40 40 16

                          pi@raspberrypi:~ $ knxd -t 0xffff -f 9 -e 0.0.0 -i 6720 -D -T -R -S -b ft12cemi:/dev/serial0
                          Layer 3 [3:layer3 0.000] Open
                          Layer 8 [2:inet 0.000] OpenInetSocket 6720
                          Layer 8 [2:inet 0.000] InetSocket opened
                          Layer 3 [3:layer3 0.000] registerLayer2 4:inet
                          Layer 3 [3:layer3 0.000] registerLayer2 4:inet = 1
                          Layer 8 [5:mcast 0.000] Open
                          Layer 0 [5:mcast 0.000] Open
                          Layer 0 [5:mcast 0.000] Openend
                          Layer 8 [5:mcast 0.000] OpenD
                          Layer 0 [5:mcast 0.001] Open
                          Layer 0 [5:mcast 0.001] Openend
                          Layer 8 [5:mcast 0.001] OpenedD
                          Layer 8 [5:mcast 0.001] Opened
                          Layer 3 [3:layer3 0.001] registerLayer2 5:mcast
                          Layer 3 [3:layer3 0.001] registerLayer2 5:mcast = 1
                          Layer 1 [6:ft12cemi:/dev/serial0 0.001] Open
                          Layer 1 [6:ft12cemi:/dev/serial0 0.001] Opened
                          Layer 2 [6:ft12cemi:/dev/serial0 0.001] Open
                          Layer 2 [6:ft12cemi:/dev/serial0 0.001] Opened
                          Layer 3 [3:layer3 0.001] registerLayer2 6:ft12cemi:/dev/serial0
                          Layer 1 [6:ft12cemi:/dev/serial0 0.001] (CEMILayer2) Open
                          Layer 1 [6:ft12cemi:/dev/serial0 0.001] SendReset
                          Layer 3 [3:layer3 0.001] L3 started
                          Layer 1 [6:ft12cemi:/dev/serial0 0.002] Send(008): F6 00 08 01 34 10 01 00
                          Layer 0 [6:ft12cemi:/dev/serial0 0.002] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.102] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.202] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.302] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.402] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.503] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.603] Send(004): 10 40 40 16
                          Layer 0 [6:ft12cemi:/dev/serial0 0.703] Send(004): 10 40 40 16


                          Hast du noch ne Idee??

                          VG Thomas

                          PS: Könnest du mir dein Image überlassen? Wäre vielleicht einfacher.

                          Nachtrag:
                          Wenn der KNXD sendet (Layer 0 [6:ft12cemi:/dev/serial0 0.703] Send(004): 10 40 40 16) flackert die HOST LED auf dem BAOS.
                          Deshalb gehe ich davon aus, dass die Serielleverbing funktioniert. Wird der BAOS über ETS (Geräteinfo lesen) angesprochen, flackert die KNX-LED und die Infos kommen auch in der ETS an.
                          Zuletzt geändert von elhabibi; 15.01.2017, 09:37.

                          Kommentar


                            #28
                            Hi Jeff25, I installed version 0.12 but I still have some problems. What is the string you use to start knxd?

                            Thanks,

                            Geert

                            Kommentar


                              #29
                              Hi jeff25,
                              Hi smurf,

                              Thanks a lot for the support. Here some test information: knxd and smartvisuNG and the BAOS kberry 838 works now fine with the latest master version 0.11.18. and the cemi modification of jeff25. With the 0.12.0 version you can read and send telegrams with ETS (multicast mode) but smartvisuNG can not connect. The knxd demon doesn't work. In the version 0.11.18 I use the following string in knxd.conf: KNXD_OPTS="-DTRS -t 1023 -f9 -b ft12cemi:/dev/ttyAMA0". in the version 0.12 I use in knxd.conf: KNX_OPTS="-e 1.1.200 -E 1.1.201:8 -DTRS -t 1023 -f9 -b ft12cemi:/dev/ttyAMA0". But that gives an error.

                              Geert

                              Kommentar


                                #30
                                Hi Geert,

                                i use the same options then you. Communication seems works but i have trouble with ETS 5.5.2. I need to update to 5.5.3 on next weekend and check if all works fine. With knxtool all works fine. There fore i am a little bit wondering why ETS will not work.

                                br,
                                robert

                                Kommentar

                                Lädt...
                                X