Ankündigung

Einklappen
Keine Ankündigung bisher.

Kommunikationsproblem zwischen knxd, SmartHomeNG und SmartVISU

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

    Kommunikationsproblem zwischen knxd, SmartHomeNG und SmartVISU

    Hallo liebes Forum,

    ich bin noch recht neu im Thema KNX.
    Mittlerweile läuft der BUS und in die ETS habe ich mich auch solangsam eingearbeitet.

    Nun möchte ich mich an die VISU ran machen.
    Dazu habe ich smartVISU und smarthome.py nach der Anleitung auf github auf einer Ubuntu VM auf meinem Server (IP 192.168.2.245) installiert.
    Bus Anschluss erfolgt über IP Schnittstelle (IP 192.168.2.112). USB nicht vorhanden.

    Ich arbeite mich derzeit ein um mal ein Licht an/aus schalten zu können. Ob das klappt kann ich erst später sagen.

    Was mir bisher jedoch aufgefallen ist, sind die folgenden Fehlermeldungen: (siehe auch Anhang)
    Code:
    07/15/2016 9:38:19
    
    Logic: env_stat, File: /usr/local/smarthome/lib/env/stat.py, Line: 33, Method: , Exception: 'Orb' object has no attribute 'light'
    07/15/2016 9:33:40
    
    KNX: could not connect to 127.0.0.1:6720 (TCP): [Errno 111] Verbindungsaufbau abgelehnt
    07/15/2016 9:33:19
    
    Logic: env_stat, File: /usr/local/smarthome/lib/env/stat.py, Line: 33, Method: , Exception: 'Orb' object has no attribute 'light'
    07/15/2016 9:28:19
    
    Logic: env_stat, File: /usr/local/smarthome/lib/env/stat.py, Line: 33, Method: , Exception: 'Orb' object has no attribute 'light'
    07/15/2016 9:23:40
    
    KNX: could not connect to 127.0.0.1:6720 (TCP): [Errno 111] Verbindungsaufbau abgelehnt
    07/15/2016 9:23:19
    
    Logic: env_stat, File: /usr/local/smarthome/lib/env/stat.py, Line: 33, Method: , Exception: 'Orb' object has no attribute 'light'
    07/15/2016 9:18:19
    
    Logic: env_stat, File: /usr/local/smarthome/lib/env/stat.py, Line: 33, Method: , Exception: 'Orb' object has no attribute 'light'
    07/15/2016 9:13:40
    
    KNX: could not connect to 127.0.0.1:6720 (TCP): [Errno 111] Verbindungsaufbau abgelehnt
    07/15/2016 9:13:19
    
    Logic: env_stat, File: /usr/local/smarthome/lib/env/stat.py, Line: 33, Method: , Exception: 'Orb' object has no attribute 'light'
    07/15/2016 9:13:12
    
    Error parsing crontab: sunset-7
    Google brachte mich leider nicht weiter, deshalb muss ich jetzt hier fragen.

    Hier die stat.py
    Code:
    # lib/env/statistic.py
    
    # Garbage
    gc.collect()
    if gc.garbage != []:
        sh.env.core.garbage(len(gc.garbage))
        logger.warning("Garbage: {} objects".format(len(gc.garbage)))
        logger.info("Garbage: {}".format(gc.garbage))
        del gc.garbage[:]
    
    # Threads
    sh.env.core.threads(threading.activeCount())
    
    # Memory
    statusfile = "/proc/{0}/status".format(os.getpid())
    units = {'kB': 1024, 'mB': 1048576}
    with open(statusfile, 'r') as f:
        data = f.read()
    status = {}
    for line in data.splitlines():
        key, sep, value = line.partition(':')
        status[key] = value.strip()
    size, unit = status['VmRSS'].split(' ')
    mem = round(int(size) * units[unit])
    sh.env.core.memory(mem)
    
    # Load
    l1, l5, l15 = os.getloadavg()
    sh.env.system.load(round(l5, 2))
    
    if sh.moon:
        sh.env.location.moonlight(sh.moon.light())
    Hier meine Konfig Dateien:
    Code:
    # smarthome.conf
    lat = 100.9183   (100 = abgeändert, möchte ja nicht meine Adresse preis geben )
    lon = 100.7742 (100 = abgeändert, möchte ja nicht meine Adresse preis geben )
    elev = 251
    tz = 'Europe/Germany'
    EOL
    Code:
    # plugin.conf
    [knx]
       class_name = KNX
       class_path = plugins.knx
       host = 127.0.0.1
       port = 6720
    #   send_time = 600 # update date/time every 600 seconds, default none
    #   time_ga = 1/1/1 # default none
    #   date_ga = 1/1/2 # default none
    #[ow]
    #    class_name = OneWire
    #    class_path = plugins.onewire
    [visu]
        class_name = WebSocket
        class_path = plugins.visu
        smartvisu_dir = /var/www/html/smartVISU
        # for Ubuntu 14.04 upwards the base for html has changed
        # smartvisu_dir = /var/www/html/smartVISU
    [cli]
        class_name = CLI
        class_path = plugins.cli
        ip = 0.0.0.0
        update = True
    [sql]
        class_name = SQL
        class_path = plugins.sqlite
    smartVISU Config:
    Code:
    <?php
    /**
      * -----------------------------------------------------------------------------
      * @package     smartVISU
      * @author      Martin Gleiß
      * @copyright   2012
      * @license     GPL [http://www.gnu.de]
      * -----------------------------------------------------------------------------
      */
    
    
        define('config_pages', 'smarthome');
        define('config_design', 'night');
        define('config_cache', false);
        define('config_animation', false);
        define('config_title', 'YOUR NAME [smartVISU]');
        define('config_lang', 'en');
        define('config_driver', 'smarthome.py');
        define('config_driver_address', '192.168.2.245');
        define('config_driver_port', '2424');
        define('config_driver_realtime', true);
        define('config_weather_service', 'offline');
        define('config_weather_location', 'Germany/Bayern/xxx');
        define('config_weather_key', '');
        define('config_phone_service', 'offline');
        define('config_phone_server', '192.168.x.x');
        define('config_phone_user', '');
        define('config_phone_pass', '');
        define('config_calendar_service', 'offline');
        define('config_calendar_url', 'http://www.google.com/calendar/feeds/...');
        define('config_js', 'min.js');
    
    ?>
    Ich bin über jede Hilfe dankbar. Evtl. könnte man ja noch die restlichen Konfig Dateien auf Fehler prüfen - insbesondere IPs ?

    Vielen Dank und schon jetzt ein schönes Wochenende.
    Angehängte Dateien
    Zuletzt geändert von bmx; 21.07.2016, 12:53.

    #2
    Du verwendest offenbar noch das alte smarthome.py. Schau mal ob Du bei den Anleitungen für SmartHomeNG unter https://github.com/smarthomeNG/smarthome/wiki fündig wirst.
    Ephem hat sauber installiert?
    Zudem connected er wohl nicht zum EIBD/KNXD - geht dieser per Command-Line?
    KNX: could not connect to 127.0.0.1:6720 (TCP): [Errno 111] Verbindungsaufbau abgelehnt

    Kommentar


      #3
      Ehrlich gesagt würde ich mir die "alte Version" nicht mehr antun. Schau mal unter SmartHomeNG Basisinformationen da gibt es auch eine aktualisierte Komplettanleitung die mit Debian Jessie und knxd aktuell auf dem Laufenden ist.

      Kommentar


        #4
        Die env fehler hatt ich auch, nachdem ich meine python version geupdatet hatte, mach mal sowas wie sudo pip ephem , wenn das ibstalliert is, sollte der fehler weg sein ..

        Kommentar


          #5
          Vielen Dank.
          Ich probiere dann mal das SmartHomeNG aus.

          Kommentar


            #6
            So habe nun SmartHomeNG auf einer debian VM installiert.
            Das Problem mit Sonnenaufgang/Untergang scheint gelöst! Herzlichsten Dank - ephem war nicht richtig installiert. Aber durch die Neuinstallation habe ich darauf geachtet!

            Jetzt gibt es nur noch ein Problem mit dem Zugriff auf den BUS.
            Code:
            07/18/2016 13:46:42
            
            KNX: could not connect to 127.0.0.1:6720 (TCP): [Errno 111] Verbindungsaufbau abgelehnt
            Ich bin nach folgender Anleitung vorgegangen.
            In dieser steht auch wie man die BUS Verbindung testen kann:

            Code:
            knxtool groupswrite ip:localhost 1/1/10 1
            Hier bekomme ich die Fehlermeldung (über SSH):
            Code:
            root@debian-smarthome:/# knxtool groupswrite ip:localhost 1/1/10 1
            Open failed: Connection refused
            Server hat die IP 192.168.2.245 - IP Schnittstelle: 192.168.2.112
            Durch oben genannte Fehlermeldung bin ich auch darauf gestoßen das es unterschiedliche Schnittstellen gibt (KNX IP - Interfaces/Gateways/Router)
            Router ermöglichen multiplen Zugriff von verschiedenen Punkten. (VISU, ETS etc.)
            Komisch bei mir ist das ich über die ETS nicht mehr auf meinen BUS komme solange der Server hochgefahren ist. (Schnittstelle in Benutzung (oder ähnlich))

            Ich habe folgendes Gerät im Einsatz: (laut Beschreibung sollte das ja ein Router sein ?!)
            IP Router GESIS KNX IP-R


            Welche Dateien bringen Euch für einen Lösungsansatz weiter?
            Ideen woran es bei mir scheitert?

            Vielen Dank.

            Kommentar


              #7
              bei dem KNXD_OPTS spendiere mal vor dem " ... -u ip:192.168.2.112" ein -i und dann starte den knxd neu mit "sudo systemctl restart knxd.service"
              Falls der knxd mit deinem Router nicht klarkommt, kannst Du den IP Router auch als IP Schnittstelle nehmen mit "... -i -u ipt:192.168.2.112". Allerdings scheint das Asbach-Uralt Gerät nur einen Tunnel zu haben. Obe IP Router und IP Tunnel gleichzeitig funktionieren, weiß ich nicht.

              Kommentar


                #8
                Besten Dank! Jetzt funktioniert es! Leider immer nur von einer Quelle aus (entweder VISU oder ETS.. beides geht leider nicht)

                Schade das ich so einen Asbach-Uralt Gerät erwischt habe... vielleicht kann man da ja noch was machen - aber das ist mein Problem


                Hast du eventuell noch eine Einsteiger Anleitung parat wie die smartvisu.conf anzupassen ist, um mal eine einfache Licht an/aus Steuerung über smartVISU hinzukommen?

                Habe mir unter smartVISU /pages einen neuen Ordner angelegt und dort einfach mal eine ganz einfach Seite erstellt:

                HTML-Code:
                ...
                <h1><img class="icon" src='{{ icon0 }}scene_sleeping.png' />Beleuchtung</h1>
                
                
                <div class="block">
                <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                
                <div data-role="collapsible" data-collapsed="false" >
                <h3>Licht</h3>
                <table>
                <tr>
                <td>
                Bad
                </td>
                <td>
                {{ basic.flip('DG.bad', 'DG.bad.licht', 'Ein', 'Aus') }}    
                </td>
                <td>
                {{ basic.switch('switch1', 'DG.bad.licht', icon1~'light_light_dim_100.png',  icon0~'light_light.png') }}
                </td>
                </tr>
                </table>
                ...
                Nur leider habe ich den Dreh noch nicht raus wie ich den Schalter "DG.bad.licht" in die smartvisu.conf verknüpfen kann/soll.

                Würde mich freuen wenn es dazu noch eine Einsteiger Bonus Hilfe gibt.

                Besten Dank!

                Kommentar


                  #9
                  DG.bad.licht entspricht einer Item Struktur im SmartHomeNG von
                  Code:
                  [DG]
                     [[bad]]
                        [[[licht]]]
                          name = Licht Bad Dachgeschoss
                          knx_dpt = 1
                          type = bool
                          visu_acl = rw
                          knx_cache = 1/2/1    # GA Status
                          knx_send = 1/2/1      # GA schaltend

                  Kommentar


                    #10
                    Danke. Aber leider klappt das nicht so wie es soll.. es schaltet nicht.

                    smartvisu.conf (habe gleichzeitig auch mal eine item.conf angelegt) in Verzeichnis ..\smarthome\items\*.conf

                    Code:
                    [DG]
                        [[bad]]
                            [[[licht]]]
                                name = Licht Bad Dachgeschoss
                                knx_dpt = 1
                                type = bool
                                visu_acl = rw
                                knx_cache = 1/1/10    #GA Status
                                knx_send = 1/1/10   #GA schaltend
                    HTML Code ist der selbe wie oben.

                    dachgeschoss.html

                    Code:
                    /** * ----------------------------------------------------------------------------- * @package smartVISU * @author Frank
                    Berlenz * @copyright 2013 * @license GPL [http://www.gnu.de] * -----------------------------------------------------------------------------
                    */ {% extends "rooms.html" %} {% block content %}
                    
                    <h1><img class="icon" src='{{ icon0 }}scene_sleeping.png' />Beleuchtung</h1>
                    
                    
                    <div class="block">
                        <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                    
                            <div data-role="collapsible" data-collapsed="false">
                                <h3>Licht</h3>
                                <table>
                                    <tr>
                                        <td>
                                            Bad
                                        </td>
                                        <td>
                                            {{ basic.flip('DG.bad', 'DG.bad.licht', 'Ein', 'Aus') }}
                                        </td>
                                        <td>
                                            {{ basic.switch('switch1', 'DG.bad.licht', icon1~'light_light_dim_100.png', icon0~'light_light.png') }}
                                        </td>
                                    </tr>
                                </table>
                            </div>
                            <br/>
                            <br/>
                        </div>
                    </div>
                    
                    {% endblock %}
                    Im Browser schaut soweit alles gut aus. Wo liegt eigentlich die Referenz von smartVISU zu smartvisu.conf?
                    Muss ich hier noch etwas anpassen?
                    Zuletzt geändert von floho; 19.07.2016, 07:48.

                    Kommentar


                      #11
                      Es gibt in der SmartVISU eine config seite. Dort mußt Du der SmartVISU unter I/O Connection mitteilen, das er den Smarthome.py Treiber nutzen soll sowie die IP Adresse oder den Hostnamen Deiner VM. Und bitte nach dem ersten Speichern noch mal abwarten, den Wert ggf. noch einmal eintragen und noch einmal auf speichern drücken. Dort gibt es einen Bug der ab und zu zuschlägt...
                      Gruß,
                      Bernd

                      Kommentar


                        #12
                        Die habe ich bereits schon eingetragen. Sollte meiner Meinung nach auch passen ?!

                        Wie schon erwähnt:
                        Server: 192.168.2.245
                        Schnittstelle: 192.168.2.112

                        Code:
                        <?php
                        /**
                          * -----------------------------------------------------------------------------
                          * @package     smartVISU
                          * @author      Martin Gleiß
                          * @copyright   2012
                          * @license     GPL [http://www.gnu.de]
                          * -----------------------------------------------------------------------------
                          */
                        
                        
                            define('config_pages', 'MeinOrdner');
                            define('config_design', 'night');
                            define('config_cache', false);
                            define('config_animation', false);
                            define('config_title', 'Mein [smartVISU]');
                            define('config_lang', 'de');
                            define('config_driver', 'smarthome.py');
                            define('config_driver_address', '192.168.2.245');
                            define('config_driver_port', '2424');
                            define('config_driver_realtime', true);
                            define('config_weather_service', 'offline');
                            define('config_weather_location', 'Germany/Bayern/*');
                            define('config_weather_key', '');
                            define('config_phone_service', 'offline');
                            define('config_phone_server', '192.168.x.x');
                            define('config_phone_user', '');
                            define('config_phone_pass', '');
                            define('config_calendar_service', 'google');
                            define('config_calendar_url', 'https://calendar.google.com/calendar/ical/***');
                            define('config_js', 'min.js');
                        
                        ?>

                        Kommentar


                          #13
                          Hast Du das Plugin für die Visu auch eingebunden? Also sowas z.B.:
                          Code:
                          [WebSocket]
                              class_name = WebSocket
                              class_path = plugins.visu_websocket
                          #    ip='0.0.0.0'
                          #    port=2424
                          #    tls = no
                          #    acl = ro
                              
                          [SmartVisu]
                              class_name = SmartVisu
                              class_path = plugins.visu_smartvisu
                          #    smartvisu_dir = False
                          #    handle_widgets = True
                              smartvisu_dir = /var/www/html/smartVISU
                          Und bei der Gelegenheit kannst Du auch evtl. das Backend gleich mit einbinden:
                          Code:
                          [BackendServer]
                              class_name = BackendServer
                              class_path = plugins.backend
                              #ip = xxx.xxx.xxx.xxx
                              port = 8383
                              updates_allowed = True
                              threads = 8
                              user = admin
                              password = xxxx
                              language = de

                          Kommentar


                            #14
                            Ehrlich gesagt weiß ich nicht was ich genau eintragen soll ?!

                            Gibt es dazu keine Anleitung?

                            plugin.conf
                            Code:
                            # plugin.conf
                            [knx]
                               class_name = KNX
                               class_path = plugins.knx
                               host = 127.0.0.1
                               port = 6720
                            #   send_time = 600 # update date/time every 600 seconds, default none
                            #   time_ga = 1/1/1 # default none
                            #   date_ga = 1/1/2 # default none
                            #[ow]
                            #    class_name = OneWire
                            #    class_path = plugins.onewire
                            [visu]
                                class_name = WebSocket
                                class_path = plugins.visu
                                smartvisu_dir = /var/www/html/smartVISU
                            [cli]
                                class_name = CLI
                                class_path = plugins.cli
                                ip = 0.0.0.0
                                update = True
                            [sql]
                                class_name = SQL
                                class_path = plugins.sqlite
                            
                            [WebSocket]
                                class_name = WebSocket
                                class_path = plugins.visu_websocket
                            #    ip='0.0.0.0'
                            #    port=2424
                            #    tls = no
                            #    acl = ro
                                
                            [SmartVisu]
                                class_name = SmartVisu
                                class_path = plugins.visu_smartvisu
                            #    smartvisu_dir = False
                            #    handle_widgets = True
                                smartvisu_dir = /var/www/html/smartVISU
                                
                            [BackendServer]
                                class_name = BackendServer
                                class_path = plugins.backend
                                #ip = xxx.xxx.xxx.xxx
                                port = 8383
                                updates_allowed = True
                                threads = 8
                                user = admin
                                password = xxxx
                                language = de

                            Kommentar


                              #15
                              So sieht es für mich erstmal ok aus. Hast Du mal neu gestartet? Du könntest jetzt mal prüfen, ob Du mit <IP Deines SmartHomeNG>:8383 aufs Backend kommst. Benutzer wäre da admin und Du hast xxxx als Passwort stehen.
                              Dann müßtest Du mal schauen, was jetzt nicht funktioniert. Du kannst auch den Fehlerlog im Backend abrufen und dort mal schauen wo es hakt ...

                              Kommentar

                              Lädt...
                              X