Wie KNX Bus einbinden ?

Begonnen von visionsurfer, 16 Oktober 2016, 09:17:32

Vorheriges Thema - Nächstes Thema

visionsurfer

Guten Morgen,

Ich stelle mir gerade die Frage, wie ich den KNX Bus einbinden kann.

Ich habe ein IP Gateway.

Im Wiki hab ich den Eintrag von KNXd gelesen. Dort steht ja beschrieben wie man das Installiert. Bei mir läuft FHEM auf einem Raspberry. Doch wie geht es weiter? Danach muss das ganze doch noch in FHEM angelegt werden und ich muss doch auch meine Geräte irgendwie anlegen und ansprechen können? Dazu finde ich keine Anleitung oder Tutorial. Nur auf Basis von dem Knx Koppler von Busware. Habe ich aber nicht. Ich nutze ein IP Gateway.

Die Knx Nummern meiner Geräte habe ich. Ich hab vom Elektriker eine lange Liste bekommen.

Doch wie spreche ich die dann an, bzw. definiere ich diese dann, nach dem ich KNXd installiert habe?

Oder bin ich auf dem falschen Weg?

Vielleicht kann ein Knx Profi helfen ?

Grüße
Visionsurfer

visionsurfer

Hallo,

da ich ja ein Fan von ausprobieren bin, hab ich also selbst mal probiert.

Wenn ich es richtig verstanden habe, braucht man KNXd.

Ich habe ja ein Raspberry mit Raspbian Jessie (nicht die lightversion) drauf und FHEM bereits installiert.
Somit hab ich alles wie hier beschrieben ist installiert: http://www.fhemwiki.de/wiki/Knxd

Ich habe nun in den entsprechenden Dateien folgendes stehen:

DAEMON_ARGS="-u /tmp/eib -u /var/run/knx -i -b ipt:192.168.178.223"

und in der anderen Datei:

KNXD_OPTS=="-u /tmp/eib -u /var/run/knx -i -b ipt:192.168.178.223"

Den Rest hab ich dann zu Ende geführt. Also ich zwischendurch mal den Status mit dem Code:

/etc/init.d/knxd status

abgefragt habe, sah es irgendwie noch normal aus.
Zum Schluss hab ich aber ein

sudo reboot

ausgeführt. Als ich mich mit Putty wieder einloggen konnte hab ich den Status Code noch mal eingegeben. Dann kommt eine Fehlermeldung. Bzw. ich denke das es eine Fehlermeldung ist ?
Nun weiß ich leider nicht weiter. In FHEM hab ich noch nichts gemacht, weil ich davon ausgegangen bin, dass es ein Fehlercode ist ?

Siehe Anhang.

Hat noch jemand eine Idee oder kann mir helfen ? Ich hab an anderer Stelle gehört das man gar kein KNXd braucht, wenn man seine Geräte nur steuern will ?

Grüße,
Visionsurfer

Andi291

Abend!

Das ist falsch.
Du benötigst den KNXD - er macht die Brücke zum KNX.

Dann die TUL in der FHEM konfigurieren und die einzelnen Geräte. Lies die Doku zur TUL und zum KNX. Da stehen ausreichend Beispiele drin. Als kompletter Newbie bitte auch mal nach KNX Grundlagen googlen. Gar so trivial isses nicht.

http://fhem.de/commandref_DE.html#doctop

P.S.: Merkt man schon am Wording :-) Der Elektriker hat Dir hoffentlich eine Liste mit Gruppen- und nicht mit Geräteadressen gegeben. Die Geräteadressen sind in erster Näherung nutzlos.

Grüße, Andi

visionsurfer

Hi,

ja sorry ich bin noch kein Profi. Bisher hab ich alles ganz gut hinbekommen.
Ich lese schon das ganze Wochenende, alles was ich zu KNX finden kann. Eigentlich ist ja hier die Wiki auch gut gemacht: http://www.fhemwiki.de/wiki/Knxd
Hab ich alles so ausgeführt.

Doch dann kommt trotzdem die Fehlermeldung. Meiner Meinung steht dort, dass irgendwas nicht läuft.

Wenn ich versuche in FHEM das ganze einzubinden, raucht mein komplettes FHEM ab.

Ich hab dort folgendes eingegeben:

define KNX TUL eibd:localhost 1.1.255

Danach läd sich die Seite einen Wolf und nichts geht mehr. Nur noch Stecker raus hilft.
Also die Datei die vom Elektriker gekommen ist, heißt "Gruppenadresse". Hier mal die Liste im Anhang. Sieht meiner Meinung nach richtig aus. Das will ich ja alles noch gar nicht nutzen. Ich wäre erst mal froh wenn ich es einfach nur hinbekommen könnte, als ersten Schritte eine Lampe an und aus zu schalten.

