Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Items vom KNX werden nicht geupdated bzw. auf den Bus geschrieben
Wäre spannend mal durch den eibd Code zu steigen um zu sehen was es mit synchron/asynchron oder sonstwas auf sich hat...
naja, spannend kann man auch dazu sagen. Das hat mich ein paar Stunden gekostet und paar graue Haare gebracht.
Aber ich bin davon überzeugt den Fehler behoben zu haben. Ein cacheread beendet den Gruppenmonitor. Deshalb muss man es machen bevor der Gruppenmonitor enabled wird.
EDIT: Fix ist in github
also erst einmal vielen Dank für das tolle Debugging. Respekt auch für das lesen von EIBConnection.py. Das zu verstehen ist wirklich keine leichte Kost!
Mit dem self._send(init) wird wohl kein neuer Socket aufgemacht, sondern die bestehende Verbindung resettet. Das kann und soll aber nicht die Lösung sein, da hier wahrscheinlich Pakete verloren gehen. Entferne es bitte zum testen wieder.
Ich bin mir aber nicht so sicher, ob ich nicht evtl. einen Fehler gemacht habe als ich das Plugin vor ein paar Releases überarbeitet habe.
Probier doch bitte mal die beiden '116' in plugins/knx/__init__.py in '117' abzuändern (in groupread und parse_telegram).
Layer 4(0011A8F0,518FB5FF) OpenGroupSocket RW
Layer 3(00064B50,518FB5FF) registerGroup 0011A8F0
Layer 3(00064B50,518FB5FF) registerGroup 0011A8F0 = 1
Layer 4(0011A8F0,518FB5FF) Send GroupSocket T_DATA_XXX_REQ A_GroupValue_Read
Layer 3(00064B50,518FB5FF) Send L_Data low from 0.0.0 to 1/1/15 hops: 07 T_DATA_XXX_REQ A_GroupValue_Read
Layer 3(00064B50,518FB5FF) Recv LPDU: BC 11 00 09 0F F1 00 00 A5 :L_Data low from 1.1.0 to 1/1/15 hops: 07 T_DATA_XXX_REQ A_GroupValue_Read
Layer 3(00064B50,518FB5FF) Recv L_Data low from 1.1.0 to 1/1/15 hops: 07 T_DATA_XXX_REQ A_GroupValue_Read
Layer 4(0011A8F0,518FB5FF) Send GroupSocket T_DATA_XXX_REQ A_GroupValue_Read
Layer 3(00064B50,518FB5FF) Send L_Data low from 0.0.0 to 1/1/14 hops: 07 T_DATA_XXX_REQ A_GroupValue_Read
Layer 4(000B8110,518FB5FF) Recv GroupSocket(002): 00 00
Layer 4(0011A8F0,518FB5FF) Recv GroupSocket(002): 00 00
Layer 3(00064B50,518FB5FF) Recv LPDU: CC :ACK
Layer 4(0011A8F0,518FB5FF) Send GroupSocket T_DATA_XXX_REQ A_GroupValue_Read
Layer 3(00064B50,518FB5FF) Send L_Data low from 0.0.0 to 6/2/6 hops: 07 T_DATA_XXX_REQ A_GroupValue_Read
Layer 4(0011A8F0,518FB5FF) Send GroupSocket T_DATA_XXX_REQ A_GroupValue_Read
Layer 3(00064B50,518FB5FF) Send L_Data low from 0.0.0 to 6/4/205 hops: 07 T_DATA_XXX_REQ A_GroupValue_Read
Layer 4(0011A8F0,518FB5FF) Send GroupSocket T_DATA_XXX_REQ A_GroupValue_Read
Irgendwie wird der überfahren...
Wenn ich jetzt im KNX-Plugin am Ende von "handle_connect" ein wiederholtes init sende, funktioniert es, da er einen neuen Socket? aufmacht. Dann funktioniert alles wie gewünscht...
Code:
def handle_connect(self):
self.discard_buffers()
init = [0, 38, 0, 0, 0]
self._send(init)
self.terminator = 2
self.parse_data = self.parse_length
if self._init_ga != {}:
if self.is_connected:
logger.debug('knx: read init/cache ga')
for ga in self._init_ga:
self.groupread(ga, self._init_ga[ga])
self._init_ga = {}
[B][U][COLOR=Red] self._send(init)[/COLOR][/U][/B]
hab mir EIBConnection.py vom BCUSDK angeschaut - stimmt ja überein. Teilweise blick ich nicht ob 116 oder 117. Paar Debug-Ausgaben - passt aber alles.
Aber: Wenn ich bei laufendem smarthome.py den eibd neustarte, und nach der Unterbrechung die Verbindung wieder hergestellt wird, funktioniert alles wieder. Irgendwie wird also der eibd durcheinander gebracht. Muss evtl. der Cache erst je nach Verbindung eingeschaltet werden?
Hi Nico, da finde ich nur 3 Issues - keiner davon klingt passend?
Also, wenn ich im Plugin "knx_cache" wie "knx_init" behandeln lasse (kein "pkt[1] = 116" beim groupread), funktioniert ALLES - schreiben, lesen. Sprich ich kann über die Visu mein Licht ein- und ausschalten bzw. die Änderungen per realem Taster werden nachvollzogen. Es hängt definitiv an dieser Stelle!
Items vom KNX werden nicht geupdated bzw. auf den Bus geschrieben
Das hört sich nach dem gleichen Problem an, das ich mal hatte (siehe Github Issues). Marcus hatte das mal gefixt und ein kurzer Test hat auch funktioniert. Aber um ehrlich zu sein hab ich das nach dem Test nicht weiter verfolgt und auch nicht mehr verwendet.
Wie gesagt, es wird dann nichts ausgegeben. Die KNX-Pakete werden einfach ignoriert und tauchen im Log nicht auf.
Weiter:
Ersetze ich alle knx_cache gegen knx_listen ODER knx_init (ja, sogar das!) funktioniert es. Schreibe ich nur ein mal knx_cache, funktioniert es nicht mehr.
Was ist der Unterschied? (klar, also das Nutzen des eibd-Cache... - aber wie?)
Kann es sein, dass der parallel laufende wiregated da rumpfuscht?
Grüße
Robert
/edit:
Habe jetzt in der __init__.py vom KNX-Plugin die Zeilen 74/75 auskommentiert, die abhängig von "cache" das an den eibd zu sendende Paket modifiziert. Dann funktioniert es - natürlich wird dann nicht der Cache benutzt... Überlege mittlerweile, ob der eibd irgendwie spinnt?
//edit:
Bevor Nachfragen kommen: eibd 0.0.5, mit Groupcache. Der ist auch enabled und funktioniert (mit Busmonitor und groupcacheread bzw. groucachedis/enable getestet...).
Und mit "Gleichzeitig werden sie auch nicht mehr geschrieben, wenn sie über eine Visu (hier: smartVISU) geändert wurden." meinst Du das sie nicht auf den KNX Bus gesendet werden, oder?
Kannst Du bitte mal in der 'plugins/knx/__init__.py' Zeile 105-110 (Methode collect_incoming_data) die '#' entfernen und bitte auf die Einrückung achten.
Siehst Du dann weiterhin KNX Pakete?
Anfangs beim Init mit Abfrage des Caches sehe ich nun zusätzlich die bin/hex/dez Darstellung der eingehenden Antworten. Im späteren Verlauf wenn ich über die Visu einen Schalter toggle, sehe ich nun aber nichts mehr!
vorher (ohne Modifikation, nur zu Verdeutlichung!):
Code:
2013-05-12 12:25:19,325 SmartHome.py DEBUG 192.168.178.24:49650 sent '{"cmd":"item","id":"Hobbyraum.Deckenlicht","val":"1"}' -- __init__.py:json_parse:257
2013-05-12 12:25:19,341 SmartHome.py INFO Hobbyraum.Deckenlicht = True via Visu 192.168.178.24:49650 -- item.py:_update:214
2013-05-12 12:25:19,798 SmartHome.py DEBUG 192.168.178.24:49650 sent '{"cmd":"item","id":"Hobbyraum.Deckenlicht","val":"0"}' -- __init__.py:json_parse:257
2013-05-12 12:25:19,805 SmartHome.py INFO Hobbyraum.Deckenlicht = False via Visu 192.168.178.24:49650 -- item.py:_update:214
2013-05-12 12:25:20,308 SmartHome.py DEBUG 192.168.178.24:49650 sent '{"cmd":"item","id":"Hobbyraum.Deckenlicht","val":"1"}' -- __init__.py:json_parse:257
2013-05-12 12:25:20,316 SmartHome.py INFO Hobbyraum.Deckenlicht = True via Visu 192.168.178.24:49650 -- item.py:_update:214
Ändere ich die GA über den Bus (realer Lichtschalter) sehe ich so oder so keine Ausgabe.
ja sorry die Plugin.conf habe ich nicht wahrgenommen. Habe den Thread auf dem Handy gelesen und dort nicht gesehen.
Wenn man `knx_cache` oder auch `knx_init`angibt, dann impliziert das `knx_listen`.
Und mit "Gleichzeitig werden sie auch nicht mehr geschrieben, wenn sie über eine Visu (hier: smartVISU) geändert wurden." meinst Du das sie nicht auf den KNX Bus gesendet werden, oder?
Kannst Du bitte mal in der 'plugins/knx/__init__.py' Zeile 105-110 (Methode collect_incoming_data) die '#' entfernen und bitte auf die Einrückung achten.
Siehst Du dann weiterhin KNX Pakete?
Was passiert dann wenn Du Deine Item-Konfigurationen mal aus dem `items` entfernst? Siehst Du dann noch KNX Output?
Was passiert wenn Du die anderen Plugins mal auskommentierst und nur das KNX-Plugin läuft? Siehst Du dann noch KNX Output?
Sorry für die vielen Fragen, aber es schwer den Fehler nachzuvollziehen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: