Fehlersuche

Die folgenden Informationen sollen bei der Fehlersuche helfen.

Checkliste für die Fehlersuche

Wenn etwas nach erfolgter Installation nicht funktioniert, kann anhand folgender Punkte geprüft werden, was nicht klappt. Hilfe gibt es auch im Supportforum im KNX-User-Forum im KNX-User-Forum. Aber bitte erstmal alles durchdenken und prüfen. Wenn andere Euch weiterhelfen sollen, dann müsst ihr Informationen beisteuern:

  • Debug Ausgabe anhängen, mindestens bis das Problem ersichtlich geloggt wird. (Dazu SmartHome.py mit der Option -d starten)
  • Error und Warnings soweit möglich bereits vorher beseitigen
  • evtl. die etc/plugin.conf und die items mit denen Euer Problem zusammenhängt
  • Wichtig ist auch u.U. die verwendete Hardware (VM oder Raspi 1, 2, 3) das Betriebssystem (Raspbian, Ubuntu x.y, Debian x.y) und ob eibd oder knxd genutzt werden.

Davor bitte einmal durch diese Liste durcharbeiten.

Läuft SmartHomeNG?

Dazu öffnet ihr (per SSH) eine shell auf den Rechner auf dem alles laufen soll. Gebt an der Shell ein:

ps ax|grep bin/smarthome

In der Ausgabe darauf sollte in etwa folgendes zu finden sein:

 1523 ?        Sl   411:36 python3.4 /usr/local/shng_dev/bin/smarthome.py -d
20079 pts/2    S+     0:00 grep bin/smarthome

Interessant ist die Zeile mit smarthome.py. Im Beispiel läuft smarthome.py bereits und zwar im Debug Modus. Sollte diese oder eine ähnliche Zeile nicht auftauchen, dann ist smarthome.py auch nicht gestartet.

Für SmartHomeNG gilt wie beim Highlander: Es kann nur Einen geben. Daher wird ein Versuch SmartHomeNG mehrfach zu starten immer mit Problemen bei der Bindung an die IP quittiert. Das läßt sich prima im Debuglog sehen:

<Datum + Uhrzeit> ERROR    Connections  WebSocket: problem binding 192.168.x.y:2424 (TCP): [Errno 98] Address already in use
<Datum + Uhrzeit> ERROR    Connections  CLI: problem binding 0.0.0.0:2323 (TCP): [Errno 98] Address already in use

Wenn Fehler dieser Art gezeigt werden dann ist dies ein klares Indiz dafür, das SmartHomeNG bereits läuft. Um SmartHomeNG also im Debugmodus zu starten, muß die laufende Instanz erst beendet werden. Das geht mit smarthome.py -s oder aber man startet auf der Shell

kill <Prozess-ID>

wobei die <Prozess-ID> aus dem Aufruf ps ax ersichtlich wird, siehe oben.

SmartHomeNG im Debugmodus starten

cd /usr/local/smarthome/bin
python3 smarthome.py -d

Jetzt sollte eine Menge an Loggingdaten aufgelistet werden. Der Debugmodus ist die Grundlage für weitere Fehlersuche

Zugriff auf den KNX via eibd

ps ax | grep eibd

Nun sollte so etwas ähnliches gezeigt werden:

smarthome@sh13:~$ ps ax | grep eibd
  908 ?        Ss     1:13 /usr/bin/eibd --daemon --Server --Tunnelling --no-tunnel-client-queuing --Discovery --GroupCache --listen-tcp -d/tmp/eibd.log --pid-file=/var/run/eibd.pid --eibaddr=1.1.208 ipt:<IP der KNX Schnittstelle>
11045 pts/1    S+     0:00 grep --color=auto eibd
smarthome@sh13:~$

Im obigen Fall handelt es sich beim laufenden eibd um eine Installation, die auf eine KNX Schnittstelle zugreift. Wichtig ist hier, das die Zeile /usr/bin/eibd auftaucht. Wenn das der Fall ist, dann läuft der eibd.

Ob der eibd auch schalten kann stellt man fest mit

groupswrite ip:localhost 1/0/170 1

wobei hier 1/0/170 die Gruppenadresse eines Schaltaktors ist, der mit 1 eingeschaltet werden soll.

Zugriff auf den KNX via knxd

Hier hängt die weitere Vorgehensweise davon ab auf welchem System der knxd installiert ist. Bei Ubuntu > 15.x oder Debian 8.x ist die Wahrscheinlichkeit recht hoch, das der Start vom systemd übernommen wurde. Sollte es ein älteres System sein, dann kann es auch sein, das ein herkömmliches Startskript verwendet wurde. In diesem Fall ist die Vorgehensweise wie oben unter eibd, nur das nun synonym dazu knxd benutzt wird.

Für systemd ist es recht einfach festzustellen ob der knxd läuft:

systemctl status

Die Ausgabe sieht dann ähnlich aus wie hier:

