Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Servicemeldungen in Vis Sonderzeichen

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Servicemeldungen in Vis Sonderzeichen

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Semenchkare last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • G
        gst666 last edited by

        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;
        }
        
        
        1 Reply Last reply Reply Quote 0
        • S
          Semenchkare last edited by

          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!

          1 Reply Last reply Reply Quote 0
          • M
            Marc.Matic last edited by

            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;
            }
            
            1 Reply Last reply Reply Quote 0
            • S
              Semenchkare last edited by

              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);
              
              1 Reply Last reply Reply Quote 0
              • M
                Marc.Matic last edited by

                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.

                1 Reply Last reply Reply Quote 0
                • Wildshunter
                  Wildshunter last edited by

                  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!

                  1 Reply Last reply Reply Quote 0
                  • oldi-2000
                    oldi-2000 last edited by

                    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~~

                    1 Reply Last reply Reply Quote 0
                    • oldi-2000
                      oldi-2000 last edited by

                      Ps:

                      sorry für das schlechte Bild ging so am schnellsten zum veranschaulichen

                      Gesendet von meinem LG-H815 mit Tapatalk

                      1 Reply Last reply Reply Quote 0
                      • S
                        Stmiko last edited by

                        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

                        1 Reply Last reply Reply Quote 0
                        • oldi-2000
                          oldi-2000 last edited by

                          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

                          1 Reply Last reply Reply Quote 0
                          • S
                            Stmiko last edited by

                            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>

                            1 Reply Last reply Reply Quote 0
                            • D
                              dtp last edited by

                              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

                              1 Reply Last reply Reply Quote 0
                              • oldi-2000
                                oldi-2000 last edited by

                                Das wars!! Funktioniert!! Super!!

                                Vielen Dank

                                Daniel

                                Gesendet von meinem LG-H815 mit Tapatalk

                                1 Reply Last reply Reply Quote 0
                                • J
                                  jensus11 last edited by

                                  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

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  345
                                  Online

                                  32.0k
                                  Users

                                  80.5k
                                  Topics

                                  1.3m
                                  Posts

                                  8
                                  15
                                  3612
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo