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 (per SSH) eine shell auf den Rechner auf dem alles laufen soll öffnen. Um festzustellen ob SmartHomeNG läuft, kann der folgende Befehl genutzt werden:
ps -ef|grep smarthome|grep bin
Es sollte eine Zeile augegeben werden, die etwa so aussieht:
smartho+ 28373 1 1 12:45 ? 00:00:02 python3 bin/smarthome.py
Die Zeile zeigt an, dass unter dem User smarthome (hier zu smartho+ abgekürzt) unter der PID 28373 seit 12:45 Uhr SmartHomeNG (python3 bin/smarthome.py) ausgeführt wird.
Für SmartHomeNG gilt wie beim Highlander: Es kann nur Einen geben. Daher wird ein Versuch SmartHomeNG aus einer Installation heraus mehrfach zu starten durch SmartHomeNG verhindert.
Falls sich mehrere SmartHomeNG Installationen auf dem Rechner befinden, können diese nur parallel betrieben werden, wenn bei der Konfiguration strikt darauf geachtet wird, dass alle IP Verbindungen der zweiten Instanz auf andere Ports konfiguriert sind. Sonst wird der Start mit Problemen bei der Bindung an die IP quittiert. Das läßt sich gut im Log von erkennen:
<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 und die zwei Instanzen nicht sauber konfiguriert sind. 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 -9 <Prozess-ID>
wobei die <Prozess-ID> aus dem Aufruf ps -ef ersichtlich wird, siehe oben.
SmartHomeNG im Debugmodus starten
Eine einfache Möglichkeit Logeinträge bis zum Level DEBUG zu erhalten, ist es SmartHomeNG im Debug Modus zu starten. Allerdings werden dabei aus allen Komponenten und Plugins die Logausgaben bis zum Level DEBUG erweitert. Dieses führt zu einer sehr großen Anzahl von Log Einträgen und ist deshalb recht unübersichtlich.
Bemerkung
Vorzuziehen ist eine gezielte Aktivierung der DBUG Ausgaben für einzelne Komponenten oder Plugins. Dieses geschieht über die Logging Konfiguration in /etc/logging.yaml bzw. über die GUI des Admin Interfaces.
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. Dieses kann über die GUI des Adminstrations-Interfaces im Item Tree oder mithilfe des Plugins CLI erfolgen. Zur Nutzung von CLI muß zwingend das Plugin installiert und konfiguriert sein.
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