Mehrere URL's senden

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

dvb
Beiträge: 45
Registriert: 26.07.2015, 11:09
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Mehrere URL's senden

Beitrag von dvb » 02.02.2023, 17:05

Hallo zusammen
Eine URL versende ich wie folgt:

Code: Alles auswählen

string url="http://192.168.XXX.XXX:XXXX/eg_kueche/leave";
system.Exec("wget -q -O /dev/null '"#url#"' &");
Das klappt soweit. Frage wie mache ich es, wenn ich mehrere URL's senden möchte? Gibt es ein einfach Möglichkeit so ähnlich wie:

Code: Alles auswählen

string url1="http://192.168.XXX.XXX:XXXX/eg_kueche/leave";
string url2="http://192.168.XXX.XXX:XXXX/eg_bad/leave";
string url3="http://192.168.XXX.XXX:XXXX/eg_wc/leave";
system.Exec("wget -q -O /dev/null '"#url1#&#url2#&#url3#"' &");
Ein herzliches Dankeschön für jeden Tipp
dvb

McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: Mehrere URL's senden

Beitrag von McPan » 02.02.2023, 17:57

dvb hat geschrieben:
02.02.2023, 17:05
...
Gibt es ein einfach Möglichkeit so ähnlich wie:
...
Wie wär's mit immer schön der Reihe nach?

Code: Alles auswählen

string url="http://192.168.XXX.XXX:XXXX/eg_kueche/leave";
system.Exec("wget -q -O /dev/null '"#url#"' &");
string url="http://192.168.XXX.XXX:XXXX/eg_bad/leave";
system.Exec("wget -q -O /dev/null '"#url#"' &");
string url="http://192.168.XXX.XXX:XXXX/eg_wc/leave";
system.Exec("wget -q -O /dev/null '"#url#"' &");
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD

dvb
Beiträge: 45
Registriert: 26.07.2015, 11:09
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Mehrere URL's senden

Beitrag von dvb » 03.02.2023, 15:31

Hallo Marco
Besten Dank für den Input.
Werde es wohl so machen müssen. Irgendwie schade. Es sind im Ganzen über zehn URL's. Hätte mir gewünscht, dass es eine smartere Lösung gäbe, welche die Systemressourcen weniger belastet.
Besten Dank
dvb

Benutzeravatar
Henke
Beiträge: 1500
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 304 Mal

Re: Mehrere URL's senden

Beitrag von Henke » 03.02.2023, 15:59

Bei 10 würde ich die Werte in einem String sammeln.

string liste = "eg_kueche,eg_bad"; ! und so weiter

dann mit einer Schleife die Liste zur ulr zusammensetzen und diese über wget absetzen.
Wichtig wäre dabei wget mit der nicht warten Option aufzurufen. "-b"

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

Re: Mehrere URL's senden

Beitrag von jmaus » 03.02.2023, 16:03

dvb hat geschrieben:
03.02.2023, 15:31
Es sind im Ganzen über zehn URL's.
Bei einer solch massiven Nutzung von system.Exec() in Kombination mit wget solltest du dringend die timeout optionen von wget auf einen gringen wert (10-15 sekunde ) setzen, da wget standardmäßig AFAIK einen timeout von 900 sekunden hat. Und das bedeutet, sobald der webserver der wget abfrage nucht erreichbar ist hast du 10+ Prozesse die je 900 sekunden darauf warten das der server sich meldet. Und wenn du das dann z.b. regelmäßig lostreten lässt kann es schnell passieren das deine CCU dann überlastet ist mit wartenden prozessen… deshalb IMMER den timeout oaramter bei wget/curl aufrufen nutzen!
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Henke
Beiträge: 1500
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 304 Mal

Re: Mehrere URL's senden

Beitrag von Henke » 03.02.2023, 16:27

Code: Alles auswählen

var ii = 200;
while ( ii > 0  )
{
! Verion 1 - braucht 10 sec
!system.Exec("wget -q -O /dev/null 'http://homematic-forum.de/forum/viewtopic.php?f=19&t=77864' &");

! Version 2 - braucht 7 sec
!system.Exec("wget -b -q -O /dev/null 'http://homematic-forum.de/forum/viewtopic.php?f=19&t=77864'");

! Version 3 - braucht 10 sec
!system.Exec("wget -b --timeout=10 -q -O /dev/null 'http://homematic-forum.de/forum/viewtopic.php?f=19&t=77864' &");

! Version 3 - braucht 7 sec
system.Exec("wget -b --timeout=10 -q -O /dev/null 'http://homematic-forum.de/forum/viewtopic.php?f=19&t=77864'");

ii = ii -1;
}               
timeout kann nicht schaden, aber die -b Option ist wesentlich besser als &

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Mehrere URL's senden

Beitrag von MichaelN » 03.02.2023, 16:35

Und wo ist der Unterschied zwischen den Versionen? Für die Linux Legastheniker unter uns?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Henke
Beiträge: 1500
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 304 Mal

Re: Mehrere URL's senden

Beitrag von Henke » 03.02.2023, 17:00

MichaelN hat geschrieben:
03.02.2023, 16:35
Linux Legastheniker
Da zähle ich mich auch zu.

Der Unterschied ist die Option "-b" und das, für manche magische, "&".
Die Option "-b" teilt dem Programm mit, das es im Hintergrund laufen soll. Damit kann das Programm selber schon entscheiden was zu machen ist.
Mit dem & wird das gesamte Programm in den Hintergrund gestartet. Es selber bekommt die Info nicht.

Wenn ich will, das mein Sohn möglichst schnell wieder zu Hause ist, sag ich ihm das und nicht seiner Freundin. :D
Und da ist der Punkt, wo es egal ist ob es Linux, Windows oder der Sohn ist.

Das die Unterschiede so groß sind, hat mich auch gewundert, aber ich wollte mal testen ob ich die kleine CCU3 mit ein paar tausend Anfragen wirklich stören kann. Zumindest ist es eine Möglichkeit sie dazu zu bringen den Swap mal zu nutzen.

dvb
Beiträge: 45
Registriert: 26.07.2015, 11:09
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Mehrere URL's senden

Beitrag von dvb » 03.02.2023, 17:03

Hallo zusammen
Herzlichen Dank für die Tipps und Hinweise. Das hilft!
Gibt es eine Beschreibung zu den möglichen Parametern von wget? Auf die Schnelle habe ich da nichts gefunden.
Beste Grüsse
dvb


Antworten

Zurück zu „HomeMatic allgemein“