NEWS
Servicemeldungen in Vis Sonderzeichen
-
Hallo,
ich weiß nicht genau, wo ich das Posten soll, es geht um eine Fehlerhafte Darstellung von Texten aus der CCU2.
Dort habe ich mittels eines Skriptes "Servicemeldungen 1.1" siehe http://homematic-forum.de/forum/viewtop … 31&t=24618.
Das klappt an sich ganz gut.
Hierbei speichere ich u.a. die letzte Servicemeldung in einer Variablen, deren Inhalt auf der CCU gut aussieht:
NEUE SERVICEMELDUNG Tuer_Haustuer : Sabotage. seit: 16.10.16 11:46 Uhr
Per HM-Rega kommt dann die Variable auf den ioBroker. Aber mit einem kleinen Unterschied:
NEUE SERVICEMELDUNG%0ATuer_Haustuer : Sabotage. seit: 16.10.16 11:46 Uhr
(bei anderen Meldungen war auch äöü etc betroffen).
So wird das (leider) dann auch in VIS dargestellt…
Nun meine Fragen: wie kann ich das ändern? Mittels Javascript? da habe ich alle 19 Seiten durchgesucht, aber nichts passendes gefunden...
Im Vis habe ich auch noch keine Möglichkeiten zum Ersetzen von solchen Schnipseln gefunden.
Hier das %0A soll wohl eine Zeilenschaltung darstellen. Wie kann ich das löschen oder ersetzen???
Wenn über Script, dann müsste der Datenpunkt wohl aufgerufen,die Änderungen (vermutlich per regex) in eine eigene Variable übernommen werden, damit ich ihn in VIS darstellen kann. Hat da jemand ein einfaches Beispiel?
Vielen Dank vorab?
-
Nachfolgende Routine dürfte es richten:
Die Werte werden in einem neuen Datenpunkt gespeichert: javascript.0.servicemeldungen
createState('servicemeldungen', ''); on({id: 'hier_gehört_der_Datenpunkt_hin'}, function (obj) { var s=getState('hier_gehört_der_Datenpunkt_hin').val; s=replaceAll(s,'%0A',' '); //hier könnten weitere Zeilen mir replaceAll z.B. für Umlaute stehen setState('javascript.0.servicemeldungen',s); }); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; }
-
Hallo,
vielen Dank.
habe folgendes eingegeben:
createState('servicemeldungen', ''); on({id: 'hier_gehört_der_Datenpunkt_hin'}, function (obj) { var s=getState('hier_gehört_der_Datenpunkt_hin').val; s=replaceAll(s,'%0A',' '); //hier könnten weitere Zeilen mir replaceAll z.B. für Umlaute stehen setState('javascript.0.servicemeldungen',s); }); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; }
Danach habe ich eine Servicemeldung ausgelöst.
Unter "Objekte" finde ich nun den neuen Datenpunkt unter javascript.0! Dankeschön!
-
Hallo! Ich habe das Script auch mal aktiviert (über den Skript Editor des Javascript Adapters). Der Datenpunkt wird auch angelegt aber es wird nichts reingeschrieben. Ggf. hab ich die ID falsch eingebunden? Könnt ihr helfen?
createState('servicemeldungen_formatiert', ''); on({id: 'hm-rega.0.58929'}, function (obj) { var s=getState('hm-rega.0.58929').val; s=replaceAll(s,'%0A',' '); //hier könnten weitere Zeilen mit replaceAll z.B. für Umlaute stehen setState('javascript.0.servicemeldungen',s); }); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; }
-
Ist der JS-Adapter aktiv und das skript selbst auch?
ausserdem solltest Du den Datenpunkt schon so nennen, dass er javascript.0.servicemeldungen_formatiert lautet
setState('javascript.0.servicemeldungen_formatiert',s);
-
Ups, das hatte ich übersehen.
Hab es jetzt so:
createState('servicemeldungen_formatiert', ''); on({id: 'hm-rega.0.58929'}, function (obj) { var s=getState('hm-rega.0.58929').val; s=replaceAll(s,'%0A',' '); //hier könnten weitere Zeilen mit replaceAll z.B. für Umlaute stehen setState('javascript.0.servicemeldungen_formatiert',s); }); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; }
Adapter ist aktiv, das Script selber hab ich auch auf "Play" gesetzt (es wird jetzt das Pause Symbol angezeigt). Reicht das so und wird das Script jetzt immer getriggert wenn sich das Objekt 58929 ändert? Oder muss ich noch was anderes machen? Wenn es eigentlich so laufen sollte dann muss ich sagen: Klappt nicht. "servicemeldungen_formatiert" wird leider nicht gefüllt.
-
Hallo!
> Adapter ist aktiv, das Script selber hab ich auch auf "Play" gesetzt (es wird jetzt das Pause Symbol angezeigt). Reicht das so und wird das Script jetzt immer getriggert wenn sich das Objekt 58929 ändert? Oder muss ich noch was anderes machen? Wenn es eigentlich so laufen sollte dann muss ich sagen: Klappt nicht. "servicemeldungen_formatiert" wird leider nicht gefüllt.
gibt es hierfür schon eine Lösung? Habe das gleiche Problem…. Danke! -
Hallo
bei mir funktioniert das Skript soweit prima allerdings wäre es nich viel besser wenn es das '%0a' in einen Zeilenwechsel umsetzten würde wie es ja auch in dem Skript gedacht war. Da jetzt zwar das '%0A' gegen ein ' ' ersetzt wird dadurch aber in der Darstellung in Vis alles hintereinander durchgeschrieben wird. Gibt es da ne Möglichkeit einen Zeilenwechsel draus zu machen und mit was stelle ich die Liste nachher am besten mit Vis dar?
Mfg
Daniel
~~![](</s><URL url=)<link_text text="http://uploads.tapatalk-cdn.com/2016121 ... 129778.jpg">http://uploads.tapatalk-cdn.com/20161211/121dd586293f89e9eee3d8a125129778.jpg</link_text>" />
Gesendet von meinem LG-H815 mit Tapatalk~~
-
Ps:
sorry für das schlechte Bild ging so am schnellsten zum veranschaulichen
Gesendet von meinem LG-H815 mit Tapatalk
-
Hallo,
Hatte das selbe Problem mit den Sonderzeichen. Lösung ist relative einfach(via Jajascript). Siehe hier:
http://forum.iobroker.net/viewtopic.php … 679#p34210
Viele GRüße
-
Ja dieses Skript "übersetzt" ja auch auf Sonderzeichen. Aber wie mache ich eine Saubere Liste. Heißt aus %0A ein return, einen Zeilenwechsel. Aus %0A ein Leerzeichen macht ja auch dieses skript hier.
Grüsse
Daniel
Gesendet von meinem LG-H815 mit Tapatalk
-
Ich habe mir das Alchy-script auf meine Bedürfnisse angepasst.
Ist schon einen Moment her, aber ich meine ich habe die <cr>durch ⁄n ersetzt….
Kann das leider im Moment nicht checken, da ich unterwegs bis.
Bei Bedarf kann ich meine version hier hochladen, dann bitte melden..
Lg</cr>
-
Hi,
ich schreibe die Servicemeldungen mit einem modifizierten Allinclusive-Skript von Alchy in eine Systemvariable, die ich mir dann als Push-Nachricht per Telegram zusenden lasse. http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282#p229335 eine entsprechende Anleitung.
Den Inhalt der Systemvariablen frage ich dann mit nachfolgendem Javascript auf Zeilenumbrüche ab und übersetze diese in entsprechendem HTML-Code, um das Resultat in den Datenpunkt "vis.Servicemeldungen" zu schreiben:
createState('vis.Servicemeldungen', 0, { type: 'string', read: true, write: true, desc: 'vis Servicemeldungen', def: '' }); on("hm-rega.0.55670", function(obj){ if(getState("hm-rega.0.maintenance").val > 0){ var message = obj.state.val; message = message.replace(/%0A/g, ' '); setState("vis.Servicemeldungen", message); } });
Mit Hilfe des Widgets "basic - string (unescaped)" stelle ich den Datenpunkt dann in vis dar, sofern "hm-rega.0.maintenance" > 0 ist.
Gruß,
Thorsten
-
Das wars!! Funktioniert!! Super!!
Vielen Dank
Daniel
Gesendet von meinem LG-H815 mit Tapatalk
-
Hallo, ich habe das Script jetzt bei mir eingefügt, die ID von CCU SV Push Text dem Script angepasst.
Die Objekte werden angelegt und angezeigt.
Dann habe ich einen FTK Sabotage erzeugt und das Servicemeldung wir auch angezeigt. Dann den FTK wieder eingesetzt, die Meldung bleibt bestehen.
Nun einen anderen FTK sabotiert, vom dem die Meldung aber nicht übernommen wird. Bleibt immer die alte drin.
Was kann das sein. Neustart vom JS.adapter hilft auch nicht.
Gruss