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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden