Deaktivierung des Pico C Programms unter Loxone Config v9 und v10

Ältere Versionen des Pico C Programm vor Version 5.5.2 werden beim Neustart des MS, d.h. beim Hochladen einer neuen Konfiguration mit Loxone Config v9 und v10 in bestimmten Fällen deaktiviert. Die Änderung der Konfiguration muss dabei nicht in irgendeinem Zusammenhang mit dem Pico-C Programm stehen, nur der Neustart des MS ist entscheidend.

Leider gibt es von Loxone keinen Hinweis auf die Ursache, warum das Pico C Programm deaktiviert wurde. Eine Erläuterung von Loxone, unter welchen Bedingungen Pico C Programme in der Config v9 und v10 deaktiviert werden, konnte ich bisher auf den Webseiten von Loxone nicht finden. Das Problem tritt nur direkt nach dem Hochladen einer neuen Konfiguration auf den MS auf und nicht während des Betriebs.

Da ich mittlerweile den Miniserver auf v10 aktualisiert habe und bei mir das Problem ebenfalls aufgetreten ist, habe ich mehrere Sicherheitsabfragen und Meldepunkte eingebaut. Nach Auffälligkeiten beim Schreiben, insbesondere beim Start des Programmes habe ich auch hier noch zusätzliche Überprüfungen eingefügt. Jeder Anwender, der ebenfalls Probleme mit der Deaktivierung hat, sollte zuerst prüfen, ob er die aktuelle Version des Programmes im Einsatz hat und ggf. updaten.

Möglicherweise trat der Fehler genau dann auf, wenn nach einem Neustart des MS beim ersten Schreiben der Eingabevariablen ein Schreibfehler bei der Kommunikation mit der Helios Anlage auftrat. Der Schreibvorgang wurde nicht wiederholt und die Werte anschließend ausgelesen. Da zeitgleich mehrere Sicherheitsabfragen in den Code eingebaut wurden und die Funktionen jetzt einen Fehlercode zurückgeben, könnte es auch ein Fehler im Programm an diesen Stellen gewesen sein.

Der Fehler sollte seit der Version 5.5.2 behoben sein. Wer noch so einen Fehler mit einer neueren Version hat, kann die folgenden Hinweise zur Fehlereingrenzung und Ermittlung der Ursache befolgen.

Hinweise zur Erkennung, Eingrenzung des Fehlers und Ermittlung der Ursache

Es gibt seit v5.5.2 den Parameter DEBUG_START. Wenn dieser Parameter auf einen Wert größer als 0 gesetzt wird, dann werden nach dem Starten des Programmes am Anfang bei der Initialisierung detaillierte Meldungen in das Log geschrieben werden. Um den Flash-Speicher im MS zu schonen, werden nur die ersten X Schleifendurchläufe detailliert protokolliert, weil das Problem mit der Deaktivierung nur nach einem Neustart des MS, z.B. beim Hochladen einer neuen Konfiguration auftrat. Nach der voreingestellten Anzahl an Schleifendurchläufen (Wert für den Parameter DEBUG_START) wird das Logging beendet, um eine hohe Schreiblast auf der SD-Karte zu vermeiden.

Wer ebenfalls das Problem hat, kann gerne im Loxforum Hinweise zur Verfügung stellen (Fragenliste vorhanden), die bei der Suche nach der Ursache helfen. Wer Zeit hat, kann sich auch an den Loxone Support wenden, um die Ursache der Deaktivierung herauszufinden. Der Loxone Support kann wahrscheinlich nicht jedes selbstgeschriebene Pico C Programm analysieren, aber ich hatte die Hoffnung, dass der Support zumindest einen Grund für die Deaktivierung zu nennen kann - bisher habe ich leider keine Hinweise von anderen Anwendern erhalten. 

Symptom

Das Pico-C Programm läuft nicht mehr. Der Status (TeQ des Programmbausteins) meldet "Program disabled". In der Loxone Config sind folgende Zeilen am Anfang des Pico-C Programmes ergänzt worden:

Pico-C Programm Helios easyControls
// *** PROGRAM DISABLED *** // This PicoC program caused an error. // Please find and correct the error and remove these three comment lines to enable this PicoC program again. // KWL mit easyControls über Modbus TCP steuern v5.4 ...



Im Loxone Log (/log/def.log), welches z.B. mit FileZilla per FTP aus dem MS ausgelesen werden kann, waren folgende Einträge:

Loxone Log
2018-11-12 00:46:43.251;PRG got restart command 2018-11-11 23:46:48.678;Read network config: IP: 192.168.128.25, Mask: 255.255.255.0, Gateway: 192.168.128.1, NTP: 0.pool.ntp.org 2018-11-12 00:46:51.098;PRG Reboot 10.0.9.24 2018-11-12 00:46:53.004;Loading sps_new.zip - Remove old custom changes 2018-11-12 00:47:00.347;Disabled PicoC program Helios KWL because it caused an error. 2018-11-12 00:47:03.149;PRG start program 2018-11-12 00:47:04.595;RestoreRemanenceState /sys/rem/rem18.xml and /sys/rem/rem118.xml 2018-11-12 00:47:01.473;Rename program /prog/sps_0156_20181112004705.zip 2018-11-12 00:47:04.878;PRG start 1-Wire Extension (Schaltschrank R03 P03 (Loxone 1-Wire Extension)) serial 056c0043 version 9.0.8.22 2018-11-12 00:48:00.008;Warning 503, '@Home' - 'Neustart des Systems', admins, Miniserver (Uuid 039659af-6e35-11df-9d15efc088fafadd) 2018-11-12 00:59:00.018;Warning 506, '@Home' - 'Meldung', admins, Miniserver (Uuid 039659af-6e35-11df-9d15efc088fafadd) 2018-11-12 22:34:20.396;Program send: /prog/sps_0156_20181112004705.zip



Um 00:48:00 (entspricht der drittletzten Meldung im Log) bekam ich per E-Mail die folgende Meldung:

Mindestens ein PicoC-Programm verursacht Fehler und wurde daher deaktiviert.
Bitte prüfen und korrigieren Sie Ihre PicoC Programme.

Seit dem Upgrade auf v10 hat das Pico-C Programm folgende Meldungen/Fehler gesendet:

Meldungen seit Upgrade
2018-11-08 22:30:19.122;PRG Reboot 10.0.9.24 2018-11-08 22:30:33.092;PRG start program 2018-11-08 22:30:30.512;RestoreRemanenceState /sys/rem/rem40.xml and /sys/rem/rem140.xml 2018-11-08 22:30:31.018;Save program 2018-11-08 22:30:35.254;INFO: Helios KWL Modbus TCP start 2018-11-08 22:49:17.735;PRG got restart command 2018-11-08 22:49:30.924;PRG start program 2018-11-08 22:49:37.211;INFO: Helios KWL Modbus TCP start 2018-11-08 22:58:02.869;PRG got restart command 2018-11-08 22:58:16.877;PRG start program 2018-11-08 22:58:23.104;INFO: Helios KWL Modbus TCP start 2018-11-08 22:58:24.400;ERROR: Helios KWL modbusTCP select or write variable v01036=16 failed (0 bytes read) ! 2018-11-08 23:00:36.498;Update Miniserver /update/10000924_Miniserver.upd (force) 2018-11-08 23:01:19.555;Update Miniserver /update/10000924_Miniserver.upd erfolgreich 2018-11-08 23:01:19.873;Reboot Loxone Miniserver 2018-11-08 23:01:40.068;PRG Reboot 10.0.9.24 2018-11-08 23:01:53.666;PRG start program 2018-11-08 23:01:56.176;INFO: Helios KWL Modbus TCP start 2018-11-08 23:01:56.882;ERROR: Helios KWL modbusTCP select or write variable v01035=22 failed (0 bytes read) ! 2018-11-08 23:02:21.651;LNK start update for Extension (MinVersion 9000822, HW Version 0) 2018-11-08 23:04:05.867;PRG start Extension (Schaltschrank R01 P02 (Loxone Extension)) serial 01d8xxxx version 9.0.8.22 2018-11-08 23:04:05.873;PRG start Extension (Schaltschrank R01 P03 (Loxone Extension)) serial 01d8xxxx version 9.0.8.22 2018-11-08 23:04:19.054;LNK update for Extension succeeded (Retried pages: 2) 2018-11-08 23:04:19.294;LNK start update for Dimmer Extension (MinVersion 9000904, HW Version 0) 2018-11-08 23:06:27.239;Warning 502, '@Home' - 'SD-Karte Schreiblast hoch', admins, Miniserver (Uuid 039659af-6e35-11df-9d15efc088fafadd) 2018-11-08 23:06:38.602;PRG start Dimmer Extension (Schaltschrank R04 P03 (Loxone Dimmer Extension)) serial 02d8xxxx version 9.0.9.4 2018-11-08 23:06:38.620;PRG start Dimmer Extension (Schaltschrank R05 P03 (Loxone Dimmer Extension)) serial 02d8xxxx version 9.0.9.4 2018-11-08 23:06:51.711;LNK update for Dimmer Extension succeeded (Retried pages: 2) 2018-11-08 23:06:51.922;LNK start update for Relay Extension (MinVersion 9000822, HW Version 0) 2018-11-08 23:08:16.139;PRG start Relay Extension (Schaltschrank R02 P02 (Loxone Relay Extension)) serial 0bd8xxxx version 9.0.8.22 2018-11-08 23:08:16.145;PRG start Relay Extension (Schaltschrank R02 P01 (Loxone Relay Extension)) serial 0bd8xxxx version 9.0.8.22 2018-11-08 23:08:29.249;LNK update for Relay Extension succeeded (Retried pages: 2) 2018-11-08 23:08:29.483;LNK start update for DMX Extension (MinVersion 9000915, HW Version 0) 2018-11-08 23:10:16.663;PRG start DMX Extension (Schaltschrank R01 P03 (Loxone DMX Extension)) serial 0470xxxx version 9.0.9.15 2018-11-08 23:10:29.769;LNK update for DMX Extension succeeded (Retried pages: 1) 2018-11-08 23:10:30.003;LNK start update for 1Wire Extension (MinVersion 9000822, HW Version 0) 2018-11-08 23:12:23.113;PRG start 1-Wire Extension (Schaltschrank R03 P03 (Loxone 1-Wire Extension)) serial 056cxxxx version 9.0.8.22 2018-11-08 23:12:36.211;LNK update for 1Wire Extension succeeded (Retried pages: 1) 2018-11-08 23:14:00.008;Warning 506, '@Home' - 'Meldung', admins, Miniserver (Uuid 039659af-6e35-11df-9d15efc088fafadd) 2018-11-09 00:15:38.095;ERROR: Helios KWL modbusTCP read variable v01300 - answer too short, only 0 Bytes, <> 2018-11-09 00:15:39.719;ERROR: Helios KWL modbusTCP select or write variable v01301 failed (0 bytes read) ! 2018-11-09 00:15:41.931;ERROR: Helios KWL modbusTCP read variable v01302 - answer too short, only 12 Bytes, <> 2018-11-09 14:25:43.358;ERROR: Helios KWL modbusTCP read variable v00000 - answer too short, only 0 Bytes, <> 2018-11-11 20:49:22.821;PRG got restart command 2018-11-11 20:49:37.664;PRG start program 2018-11-11 20:49:43.167;INFO: Helios KWL Modbus TCP start 2018-11-11 20:49:43.885;ERROR: Helios KWL modbusTCP select or write variable v01035=22 failed (0 bytes read) ! 2018-11-11 21:01:00.006;Warning 506, '@Home' - 'Meldung', admins, Miniserver (Uuid 039659af-6e35-11df-9d15efc088fafadd) 2018-11-12 00:46:43.251;PRG got restart command 2018-11-12 00:46:51.098;PRG Reboot 10.0.9.24 2018-11-12 00:47:00.347;Disabled PicoC program Helios KWL because it caused an error. 2018-11-12 00:47:03.149;PRG start program



