Geschwindigkeit Rega Scripte

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Geschwindigkeit Rega Scripte

Beitrag von Henke » 29.09.2023, 18:47

Das tcl Script läuft nicht auf meiner CCU.

Code: Alles auswählen

wrong # args: should be "read channelId ?numChars?" or "read ?-nonewline? channelId"
    while executing
"read -r -d '' VAR <<- EOM 
jmaus hat geschrieben:
29.09.2023, 17:06
D.h. es werden also run 1,3MB an "&quot;" in der XML Struktur mit zurückgegeben und die müssen wie schon erwähnt ja erst einmal beim Client ankommen
Du unterschätzt die Geschwindigkeit in lokalen Netzen. Es liegt nicht am Datenvolumen.

Um das Datenvolumen gleich zu halten in dem Test "schnell" mehr Write nutzen

Code: Alles auswählen

if ( schnell )
{
Write(out); # &
Write(out); # q
Write(out); # u
Write(out); # o
Write(out); # t
Write(out); # ;
out = "";
}
Bei gleichem Volumen von 1320135 Bytes braucht es bei mir einmal 0.5 sec oder 26.4 sec.

Benutzeravatar
jmaus
Beiträge: 9865
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1883 Mal
Kontaktdaten:

Re: Geschwindigkeit Rega Scripte

Beitrag von jmaus » 29.09.2023, 19:46

Henke hat geschrieben:
29.09.2023, 18:47
Das tcl Script läuft nicht auf meiner CCU.

Code: Alles auswählen

wrong # args: should be "read channelId ?numChars?" or "read ?-nonewline? channelId"
    while executing
"read -r -d '' VAR <<- EOM 
Das ist kein tcl, sondern ein shell skript.
Henke hat geschrieben:
29.09.2023, 18:47
jmaus hat geschrieben:
29.09.2023, 17:06
D.h. es werden also run 1,3MB an "&quot;" in der XML Struktur mit zurückgegeben und die müssen wie schon erwähnt ja erst einmal beim Client ankommen
Du unterschätzt die Geschwindigkeit in lokalen Netzen. Es liegt nicht am Datenvolumen.
Das findet ja sogar auf localhost statt, d.h. geht nirgends über das netzwerk wenn man das innerhalb der CCU aufruft. Und doch, es liegt am Datenvolumen bzw. die Symptome des problems treten mit erhöhtem Datenvolumen auf. Hab mir das auch schon grob mal in der ReGaHss angeschaut, viel Hoffnung hab ich aber nicht da was verbessern zu können. Ich bin noch dran, aber vom Ablauf ist da schon alles ok, nur eben nicht ganz so performant von der generellen herangehensweise. Das alles umzuschreiben und quasi den internen Webserver neu zu gestalten bzw. die Aufbereitung der xml strukturen wäre eine recht große Baustelle die sicherlich so nie aufgemacht werden wird.
Henke hat geschrieben:
29.09.2023, 18:47
Bei gleichem Volumen von 1320135 Bytes braucht es bei mir einmal 0.5 sec oder 26.4 sec.
Wie gesagt, probier mal mein Shellskript auf der CCU aus, das ist ein recht guter testcase für das ganze. Und ich hoffe vielleicht finde ich doch einen Ansatz das irgendwie noch zu beschleunigen. Wer weiss. Am Schluss muss man aber auch bei diesem Ding hier erneut sagen: So wenig wie möglich mit der ReGaHss interagieren ist der bessere Ansatz. Ergo, auf potente Engines/Lösungen wie ioBroker oder HomeAssistant setzen um komplexe Dinge zu machen ist IMHO der bessere Ansatz. Das ist und wird nicht das letzte Problem sein und ich habe ja schon oft betont das die ReGaHss halt einfach ursprünglich nicht dafür designt war/ist für so etwas komplexes, aber eben von eQ3 dafür quasi missbraucht wurde. Und wie man sieht kommt sie an ihre grenzen. Deshalb eine CCU am besten nur als reines Funkgateway nutzen und alle Logiken, komplexe Dinge in potente Engines auslagern und sich drauf beschränken einfach die Geräte und den Status via XMLRPC zu verteilen und gut ist. Und wie man aus diesem Beitrag hier lernt ist es sogar ne gute idee, wenn man hier z.B. den rückgabewert einer so langen variable nicht braucht einfach diese am schluss zu leeren damit die am schluss nicht im xml stream landet.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Geschwindigkeit Rega Scripte