Kannst du mit der Fehlermeldung aus meinem Screenshot etwas anfangen ? Was bräuchte man noch um der Sache auf den Grund zu gehen ?

Grüße,
Visionsurfer

Andi291

sudo knxd -e 1.1.255 -c -u /tmp/eib -b ipt:192.168.178.228

Und dann in einer anderen putty-instanz mit Groupswrite testen.

Erst wenn das läuft, an den Autostart gehen. Erst wenn auch das mit groupswrite erfolgreich, mit FHEM starten.

Grüße, Andi

visionsurfer

Ich hab dir gerade mal die beiden Configs in dem anderen Thread gepostet.
Da ist doch wahrscheinlich schon grundsätzlich ein Fehler drin, oder ?

Grüße,
Visionsurfer

visionsurfer

Hi Andi,

tut mir leid, wenn ich nerve :) Ich will es doch nur verstehen und muss halt irgendwo anfangen.

Also ich habe den Code von dir eingefügt.

Nach Bestätigung von der Eingabetaste, kam zumindest kein Fehler und es kommt sofort wieder die normale Eingabezeile.

Die ganzen Optionen habe ich mir mittlerweile mit knxd --help anzeigen lassen und angeschaut. Soweit so gut.
Aber was genau hat dein Befehl nun bewirkt ? Weil er springt sofort wieder in die nächste Eingabezeile aber ich sehe nicht, ob irgendwas passiert ist. Was ist nun im Hintergrund passiert ?

Die Optionen von deinem Code hab ich mir durchgelesen. Es wurde eine EIB Adresse zugewiesen und ein Verzeichnis und meine IP Adresse vom Gateway. OK. Und jetzt könnte man das in FHEM einbinden ?

Grüße,
Visionsurfer


Andi291

ps -ef | grep knxd zeigt Dir, dass der knxd nun läuft (vielleicht).

Mit Groupswrite kannst Du Deine Lampen an- und ausschalten.

visionsurfer

Hi,

ok. Da steht bei mir nun folgendes:

pi        1024   996  0 20:58 pts/0    00:00:00 grep --color=auto knxd

Wobei das knxd rot geschrieben ist. Rot sieht für mich nicht gut aus.


Andi291

Rot ist gut. Prozess läuft. Nun mit groupswrite versuchen, eine Lampe zu schalten.
Wenn NIO, dann "kill 1024" und den KNXD mit anderen Parametern starten.

So lange, bis die Lampe geht :-)

visionsurfer

ok. Das ist schon fast Musik in meinen Ohren :)

Hab ich gemacht, wie du gesagt hast. 2. Instanz mit Putty. Dort hab ich dann folgendes eingegeben:

knxtool groupswrite ip:localhost 1/1/13 1

1/1/13 ist meine Esstisch Lampe. 1 müsste ja "ein" bedeuten "0" aus.

Wenn ich den Befehl absende, passiert gar nichts. Lampe schaltet nicht und ich bekomme aber auch keine neue Eingabezeile. Ich muss dann mit STRG+C das ganze abbrechen. Keine Ahnung ob das normal ist ?

Stimmt meine Eingabe soweit ? Wenn ja, liegt es wohl am richten starten von KNXd ?

Grüße,
Visionsurfer

visionsurfer

Zu früh gefreut. Ich kann den Prozess mit kill 1024 nicht beenden.
Wenn ich wieder den Befehl von weiter oben ausführe um zu prüfen ob KNXd läuft, dann steht da eine andere Nummer.
Dann nehme ich wieder die andere Nummer und es geht immer noch nicht, weil er dann sofort wieder eine neue Nummer vergibt.

So geht das Spiel immer weiter.

visionsurfer

Hi,

ich schon wieder :)

Mir ist gerade noch was aufgefallen.

Ich habe den Raspberry komplett neu gestartet. Mit sudo reboot.

Dann hab ich direkt als ersten Befehl:

ps -ef | grep knxd

eingegeben. Normal dürfe doch da nichts angezeigt werden. Weil ich hab doch KNXd noch gar nicht gestartet ? Oder versteh ich da auch was falsch ?

Er zeigt mir auf jeden Fall sofort wieder an:

pi         805   778  0 21:37 pts/0    00:00:00 grep --color=auto knxd

Wobei wieder hinten das knxd in rot angezeigt wird.

Wie kriege ich das gekilled ?

Grüße,
Visionsurfer


visionsurfer

Hi,

ich habe noch mal den KNXd Status abgefragt. Dabei kommt folgendes raus:


pi@raspberrypi:/ $ sudo /etc/init.d/knxd status
● knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; enabled)
   Active: activating (auto-restart) (Result: exit-code) since So 2016-10-16 21:51:17 CEST; 9s ago
  Process: 1024 ExecStart=/usr/bin/knxd $KNXD_OPTS (code=exited, status=1/FAILURE)
Main PID: 1024 (code=exited, status=1/FAILURE)

Okt 16 21:51:17 raspberrypi systemd[1]: Failed to start KNX Daemon.
Okt 16 21:51:17 raspberrypi systemd[1]: Unit knxd.service entered failed state.


Ich verstehe leider nicht, ob im Hintergrund nun noch knxd läuft oder nicht. Weil wenn ich es nicht sauber beendet bekomme, kann ich es ja auch nicht entsprechend starten um mit meinen Werten zu spielen, oder ?

Grüße,
Visionsurfer

visionsurfer

Wenn ich versuche mit knxd stop das ganze zu stoppen, kommt folgende Fehlermeldung:


pi@raspberrypi:/ $ /etc/init.d/knxd stop
[....] Stopping knxd (via systemctl): knxd.serviceFailed to stop knxd.service: Access denied
Warning: Stopping knxd.service, but it can still be activated by:
  knxd.socket
failed!

visionsurfer

Ich gebe für heute erst mal auf.

Ich komme nicht weiter. Keine Ahnung ob KNXd nun gestartet oder gestoppt ist.
Bei fast allen befehlen sehe ich nur Fehlermeldungen. Komisch.

Im schlimmsten Fall installiere ich noch mal eine komplett neue SD Karte.

Vielleicht hat Andi noch eine Idee?

visionsurfer

Ich hab es hier noch mal sauber und neu gemacht. Immerhin bin ich ein bisschen weiter, bzw. sehe, wann es geht und wann nicht:

https://forum.fhem.de/index.php/topic,59125.0.html

Andi291

Abend!

Relativ klar - bei Dir läuft immer noch der knxd.socket und der startet automatisch, wenn ein Gerät eine Kommunikation mit dem Bus versucht.
Also von vorn:

1. sudo systemctl stop knxd.service
2. sudo systemctl stop knxd.socket
3. sudo knxd -t 1023 -e 1.1.255 -c -u /tmp/eib -b ipt:192.168.178.228

Damit laufen nun Traceausgaben mit.

Nun in der zweiten Instanz wieder probieren.

Welches Gerät setzt Du denn als Brücke zum physischen KNX ein?

Andi291

UND BITTE: EIN PROBLEM - EIN THREAD.

Nicht das gleiche Problem in drei Threads behandeln. Davon wird Dir keineswegs schneller geholfen!

Grüße, Andi

visionsurfer

Hi,

ok. Sorry. Machen wir hier weiter ? Ich wollte halt wegen der Übersicht einen sauberen neuen Thread machen.
Geht aber auch hier.

Ich nutze als Schnittstelle folgendes: KNX-Schnittstelle (Gira 216800)

Ich probiere gleich aus, was du geschrieben hast.

Ist es Absicht das du hinten die IP Adresse so hast ? Da muss doch dann meine Adresse von der GIRA Schnittstelle rein, oder ?

Grüße,
Visionsurfer

visionsurfer

Hi,

also ich habe deine drei Befehle wie du oben geschrieben hast, ausgeführt.

Also ich dann den dritten Befehl ausgeführt habe (also KNXd gestartet) kam folgendes:


Layer 3(00F24C70,58051065) Open
Layer 4(00F351F8,58051065) GroupCacheInit


Wenn ich nun aber wieder den KNXd Status abfrage kommt folgendes:


● knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; enabled)
   Active: inactive (dead) since Mo 2016-10-17 19:53:53 CEST; 1min 24s ago
  Process: 796 ExecStart=/usr/bin/knxd $KNXD_OPTS (code=exited, status=0/SUCCESS)
Main PID: 796 (code=exited, status=0/SUCCESS)


Das ist doch nicht richtig, oder doch ? Da steht doch inactiv (dead) ?

Grüße,
Visionsurfer

visionsurfer

Ich hab dann mal wieder in einer zweiten Instanz folgendes probiert:

knxtool groupswrite ip:localhost 1/1/13 1

Dort kommt dann folgendes:

Open failed: Connection refused

Hmmm. Weiter weiß ich jetzt wieder nicht.

Andi291

Zum ersten Post:
DOCH! Der Service ist tot. Ob noch eine knxd-Instanz läuft, siehst Du nur mit ps -ef | grep knxd. Das gehört nun wirklich zu den Grundlagen. Erster Hit bei Google:
https://wiki.ubuntuusers.de/systemd/systemctl/

Zum zweiten Post:
Schonmal dran gedacht, ein sudo voran zu stellen? Immer eine gute Idee, wenn man sehen will, ob ein Rechteproblem vorliegt.

Andi291

#23
...und ja, Du hast recht. Die IP-Adresse muss die des Gateways sein.
Da Du nur ein Gateway hast, und keinen Router, muss auch sichergestellt sein, dass nur EIN Gerät zeitgleich auf die gleiche Punkt-zu-Punkt-Verbindung zugreift. ETS, ... müssen also AUS sein.
Das lässt sich zwar auch umgehen, dafür muss man aber etwas tiefer in die Trickkiste greifen.

Eventuell lohnt sich auch der Versuch, den knxd anstelle mit ipt:x.y.z.a mit ip:224.0.23.12 zu starten. Aber diese Adresse bitte nicht ändern.

visionsurfer

Hi,

ok. Wenn ich ps -ef | grep knxd eingebe, kommt nun noch noch eine Zeile:

pi         902   810  0 20:14 pts/0    00:00:00 grep --color=auto knxd

Vorher standen da immer zwei Zeilen und wie gesagt wenn ich den Status abrufe, steht da inactive (dead), das hört sich für mich komisch an. Aber keine Ahnung.

Egal ob ich:
knxtool groupswrite ip:localhost 1/1/13 1
oder
sudo knxtool groupswrite ip:localhost 1/1/13 1

eingebe. Es kommt immer "open failed: Connection refused". Zumindest passiert was. Aber er schaltet nichts.

Grüße,
Visionsurfer

visionsurfer

ETS ist aus. Bzw. hab ich gar nicht. Hat im Augenblick nur der Elektriker. Ich muss es mir erst noch kaufen.

Ich probiere mal die Unterschiede IP und IPT

Andi291

Probier mal ip:224.0.23.12. Die Adresse darfst aber nicht ändern!

Evtl. solltest Du auch mit chmod dem Ort /tmp/eib Rechte geben...

visionsurfer

Hi,

Danke für deine Mühe.

Leider hilft nichts. Egal was ich mache, wenn ich dann versuche was zu schalten kommt immer:

Open failed: Connection refused

chmod hab ich noch nie gemacht. Ich weiß da fehlen wohl die Grundlagen. Ich bin nun mal ein Windows Kind und kein Linux Mensch :)
Wie kann ich dem Ort /temp/eib die richtigen Rechte geben ?

Auch das ändern der IP, die du mir gegeben hast, brachte nichts.


Andi291


visionsurfer

ok. Danke.
Ja ich muss noch viel lernen.

Führe ich den Befehl direkt vom Hauptverzeichnis aus ?

Weil dann kommt die Meldung:

chmod: Zugriff auf ,,/tmp/eib" nicht möglich: Datei oder Verzeichnis nicht gefunden

Ich werde irre :) Jetzt gibt es das Verzeichnis gar nicht ? Oder führe ich den Befehl nur falsch aus ?

Andi291

Nö, Du irrst nicht. Und das könnte vielleicht schon des Rätsels Lösung sein...

Wie schauts mit -u /run/knx aus? So stehts zumindest bei github...

visionsurfer

Hmmm,

ok. Ich hab im Github folgendes gelesen:


The default Unix socket is /run/knx. Old eibd clients may still use /tmp/eib to talk to knxd. You need to either change their configuration, or add "-u /tmp/eib" to knxd's options. (This was the default for "-u" before version 0.11.)


Doch was bedeutet das ? Und wie kann man es lösen, bzw. probieren, ob das die Ursache ist ?

visionsurfer

ok. Ich glaub ich hab es verstanden.

Ich soll das hier ausprobieren:

sudo knxd -t 1023 -e 1.1.255 -c -u /run/knx -b ipt:192.168.178.223


visionsurfer

Also hab ich probiert. Vorher habe ich erst folgendes gemacht:

sudo chmod 777 /run/knx

Das hat diesmal auch geklappt.

Mit dem ein Posting vorher beschriebenen Befehl hab ich KNXd gestartet. Es kommt dann immer sofort:
Layer 3(0171DC70,58052510) Open
Layer 4(0172E1F8,58052510) GroupCacheInit

Danach wieder in einer zweiten Instanz:

knxtool groupswrite ip:localhost 1/1/13 1

Ich habe auch localhost schon durch 127.0.0.1 und mit sudo und ohne sudo davor.

Es kommt immer:

Open failed: Connection refused

Grüße,
Visionsurfer

visionsurfer

Ich hab gerade noch mal selbst was ausprobiert:

Ich hab in der /etc/knxd.conf folgendes eingetragen:

KNXD_OPTS="-t 1023 -e 1.1.255 -c -u /run/knx -b ipt:192.168.178.223"

Danach hab ich das System neu gebootet. Da kommt dann schon beim Boot Vorgang: Starting KNX Daemon FAILED.
Also scheinbar total falsch, was ich da vor hatte.

Also hab ich es noch mal so probiert:

KNXD_OPTS="-t 1023 -e 1.1.255 -c -u /tmp/eib -b ipt:192.168.178.223"

Kommt aber auch Failed zu start KNX Daemon.

Also hab ich alles wieder rausgenommen und in den Standard gesetzt.



Keine Ahnung. Ich verstehe nicht, warum das bei mir nicht läuft ?

visionsurfer

ANDI, ich dreh durch. ES GEHT !!!!

Ich habe noch weiter google befragt und bin in einem anderen Forum auch einige gestoßen die auch ein Problem haben. Eine hat seine Lösung gepostet und die hab ich ausprobiert. UND ES GEHT.
Ich kann wunderbar mit groupswrite alles quer durch die Reihe schalten. Licht an, Licht aus, Strom an, Strom aus. Herrlich.

Die Lösung:

KNXD_OPTS="-R -S -b ipt:192.168.178.223"

Das steht nun in meiner Config. Ich muss gestehen, dass ich nicht weiß warum es so läuft, aber es läuft. Weißt du warum ?

Wenn ich nun den Status abfrage steht da folgendes sind:


pi@raspberrypi:~ $ systemctl status knxd.service
● knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; enabled)
   Active: active (running) since Mo 2016-10-17 23:17:13 CEST; 41s ago
Main PID: 791 (knxd)
   CGroup: /system.slice/knxd.service
           └─791 /usr/bin/knxd -R -S -b ipt:192.168.178.223


Sieht schon mal viel besser aus, als vorher.

Und nun kann ich mit z.B. knxtool groupswrite ip:localhost 1/1/13 1 wunderbar meine Bürolampe schalten. Ich habe auch schon dutzend andere Lampen probiert. Funktioniert alles.

Weil ich dem Glück nicht getraut habe, habe ich mein System schon mehrfach rebootet. Hier ist noch ein kleines Problem.
Wenn ich mir den Bootvorgang anschauen (ich hab das System noch an einem Monitor) und sehe wie das Raspberry startet, steht ziemlich zum Schluss:

(FAILED) Failed to start KNX Daemon
See "systemctl status knxd.service" for details.

Kannst du mir sagen was das zu bedeuten hat und ob man das noch richtig hinbekommt ?
Weil wenn ich den Befehl eingebe, sieht ja alles richtig aus (siehe oben).

Würde mich freuen, wenn wir den letzten Punkt auch noch in den Griff bekommen und dann kann ich wieder FHEM installieren :)

Grüße,
Visionsurfer

Andi291

Abend!

Im wesentlichen sollte das eigentlich keine Rolle spielen. Mit S startest Du den Serveranteil, mit R startest Du das Routing. Bedeutet über Deinen RPI hast Du nun einen Multicast-Router.
Ich tippe drauf, dass es auch ohne S und R funktioniert.

Da Du bisher aber nur ein Gateway und keinen ROuter im Netz hast, kannst Du die Optionen auch drin lassen.

Bezüglich Deines Startproblemes könnte ich mir ein Problem mit der Startreihenfolge vorstellen.

Bitte

cd /lib/systemd/System
sudo nano knxd.service

In der Sektion Unit sollte stehen

After=Network.target

Wenn dem nicht so ist - bitte versuchen.

Ansonsten mal testweise mit sudo systemctl disable knxd.socket nur den Service starten.

visionsurfer

Hi,

also das Problem scheint sich bisher gelöst zu haben.

Ich habe bisher immer das System nur mit einem Befehl sudo reboot gebootet. Über Nacht hab ich das Gerät vom Strom genommen. Als ich das Gerät heute wieder eingeschaltet habe, war die Fehlanzeige weg. Der Raspberry startet ganz normal und alles läuft. Werden auch keine Fehler mehr angezeigt.

Bin erst mal sehr froh :)

Grüße,
Visionsurfer