Seite 1 von 1

Systematisch Fehler suchen

Verfasst: 11. Nov 2022 21:01
von fetze82
Hallo openHab Community,

ich hatte gerade das Problem, dass alle meine KNX Devices, abgesehen vom IP Interface, offline angezeigt wurden. Das Proble war wohl, dass ich ein KNX Device angelegt hatte, ohne einen Channel.

Den Fehler habe ich gefunden, weil ich mich erinnert habe, was ich zuletzt gemacht habe. Wie finde ich solch einen Fehler aber systematisch, es war quasi nur ein Zufall, dass ich dies gefunden habe.

Aus dem Log File konnte ich mir keine Info rausziehen.
Wäre super, wenn Ihr mir auf die Sprünge helfen könnten, damit ich solch Probleme in Zukunft systematisch angehen kann.

Anbei das Log.
Wäre echt cool, wenn ich einem Neuling wie mir helfen könnten.
Grüße
Chris

Re: Systematisch Fehler suchen

Verfasst: 12. Nov 2022 14:38
von udo1toni
Nein, das Problem ist nicht, dass Du ein Gerät ohne Channel angelegt hast, oder anders formuliert, ich konnte das so bei mir nicht nachvollziehen.

Das Log beschwert sich sehr eindeutig über eine fehlerhafte GA 99/99/99, allgemein muss die dreiteilige GA sich im Bereich 0/0/0 bis 31/7/255 bewegen, also sechzehn Bit, gruppiert auf 5/3/8 Bit. Die Frage ist also eher, wie Du es geschafft hast, ein Thing anzulegen, ohne Channel (sic!) aber mit einer fehlerhaften GA. Das geht gar nicht... Also: Wie hast Du das Thing erzeugt?

Abgesehen davon läuft die Konfiguration eines neuen Things immer so ab, dass zunächst ein Thing erstellt wird. In dieser Phase kann kein Channel erzeugt werden. Es ist also per Definition immer so, dass Du zumindest zeitweise Things ohne Channel im System hast - soweit es sich um Things handelt, welche vollständig manuell angelegt werden, bei denen man also die Channel ebenfalls selbst erstellen muss.

Ach so... In die Location gehört nicht Deine Adresse, sondern die zugehörigen Koordinaten, konkret dieser String:

Code: Alles auswählen

49.22298210880238, 8.50860499851682
, das entspräche jedenfalls der ungültigen Adresse im Log... ;)

Re: Systematisch Fehler suchen

Verfasst: 16. Nov 2022 07:40
von fetze82
Hallo udo1toni,

danke für deine Antwort.

In meinem Openhab geht so einiges drunter und drüber. Einiges konnte ich gestern finden und korrigieren. Zum Glück habe ich noch nicht so viel angelegt, so dass es noch überschaubar ist.

Das Problem der GA 99/99/99 habe ich jetzt gefunden. Ich hatte alle Channels meines KNX Schaltaktor eingerichtet. Dabei auch Kanälen, welche ich als Reserve habe und denen die GA 99/99/99 gegeben. OK das ist ein Fehler, welche GA vergebe ich dort am besten?

Gestern hatte ich den Effekt, dass ich bei einigen Things was korrigiert habe, diese wurden nach der Änderung als Offline angezeigt. Nach einem OH Reboot waren die Things dann aber wie gehofft wieder Online.

Zweite Frage:
Welche Physikalische "KNX" adresse gebe ich einem KNX Device welches real gar nicht vorhanden ist. Ich hatte die Idee z.B. ein Thing -> "KNX Dummy Meldung" anzulegen mit den Chanels wie z.B. "Fenster EG offen". Bei solch einem KNX Device kann ich die Physikalische Adresse einfach leer lassen, oder? Gibt es einen besseren Weg dafür?

Sorry, ich hab noch viele Wissenslücken. Ihr helft mir aber sehr gut und langsam beginnt es Spaß zu machen.

Aufjedenfall habe ich die log-Ausgabe mit "ip.adresse.Raspi.PI:9001" gefunden, was dann einige Effekte erklärt.

Vielen Danke und einen schönen Tag.
Grüße
Chris

Re: Systematisch Fehler suchen

Verfasst: 16. Nov 2022 23:06
von udo1toni
Du darfst ausschließlich vorhandene Adressen vergeben, und nur beim "Eigentümer" einer Adresse eintragen. Das bedeutet:
  • Ein virtuelles knx Thing (also eines, zu dem es keine reale Hardware gibt) darf keine physikalische Adresse bekommen.
    In dem Zusammenhang möchte ich noch mal darauf hinweisen, dass die physikalische Adresse nur ein nice-to-have ist, sie hat keinerlei Auswirkungen auf den Betrieb von openHAB im Zusammenspiel mit knx.
    Und gleich noch ein weiterer Hinweis: Die Bridge hat ja einen Parameter localSourceAddr. Hierbei handelt es sich nicht um die physikalische Adresse des Gateways, und es darf hier keinesfalls eine tatsächlich vergebene physikalische Adresse eingetragen werden. Stattdessen handelt es sich um die Adresse, welche openHAB verwendet, um mit dem Bus zu sprechen. Diese Adresse taucht also im Busmonitor auf, wenn openHAB sendet.
    Man kann in der ETS ein Fake-Gerät anlegen, dem man dann das Label openHAB verpasst. Dann kann man dort eine freie physikalische Adresse eintragen und diese auch openHAB zuweisen, aber wie gesagt, es darf sich nicht um eine Adresse handeln, die einer Hardware zugeordnet ist, auch nicht eine sekundäre physikalische Adresse des Gateways.
  • Auch bei den GA ist die Zuordnung nicht beliebig. Wie oben erwähnt, nur das Gerät, welchem die Adresse gehört, darf diese hinterlegt haben. Im Allgemeinen ist der Aktor der "Eigentümer" der GA, solange es sich um die Haupt-GA eines KO handelt. Ebenso ist es bei Sensoren. Taster sind nur dann "Eigentümer" einer GA, wenn diese keinem anderen Gerät zugeordnet werden kann und auch nur diesem einen Taster zugeordnet ist. Jede GA sollte möglichst nur einmal in der gesamten openHAB Konfiguration auftauchen, einzige Ausnahme dieser Regel ist die Kurzzeit-Steuerung einer Jalousie, da diese sowohl für die Verstellung des Lamellenwinkels als auch zum Stoppen des Behangs bei Auf-/Abfahrt benötigt wird. Diese GA wird dann aber nur zum Senden in Richtung knx genutzt, deshalb ist es in dem Fall irrelevant.
Beispiel: Du hast zwei Aktorkanäle eines Schaltaktors und drei Taster. Taster 1 steuert Aktorkanal 1, Taster 2 steuert Aktorkanal 2, Taster 3 ist die Funktion Zentral Aus, das heißt, er sendet immer Aus an beide Aktorkanäle.
Gruppenadressen hierfür:
0/0/1 -> Befehl für Kanal 1
0/0/2 -> Befehl für Kanal 2
0/1/1 -> Rückmeldung Zustand Kanal 1
0/1/2 -> Rückmeldung Zustand Kanal 2
15/0/1 -> Zentral Aus

Daraus ergibt sich:
Aktor KO 0 (Schaltbefehl Kanal 1) 0/0/1,15/0/1 K-S-A
Aktor KO 1 (Rückmeldung Kanal 1) 0/1/1 KL-Ü-
Aktor KO 2 (Schaltbefehl Kanal 2) 0/0/2,15/0/1 K-S-A
Aktor KO 3 (Rückmeldung Kanal 2) 0/1/2 KL-Ü-

Taster 1 KO 0 (Kanal 1) 0/0/1,0/1/1 K-SÜA (Toggle)

Taster 2 KO 0 (Kanal 1) 0/0/2,0/1/2 K-SÜA (Toggle)

Taster 3 KO 0 (Kanal 1) 15/0/1 K--Ü- (nur Aus senden)

