Aufruf einer URL

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

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

Re: Aufruf einer URL

Beitrag von alchy » 20.12.2018, 09:35

jmaus hat geschrieben:
19.12.2018, 20:04
Zeig uns mal bitte den exakten String der angeblich mit dem ~ ein Problem haben soll. Deine Beschreibung kann ich leider so nicht nachvollziehen.
Immer wieder das Gleiche. :roll:
Auch wenn FischerICT da leider hin und her springt (wie ich schon moniert hatte), kein Fehlerprotokoll postet, was sicherlich geholfen hätte usw....
Aber es gibt ja nur einen String der ein ~ enthält. Das solltest du doch nachvollziehen können.

Code: Alles auswählen

string url="http://USER:PASSWORT@IP/control/rcontrol?action=customfunction&action=sigout&profile=~Door";
Außerdem, viel schlimmer. Wie schwer kann es denn sein, eine Beschreibung wie:
FischerICT hat geschrieben:
19.12.2018, 16:44
Das Problem ist, dass bei der CCU3 in dem String das Sonderzeichen "~" falsch übergeben wird. Hier kommt ein " an welches den String ungültig macht.
nachzuvollziehen? Ich mach das mal schnell hoffentlich poppofein genug:

Code: Alles auswählen

string stdout;string stderr;
system.Exec("cat /boot/VERSION",&stdout,&stderr);
WriteLine(stdout);
WriteLine("Version: " # dom.Version());
WriteLine("Build: " # dom.BuildLabel());
WriteLine("\r\n Teststart");
string url=" ein ~ wird gewandelt ein & oder ein = bleibt ";
WriteLine(url);
ergibt :

Code: Alles auswählen

VERSION=3.41.11

Version: 2.1.369
Build: R1.00.0388.0203

 Teststart
 ein " wird gewandelt ein & oder ein = bleibt 
oder auch so:
scripttesten~.jpg
und das bestätigt doch die Aussage sehr eindeutig. Ein ~ wird zu einem " interpretiert..

Und klar, wenn der Empfänger im Aufruf
....&profile=~Door
erwartet und im besten Fall ein
....&profile="Door
übergeben wird, dann ist das nun mal falsch und die Meldung ist berechtigt.

PS:
Das war "früher" meines Erachtens nicht so, ich habe aber keinen Bock mehr nachzuschauen ab wann das so ist.
Spielt auch keine Rolle, Alzheimer im Forum ist eh sehr, sehr weit verbreitet. Aktuell auf CCU2 siehe Testscriptausgabe kann ich den Bug nachvollziehen.

PSPS:
Was den Hinweis von 66er angeht.
Die Aussage ist nicht ganz richtig. Da geht es um problematische Sonderzeichen bei Übergabe mittels Klickibunti, und nicht mittels Script, wie auch Uwe korrekt im Handbuch schreibt:
Werden als Parameter im WebUI-Eingabeformularfeld Anführungs- oder Sonderzeichen (z.B. '=', '&', ...) verwendet, dann kann es bei der Verarbeitung dieser Eingaben durch die WebUI Probleme geben! Als Ergebnis werden Teile der Eingabe bzw. die gesamte Eingabe nicht korrekt übergeben. Als Alternative können solche Sonderzeichen deshalb auch hexadezimal im Format ~XX (z.B. ~3d als Ersatz für das '=' Zeichen) eingegeben werden.
Die Notwendigkeit war und ist immer noch gegeben, wenn man über die Klickibunti Befehle einträgt. :!: Mit Scripteintrag hat das aber *IMHO* wenig zu tun.
Leicht zu testen, wenn man mittels Script einen korrekten Befehl mit & und = in ein CMD Feld einträgt und dann diesen z.B. per Copy & Paste in ein anderes CMD Feld kopiert, wird dieser nicht oder nur teilweise übernommen. Aber das führt hier zu weit.
Wenn 66er wirklich in seinen Scripten dies auch so getan hat, dann sollten wohl die ein oder anderen Aufrufe jetzt nicht mehr funktionieren. :shock:
Es sei denn, es ist kein allgemein gültiges Problem, sondern wieder mal CCCU/Rhaspi/Rega/Build/Versions..... Problem

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.

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

Re: Aufruf einer URL

Beitrag von jmaus » 20.12.2018, 10:21

alchy hat geschrieben:
20.12.2018, 09:35
[...]
und das bestätigt doch die Aussage sehr eindeutig. Ein ~ wird zu einem " interpretiert..
Nun, dann habe ich doch mal eine gute Nachricht, denn mit der nächsten ReGaHss Version wird das Problem bereits behoben sein, wie man hier sieht:
screenshot_171.png
Und auch wenn du selbst kein RaspberryMatic einsetzt, so werden zumindest in erster Instanz die RaspberryMatic Nutzer mit der in 2 Tagen erscheinenden neuen Version als erstes davon profitieren.

Diese Reparatur resultiert übrigens aus einem Bugfix bzgl. des schon länger existierenden Problems rund um das escapen von Sonderzeichen. Siehe https://github.com/eq-3/occu/issues/82 bzw. https://github.com/jens-maus/RaspberryMatic/issues/514 bzw. viewtopic.php?f=26&t=47371

In dem Zuge habe ich das Problem rund um den "~" Character auch gleich mit repariert (wie man oben in der Ausgabe sehen kann).

Und so ganz nebenbei auch noch der Hinweis, das ich in dem Zuge auch gleich noch bemerkt habe das es in ReGa eine zusätzliche Möglichkeit gibt sogenannte "Super String" mit dem "^" Zeichen zu definieren (siehe viewtopic.php?f=26&t=47371&start=10#p473993). D.h. mit älteren ReGaHss Versionen müsste man in solch einen Fall mit einem ~ Zeichen in einem String einfach diesen wie folgt definieren:

Code: Alles auswählen

string url=^ ein ~ wird gewandelt ein & oder ein = bleibt ^;
WriteLine(url);
Und dies führt dann dazu das sämtlich Zeichen (auch backslash escapte Sequenzen) erhalten bleiben und nicht gegen die entsprechenden Sonder/Ersetzungszeichen ersetzt werden.
alchy hat geschrieben:
20.12.2018, 09:35
Das war "früher" meines Erachtens nicht so, ich habe aber keinen Bock mehr nachzuschauen ab wann das so ist.
Meinen Recherchen nach sollte das "~" Zeichen in Strings schon immer gegen ein " ersetzt worden sein. Aber auch hier gilt: Irren ist menschlich...
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

superbraz
Beiträge: 180
Registriert: 05.04.2019, 00:18
Hat sich bedankt: 20 Mal
Danksagung erhalten: 2 Mal

Re: Aufruf einer URL

Beitrag von superbraz » 11.01.2023, 11:27

jmaus hat geschrieben:
17.12.2018, 12:21

Wenn du eine halbwegs aktuelle CCU2/CCU3 firmwareversion hast sollten solche einfachste wget-basierten URL aufrufe (für die du auch keine Ausgaben brauchst) auch problemlos mit dem integrierten "system.Exec()" Befehl klappen ganz ohne CUxD:

Code: Alles auswählen

string url="http://<IP-Adr.>/admin/rcontrol?action=customfunction&action=sigout&name=open";
system.Exec("wget -q -O /dev/null '"#url#"' &");
Habe versucht eine Aufnahme von meiner AXIS Cam mittels HMIP Sensor zu starten - damit konnte ich den Befehl auslösen!
Vielen Dank!!

Antworten

Zurück zu „HomeMatic allgemein“