Ankündigung

Einklappen
Keine Ankündigung bisher.

SmarthomeNG sendet Wert nicht auf den Bus

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

  • SnoopyFr
    antwortet
    So einfach!
    enforce_updates = True
    Es schein jetzt immer zu gehen !

    Danke!

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Schau mal in der Doku unter enforce_updates nach.

    Einen Kommentar schreiben:


  • SnoopyFr
    antwortet
    Hallo,

    Ich habe SmartVisu+SmartHomeNG und muss Aktion (Bool 1bit) telegram in KNX verschicken, zb (0 nach oben, 1 nach unten) aber das System sendet nur wenn der Wert nicht wie bisher ist.
    Code:
    [[[UpDw]]]
    type=bool
    knx_dpt=1
    knx_send= 1/2/1
    Code:
    {{basic.button('UP', 'xxx.xxx.UpDw', '', 'control_arrow_up.svg', 0) }}
    Danke ins voraus!
    Zuletzt geändert von bmx; 08.12.2020, 20:34. Grund: Bitte [CODE] ... [/CODE] statt [QUOTE] nutzen

    Einen Kommentar schreiben:


  • Art Mooney
    antwortet
    Vielen Dank für die Hilfe!

    Einen Kommentar schreiben:


  • Art Mooney
    antwortet
    Das Logging funktioniert jetzt. Ganz offenbar funktioniert die Logik auch, wie wahrscheinlich schon die ganze Zeit.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Ja. Die Einrückungen bitte beachten ...

    Einen Kommentar schreiben:


  • Art Mooney
    antwortet
    Hi bmx : das wäre für mich sehr hilfreich, auch wenn ich nur die Hälfte von dem verstehe, was Du schreibst. Mit anderen Worten: der fettgedruckte Code muss in der __init__.py hinzugefügt werden, damit ich das geloggt bekomme?

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Ich habe mal eben geschaut: an der Stelle, wo im Plugin ein Update des Items geloggt werden würde steht schlicht kein logging Code.
    Du kannst also beim Besten Willen nichts geloggt bekommen...

    Ich habe das mal im Code etwas erweitert in plugins/knx/__init__.py in der Funktion update_item():

    Code:
        def update_item(self, item, caller=None, source=None, dest=None):
            """
            Item has been updated
    
            This method is called, if the value of an item has been updated by SmartHomeNG.
            It should write the changed value out to the device (hardware/interface) that
            is managed by this plugin.
    
            :param item: item to be updated towards the plugin
            :param caller: if given it represents the callers name
            :param source: if given it represents the source
            :param dest: if given it represents the dest
            """
            if self.has_iattr(item.conf, KNX_SEND):
                if caller != self.get_shortname():
                    for ga in self.get_iattr_value(item.conf, KNX_SEND):
                        self.groupwrite(ga, item(), self.get_iattr_value(item.conf, KNX_DPT))
                        if self.logger.isEnabledFor(logging.DEBUG):
                            self.logger.debug("{}: update for item {}, send value '{}' to group address {}".format(KNX_SEND, item, item(), ga))
            if self.has_iattr(item.conf, KNX_STATUS):
                for ga in self.get_iattr_value(item.conf, KNX_STATUS):  # send status update
                    if ga != dest:
                        self.groupwrite(ga, item(), self.get_iattr_value(item.conf, KNX_DPT))
                        if self.logger.isEnabledFor(logging.DEBUG):
                            self.logger.debug("{}: update for item {}, send value '{}' to group address {}".format(KNX_SEND, item, item(), ga))
    Damit bekomme ich mit meinem ArtMooney Testitem folgendes:

    Code:
    2020-11-21 22:18:32 CET DEBUG __init__ CP Server Thread-18 plugins.knx knx_send: update for item ArtMooney, send value 'True' to group address 8/1/158 -- __init__.py:update_item:682
    2020-11-21 22:19:33 CET DEBUG __init__ items.ArtMooney-Timer plugins.knx knx_send: update for item ArtMooney, send value 'False' to group address 8/1/158 -- __init__.py:update_item:682
    Zuletzt geändert von bmx; 21.11.2020, 22:22.

    Einen Kommentar schreiben:


  • Art Mooney
    antwortet
    So, nun habe ich fast einen ganzen Tag mitgeloggt. Das Problem scheint nicht die Logik zu sein. Das Logging hat mich ja deshalb so beschäftigt, weil ich das Item bzw. die Gruppenadresse im Log nicht gesehen habe und dachte, dass mein Problem damit zusammen hängt. Die eigentliche Funktion habe ich aber nun zum Laufen bekommen.

    Was bleibt ist, die Frage, warum die von der Logik ausgehende Gruppenadresse nicht geloggt wird. Was muss ich denn da noch ändern, damit wirklich alles geloggt wird?

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Dann wäre jetzt ja interessant, was Dein Log zu Deiner Logik erzählt. Vielleicht gibt es ja einen Bug
    oder ein Feature

    Einen Kommentar schreiben:


  • Art Mooney
    antwortet
    Danke. Jetzt scheint es zu funktionieren.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Die Einrückungsebene von plugins.knx: stimmt nicht, das ist bei yaml lebenswichtig
    Ich habe das in meinem Beitrag #11 nochmal deutlicher gemacht.

    Einen Kommentar schreiben:


  • Art Mooney
    antwortet
    Danke, habe den geposteten Code eingefügt.

    Leider wird das nicht umgesetzt. Die Datei smarthome-details.log enthält keine Einträge außer die folgenden:

    Code:
    2020-11-20 22:41:25 CET WARNING  smarthome         Main         The following threads have not been terminated properly by their plugins (please report to the plugin's author):  --  (smarthome.py:stop:689)
    2020-11-20 22:41:25 CET WARNING  smarthome         Main         -Thread: Admin: Update blog links, still alive  --  (smarthome.py:stop:691)
    2020-11-20 22:41:25 CET WARNING  smarthome         Main         SmartHomeNG stopped  --  (smarthome.py:stop:693)
    2020-11-20 22:41:31 CET WARNING  smarthome         Main         --------------------   Init SmartHomeNG 1.7.2.master (3828810e)   --------------------  --  (smarthome.py:__init__:310)
    2020-11-20 22:41:31 CET WARNING  smarthome         Main         Running in Python interpreter 'v3.5.3 final' on Linux-4.9.0-6-amd64-x86_64-with-debian-9.13 (pid=18590)  --  (smarthome.py:__init__:311)
    Logging.yaml sieht also so aus:

    Code:
    version: 1
    disable_existing_loggers: False
    formatters:
        shng_simple:
            format: '%(asctime)s %(levelname)-8s %(name)-19s %(message)s'
            datefmt: '%Y-%m-%d  %H:%M:%S'
        shng_detail:
            format: '%(asctime)s %(levelname)-8s %(module)-17s %(threadName)-12s %(message)s  --  (%(filename)s:%(funcName)s:%(lineno)d)'
            datefmt: '%Y-%m-%d %H:%M:%S %Z'
    handlers:
        console:
            class: logging.StreamHandler
            formatter: shng_detail
            stream: ext://sys.stdout
        shng_warnings_file:
            class: logging.handlers.TimedRotatingFileHandler
            formatter: shng_simple
            level: WARNING
            when: midnight
            backupCount: 7
            filename: ./var/log/smarthome-warnings.log
            encoding: utf8
        shng_details_file:
            class: logging.handlers.TimedRotatingFileHandler
            formatter: shng_detail
            level: DEBUG
            when: midnight
            backupCount: 7
            filename: ./var/log/smarthome-details.log
            encoding: utf8
    loggers:
        __main__:
            level: WARNING
            handlers: [shng_details_file]   
    plugins.knx:
        handlers: [shng_details_file]
        level: DEBUG
        
    #  lib.scheduler:
    #    level: DEBUG
    #  plugins.cli:
    #    level: DEBUG
    
    root:
        level: WARNING
        handlers: [shng_warnings_file]

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Bitte überarbeite Deinen Post oben gemäß Python Code und YAML richtig einfügen sonst macht das einfach keinen Spaß.

    Den Busmonitor brauchst Du IMHO nicht aber

    Code:
    loggers:
        __main__:
            level: WARNING
            handlers: [shng_details_file]   
    
        plugins.knx:
            handlers: [shng_details_file]
            level: DEBUG
    sollte in deiner logging.yaml drinstehen.
    Zuletzt geändert von bmx; 20.11.2020, 23:07.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Du musst im KNX Plugin den Busmonitor aktivieren und im Login natürlich einen Eintrag für das KNX Plugin machen, Level DEBUG. Und nicht auskommentieren.

    Einen Kommentar schreiben:

Lädt...
X