SystemExec Gerät Frage

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: SystemExec Gerät Frage

Beitrag von uwe111 » 15.02.2017, 11:20

Hallo Markus,
mweber hat geschrieben:A very confused Markus...
wahrscheinlich, weil Du für Deine Frage kein neues Thema aufgemacht hast.
:roll: Da muss man ja durcheinanderkommen.

URL-Encoding für Parameter mache ich im CUxD. Das ist richtig.

Hier meine C-Funktion:

Code: Alles auswählen

char *url_encode(const char *str) {
  const char *pstr = str;
  char *buf = malloc(strlen(str) * 3 + 1);
  char *pbuf = buf;
  while (*pstr) {
    if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') {
      *pbuf++ = *pstr;
    } else if (*pstr == ' ') {
             *pbuf++ = '+';
           } else {
             *pbuf++ = '%';
             *pbuf++ = nibble2hex(*pstr >> 4);
             *pbuf++ = nibble2hex(*pstr & 15);
           }
    pstr++;
  }
  *pbuf = 0;
  return buf;
}
Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

mweber
Beiträge: 5
Registriert: 10.02.2017, 10:10

Re: SystemExec Gerät Frage

Beitrag von mweber » 16.02.2017, 20:21

Tata :mrgreen:
Danke Uwe.
Ich bin halt eher der Recycler und an sich war das Thema gar nicht sooo verkehrt.
Jetzt bin ich wieder in der Spur!
Das bedeutet aber, dass wenn ich - und tausend andere da draußen - also wir jetzt MEHR "encoding" wünschen, bist genau du unser Mann.
Für den Anfang würden mir ÄÖÜäöüß° vollkommen ausreichen.

Zum Hintergrund:
Ich verwende zum Versenden von Statusmeldungen den Dienst Telegram - eben über CUxD und SystemExec mit den Parametern und urlencodeing.
Die Parameter bastel ich mir aus den Namen der Komponenten und einem Ereignis oder was auch immer zusammen.
Und momentan werden Namen wie "Schiebetuere" vergeben und Ereignisse lauten "wurde geoeffnet".
Das waere natuerlich schoener, wenn ich die paar Umlaute, scharf S und das Grad-Zeichen auch umgesetzt bekaeme. 8)

Grüße vom etwas schlaueren Markus

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: SystemExec Gerät Frage

Beitrag von uwe111 » 17.02.2017, 10:18

Hallo Markus,

ich bin eigentlich davon ausgegangen, dass die C-Funktion isalnum( ) bei den Zeichen ÄÖÜäöüß° false zurückliefert.
Falls dem nicht so ist, dann müsste ich dafür eine eigene Funktion implementieren.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

mweber
Beiträge: 5
Registriert: 10.02.2017, 10:10

Re: SystemExec Gerät Frage

Beitrag von mweber » 17.02.2017, 15:40

Hallo Uwe,

hier sieht man, welche Zeichen berücksichtigt werden.
http://en.cppreference.com/w/cpp/string/byte/isalnum
Und du hast nicht ganz unrecht - mit

Code: Alles auswählen

setlocale
kann man (je nach Umgebung) angeben, welcher Zeichensatz berücksichtigt werden soll.

Vielleicht macht es das ja für die nächste Version einfacher. :wink:

Schönen Nachmittag
Markus

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: SystemExec Gerät Frage

Beitrag von uwe111 » 17.02.2017, 21:54

mweber hat geschrieben:Vielleicht macht es das ja für die nächste Version einfacher. :wink:
Oh ja, danke für den Hinweis. Ich werde es umschreiben und die Funktion einfach durch was eigenes ersetzen. :)

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Benutzeravatar
uwe111
Beiträge: 4821
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: SystemExec Gerät Frage

Beitrag von uwe111 » 15.03.2017, 10:25

Hallo Markus,

in der aktuellen CUxD-Version 1.9 habe ich das URL-encoding neu geschrieben.
Du kannst es ja gerne noch einmal testen.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Antworten

Zurück zu „CUxD“