NEWS
Escaping von CCU -> ioBroker?
-
Hallo,
Ich steh aufm Schlauch … ich baue mir in der CCU einen String durch ein Programm mit meinen aktuellen Alarmen.
Diesen String binde ich dann in ioBroker.vis mit dem Basic String (unescaped) ein.
Wie kann ich bei dieser Konstellation Zeilenumbrüche / Newlines innerhalb des Strings übermitteln?
-
Wenn ich in dem CCU Programm "\n" verwende, erscheint in der iobroker.vis "%0A"
-
Wenn ich in dem CCU Programm "
" erwende tut nichts mehr (das ist ja ein bekanntes Problem der CCU mit Sonderzeichen ... vielfach diskutiert)
...aber ... wie dann?
Gruss
-
-
Probier mal auf den String der von der CCU kommt (der mit %0A) die decodeURI Funktion (https://www.w3schools.com/jsref/jsref_decodeuri.asp)…
-
Edit weil Lösung gefunden & Hilfestellung für den nächsten:
Man kann in der CCU einfach " " statt "\n" / "
" verwenden - das wird von der CCU ordentlich verarbeitet und dann durch ioBroker auch ordentlich in den Ziel Browser geleitet.Trotzdem würde mich ein Link zum nicht-dumm-sterben interessieren:
Wie kann ich da eine JS-Funktion "zwischenhängen"? Oder muss dafür ein Skript das machen und vorbereiten?
Das ist vermutlich der "Skripte"-Tab … aber ... wo kann ich dazu was nachlesen? hab ich noch nie was mit gemacht
Im endeffekt muss ich vermutlich sowas wie "resultContent = decodeURI(hm-rega.0.26947)" da reinpacken -- aber das ist an min 2 Stellen geraten
Die einzige Doku die ich für vis & skripte finde ist "dünn":
http://www.iobroker.net/docu/?page_id=2 ... de#Skripte
... vielleicht fehlen auch nur 2 erklärende Sätze?
Gruss
-
Hallo, nur schnell von unterwegs: das Skript muss im JavaScript Adapter angelegt werden. Da mit````
on(idHomematicVariable, function(obj) {
log(decodeURI(obj));});
bei jeder Änderung die Dekodierung anstoßen. Für die Übernahme in Vis ein Objekt erzeugen und mit setState befüllen. Puh, anstrengend so ein POST mit tapatalk in ios. Pix
-
Edit: Endgültige Lösung eingefügt:
Hallo
Danke erstmal - decodeURI funktioniert nicht, da Mailformed URI als Exception ausgegeben wird.
Ich habe nun aber http://ww.iobroker.com/forum/viewtopic. … 949#p37086 gefunden und entsprechend adaptiert.
on({id: 'hm-rega.0.26947'}, function (obj) { var x = getState("hm-rega.0.26947").val; var y=replaceAll(x,'%A0',' '); setState("localAlarmText",y); }); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; }
Gruss
PS: Der -Workaround ist leider keine Lösung, wie ich oben geshrieben hatte - das war gestern ein Trugschluss