Zeichenersetzung in CMD_-Befehlszeilen

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

Moderator: Co-Administratoren

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jp112sdl » 17.08.2020, 14:30

Hallo Uwe,

über die Zeichenersetzung (Kapitel 5.8 in der Doku) stolpern immer noch viele User, bzw. sie wissen nicht, dass man diese Zeichen ersetzen muss.

Klassiker sind wohl = ~3d sowie & ~26

Ich habe mir überlegt, ob es nicht sinnvoll wäre, diese Ersetzung automatisch erfolgen zu lassen.
Bei den Displays (HM-Dis-...) wird das ja auch von der WebUI gemacht.

Es wären nur 2 Dateien zu patchen.

In der /www/webui/webui.js ist eine neue Funktion hinzuzufügen:

Code: Alles auswählen

encodeStringCUxD = function(elmID, paramID) {                           
  var jElm = jQuery("#"+elmID),
  inString = jElm.val(),
  outString = "";
  
  conInfo("encodeStringCUxD - inString: " + inString);                                
  conInfo("encodeStringCUxD - paramID: " + paramID);

  if (paramID.startsWith("CMD_") === true) {
    outString = inString.replace(/§/g, "~A7");
    outString = outString.replace(/\"/g, "~22");
    outString = outString.replace(/&/g, "~26");
    outString = outString.replace(/=/g, "~3d");
    outString = outString.replace(/°/g, "~b0");
    outString = outString.replace(/ß/g, "~df");
    outString = outString.replace(/ä/g, "~e4");
    outString = outString.replace(/ö/g, "~f6");
    outString = outString.replace(/ü/g, "~fc");
    outString = outString.replace(/Ä/g, "~c4");
    outString = outString.replace(/Ö/g, "~d6");
    outString = outString.replace(/Ü/g, "~dc");
    outString = outString.replace(/µ/g, "~b5");
    outString = outString.replace(/€/g, "~80");
    outString = outString.replace(/²/g, "~b2");
    outString = outString.replace(/³/g, "~b3");
    
    jQuery("#"+elmID.replace(/^_/, "")).val(outString);
  }                                
};
sowie in der /www/config/ic_common.tcl:1148 ist zu ändern:

Code: Alles auswählen

-         append s "<td><input type=\"text\" name=\"$param_id\" value=\"$value\" $id $access /></td>"
+         append s "<td><input type=\"text\" name=\"$param_id\" onblur=\"encodeStringCUxD('$idval', '$param_id');\" value=\"$value\" $id $access /></td>"
PiV2445hJJ.gif
(Bild anklicken, falls die Animation nicht abgespielt wird)



Oder wäre es besser, diese Funktion als WebUI-Patch für RaspberryMatic bereitzustellen?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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

Re: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von uwe111 » 18.08.2020, 13:43

Hallo Jerome,

ja, das ist eine gute Idee.

Ich hatte anfangs gehofft, dass dieses Problem irgendwann in der WebUI gefixt würde und dann keine Zeichenersetzung mehr notwendig ist.
Ich möchte den Patch aber ungern direkt in CUxD integrieren, da ich die Funktion und die Nebenwirkungen nach zukünfigen Firmware-Updates nicht einschätzen kann.

Was hältst Du davon, es als nachträglich zu installierendes WebUI AddOn bereitzustellen?

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

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jp112sdl » 18.08.2020, 21:53

Ich würde dann erstmal bei Jens anklopfen und fragen, was er von einem Patch hält.
Dann wäre es schon mal nativ in RM drin.

Andere CCUx Nutzer könnten sich die Änderung dann mit einem SSH Befehl reinholen.

Ein separates Addon und einen extra Eintrag unter "Zusatzsoftware" wollte ich nicht unbedingt einbauen.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jmaus » 18.08.2020, 22:37

Hallo Zusammen,

kann mich einer aufklären (da ich selbst noch nicht drüber gestolpert bin) um was es sich bei diesen Ersetzungen genau handelt? Ich weiss das dies in der CUxD Doku entsprechend dokumentiert ist, aber vielleicht geht es so ja ggf. schneller. Wieso braucht man die überhaupt? Und vielleicht lässt sich ja ein irgendwie anders gearteter Fix in der WebUI dafür generieren damit man ggf. ganz auf diese Ersetzungen verzichten kann statt diese wie von Jerome vorgeschlagen via "on blur" automatisch umsetzen zu lassen?
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jp112sdl » 19.08.2020, 06:42

jmaus hat geschrieben:
18.08.2020, 22:37
kann mich einer aufklären (da ich selbst noch nicht drüber gestolpert bin) um was es sich bei diesen Ersetzungen genau handelt?
Es kann kein Parameter-Wert, der eines der Zeichen aus der .replace()-List meines ersten Beitrags enthält, in der regadom gespeichert werden.

Dabei handelt es sich auch nicht um ein CUxD-spezifisches Problem. Ich hab gerade mal versucht, bei einem HM RF Display im Fixtext ein " - Zeichen zu setzen. Das klappt auch nicht.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jmaus » 19.08.2020, 07:00

Hmm. Hört sich interessant an. Und du bist sicher das das an ReGa/regadom liegt und nicht nur die WebUI an irgendeiner stelle auf dem weg bis dahin mit diesen Zeichen ein Problem hat? Hast du in der WebUI schon den Ort gefunden wo der CMD wert via ReGa in die regadom gespeichert bzw. weitergereicht wird? Weil wenn das wirklich so ist könnte ich mir das ja in der ReGa einmal direkt anschauen und versuchen das dort zu reparieren.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jp112sdl » 19.08.2020, 07:44

jmaus hat geschrieben:
19.08.2020, 07:00
Und du bist sicher das das an ReGa/regadom liegt
Nein, ganz und gar nicht... 8) Sicher ist nur, dass die Zeichen nicht in der regadom ankommen :wink:

Mit dem Homematic Manager kann ich zumindest ein Umlaut abspeichern, der dann aber in der WebUI falsch angezeigt wird (UTF8<>Latin Problem).
Und ich kann damit auch ? und = speichern. Die Zeichen werden dann auch korrekt in der WebUI dargestellt.

Das Problem hängt wohl sehr wahrscheinlich dann an der GET Methode beim Speichern von Geräteeinstellungen :?:

EDIT:

Hab mir mal den Request im Browser-Debug angeschaut.
HB_HEADERLINE soll AB=D werden.
Gesendet wird:

Code: Alles auswählen

http://192.168.1.254/config/ic_ifacecmd.cgi?sid=...&HB_HEADERLINE=AB%3DD&...&AvoidBrowserCache=0.0559213106915164
Nach dem Übertragen werden die Geräteparameter gelesen und das = Zeichen fehlt.
Also liegt es eher an der ic_ifacecmd.cgi!? Hmm

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jp112sdl » 19.08.2020, 09:15

Mittlerweile glaube ich, dass das = irgendwo als Trenner zwischen PARAM=WERT verwendet wird und es dadurch zu Problemen kommt.
Ich habe versucht, einen Überlick zu bekommen, wie ic_common.tcl, ic_ifacecmd.cgi und webui.js... aber das ist alles so verschachtelt...
Und die Umlaute (Zeichensatz) wären dann noch eine weitere Baustelle.

In Anbetracht der Tatsache, dass zumindest ich keine Lösung finde:
- möchtest du dich darum kümmern?
- soll ich den Patch für RM als PR machen?
- oder keines von beidem? :mrgreen:

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jmaus » 19.08.2020, 09:24

jp112sdl hat geschrieben:
19.08.2020, 09:15
Ich habe versucht, einen Überlick zu bekommen, wie ic_common.tcl, ic_ifacecmd.cgi und webui.js... aber das ist alles so verschachtelt...
In der Tat ist das alles ein ziemlicher Wirrwarr und eigentlich gehört IMHO die komplette WebUI in Rente geschickt und was neues gebaut was nicht nur moderne Techniken einsetzt, sondern eben auch diese verschachtelung von tcl, javascript und ReGa Skriptsprache dann nicht mehr hat. Und auch wenn ich schon tausende Male drüber nachgedacht habe wie man das irgendwie implantiert bekommt so sehe ich das trotzdem irgendwie nicht als meine Aufgabe und das würde auch sicherlich ein extra Projekt hergeben. Wenn sich da aber engagieren will eine komplett neue WebUI zu bauen würde ich mich zumindest dazu bereit erklären meinen Beitrag daran zu leisten :)
jp112sdl hat geschrieben:
19.08.2020, 09:15
In Anbetracht der Tatsache, dass zumindest ich keine Lösung finde:
- möchtest du dich darum kümmern?
- soll ich den Patch für RM als PR machen?
- oder keines von beidem? :mrgreen:
Ich würde sagen wir machen da zwei schritte drauf. Erst einmal probieren wir (ich) das Problem zu lokalisieren um es ggf. an Ort&Stelle zu beseitigen und erst wenn das nicht klappt können wir gerne deinen Workaround über die Ersetzungsliste umsetzen. Hilfreich wäre es daher sicherlich wenn du dein GitHub Ticket dazu dann entsprechend mit den bis jetzt gefundenen Infos ergänzen könntest damit ich das entsprechend nachvollziehen und ggf. dann den Ursprung des Problems finden kann.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Zeichenersetzung in CMD_-Befehlszeilen

Beitrag von jp112sdl » 19.08.2020, 09:41

Lass uns das am besten abkürzen... Es gibt etliche andere Baustellen, die höher priorisiert sind, als das hier.
jmaus hat geschrieben:
19.08.2020, 09:24
gehört IMHO die komplette WebUI in Rente geschickt
Deshalb sollte keine Zeit mit weiteren Analysen verschwendet werden

Ich verpacke den eingangs vorgestellten Workaround in ein Installationsskript, das man dann per SSH (oder system.Exec) direkt über
wget http://.../ | sh ausführt.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

Zurück zu „CUxD“