Beitrag von Black » 29.09.2023, 19:59

Aus meiner Erfahung mit der Programmierung des SDV, der ja auch diverse, auch durchaus Grosse Daten mit der CCU austauscht:
ich leere im nicht Debug Modus die Variablen normalerweise am Ende.

"Normale" Vars wie Integer, real, gehen, benutze ich auch zur Datenübergabe.

"Grosse bis sehr grosse Ausgaben brauche ich natürlich auch, dazu nehme ich aber die Ausgabe über WirteLine bzw WriteXML.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Geschwindigkeit Rega Scripte

Beitrag von Henke » 29.09.2023, 20:36

Mit dem folgenden Shell Script:

Code: Alles auswählen

#!/bin/sh                                                                                                                                                 

read -r -d '' VAR <<- EOM
  boolean schnell = true;
  time start = system.Date();
  WriteLine("START: " # start);

  string out = "";
  var ii = 0;
  while ( ii < 2000)
  {
    out  = out # '""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'; ! SLOW
    !out  = out # "''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"; ! SLOW
    !out  = out # ^""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""^; ! SLOW
    !out  = out # 'AAAAAA, BBBBBBBBBBBBB, CCCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDD, EEEEEEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF EEEEEEEEE'; ! FASTEST             
    !out  = out # 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; ! FASTEST             
                                                                                                                                                          
    ii = ii + 1;                                                                                                                                          
  }                                                                                                                                                       
                         
if ( schnell )
{                                                                                                                                 
Write(out); ! &
Write(out); ! q
Write(out); ! u
Write(out); ! o
Write(out); ! t
Write(out); ! ;
  out = "";
}                                                                                                                                                        
  time end = system.Date();                                                                                                                               
  WriteLine("DONE.: " # end);                                                                                                                             
EOM

#echo "${VAR}"
time curl -q http://localhost:8183/hm.exe --data-raw "${VAR}" | wc -c                                                                                                                          
auf meiner CCU3 erst mit false, dann mit true, folgende Ergebnisse:

Code: Alles auswählen

root@ccu3-webui:/usr/local# sh a.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1291k  100 1289k  100  1955  50797     75  0:00:26  0:00:25  0:00:01  347k
real    0m 26.01s
user    0m 0.02s
sys     0m 0.05s
1320275
root@ccu3-webui:/usr/local# sh a.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1291k  100 1289k  100  1954  2842k   4308 --:--:-- --:--:-- --:--:-- 2850k
1320274
real    0m 0.48s
user    0m 0.02s
sys     0m 0.02s
Dein Shell Script lief erst nicht bei mir, da noch Leerzeilen hinter EOM waren.

Mein Hinweis mit:

Code: Alles auswählen

if ( schnell )
{
Write(out); # &
Write(out); # q
Write(out); # u
Write(out); # o
Write(out); # t
Write(out); # ;
out = "";
}
war falsch!!!!
richtig ist:

Code: Alles auswählen

if ( schnell )
{
Write(out); ! &
Write(out); ! q
Write(out); ! u
Write(out); ! o
Write(out); ! t
Write(out); ! ;
out = "";
}
Ich bleibe dabei, es liegt nicht am Datenvolumen.

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: Geschwindigkeit Rega Scripte

Beitrag von [sprotte80] » 29.09.2023, 20:43

Hi
Henke hat geschrieben:
29.09.2023, 18:47
Um das Datenvolumen gleich zu halten in dem Test "schnell" mehr Write nutzen

Code: Alles auswählen

if ( schnell )
{
Write(out); # &
Write(out); # q
Write(out); # u
Write(out); # o
Write(out); # t
Write(out); # ;
out = "";
}
Bei gleichem Volumen von 1320135 Bytes braucht es bei mir einmal 0.5 sec oder 26.4 sec.
kein wunder
Das erzeugt ja nen scriptruntimeerror

Code: Alles auswählen

Sep 29 20:26:11 ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1]   0 0x0000 [0]  61 0x003d [1]   0 0x0000 [2]   0 0x0000 [3]  24 0x0018 [4]   0 0x0000  [ExecError():iseESPexec.cpp:12797]
Sep 29 20:26:11 ReGaHss: ERROR: ScriptRuntimeError: boolean schnell = true;

string out = "";
var ii = 0;
while ( ii < 2000)
{
	out  = out # '"device":{"12345":{"title":"0-Au_en Beleuchtung","mac":"xxxxxxxxxxxxxsss","iface":"HmIP-RF","type":"HmIP-BSM",';
	ii = ii + 1;
}

Write(out);
if ( schnell )
{
  Write(out); # &
  Write(out); # q
  Write(out); # u
  Write(out); # o
  Write(out); # t
  Write(out); # ;
  out = "";
}



 [ExecError():iseESPexec.cpp:12798]

sollte dir ein gescheiter Editor schon beim proggen anzeigen.

Hab den Test von Henke mal auf ner ccu2 mit den hm-internals gemacht.
Dort ist kein unterschied zu merken
liegt an der ccu2 weil auf der ccu3 ist der Unterschied 5sec

mit schnell = true

Code: Alles auswählen

29.09.2023, 18:51:53.652 Vorgang gestartet...
29.09.2023, 18:51:53.669 Anfrage gesendet...
29.09.2023, 18:51:53.672 1. von 3 Versuchen
29.09.2023, 18:51:53.709 Verbindung hergestellt
29.09.2023, 18:51:53.714 Datenversand gestartet - 265
29.09.2023, 18:51:53.717 sende Daten - 265
29.09.2023, 18:51:53.724 Datenversand beendet
29.09.2023, 18:51:53.727 Warte auf Antwort...
29.09.2023, 18:52:02.037 Datenempfang gestartet - 204988
29.09.2023, 18:52:02.047 empfange Daten - 1044
29.09.2023, 18:52:02.052 empfange Daten - 25864
29.09.2023, 18:52:02.060 empfange Daten - 49224
29.09.2023, 18:52:02.065 empfange Daten - 57984
29.09.2023, 18:52:02.070 empfange Daten - 69664
29.09.2023, 18:52:02.080 empfange Daten - 78424
29.09.2023, 18:52:02.085 empfange Daten - 97404
29.09.2023, 18:52:02.090 empfange Daten - 106164
29.09.2023, 18:52:02.095 empfange Daten - 122224
29.09.2023, 18:52:02.102 empfange Daten - 148504
29.09.2023, 18:52:02.107 empfange Daten - 164564
29.09.2023, 18:52:02.115 empfange Daten - 183544
29.09.2023, 18:52:02.130 empfange Daten - 203984
29.09.2023, 18:52:02.377 empfange Daten - 204988
29.09.2023, 18:52:02.400 Datenempfang beendet
29.09.2023, 18:52:02.425 Anfrage beendet
29.09.2023, 18:52:02.650 Vorgang beendet
mit schnell = false

Code: Alles auswählen

29.09.2023, 18:50:12.565 Vorgang gestartet...
29.09.2023, 18:50:12.582 Anfrage gesendet...
29.09.2023, 18:50:12.585 1. von 3 Versuchen
29.09.2023, 18:50:13.395 Verbindung hergestellt
29.09.2023, 18:50:13.400 Datenversand gestartet - 266
29.09.2023, 18:50:13.407 sende Daten - 266
29.09.2023, 18:50:13.417 Datenversand beendet
29.09.2023, 18:50:13.422 Warte auf Antwort...
29.09.2023, 18:50:21.970 Datenempfang gestartet - 409776
29.09.2023, 18:50:21.980 empfange Daten - 2504
29.09.2023, 18:50:21.985 empfange Daten - 25864
29.09.2023, 18:50:21.990 empfange Daten - 28784
29.09.2023, 18:50:21.995 empfange Daten - 37544
29.09.2023, 18:50:22.000 empfange Daten - 41924
29.09.2023, 18:50:22.005 empfange Daten - 52144
29.09.2023, 18:50:22.010 empfange Daten - 55064
29.09.2023, 18:50:22.015 empfange Daten - 62364
29.09.2023, 18:50:22.022 empfange Daten - 76964
29.09.2023, 18:50:22.030 empfange Daten - 85724
29.09.2023, 18:50:22.035 empfange Daten - 101784
29.09.2023, 18:50:22.040 empfange Daten - 110544
29.09.2023, 18:50:22.057 empfange Daten - 130984
29.09.2023, 18:50:22.070 empfange Daten - 155804
29.09.2023, 18:50:22.087 empfange Daten - 179164
29.09.2023, 18:50:22.102 empfange Daten - 203984
29.09.2023, 18:50:22.115 empfange Daten - 227344
29.09.2023, 18:50:22.130 empfange Daten - 250704
29.09.2023, 18:50:22.147 empfange Daten - 274064
29.09.2023, 18:50:22.162 empfange Daten - 297424
29.09.2023, 18:50:22.175 empfange Daten - 322244
29.09.2023, 18:50:22.190 empfange Daten - 347064
29.09.2023, 18:50:22.207 empfange Daten - 364584
29.09.2023, 18:50:22.222 empfange Daten - 389404
29.09.2023, 18:50:22.235 empfange Daten - 409776
29.09.2023, 18:50:22.247 Datenempfang beendet
29.09.2023, 18:50:22.272 Anfrage beendet
29.09.2023, 18:50:22.695 Vorgang beendet
Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Geschwindigkeit Rega Scripte

Beitrag von Henke » 29.09.2023, 20:50

[sprotte80] hat geschrieben:
29.09.2023, 20:43
kein wunder
Das erzeugt ja nen scriptruntimeerro
Ne, das war ohne den Fehler. Nur zur Verdeutlichung warum ich diese Zeilen verwende hatte ich beim posten die # statt ! hinzugefügt.

Benutzeravatar
jmaus
Beiträge: 9865
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1883 Mal
Kontaktdaten:

Re: Geschwindigkeit Rega Scripte

Beitrag von jmaus » 29.09.2023, 22:20

Henke hat geschrieben:
29.09.2023, 20:36
auf meiner CCU3 erst mit false, dann mit true, folgende Ergebnisse:

Code: Alles auswählen

root@ccu3-webui:/usr/local# sh a.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1291k  100 1289k  100  1955  50797     75  0:00:26  0:00:25  0:00:01  347k
real    0m 26.01s
user    0m 0.02s
sys     0m 0.05s
1320275
root@ccu3-webui:/usr/local# sh a.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1291k  100 1289k  100  1954  2842k   4308 --:--:-- --:--:-- --:--:-- 2850k
1320274
real    0m 0.48s
user    0m 0.02s
sys     0m 0.02s
[...]
Ich bleibe dabei, es liegt nicht am Datenvolumen.
Stimmt, dann liegt es nicht am Datenvolumen ansich. Danke für den Test. Dann wird es wie ich ursprünglich bereits vermutet habe an dem escapen/ersetzen der Sonderzeichen wie ' durch "&quote;" liegen. Dann werd ich mir diese Stelle in der ReGa mal in den nächsten Tagen etwas genauer anschauen. Hoffentlich entdecke ich da etwas was diesen Performanceeinbruch erklärt.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Geschwindigkeit Rega Scripte

Beitrag von Henke » 29.09.2023, 22:36

Als Richtung zum suchen hilft vielleicht der Hinweis das ein an die Schnelle Version hinzugefügtes "out = out.Replace( '"', "&quot;");" ziemlich ähnliche Zeiten erzeugt.

Daher würde ich den vermutlichen c Aufruf von replace mit einer c Version davon ersetzen:

Code: Alles auswählen

integer aa = 0;
string out2 = "";
while ( aa < out.Length() )
{
string char =  out.Substr(aa,1);
!WriteLine ( ">" # char # "<" );
  if ( char == '"' )
  {
  out2 = out2 # "&quot;";
  }
  else
  {
  out2 = out2 # char;
  }
aa = aa + 1;
}

Benutzeravatar
jmaus
Beiträge: 9865
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1883 Mal
Kontaktdaten:

Re: Geschwindigkeit Rega Scripte

Beitrag von jmaus » 29.09.2023, 23:11

Henke hat geschrieben:
29.09.2023, 22:36
Als Richtung zum suchen hilft vielleicht der Hinweis das ein an die Schnelle Version hinzugefügtes "out = out.Replace( '"', "&quot;");" ziemlich ähnliche Zeiten erzeugt.
Konkretes Beispielskript bitte.
Henke hat geschrieben:
29.09.2023, 22:36
Daher würde ich den vermutlichen c Aufruf von replace mit einer c Version davon ersetzen:
Wie gesagt, danke für den Hinweis. Ist aber nicht ganz so einfach. Die ReGaHss ist in C++ geschrieben mit recht komplexen Klassenstrukturen und starken Abhängigkeiten in verschiedenste Richtung und da implantiert bzw. ersetzt man nicht einfach so etwas gegen etwas komplett anderes. Aber ich werde den Hinweis zu herzen nehmen wenn ich die Stelle gefunden habe - eine grundsätzliche Idee habe ich schon wo das herkommen kann. Nur eine adequate und für andere Nutzugsszenarien der betroffenen Funktion kompatible Lösung zu finden wird vmtl. nicht so einfach sein..
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Geschwindigkeit Rega Scripte

Beitrag von Henke » 30.09.2023, 00:19

C++ habe ich ein paar Millionen Zeilen in 30+ Jahren geschrieben.
Linux, CCU, Javascript etc. kenne ich erst seid grob einem Jahr.
Ich denke, bei C++ und Stringmanipulation kann ich helfen...

Code: Alles auswählen

#!/bin/sh                                                                                                                                                 

read -r -d '' VAR <<- EOM
  boolean schnell = true;
  time start = system.Date();
  WriteLine("START: " # start);

  string out = "";
  var ii = 0;
  while ( ii < 2000)
  {
    out  = out # '""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'; ! SLOW
    !out  = out # "''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"; ! SLOW
    !out  = out # ^""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""^; ! SLOW
    !out  = out # 'AAAAAA, BBBBBBBBBBBBB, CCCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDD, EEEEEEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF EEEEEEEEE'; ! FASTEST             
    !out  = out # 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; ! FASTEST             
                                                                                                                                                          
    ii = ii + 1;                                                                                                                                          
  }                                                                                                                                                       
                         
if ( schnell )
{                                                                                                                                 
! damit doch wieder langsam
	if ( true)
	{
		out = out.Replace( '"', "&quot;");
		Write (out); ! &
    }
    else
    {
		Write (out); ! &
		Write(out); ! q
		Write(out); ! u
		Write(out); ! o
		Write(out); ! t
		Write(out); ! ;
	}   
  out = "";
}                                                                                                                                                        
  time end = system.Date();                                                                                                                               
  WriteLine("DONE.: " # end);                                                                                                                             
EOM

#echo "${VAR}"
time curl -q http://localhost:8183/hm.exe --data-raw "${VAR}" | wc -c                                                                                                                          

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“