Ankündigung

Einklappen
Keine Ankündigung bisher.

Items vom KNX werden nicht geupdated bzw. auf den Bus geschrieben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • callidomus
    antwortet
    Hallo,
    Zitat von Robert Beitrag anzeigen
    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

    Schönen Sonntag noch. Ich geh dann mal Joggen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Hi!

    Init rückgängig, die beiden 117 rein: Gleiches Verhalten wie mit 116 ohne "Patch".

    Wäre spannend mal durch den eibd Code zu steigen um zu sehen was es mit synchron/asynchron oder sonstwas auf sich hat...

    Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    kannst Du das bitte noch einmal testen?

    Danke,

    Marcus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    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).

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    So, habe es jetzt - mehr oder minder schön - gelöst.

    Blick ins Debug-Log des eibd (Layer 3 & 4 reichen):

    mit der 116 (Cache)
    Code:
    Layer 4(0010B7C0,518FB3FA) OpenGroupSocket RW
    Layer 3(00064B50,518FB3FA) registerGroup 0010B7C0
    Layer 3(00064B50,518FB3FA) registerGroup 0010B7C0 = 1
    [B][COLOR=Red]Layer 4(0010B7C0,518FB3FA) CloseGroupSocket
    Layer 3(00064B50,518FB3FA) deregisterGroupCallBack 0010B7C0 = 1[/COLOR][/B]
    Layer 4(000B6298,518FB3FA) GroupCacheRead 1/1/14 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.31
    Layer 4(000B6298,518FB3FA) GroupCacheRead 6/2/6 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.165
    Layer 4(000B6298,518FB3FA) GroupCacheRead 6/4/205 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.41
    Layer 4(000B6298,518FB3FA) GroupCacheRead 6/4/204 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.11
    Layer 4(000B6298,518FB3FA) GroupCacheRead 6/4/203 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.11
    Layer 4(000B6298,518FB3FA) GroupCacheRead 6/4/202 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.11
    Layer 4(000B6298,518FB3FA) GroupCacheRead 6/4/201 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.230
    Layer 4(000B6298,518FB3FA) GroupCacheRead 1/2/14 1 0
    Layer 4(000B6298,518FB3FA) GroupCache found: 1.1.31
    ohne die 116:
    Code:
    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]
    Grüße
    Robert

    Einen Kommentar schreiben:


  • Robert
    antwortet
    weiter:

    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?

    Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    danke für den Input. Ich werde mir das mal näher ansehen. Allerdings erst heute Abend.

    bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    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!

    Grüße
    Robert

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    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.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    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...).

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    post bitte mal das Debug-Log mit dem Hex-Output.

    Danke

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Das Einfügen einer Datei mit Onewire-Items ändert nichts - funktioniert dann (ich sehe KNX-Traffic!)

    Das Einfügen einer weiteren Datei "uebergeordnet.conf" mit KNX-Items führt dann dazu, dass kein KNX-Traffic mehr angezeigt wird...

    uebergeordnet.conf (vollständig!)
    Code:
    [Wetterstation]
      [[Stoerung]]
        type = bool
        visu = yes
        knx_dpt = 1
        knx_cache = 6/4/201
     
    [DALI_Gateway]
      [[Stoerungen]]
        [[[DALI]]]
          type = bool
          visu = yes
          knx_dpt = 1
          knx_cache = 6/4/202
        [[[Lampen]]]
          type = bool
          visu = yes
          knx_dpt = 1
          knx_cache = 6/4/203
        [[[EVG]]]
          type = bool
          visu = yes
          knx_dpt = 1
          knx_cache = 6/4/204
     
    [EA_Konzentrator]
      [[Stoerung]]
        type = bool
        visu = yes
        knx_dpt = 1
        knx_cache = 6/4/205
    Scheinbar geht da was kaputt?

    Grüße
    Robert

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von mknx Beitrag anzeigen
    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?
    Ja, korrekt.

    Zitat von mknx Beitrag anzeigen
    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.

    Zitat von mknx Beitrag anzeigen
    Was passiert dann wenn Du Deine Item-Konfigurationen mal aus dem `items` entfernst? Siehst Du dann noch KNX Output?
    JA! - interesanterweise eben auch die GAs die vorher nicht wollten!

    Code:
    2013-05-12 12:37:44,197 SmartHome.py DEBUG    1.1.24 set 1/0/4 to 1 -- __init__.py:parse_telegram:160
    Code:
    [COLOR=red][COLOR=black]2013-05-12 12:37:44,770 SmartHome.py DEBUG    1.1.110 set 1/0/3 to 0 -- __init__.py:parse_telegram:160[/COLOR]
    [COLOR=black]2013-05-12 12:37:44,806 SmartHome.py DEBUG    1.1.24 set 1/0/4 to 0 -- __init__.py:parse_telegram:160[/COLOR]
    [COLOR=black]2013-05-12 12:37:45,375 SmartHome.py DEBUG    1.1.110 set 1/0/3 to 1 -- __init__.py:parse_telegram:160[/COLOR]
    [COLOR=black]2013-05-12 12:37:45,398 SmartHome.py DEBUG    1.1.24 set 1/0/4 to 1 -- __init__.py:parse_telegram:160[/COLOR]
    [COLOR=black]2013-05-12 12:37:45,994 SmartHome.py DEBUG    1.1.110 set 1/0/3 to 0 -- __init__.py:parse_telegram:160[/COLOR]
    [COLOR=black]2013-05-12 12:37:46,030 SmartHome.py DEBUG    1.1.24 set 1/0/4 to 0 -- __init__.py:parse_telegram:160[/COLOR]
    [COLOR=black]2013-05-12 12:37:46,665 SmartHome.py DEBUG    1.1.110 set 1/0/3 to 1 -- __init__.py:parse_telegram:160[/COLOR]
    [/COLOR]

    Zitat von mknx Beitrag anzeigen
    Was passiert wenn Du die anderen Plugins mal auskommentierst und nur das KNX-Plugin läuft? Siehst Du dann noch KNX Output?
    Stell ich erst mal zurück. Ich kommentier jetzt einzeln die Item-Dateien wieder ein... (hatte das ganze Verzeichnis umbenannt/neu erstellt).

    Vielen Dank für Deine Hilfe!

    Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    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.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • TCr82
    antwortet
    hast du mal

    knx_listen = 2/1/130
    knx_init = 2/1/130

    statt

    knx_cache = 1/2/3

    gemacht? Evtl. läuft da was mit dem cache schief?

    Einen Kommentar schreiben:

Lädt...
X