Die Flags sind die notwendigen (abgesehen vom A-Flag). Allerdins sollte bei den Tastern keinesfalls das L-Flag gesetzt sein. Da Zentral-Aus keine Anzeige hat, muss der Taster auch nicht schreibbar sein. Die Rückmeldungen sind per Definition exklusiv, d.h. nur jeweils ein KO darf überhaupt auf dieser GA senden

openHAB Channel (hier als Textkonfiguration über eine things-Datei):

Code: Alles auswählen

Thing meinAktor "Schaltaktor 6-Kanal" [] {
    Type switch : ch1 "Kanal 1" [ ga="0/0/1+<0/1/1" ]
    Type switch : ch2 "Kanal 2" [ ga="0/0/2+<0/1/2" ]
    Type switch : ch3 "Reserve" [ ga="" ]
}
Thing virtuell "virtuelle Channel" {
    Type switch : allOff "Alles Aus" [ ga="15/0/1" ]
}
das < vor der GA bewirkt, dass openHAB beim Start des Systems einen Read Request auf diese GA sendet. Da die KO des Schaltaktos das L-Flag haben, antwortet der Aktor mit dem aktuellen Zustand und openHAB weiß sofort, ob der Aktorkanal ein- oder ausgeschaltet ist.

Jeder dieser Channel wird mit einem Switch Item verlinkt. Die beiden Items des Schaltaktors bekommen ein normales Widget, in dem der Schaltbefehl ON und OFF ausgelöst und angezeigt werden kann. Das AllOff Item gekommt ein Widget, welches ausschließlich OFF sendet (das ist elementar!).

Das Thing meinAktor ist die Entsprechung des Schaltaktors, es gibt einen Channel pro Schaltkanal (ich lasse hier mal Spezialitäten wie Strommessung weg) Reservechannel kann man gerne anlegen, allerdings entweder a) mit den korrekten, bereits vergebenen GA, oder b) ohne konfigurierte GA. Ich habe bei mir alles über Textdateien definiert, dort sind alle Channel angelegt, aber die Reserven sind auskommentiert. Das geht so über die UI natürlich nicht.

Die Schalter sind in openHAB überhaupt nicht angelegt, nicht mal die Taste Zentral-Aus, die taucht nur als virtueller Channel auf. Per Definition kann Zentral-Aus von beliebig vielen Stellen aus gesendet werden, der Taster ist also nicht zwingend "Eigentümer" der GA. Aber auch der Aktor ist nur ein mögliches Ziel, darf also ebenfalls nicht "Eigentümer" sein.

Die Rückmeldung des Schaltzustands ist übrigens auch in knx selbst nicht optional, denn ein Aktorkanal kann viele verschiedene Befehle empfangen, sei es der exklusive Schaltbefehl (von beliebig vielen Tastern), ein Gruppenbefehl (Zentral Aus), ein Szenenbefehl (separates KO, hier nicht aufgeführt, aber so gut wie jeder Aktor kann das), Zwangsstellung (siehe Szene) oder auch Aktor-intern, z.B. automatisches Ausschalten über Zeit (kann auch so ziemlich jeder Aktor...)
Wenn man normale Wandtaster verwendet, so merkt sich der Taster, welchen Befehl er zuletzt gesendet hat und nimmt beim nächsten Mal das Gegenteil, er sendet also fröhlich ON, OFF, ON, OFF, ... Sobald nun aber weitere Steuerungen dazu kommen, könnte der Schaltaktor (nicht zwingend über die im Taster hinterlegte GA) anderweitig umgeschaltet werden. Wenn der Taster das nicht mitbekommt, wird man beim nächsten Mal zweimal drücken müssen, einmal, um den Taster in die korrekte Schaltstellung zu bringen, ein zweites Mal, um den korrekten Schaltbefehl zum Aktor zu senden. Deshalb ist die Rückmeldung selbst in einem konventionellen knx System (also eines ohne Visu oder zentrale Steuerung) essenziell. Wird - gerade von Hobbyisten - gerne mal falsch gemacht (und ich war da keine Ausnahme...).