Es ist ja sehr fürsorglich von Loxone, dass jetzt der Miniserver fehlerhafte Pico-C Programme erkennt und diese deaktiviert. Sehr unglücklich finde ich aber, dass dies ohne einen erkennbaren Grund passiert und weder im Log noch in der E-Mail ein brauchbarer Hinweis auf den Grund zu finden ist. 

(temporäre) Lösung

Löschen der 3 ersten Zeilen im Pico C Programm über Loxone Config und hochladen der geänderten Konfiguration an den MS. Wer mithelfen möchte, die Problemursache zu finden bzw. einzugrenzen, bitte im vorhandenen Beitrag im Loxforum "Helios KWL (easycontrols) über modbus tcp einbinden" posten. Möglicherweise treten die Probleme immer am Anfang des Pico-C Programmes auf. Daher habe ich testweise am Anfang mehrere Sicherheitsabfragen ergänzt.



UPDATE: Es liegt jetzt die Version 5.5.1 vor, in der etliche Meldungen beim Start des Programms ausgegeben werden. Über diese Meldungen, die im Log protokolliert werden, ist es hoffentlich möglich, den Code, der in bestimmten Fällen für eine Deaktivierung des Programms verantwortlich ist, zu identifizieren. 

UPDATE 2: Nach mehrmaligen Neustarts des MS kurz hintereinander wurde bei mir das Programm mit 5.5.1 deaktiviert. Daraufhin habe ich die Log-Meldungen auf mehrere Schleifendurchläufe ergänzt und festgestellt, dass Fehler beim ersten Schreiben der Eingabewerte ignoriert wurden und damit Variablen erst im nächsten Intervall wieder geschrieben wurden. Hier habe ich die Rückgabewerte der Funktionen überarbeitet. Es liegt jetzt die Version 5.5.2 vor, in der die Überprüfung beim Schreiben von Variablen erweitert wurde.

UPDATE 3: Der Fehler ist in v5.5.2 nicht mehr aufgetreten.

Überprüfungsmöglichkeiten und wichtige Informationen

Über die Meldungen, die im Log protokolliert werden, ist es hoffentlich möglich, den Code, der in bestimmten Fällen für eine Deaktivierung des Programms verantwortlich ist, zu identifizieren. Jeder Anwender, der ebenfalls Probleme hat, ist herzlich eingeladen, die Version zu installieren und die Ausgabe der Meldungspunkte aus dem Log im Loxforum zu posten, wenn bei ihm das Programm deaktiviert wurde.

So sieht das Log aus, wenn das Programm NICHT deaktiviert wurde:

Debug Meldungen des Programms

In dem o.a. Beispiel kann man sehen, dass bei Schreibfehlern gezielt der Schreibvorgang dieser Variable (v00102) wiederholt wird.

Liste von Erkenntnissen, Annahmen und Vermutungen zu dem Problem

  • Auffälligkeit: In meinem Log sind Meldungen mit dem Text "PRG Reboot 10.0.9.24" (oder andere Version seit v9) GENAU DANN zu finden, wenn danach das Programm disabled wird. Bin mir aber noch nicht sicher, was die Meldung genau bedeutet. Vielleicht wird die durch einen weiteren Befehl "in MS speichern" ausgelöst wird, bevor der MS richtig arbeitet oder durch die unbekannte  Erkennungsfunktion von Loxone auf "schlechte" Pico-C Programme, die dann das Pico-C Programm deaktiviert und den MS neu startet. 

  • Vermutung: Das Problem könnte mit der Unterbrechung der TCP Kommunikation zwischen MS und der Lüftungsanlage durch den Loxone Config Befehl "in MS speichern" zusammenhängen. Ein anderes Pico-C Programm von mir, welches keine TCP Stream Funktionen verwendet, hat keine Probleme.