Kontrollierter Absturz der CCU2

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

BadenPower

Re: Kontrollierter Absturz der CCU2

Beitrag von BadenPower » 19.09.2017, 09:43

dtp hat geschrieben:Alchy, wie kommst Du auf 5001 Durchläufe?
Seit Beta9 ist die Anzahl der maximalen Schleifendurchläufe von 5000 auf 50000 erhöht worden.
.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Kontrollierter Absturz der CCU2

Beitrag von alchy » 19.09.2017, 10:45

Die zusätzliche 0 hab ich doch glatt übersehen. Man wird alt. :cry:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Kontrollierter Absturz der CCU2

Beitrag von dtp » 19.09.2017, 12:09

Ob 5000 oder 50000, die angezeigte Fehlermeldung

Code: Alles auswählen

Fehler: {"name": "JSONRPCError", "code": 400, "message": "access denied (\"ADMIN\" needed )"}
passt meiner Meinung nach aber nicht zu diesem Sachverhalt. Und wieso hängt sich die RegaHss auf, wenn sie doch eigentlich nur die 50000 Durchläufe abwarten müsste?

Außerdem dürfte das Problem gar nichts mit der while-Schleife zu tun haben. Vielmehr ist die "+ 1" am Ende des zweiten Substrings das Problem, da dieser damit über die Länge des eigentlichen Strings hinaus geht. Aber sowas darf eigentlich nicht zu einem derartigen Verhalten führen, oder?

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Kontrollierter Absturz der CCU2

Beitrag von dtp » 22.09.2017, 07:23

robsdobs hat geschrieben:
dtp hat geschrieben:

Code: Alles auswählen

string message = "<font color=orange>Dies ist ein Test</font>";
message = message.Substr(0,message.Find("<") + 1);
WriteLine(message);
Das Script läuft aber durch.
Hab's noch mal getestet. Leider läuft das Skript im obigen Fall nicht durch. Es gibt auch keine Fehlermeldung. Es passiert einfach nichts. Scheinbar bereiten "<" oder ">" größere Probleme.

Ändere ich die Zeile

Code: Alles auswählen

message = message.Substr(0,message.Find("<") + 1);
dagegen in

Code: Alles auswählen

message = message.Substr(0,message.Find("<"));
und blende damit das "<" aus, funktioniert es.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

BadenPower

Re: Kontrollierter Absturz der CCU2

Beitrag von BadenPower » 22.09.2017, 09:39

dtp hat geschrieben:Leider läuft das Skript im obigen Fall nicht durch. Es gibt auch keine Fehlermeldung. Es passiert einfach nichts. Scheinbar bereiten "<" oder ">" größere Probleme.
Das Skript läuft durch und erzeugt auch die Ausgabe.

Das haben wir schon öfters besprochen.
Dass Du nichts siehst liegt an der nicht-escapeten xml-Ausgabe welche unter Verwendung der WebUI die Ausgabe nicht korrekt darstellen kann.

Schau einmal das Bild an, denn mein HM-CodeEditor zeigt die Ausgabe richtig an:
HM-CodeEditor2.jpg
Ab Beta20 wird es in der WebUI auch angezeigt.
.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Kontrollierter Absturz der CCU2

Beitrag von dtp » 22.09.2017, 19:40

Danke für die Info, BadenPower.

Aber so ganz will es trotzdem nicht.

Bei mir funktioniert z.B. folgendes Übersetzungs-Skript:

Code: Alles auswählen

string message = "<font color=orange>Dies ist ein Test</font>";

while(message.Find("color=") > 0){
  message = message.Replace("font color="#message.Substr(message.Find("color=") + 6, message.Find(">") - message.Find("color=") + 6), "b"); 
}
message = message.Replace("/font", "/b");
WriteLine(message);
Es liefert "<b>Dies ist ein Test</b>"

Das nachfolgende Skript liefert aber keine Ausgabe; weder unter "Skript testen" noch bei der normalen Ausführung:

Code: Alles auswählen

string message = "<font color=orange>Dies</font> ist ein <font color=red>Test</font>";

while(message.Find("color=") > 0){
  message = message.Replace("font color="#message.Substr(message.Find("color=") + 6, message.Find(">") - message.Find("color=") + 6), "b"); 
}
message = message.Replace("/font", "/b");
WriteLine(message);
Dabei sollte es eigentlich "<b>Dies</b> ist ein <b>Test</b>" ausgeben. Wo liegt mein Denkfehler?
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

BadenPower

Re: Kontrollierter Absturz der CCU2

Beitrag von BadenPower » 22.09.2017, 21:31

dtp hat geschrieben:Wo liegt mein Denkfehler?
Ich könnte Dir einfach die Lösung hinknallen, aber ich denke das ist nicht Sinn der Sache.

Zwei Dinge:
1. Überlege einmal, wo message.Find(">") im 2. while-Durchgang das >-Zeichen findet.

2. Du hast durch Deine Fehlberechnung wieder das Problem, dass Deine "Software" die Ausgabe nicht verarbeiten kann.

Das ist die momentane Ausgabe:

Code: Alles auswählen

<b>Dies</b> ist ein <b
Ersetze einfach mal die < durch x und > durch y und füge ein paar zusätzliche WriteLine()s ein:

Code: Alles auswählen

string message = "xfont color=orangeyDiesx/fonty ist ein xfont color=redyTestx/fonty";
WriteLine(message);
while(message.Find("color=") > 0)
{
  WriteLine(message.Find("y"));
  WriteLine(message.Find("color="));
  message = message.Replace("font color=" # message.Substr(message.Find("color=") + 6, message.Find("y") - message.Find("color=") + 6), "b");
  WriteLine(message);
}
message = message.Replace("/font", "/b");
WriteLine(message); 

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Kontrollierter Absturz der CCU2

Beitrag von dtp » 23.09.2017, 12:31

Hallo BadenPower,

vielen Dank für den Zaunpfahl.

Hier mal meine Lösung:

Code: Alles auswählen

string message = "<font color=orange>Dies</font> ist ein <font color=red>Test</font>";
WriteLine(message);
message = message.Replace("</font>", "[/b]");
while(message.Find("color=") > 0){
  message = message.Replace("<font color=" # message.Substr(message.Find("color=") + 6, message.Find(">") - message.Find("color=") + 5), "[b]");
}
message = message.Replace("[", "<"); message = message.Replace("]", ">"); 
WriteLine(message); 
Funktioniert, wie man sieht:
2017-09-23_12h35_55.png
Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“