smarthome@sh11:~$ systemctl status
● sh11
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Fr 2016-03-11 10:49:08 CET; 2 weeks 1 days ago
   CGroup: /
           ├─1 /sbin/init
           ├─system.slice
           │ ├─avahi-daemon.service
           │ │ ├─463 avahi-daemon: running [sh11.local
           │ │ └─489 avahi-daemon: chroot helpe
           ...
           │ ├─knxd.service
           │ │ └─1204 /usr/bin/knxd -u /tmp/eib -b ipt:<IP der knx Schnittstelle>
           ...
           └─user.slice
             └─user-1000.slice
               ├─session-7.scope
               │ └─2757 python3 ./smarthome.py -d
               ├─user@1000.service
               │ ├─1152 /lib/systemd/systemd --user
               │ └─1153 (sd-pam)
               └─session-1119.scope
                 ├─27926 sshd: smarthome [priv
                 ├─27928 sshd: smarthome@pts/
                 ├─27929 -bash
                 ├─28229 systemctl status
                 └─28230 pager
lines ... -.../<n> (END)

Sollte der knxd.service nicht laufen, so müßt ihr den erstmal in Gang bekommen. Wenn das aber geklappt hat, kann die Funktion des knxd getestet werden z. B. mit (Gruppenadresse = 1/0/170 für einen Schaltaktor mit 1 oder 0=

knxtool groupswrite ip:localhost 1/0/170 1

Sollte sich jetzt nichts tun, dann gibt es irgendwo einen Fehler und alles muß noch einmal geprüft werden. Vielleicht ist der Neustart des knxd vergessen oder beim Erstellen des knxd packages ein Build-Fehler übersehen worden.

Kann SmartHomeNG schalten?

Nun kann geprüft werden, ob sich von SmartHomeNG ein Schaltvorgang auslösen läßt. Dazu muß zwingend das Plugin CLI installiert und konfiguriert sein (ist es bei den existierenden Anleitungen eigentlich immer)

Dazu wird eine zusätzliche Shell eröffnet (Nein, Windows Telnet funktioniert hier nicht) und darin eingegeben

telnet localhost 2323

Nach erfolgreichem Aufbau der Verbindung dann help eingeben.

smarthome@<yourcomputer>:~$ telnet localhost 2323

Trying fe80::c23f:d5ff:fe68:e9ae...
-telnet: connect to address fe80::c23f:d5ff:fe68:e9ae: Connection refused
Trying 127.0.1.1...
Connected to smarthome.local.
Escape character is '^]'.
SmartHomeNG v1.4.0
Enter 'help' for a list of available commands.
CLI > help
h: alias for help
help [group]: show help for group of commands [item, log, logic, scheduler]
if: list the first level items
if [item]: list item and every child item (with values)
ii [item]: dump detail-information about a given item - command alias: dump
il: list all items (with values) - command alias: la
iup: alias for iupdate - command alias: up
iupdate [item] = [value]: update the item with value - command alias: update
ld [logic]: disables logic - command alias: dl
le [logic]: enables logic - command alias: el
li [logic]: logic information - dump details about given logic
ll: list all logics and next execution time - command alias: lo
logc [log]: clean (memory) log
logd [log]: log dump of (memory) log
lr [logic]: reload a logic - command alias: rl
lrr [logic]: reload and run a logic - command alias: rr
lt [logic]: trigger a logic - command alias: tr
rt: return runtime
si [task]: show details for given scheduler task
sl: list all scheduler tasks by name
st: list all scheduler tasks by execution time
tl: list current thread names
quit, q: quit the session
CLI >

Am einfachsten, die Befehle werden mal ausprobiert, z.B. ls um die First Level Items aufzulisten, dann ls item um ein bestimmten item abzufragen und schließlich update item = 1 für z.B. einen Schaltaktor einer Lampe um das Licht anzuschalten.

Wenn es bis hierher geklappt hat, dann ist das Grundsystem funktional.

Kontakt mit SmartVISU

Es ist wichtig für die Fehlersuche SmartHomeNG im Debugmodus zu starten. So kann bequem verfolgt werden, was passiert, wenn z.B. auf der Visu ein Button geklickt wird.

Die häufigsten Fehler sind:

Ursache Fehlerbild Behebungsansatz
Dateiformat der Item-Datei ist nicht im UTF-8 ohne BOM angelegt. Beim Start von SmartHomeNG bricht der Einlesevorgang für die Items in der betreffenden Datei ab und die Items werden nicht angelegt. Per Telnet verbinden und Items auflisten lassen
In der Smartvisu werden bei den Widgets doppelte ID vergeben oder Itemname und ID vertauscht oder aber Leerzeichen innerhalb der ID oder des Itemnamen. Keine Funktion bei einigen Widgets bzw. merkwürdige Seiteneffekte Debug-Ausgabe zeigt zu ändernde Items an, diese auf Plausibilität prüfen
Zugriff auf ein Item ist über die Visu nicht gegeben. Kein Schalten möglich, Werte werden nicht aktualisiert visu_acl: rw oder visu: yes fehlt bei einem Item oder als globales Setting beim Plugin visu_smartvisu

Zugriff auf SH.py via CLI Plugin aus Windows mit putty oder kitty

Für den Zugriff via Telnet auf das CLI Plugin aus Windows, sind einige Dinge zu beachten:

In Putty bitte folgende Settings beachten, damit der Zugriff auf das CLI Plugin funktioniert:

Session:

  • Connection type -> RAW wählen (nicht Telnet!)
  • Host Namen des Servers eintragen, Port 2323 (oder wie er in der plugin.conf konfiguriert ist)<

Terminal:

  • Implicit CR in every LF -> Haken setzen

Connection - Telnet:

  • Keyboard sends Telnet special commands -> Haken setzen
  • Return key sends Telnet New Line instead of ^M -> Haken entfernen

Mehr Informationen zum CLI Plugin unter: CLI

Fehlersuche mit Backend (ab SmartHomeNG v1.2)

Ab Version SmartHomeNG v1.2 gibt es das Plugin Backend. Das Backend Plugin muß in der ../etc/plugin.yaml bzw. ../etc/plugin.conf konfiguriert werden und wird über <ip des SmartHomeNG>:8383 im Browser aufgerufen. Es ist eigentlich selbsterklärend und bildet über den Browser ein mehr Informationen ab als das CLI Plugin.

Mehr Informationen zum Backend Plugin unter: Administrations GUI