Ankündigung

Einklappen
Keine Ankündigung bisher.

SmartHomeNG Log's in smartVISU anzeigen (SmartHomeNG Monitor)

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

    SmartHomeNG Log's in smartVISU anzeigen (SmartHomeNG Monitor)

    Servus

    Hier nun also ein neuer Thread, weil das mit dem Logo nichts mehr zu tun hat.

    Wie bereits erwähnt, erscheint in der smartVISU, wenn man den Treiber auf SmartHomeNG stellt, links im Seitenmenü der Config-Pages ein neuer Eintrag.

    shnglogo.png
    Hier schon mit neuem Icon und geändertem Text (trivial). Verantwortlich dafür ist die Datei .../pages/base/system.html. Auszug daraus:

    Code:
    {% if config_driver == 'smarthome.py' %}
    <li data-icon="false">[INDENT]<a href="index.php?page=smarthome.py">[/INDENT][INDENT=2]<img class="icon" src="{{ icon0 }}logo_Forum_white.svg" alt="SmartHomeNG" />[/INDENT][INDENT=2]<h3>SmartHomeNG</h3>[/INDENT][INDENT]</a>[/INDENT]
     </li>
    {% endif %}
    Das verweist auf die Datei smarthome.py.html und darin gibt es einige schöne Plots etc., die den Status von SmartHomeNG zeigen. Soweit, so schön und einfach.

    smarthomestatus.png

    Die Seite habe ich schon ein wenig bearbeitet, weil mich Sonnenaufgang, Monduntergang etc. an dieser Stelle nun gar nicht interessieren.
    Die Plots sind kein Thema, kann man nach seinen Bedürfnissen recht einfach anpassen und verwenden die env.system... und env.core... items aus SHNG.
    Allerdings werden noch die alten plot.period Widgets verwendet, die zwar noch funktionieren, aber als deprecated gekennzeichnet sind. Das müsste man mal ändern. Könnte ich machen und dann eine geänderte smarthome.py.html hier rein stellen falls gwünscht, auch wenn vielleicht jeder so seine eigenen Vorstellungen hat, aber ändern kann man es ja immer noch individuell.

    Das eigentliche Problem, was ich noch nicht durchschaut habe, ist die Liste der Logeinträge. Finde ich sehr nützlich, aber was rauskommt ist für mich nicht immer nachvollziehbar.
    Durch die Hilfe von bmx und Msinn ist nun klar, dass das item env.core.log im Itembaum gar nicht erscheint und von einem eigenen Logger nur im Memory versorgt wird, irgendwie gefiltert.

    Was ich dabei noch nicht nachvollziehen konnte:
    Die angezeigten Logeinträge korrespondieren selten bis gar nicht mit den Einträgen in den Log Dateien. Hier mal die aktuelle Log Datei (warnings oder details, sind momentan eh identisch.):

    Code:
    2020-04-15 16:23:02 WARNING modules.admin.api_config Update: self.mqtt_conf = {'module': {'classname': 'Mqtt', 'version': '1.7.0', 'sh_minversion': '1.6a', 'description': {'de': 'Modul implementiert das MQTT Protokoll zur Nutzung in Logiken und Plugins', 'en': 'Module implements the MQTT protocol for use in logics and plugins plugins'}}, 'parameters': {'enabled': {'type': 'bool', 'default': False, 'description': {'de': 'MQTT Unterstützung aktivieren oder deaktivieren', 'en': 'Enable or disable MQTT support'}}, 'broker_host': {'type': 'ip', 'default': '127.0.0.1', 'description': {'de': 'Adresse des MQTT Brokers', 'en': 'Address of MQTT broker'}, 'description_long': {'de': '**Adresse des MQTT Brokers**: Spezifiziert die IP Adresse des MQTT Brokers.\nWenn der MQTT Broker auf dem selben Rechner auf dem auch SmartHomeNG läuft,\nmuss dieser Parameter nicht angegeben werden.\n', 'en': "**Address of MQTT broker**: Specifies the IP adress of the MQTT broker to use.\nIf you use a broker on the computer you are running SmartHomeNG on, you don't\nneed to specify this parameter. In this case it is assumed, that the MQTT broker\nruns on the same machine as SmartHomeNG and 127.0.0.1 (for localhost) is used.\n"}}, 'broker_port': {'type': 'int', 'default': 1883, 'valid_min': 0, 'valid_max': 65535, 'description': {'de': 'Vom Broker benutzter Port', 'en': 'Port used by broker'}, 'description_long': {'de': '**Vom Broker benutzter Port**: Port 1883 und 8883 sind bei der IANA reservierte Ports für MQTT.\\n\n\\n\n- 1883: Der Standard MQTT Port. Er ist bei IANA definiert als **MQTT over TCP**\\n\n- 8883: Der Standard MQTT Port. Er ist bei IANA definiert als **Secure MQTT**\\n\n\\n\nIn einem Standard Setup muss dieser Parameter nicht angegeben werden.\n', 'en': '**Port used by broker**: Port 1883 and 8883 are the IANA reserved ports for MQTT.\\n\n\\n\n- 1883: This is the default MQTT port. It is defined at IANA as MQTT over TCP\\n\n- 8883: This is the default MQTT port for MQTT over TLS. It’s registered at IANA for Secure MQTT\\n\n\\n\nIn a standard setup you should not need to configure this parameter.\n'}}, 'user': {'type': 'str', 'default': '', 'description': {'de': 'Username für das Broker Login (optional)', 'en': 'Username for login to the broker (optional)'}, 'description_long': {'de': 'Username zum Login beim MQTT Broker, falls der Broker für user/password Authentifizierung konfiguriert ist.\\n\n\\n\n**ACHTUNG**: Bis zur Implementierung von TLS, werden Username und Password unverschlüsselt übertragen.\n', 'en': 'Username to login to the MQTT broker, if the broker is configured for user/password authentication.\\n\n\\n\n**NOTICE**: Until Implementation of TLS, username and password are transmitted unencrypted.\n'}}, 'password': {'type': 'str', 'default': '', 'hide': True, 'description': {'de': 'Passwort für das Broker Login (optional)', 'en': 'Password for login to the broker'}, 'description_long': {'de': 'Passwort zum Login beim MQTT Broker, falls der Broker für user/password Authentifizierung konfiguriert ist.\\n\n\\n\n**ACHTUNG**:\\n\n\\n\n- Bis zur Implementierung von TLS, werden Username und Password unverschlüsselt übertragen.\\n\n- Bei der jetzigen Implementierung wird das Passwort in **../etc/plugin.yaml** im Klartext gespeichert.\\n\n\\n\n\\n\n', 'en': 'Password to login to the MQTT broker, if the broker is configured for user/password authentication.\\n\n\\n\n**NOTICE**:\\n\n\\n\n- Until Implementation of TLS, username and password are transmitted unencrypted.\\n\n- At this stage of implementation the Password is stored in the plugin.yaml file as clear text.\\n\n\\n\n\\n\n'}}, 'broker_monitoring': {'type': 'bool', 'default': False, 'description': {'de': 'Ermöglicht das Monitoring einiger Broker Werte durch das Web Interfase.', 'en': 'Enables monitoring some broker data through the web interface.'}}, 'qos': {'type': 'int', 'default': 1, 'valid_list': [0, 1, 2], 'description': {'de': 'Quality of Service', 'en': 'Quality of Service'}, 'description_long': {'de': '**Quality-Of-Service**: QoS definiert den Standard Quality-of-Service Level für die Kommunikation mit dem Broker. Der Level kann durch setzen des ** mqtt_qos** Attributes in den individuellen Items überschrieben werden.\\n\n\\n\nMQTT unterstützt drei Level für den Quality-of-Service (0=at most once, 1=at least once, 2=excactly once). QoS 2 hat den meisten Overhead und sollte nur genutzt werden, wenn unbedingt nötig.\\n\n\\n\nEine gute Erläuterung zu QoS im MQTT Protokoll kann hier gefunden werden: http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels (Englisch).\\n\n', 'en': '**Quality-Of-Service**: qos defines the default quality of service level used when communicating with the broker. It can be overwritten by setting the mqtt_qos attribute on an individual item.\n\n\n\nMQTT supports three levels for Quality-Of-Service (0=at most once, 1=at least once, 2=excactly once). QoS 2 has the most overhead and should be used only if needed.\n\n\n\nA good explanation about Quality-of-Service in MQTT can be found here: http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels.\n\n'}}, 'bool_values': {'type': 'list', 'default': 'None*', 'description': {'de': "Gewünschte Werte (im MQTT Payload) für Publish und Subscribe von boolsche Werten (z.B. ['Falsch','Wahr'])", 'en': "Values (in MQTT payload) for publish and subscribe of boolean values (e.g. ['Wrong','Right'])"}}, 'last_will_topic': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Topic für Last-Will Telegramm', 'en': 'Topic for the last will telegram'}, 'description_long': {'de': '**MQTT testament Message**: Wenn kein **last_will_topic** angegeben wird,\nwird keine MQTT last-will-message gesendet. Als Standard wird eine last-will\nmessage durch den Broker nur versendet wenn die Verbindung des Clients zum Broker\nabbricht (sie also nicht ordnungsgemäß geschlossen wird).\\n\n\\n\n-> Last-will-messages werden mit dem Standard QoS gesendet.\\n\n\\n\nFalls eine birth-message konfiguriert ist, wird die last-will-message mit\ngesetztem retain Flag gesendet und die last-will-message wird auch gesendet\nwenn die Verbindung ordnungsgemäß geschlossen wird (z.B. beim Beenden\nvon SmartHomeNG).\n', 'en': '**MQTT testament message**: if **last_will_topic** is not specified, there will\nbe no MQTT last-will-message sent. As a standard the last-will message will only\nbe sent if the connection to the broker aborts (is not closed in an orderly manner).\\n\n\\n\nLast-will-messages will be sent with the default QoS.\\n\n\\n\nIf you specify a birth-message, the last-will-message will be sent with the\nretain flag set and the last-will-message will also be sent if the connection\nis closed orderly (by shutting down SmartHomeNG).\n'}}, 'last_will_payload': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Payload für die MQTT testament message. Wenn keine **last_will_payload** angegeben wird, wird kein Last-Will Telegramm gesendet.', 'en': 'Payload for the MQTT testament message. If **last_will_payload** is not specified, there will be no last-will message sent.'}}, 'birth_topic': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Topic für das Birth Telegramm', 'en': 'Topic for the birth telegramm'}, 'description_long': {'de': 'Die birth-Message ist das Gegenteil zur MQTT Testament Message und wird gesendet, wenn das Plugin startet. Falls kein **birth_topic** konfiguriert ist, wird das **last_will_topic** auch für die Birth-Message verwendet. Birth-Messages werden mit der Standard QoS und gesetztem Retain Flag gesendet.', 'en': 'The birth message is the opposite to the MQTT Testament message and sent, when the plugin starts up. if birth_topic is not specified, the last_will_topic will be used for the birth message too. Birth-messages will be sent with the default QoS and the retain flag set.'}}, 'birth_payload': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Payload für das Birth Telegramm. Wenn keine birth_payload konfiguriert ist, wird keine Birth Message gesendet. In diesem Fall wird auch keine last-will message gesendet, falls die Verbindung ordnungsgemäß geschlossen wird (beim Beenden von SmartHomeNG).', 'en': 'Payload for the birth telegram. if birth_payload is not specified, no birth message will be sent. In this case there will be no last-will message sent, if the connection is closed orderly (by shutting down SmartHomeNG).'}}}}
    2020-04-15 16:23:02 WARNING modules.admin.api_config Update: ['mqtt'] = ordereddict([('module_name', 'mqtt')])
    2020-04-15 16:23:02 WARNING modules.admin.api_config Update: enabled = None
    2020-04-15 16:23:05 WARNING __main__ SmartHomeNG restarting, initiated by admin interface
    2020-04-15 16:23:11 WARNING __main__ SmartHomeNG stopped
    2020-04-15 16:23:12 WARNING __main__ -------------------- Init SmartHomeNG 1.7.1.master (cf2f7d85) --------------------
    2020-04-15 16:23:12 WARNING __main__ Running in Python interpreter 'v3.7.3 final' (pid=29597) on linux platform
    2020-04-15 16:23:12 WARNING lib.shtime Nutze Feiertage für Land 'DE', Provinz 'BY', State '', 1 benutzerdefinierte Feiertagsdefinition(en) definiert
    2020-04-15 16:23:13 WARNING lib.item load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
    2020-04-15 16:39:40 WARNING modules.admin.api_loggers set_active_logger_level(): logger=logics, level=ERROR
    2020-04-15 16:39:40 WARNING modules.admin.api_loggers set_active_logger_level(): lg=<Logger logics (WARNING)>, lglevel=40
    2020-04-15 16:39:40 WARNING modules.admin.api_loggers load_logging_config: shng_version=None
    2020-04-15 16:39:40 WARNING modules.admin.api_loggers REST_dispatch_execute: logics: 'LoggersController' object has no attribute 'create_backupfile'
    2020-04-15 16:39:43 WARNING modules.admin.api_loggers set_active_logger_level(): logger=logics, level=WARNING
    2020-04-15 16:39:43 WARNING modules.admin.api_loggers set_active_logger_level(): lg=<Logger logics (ERROR)>, lglevel=30
    2020-04-15 16:39:43 WARNING modules.admin.api_loggers load_logging_config: shng_version=None
    2020-04-15 16:39:43 WARNING modules.admin.api_loggers REST_dispatch_execute: logics: 'LoggersController' object has no attribute 'create_backupfile'
    2020-04-15 16:39:45 WARNING modules.admin.api_loggers set_active_logger_level(): logger=logics, level=INFO
    2020-04-15 16:39:45 WARNING modules.admin.api_loggers set_active_logger_level(): lg=<Logger logics (WARNING)>, lglevel=20
    2020-04-15 16:39:45 WARNING modules.admin.api_loggers load_logging_config: shng_version=None
    2020-04-15 16:39:45 WARNING modules.admin.api_loggers REST_dispatch_execute: logics: 'LoggersController' object has no attribute 'create_backupfile'
    2020-04-15 16:39:49 WARNING modules.admin.api_loggers set_active_logger_level(): logger=logics, level=DEBUG
    2020-04-15 16:39:49 WARNING modules.admin.api_loggers set_active_logger_level(): lg=<Logger logics (INFO)>, lglevel=10
    2020-04-15 16:39:49 WARNING modules.admin.api_loggers load_logging_config: shng_version=None
    2020-04-15 16:39:49 WARNING modules.admin.api_loggers REST_dispatch_execute: logics: 'LoggersController' object has no attribute 'create_backupfile'
    2020-04-15 16:39:53 WARNING modules.admin.api_loggers set_active_logger_level(): logger=logics, level=WARNING
    2020-04-15 16:39:53 WARNING modules.admin.api_loggers set_active_logger_level(): lg=<Logger logics (DEBUG)>, lglevel=30
    2020-04-15 16:39:53 WARNING modules.admin.api_loggers load_logging_config: shng_version=None
    2020-04-15 16:39:53 WARNING modules.admin.api_loggers REST_dispatch_execute: logics: 'LoggersController' object has no attribute 'create_backupfile'
    2020-04-15 16:49:01 WARNING modules.admin.api_config Update: self.mqtt_conf = {'module': {'classname': 'Mqtt', 'version': '1.7.0', 'sh_minversion': '1.6a', 'description': {'de': 'Modul implementiert das MQTT Protokoll zur Nutzung in Logiken und Plugins', 'en': 'Module implements the MQTT protocol for use in logics and plugins plugins'}}, 'parameters': {'enabled': {'type': 'bool', 'default': False, 'description': {'de': 'MQTT Unterstützung aktivieren oder deaktivieren', 'en': 'Enable or disable MQTT support'}}, 'broker_host': {'type': 'ip', 'default': '127.0.0.1', 'description': {'de': 'Adresse des MQTT Brokers', 'en': 'Address of MQTT broker'}, 'description_long': {'de': '**Adresse des MQTT Brokers**: Spezifiziert die IP Adresse des MQTT Brokers.\nWenn der MQTT Broker auf dem selben Rechner auf dem auch SmartHomeNG läuft,\nmuss dieser Parameter nicht angegeben werden.\n', 'en': "**Address of MQTT broker**: Specifies the IP adress of the MQTT broker to use.\nIf you use a broker on the computer you are running SmartHomeNG on, you don't\nneed to specify this parameter. In this case it is assumed, that the MQTT broker\nruns on the same machine as SmartHomeNG and 127.0.0.1 (for localhost) is used.\n"}}, 'broker_port': {'type': 'int', 'default': 1883, 'valid_min': 0, 'valid_max': 65535, 'description': {'de': 'Vom Broker benutzter Port', 'en': 'Port used by broker'}, 'description_long': {'de': '**Vom Broker benutzter Port**: Port 1883 und 8883 sind bei der IANA reservierte Ports für MQTT.\\n\n\\n\n- 1883: Der Standard MQTT Port. Er ist bei IANA definiert als **MQTT over TCP**\\n\n- 8883: Der Standard MQTT Port. Er ist bei IANA definiert als **Secure MQTT**\\n\n\\n\nIn einem Standard Setup muss dieser Parameter nicht angegeben werden.\n', 'en': '**Port used by broker**: Port 1883 and 8883 are the IANA reserved ports for MQTT.\\n\n\\n\n- 1883: This is the default MQTT port. It is defined at IANA as MQTT over TCP\\n\n- 8883: This is the default MQTT port for MQTT over TLS. It’s registered at IANA for Secure MQTT\\n\n\\n\nIn a standard setup you should not need to configure this parameter.\n'}}, 'user': {'type': 'str', 'default': '', 'description': {'de': 'Username für das Broker Login (optional)', 'en': 'Username for login to the broker (optional)'}, 'description_long': {'de': 'Username zum Login beim MQTT Broker, falls der Broker für user/password Authentifizierung konfiguriert ist.\\n\n\\n\n**ACHTUNG**: Bis zur Implementierung von TLS, werden Username und Password unverschlüsselt übertragen.\n', 'en': 'Username to login to the MQTT broker, if the broker is configured for user/password authentication.\\n\n\\n\n**NOTICE**: Until Implementation of TLS, username and password are transmitted unencrypted.\n'}}, 'password': {'type': 'str', 'default': '', 'hide': True, 'description': {'de': 'Passwort für das Broker Login (optional)', 'en': 'Password for login to the broker'}, 'description_long': {'de': 'Passwort zum Login beim MQTT Broker, falls der Broker für user/password Authentifizierung konfiguriert ist.\\n\n\\n\n**ACHTUNG**:\\n\n\\n\n- Bis zur Implementierung von TLS, werden Username und Password unverschlüsselt übertragen.\\n\n- Bei der jetzigen Implementierung wird das Passwort in **../etc/plugin.yaml** im Klartext gespeichert.\\n\n\\n\n\\n\n', 'en': 'Password to login to the MQTT broker, if the broker is configured for user/password authentication.\\n\n\\n\n**NOTICE**:\\n\n\\n\n- Until Implementation of TLS, username and password are transmitted unencrypted.\\n\n- At this stage of implementation the Password is stored in the plugin.yaml file as clear text.\\n\n\\n\n\\n\n'}}, 'broker_monitoring': {'type': 'bool', 'default': False, 'description': {'de': 'Ermöglicht das Monitoring einiger Broker Werte durch das Web Interfase.', 'en': 'Enables monitoring some broker data through the web interface.'}}, 'qos': {'type': 'int', 'default': 1, 'valid_list': [0, 1, 2], 'description': {'de': 'Quality of Service', 'en': 'Quality of Service'}, 'description_long': {'de': '**Quality-Of-Service**: QoS definiert den Standard Quality-of-Service Level für die Kommunikation mit dem Broker. Der Level kann durch setzen des ** mqtt_qos** Attributes in den individuellen Items überschrieben werden.\\n\n\\n\nMQTT unterstützt drei Level für den Quality-of-Service (0=at most once, 1=at least once, 2=excactly once). QoS 2 hat den meisten Overhead und sollte nur genutzt werden, wenn unbedingt nötig.\\n\n\\n\nEine gute Erläuterung zu QoS im MQTT Protokoll kann hier gefunden werden: http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels (Englisch).\\n\n', 'en': '**Quality-Of-Service**: qos defines the default quality of service level used when communicating with the broker. It can be overwritten by setting the mqtt_qos attribute on an individual item.\n\n\n\nMQTT supports three levels for Quality-Of-Service (0=at most once, 1=at least once, 2=excactly once). QoS 2 has the most overhead and should be used only if needed.\n\n\n\nA good explanation about Quality-of-Service in MQTT can be found here: http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels.\n\n'}}, 'bool_values': {'type': 'list', 'default': 'None*', 'description': {'de': "Gewünschte Werte (im MQTT Payload) für Publish und Subscribe von boolsche Werten (z.B. ['Falsch','Wahr'])", 'en': "Values (in MQTT payload) for publish and subscribe of boolean values (e.g. ['Wrong','Right'])"}}, 'last_will_topic': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Topic für Last-Will Telegramm', 'en': 'Topic for the last will telegram'}, 'description_long': {'de': '**MQTT testament Message**: Wenn kein **last_will_topic** angegeben wird,\nwird keine MQTT last-will-message gesendet. Als Standard wird eine last-will\nmessage durch den Broker nur versendet wenn die Verbindung des Clients zum Broker\nabbricht (sie also nicht ordnungsgemäß geschlossen wird).\\n\n\\n\n-> Last-will-messages werden mit dem Standard QoS gesendet.\\n\n\\n\nFalls eine birth-message konfiguriert ist, wird die last-will-message mit\ngesetztem retain Flag gesendet und die last-will-message wird auch gesendet\nwenn die Verbindung ordnungsgemäß geschlossen wird (z.B. beim Beenden\nvon SmartHomeNG).\n', 'en': '**MQTT testament message**: if **last_will_topic** is not specified, there will\nbe no MQTT last-will-message sent. As a standard the last-will message will only\nbe sent if the connection to the broker aborts (is not closed in an orderly manner).\\n\n\\n\nLast-will-messages will be sent with the default QoS.\\n\n\\n\nIf you specify a birth-message, the last-will-message will be sent with the\nretain flag set and the last-will-message will also be sent if the connection\nis closed orderly (by shutting down SmartHomeNG).\n'}}, 'last_will_payload': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Payload für die MQTT testament message. Wenn keine **last_will_payload** angegeben wird, wird kein Last-Will Telegramm gesendet.', 'en': 'Payload for the MQTT testament message. If **last_will_payload** is not specified, there will be no last-will message sent.'}}, 'birth_topic': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Topic für das Birth Telegramm', 'en': 'Topic for the birth telegramm'}, 'description_long': {'de': 'Die birth-Message ist das Gegenteil zur MQTT Testament Message und wird gesendet, wenn das Plugin startet. Falls kein **birth_topic** konfiguriert ist, wird das **last_will_topic** auch für die Birth-Message verwendet. Birth-Messages werden mit der Standard QoS und gesetztem Retain Flag gesendet.', 'en': 'The birth message is the opposite to the MQTT Testament message and sent, when the plugin starts up. if birth_topic is not specified, the last_will_topic will be used for the birth message too. Birth-messages will be sent with the default QoS and the retain flag set.'}}, 'birth_payload': {'type': 'str', 'gui_type': 'wide_str', 'default': '', 'description': {'de': 'Payload für das Birth Telegramm. Wenn keine birth_payload konfiguriert ist, wird keine Birth Message gesendet. In diesem Fall wird auch keine last-will message gesendet, falls die Verbindung ordnungsgemäß geschlossen wird (beim Beenden von SmartHomeNG).', 'en': 'Payload for the birth telegram. if birth_payload is not specified, no birth message will be sent. In this case there will be no last-will message sent, if the connection is closed orderly (by shutting down SmartHomeNG).'}}}}
    2020-04-15 16:49:01 WARNING modules.admin.api_config Update: ['mqtt'] = ordereddict([('module_name', 'mqtt')])
    2020-04-15 16:49:01 WARNING modules.admin.api_config Update: enabled = None
    2020-04-15 16:49:04 WARNING __main__ SmartHomeNG restarting, initiated by admin interface
    2020-04-15 16:49:11 WARNING __main__ The following threads have not been terminated properly by their plugins (please report to the plugin's author):
    2020-04-15 16:49:11 WARNING __main__ -Thread: Admin: Update blog links, still alive
    2020-04-15 16:49:11 WARNING __main__ SmartHomeNG stopped
    2020-04-15 16:49:11 WARNING __main__ -------------------- Init SmartHomeNG 1.7.1.master (cf2f7d85) --------------------
    2020-04-15 16:49:11 WARNING __main__ Running in Python interpreter 'v3.7.3 final' (pid=30049) on linux platform
    2020-04-15 16:49:12 WARNING lib.shtime Nutze Feiertage für Land 'DE', Provinz 'BY', State '', 1 benutzerdefinierte Feiertagsdefinition(en) definiert
    2020-04-15 16:49:13 WARNING lib.item load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
    Sind also alles Warnings. Das Problem trat aber auch schon auf, als ich ca. 30 Einträge von Errors und Warnings hatte.
    Angezeigt wird davon momentan exakt die letzte Zeile (siehe weiter oben im Screenshot). Das ist nach jedem Neustart des Cores so. Vermutung: Da ist der Logger noch nicht soweit, dass er die Neustart-Zeilen davor auch schon im Memory hat.
    Von jetzt an, wenn also der Core durchläuft und neue Einträge geschrieben werden, scheint es zu klappen, aber augenscheinlich werden manche Einträge nicht angezeigt, was an einem Filter liegen könnte. Ich hatte z.B. vor ein paar Tagen eine längere Liste von Einträgen in der Visu, die definitiv mit Logeinträgen von den drei letzten Log Dateien (Tage) zumindest partiell übereinstimmten. Aber eben nicht vollständig. Und das nach mehreren Neustarts. Was ja eigentlich nicht sein kann, da das Memory Log dann leer sein müsste, oder? Nach meinem Verständnis müsste er entweder alle Warnings und Errors der letzten Tage anzeigen oder nichts. Natürlich limitiert durch den Parameter der max. Zeilenanzahl.

    Jetzt, wo ich weiß, dass das alles im Memory abläuft, weiß ich auch, warum meine Tests mit den Log Dateien erfolglos waren. Denn was da drin steht (und wieviel) interessiert env.core.log nicht. Um es besser zu verstehen und am Ende vielleicht sogar festzustellen, dass mein Problem gar keins ist, müsste ich mal Logeinträge provozieren, weiß aber grad nicht, wie ich das am geschicktesten anstelle. Also Info, Error, Warning.

    Gruß, Martin

    Angehängte Dateien

    #2
    Da kann ich Dir nicht helfen, da ich den Teil mit dem Logging für smartVISU nicht im Detail kenne (lange vor meiner Zeit entstanden) und ich zurzeit nicht die Zeit habe mich da einzuarbeiten (zumal ich sonst keine Hinweise finde, dass es dort ein flächiges Problem gibt).
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Wie meinst du das mit Logeinträgen provozieren? Das könntest du ganz einfach über eine Logik machen.
      logger.info("Bla") etc.

      Kommentar


        #4
        Achtung beim Ändern: im aktuellen develop heißt die Datei schon "smarthomeNG.html" und es sind bereits kleinere Details verändert.

        Dass plot.period deprecated ist, ist mir neu.

        Gruß
        Wolfram

        Kommentar


          #5
          Onkelandy Jepp, genau so ne Idee hab ich gesucht. Danke. Werde ich mir bei Gelegenheit mal anschauen.

          wvhn Hast recht, da bin ich in plot.html ne Zeile verrutscht. Schon wieder Arbeit gespart

          Im Moment denke ich drüber nach, anstatt env.core.log zu verwenden, lieber direkt auf ein beliebiges SHNG Logfile zuzugreifen. Ansonsten ähnlich wie jetzt. Filename übergeben, Anzahl der Zeilen, Filter für Warnings, Errors, Info auswählbar über Buttons. Nicht sehr viel mehr, denn dann kann man ja das admin Interface von SHNG nutzen.
          Blöd nur, dass ich Javascript nicht kann.

          Kommentar


            #6
            Einen Filter, wie von Msinn im anderen Thread beschrieben, der nur die wichtigsten Meldungen anzeigt, fände ich super. Lass uns doch noch mal prüfen, was da nicht richtig läuft. Und dann könnte man doch einen Link zur Logging-Seite des admin Interface machen, die dann in einem neuen Browsertab geöffnet wird. (nahtlos in einem Frame innerhalb der Smartvisu wäre natürlich cooler, aber das macht zu viel Aufwand.

            Kommentar


              #7
              Ich nehme mir aktuell gerade das operationlog vor. Das memlog Plugin hatte ich schon mal angepasst auf SmartPlugin.

              Kommentar


                #8
                Zitat von wvhn Beitrag anzeigen
                Einen Filter, wie von Msinn im anderen Thread beschrieben, der nur die wichtigsten Meldungen anzeigt, fände ich super. Lass uns doch noch mal prüfen, was da nicht richtig läuft. Und dann könnte man doch einen Link zur Logging-Seite des admin Interface machen, die dann in einem neuen Browsertab geöffnet wird. (nahtlos in einem Frame innerhalb der Smartvisu wäre natürlich cooler, aber das macht zu viel Aufwand.
                Das hört sich sehr gut an.
                Ich komme unter der Woche schlecht dazu was zu testen, aber ich versuche weiter nachzuvollziehen wann was kommt und was nicht.

                Kommentar


                  #9
                  Der Filter ist doch wie ich beschrieb schon da, oder habt ihr im Log in der SV schon mal INFO oder DEBUG Einträge gesehen?
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    Nein, aber umgekehrt halt. Manche Warnings oder Errors sind NICHT aufgetaucht.

                    Kommentar


                      #11
                      Da musst Du schon genauer werden. "Manche" kann ich im Soucecode nicht suchen.
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar


                        #12
                        Darum geht's ja. Mir ist mehr durch Zufall aufgefallen, dass die Ausgabe in der Visu nicht identisch ist mit den Log Dateien. Anfangs wusste ich auch noch nicht, dass das ein ganz anderer Logmechanismus ist. Wenn ich dazu komme, werde ich gerne weiter testen.
                        Nur mal so als Beispiel, weil relativ einfach zu provozieren:

                        Code:
                        2020-04-15 16:49:04 WARNING __main__ SmartHomeNG restarting, initiated by admin interface
                        2020-04-15 16:49:11 WARNING __main__ The following threads have not been terminated properly by their plugins (please report to the plugin's author):
                        2020-04-15 16:49:11 WARNING __main__ -Thread: Admin: Update blog links, still alive
                        2020-04-15 16:49:11 WARNING __main__ SmartHomeNG stopped
                        2020-04-15 16:49:11 WARNING __main__ -------------------- Init SmartHomeNG 1.7.1.master (cf2f7d85) --------------------
                        2020-04-15 16:49:11 WARNING __main__ Running in Python interpreter 'v3.7.3 final' (pid=30049) on linux platform
                        2020-04-15 16:49:12 WARNING lib.shtime Nutze Feiertage für Land 'DE', Provinz 'BY', State '', 1 benutzerdefinierte Feiertagsdefinition(en) definiert
                        2020-04-15 16:49:13 WARNING lib.item load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
                        Alles Warnings. In der Visu gibt es aber ausschließlich die letzte Zeile.

                        ERROR Einträge habe ich leider grad nicht, aber das kommt noch, weil ich sicher in den nächsten Wochen noch genug Mist baue beim Aufbau des neuen Visu-Servers

                        Kommentar


                          #13
                          Bei mir kommen alle Einträge, die ich auch im smarthome-warnings.log habe. Sehen tue ich natürlich nur die letzten 10, da die älteren bereits raus rotiert sind.
                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            #14
                            Ein Log Objekt im klassischen Sinne von Smarthome.py ist eine Queue mit einer maximalen Länge die beim Start vorgegeben wird. Es gibt seitens SHNG in der Nachfolge exakt ein Log das dem SmartHomeNG instrinsisch ist: env.core.log.
                            Wenn man sich bin/smarthome.py genauer ansieht, dann findet man auch, das diesem log ein Handler vorgeschaltet ist, der nur Sachen schlimmer oder gleich Warning loggt, Debug oder Info fällt also raus.
                            Der Vorteil, der sich ergibt, ist die direkte Anzeige in der SmartVisu.
                            Der Nachteil die Begrenztheit auf aktuell 50 Einträge. Im Prinzip dient das ganze zum Anzeigen der schlimmsten auftretenden Fehler. Wer zuviel Mist gebaut hat, dem reicht die Anzeige nicht aus. In SmartVISU kann man die pages\base\smarthomeNG.html in Zeile 70 von 10 Einträgen auf 50 Einträge aufbohren: {{ status.log('log1', 'env.core.log', 50) }}
                            Weil das an sich ein recht schönes Feature ist, gibt es Derivate wie das memlog Plugin oder das operationlog Plugin die die Idee mit der Loganzeige für einige Items in der Visu weiterspinnen.

                            Kommentar


                              #15
                              In der bin/smarthome.py wird für die Übertragung ein spezieller Logger mit Minimumlevel WARNING definiert und als neuer Handler hinzugefügt. Dadurch erhält er alle Logeinträge WARNING und höher.

                              Dadurch entsteht auch das Pseudo-Item 'env.core.log' welches über das Websocket Plugin von der smartVISU angesprochen wird.

                              Code:
                                  def initMemLog(self):
                                      """
                                      This function initializes all needed datastructures to use the (old) memlog plugin
                                      """
                              
                                      self.log = lib.log.Log(self, 'env.core.log', ['time', 'thread', 'level', 'message'], maxlen=self._log_buffer)
                                      _logdate = "%Y-%m-%d %H:%M:%S"
                                      _logformat = "%(asctime)s %(levelname)-8s %(threadName)-12s %(message)s"
                                      formatter = logging.Formatter(_logformat, _logdate)
                                      log_mem = _LogHandler(self.log, self.shtime)
                                      log_mem.setLevel(logging.WARNING)
                                      log_mem.setFormatter(formatter)
                                      logging.getLogger('').addHandler(log_mem)
                              Deshalb kann ich gedanklich nicht nachvollziehen, dass bei Dir Einträge fehlen.
                              Viele Grüße
                              Martin

                              There is no cloud. It's only someone else's computer.

                              Kommentar

                              Lädt...
                              X