Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Zigbee2mqtt installation

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Zigbee2mqtt installation

Zigbee2mqtt installation

Scheduled Pinned Locked Moved ioBroker Allgemein
284 Posts 6 Posters 46.9k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mickymM mickym

    @schmetterfliege Schau halt mal mit einer Debug Node nach der split Node?

    S Offline
    S Offline
    Schmetterfliege
    wrote on last edited by Schmetterfliege
    #249

    @mickym Der Debug aus dem Screenshot ist nach der Split Node

    Was ich halt machen könnte, wäre msg.topic auf die entsprechenden Werte zu setzen wie sie in timestamps im Flow stehen.
    Also zb. Büro/Besta.

    Und dann in der Change node payload.id durch msg.topic ersetzen.
    Würde das funktionieren?

    mickymM 1 Reply Last reply
    0
    • S Offline
      S Offline
      Schmetterfliege
      wrote on last edited by
      #250

      jetzt is diese dämliche Tabelle wieder leer und bleibt leer obwohl ich die Änderungen rückgängig gemacht habe und die Tabelle definitiv die Objekte bekommt -.-

      1 Reply Last reply
      0
      • S Schmetterfliege

        @mickym Der Debug aus dem Screenshot ist nach der Split Node

        Was ich halt machen könnte, wäre msg.topic auf die entsprechenden Werte zu setzen wie sie in timestamps im Flow stehen.
        Also zb. Büro/Besta.

        Und dann in der Change node payload.id durch msg.topic ersetzen.
        Würde das funktionieren?

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        wrote on last edited by mickym
        #251

        @schmetterfliege Na wenn es jetzt nicht funktioniert - dann klar. Ich frag mich nur, warum das alles mal funktioniert hat und wir hier nur wieder alles neu machen müssen. Die Dinge hängen halt alle zusammen und ich habe keine Ahnung was geändert wurde. Meines Erachtens haben wir sicher irgendwo die id gesetzt - aber ich habe jetzt sorry keine Ahnung mehr. Ich kann auch nicht alle Flows hier immer bei mir abgespeichert halten, die ich mal zusammen entwickelt habe.

        Natürlich musst dann halt wieder neu machen und halt verstehen, was in der ChangeNode gemacht wird.

        Aus dem Objekt wird mithilfe von $lookup aus dem Objekt timestamps der Wert des Keys ermittelt. Den Key haben wir mit payload.id mitgegeben gehabt. Das topic entspricht doch nicht den Namen der Objekte in timestamps. Setze halt so wie Du es jetzt abgespeichert hast, die payload.id entsprechend, wie Du sie im Kontext abspeicherst. Die muss ja Bestandteil des Objektes sein, damit die nachdem split verfügbar ist.

        Bei solchen Dingen würde ich mir halt den Flow von damals importieren (kann den ja insgesamt deaktivieren) und dort dann suchen, wo die id im Objekt gesetzt wurde.

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        1 Reply Last reply
        0
        • mickymM Offline
          mickymM Offline
          mickym
          Most Active
          wrote on last edited by mickym
          #252

          Die Funktionsweise ist so, dass egal was reinkommt alle Zeitstempel abgeglichen werden mit dem aktuellen Zeitpunkt und dann ja Bestandteil des objektes sein müssen. Die id ist normalerweise implizit in der Table gesetzt. Um die aber bewusst setzen zu können und die Zeilen identifizieren zu können, bin ich überzeugt, dass wir die irgendwo gesetzt haben. Aber wie gesagt - das musst selbst suchen-

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 Reply Last reply
          0
          • S Offline
            S Offline
            Schmetterfliege
            wrote on last edited by
            #253

            Meine mich auch dunkel dran zu erinnern dass wir die gesetzt hatten, weiß aber selbst nicht mehr wo genau, und wieso ich das dann scheinbar wieder entfernt hatte.
            Ich setze payload.id jetzt jedenfalls nach dem zersplitten für die Objekte, der Teil sollte also passen:
            ed373b99-8069-4b88-9d42-2a5a9a531675-image.png
            Jedes Objekt hat jetzt eine ID drin, und auch das LastUpdate.
            Der Wert für LastUpdate ist halt trotzdem noch falsch.
            09423cef-5965-400a-aacd-413c91c88e56-image.png
            Das ist aktuell im Flow gespeichert, da haben nämlich noch gar nicht alle Objekte einen Timestamp, weil die noch kein Update gesendet haben seit ich vorhin NR neu gestartet habe.
            6e7e0e7f-4670-4677-a8a4-487c0d3cf036-image.png
            Kleines Bad hat aber zb auch drin stehen "vor ein paar Sekunden", obwohl er das gar nicht hätte berechnen können wenn gar kein Timestamp dafür existiert.
            Die Change Node macht also trotzdem noch was falsch, obwohl ich nun payload.id übergebe.
            Müsste da nicht eher "msg.payload.id" stehen? Oder darf das "msg." fehlen?

            mickymM 1 Reply Last reply
            0
            • S Schmetterfliege

              Meine mich auch dunkel dran zu erinnern dass wir die gesetzt hatten, weiß aber selbst nicht mehr wo genau, und wieso ich das dann scheinbar wieder entfernt hatte.
              Ich setze payload.id jetzt jedenfalls nach dem zersplitten für die Objekte, der Teil sollte also passen:
              ed373b99-8069-4b88-9d42-2a5a9a531675-image.png
              Jedes Objekt hat jetzt eine ID drin, und auch das LastUpdate.
              Der Wert für LastUpdate ist halt trotzdem noch falsch.
              09423cef-5965-400a-aacd-413c91c88e56-image.png
              Das ist aktuell im Flow gespeichert, da haben nämlich noch gar nicht alle Objekte einen Timestamp, weil die noch kein Update gesendet haben seit ich vorhin NR neu gestartet habe.
              6e7e0e7f-4670-4677-a8a4-487c0d3cf036-image.png
              Kleines Bad hat aber zb auch drin stehen "vor ein paar Sekunden", obwohl er das gar nicht hätte berechnen können wenn gar kein Timestamp dafür existiert.
              Die Change Node macht also trotzdem noch was falsch, obwohl ich nun payload.id übergebe.
              Müsste da nicht eher "msg.payload.id" stehen? Oder darf das "msg." fehlen?

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              wrote on last edited by
              #254

              @schmetterfliege Nein in JSONATA ist das msg - Objekt implizit gemeint. Ist anders als bei JS.
              War das nicht so, dass Du alle timestamps irgendwo ausgelesen hast und dann in der Kontextvariable abgespeichert hast. das ist doch unabhängig von aktuellen Ereignissen.

              Importier Dir halt den Flow, den Du noch vor 2 Monaten hattest. Vielleicht wäre es gut - generell auf dem nochmal aufzusetzen.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              S 1 Reply Last reply
              0
              • mickymM mickym

                @schmetterfliege Nein in JSONATA ist das msg - Objekt implizit gemeint. Ist anders als bei JS.
                War das nicht so, dass Du alle timestamps irgendwo ausgelesen hast und dann in der Kontextvariable abgespeichert hast. das ist doch unabhängig von aktuellen Ereignissen.

                Importier Dir halt den Flow, den Du noch vor 2 Monaten hattest. Vielleicht wäre es gut - generell auf dem nochmal aufzusetzen.

                S Offline
                S Offline
                Schmetterfliege
                wrote on last edited by Schmetterfliege
                #255

                @mickym said in Zigbee2mqtt installation:

                @schmetterfliege Nein in JSONATA ist das msg - Objekt implizit gemeint. Ist anders als bei JS.
                War das nicht so, dass Du alle timestamps irgendwo ausgelesen hast und dann in der Kontextvariable abgespeichert hast. das ist doch unabhängig von aktuellen Ereignissen.

                Importier Dir halt den Flow, den Du noch vor 2 Monaten hattest. Vielleicht wäre es gut - generell auf dem nochmal aufzusetzen.

                ah okay 🙂
                Würde das kaputt gehen wenn ich in JSONATA trotzdem msg. dran hänge? Würde es DAUs wie mir einfacher machen es einfach überall zu machen^^.

                Dass ich alles ein mal auslese war gaaaanz früher so, als ich die Tabelle noch initialisiert habe anfangs.
                Seit ich den Zigbee Adapter nicht mehr benutze, mache ich das allerdings nicht mehr - daher fehlen die Timestamps solange bis die Geräte ein Update senden.

                Frag mich nicht was ich gemacht habe, aber grade sind wieder alle timestamps da (hatte versuch das Initialisieren wieder einzubauen, was aber eigentlich nicht geklappt hat und.. keine Ahnung.. egal).
                4c587d24-e523-48e5-89ec-dea588b4ab0d-image.png

                Ich bin zwar in Mathe noch deutlich schlechter als in dem allem was wir hier machen, aber ich würde behaupten die Timestamps sind nicht nur ein paar Sekunden auseinander.
                Und dennoch bekomme alle Objekte am Ende "vor ein paar Sekunden" reingeklatscht.
                aeae600d-c2d1-46ae-a004-f3c997bc000c-image.png

                Das war definitiv auch schon vor 2 Monaten so kaputt.
                Das letzte mal dass das richtig funktioniert hat mit den Timestamps war vor dem gesamtem Re-Work der Tabelle, also in dem Zustand Anfang des Jahres vor meinen 2 Umzügen^^
                EDIT:
                Das hab ich vor 2 Monaten bloß nicht bemerkt, weil ich da alle Sensoren neu angelernt habe wegen dem Umstieg zu Zigbee2MQTT und daher davon ausgegangen bin dass die wirklich alle grade erst updates gesendet hatten.
                Bzw. ich mich schon drüber gefreut habe dass das jetzt überhaupt wieder in der Tabelle steht und dann nicht weiter dran geblieben bin.

                mickymM 1 Reply Last reply
                0
                • S Schmetterfliege

                  @mickym said in Zigbee2mqtt installation:

                  @schmetterfliege Nein in JSONATA ist das msg - Objekt implizit gemeint. Ist anders als bei JS.
                  War das nicht so, dass Du alle timestamps irgendwo ausgelesen hast und dann in der Kontextvariable abgespeichert hast. das ist doch unabhängig von aktuellen Ereignissen.

                  Importier Dir halt den Flow, den Du noch vor 2 Monaten hattest. Vielleicht wäre es gut - generell auf dem nochmal aufzusetzen.

                  ah okay 🙂
                  Würde das kaputt gehen wenn ich in JSONATA trotzdem msg. dran hänge? Würde es DAUs wie mir einfacher machen es einfach überall zu machen^^.

                  Dass ich alles ein mal auslese war gaaaanz früher so, als ich die Tabelle noch initialisiert habe anfangs.
                  Seit ich den Zigbee Adapter nicht mehr benutze, mache ich das allerdings nicht mehr - daher fehlen die Timestamps solange bis die Geräte ein Update senden.

                  Frag mich nicht was ich gemacht habe, aber grade sind wieder alle timestamps da (hatte versuch das Initialisieren wieder einzubauen, was aber eigentlich nicht geklappt hat und.. keine Ahnung.. egal).
                  4c587d24-e523-48e5-89ec-dea588b4ab0d-image.png

                  Ich bin zwar in Mathe noch deutlich schlechter als in dem allem was wir hier machen, aber ich würde behaupten die Timestamps sind nicht nur ein paar Sekunden auseinander.
                  Und dennoch bekomme alle Objekte am Ende "vor ein paar Sekunden" reingeklatscht.
                  aeae600d-c2d1-46ae-a004-f3c997bc000c-image.png

                  Das war definitiv auch schon vor 2 Monaten so kaputt.
                  Das letzte mal dass das richtig funktioniert hat mit den Timestamps war vor dem gesamtem Re-Work der Tabelle, also in dem Zustand Anfang des Jahres vor meinen 2 Umzügen^^
                  EDIT:
                  Das hab ich vor 2 Monaten bloß nicht bemerkt, weil ich da alle Sensoren neu angelernt habe wegen dem Umstieg zu Zigbee2MQTT und daher davon ausgegangen bin dass die wirklich alle grade erst updates gesendet hatten.
                  Bzw. ich mich schon drüber gefreut habe dass das jetzt überhaupt wieder in der Tabelle steht und dann nicht weiter dran geblieben bin.

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  wrote on last edited by
                  #256

                  @schmetterfliege sagte in Zigbee2mqtt installation:

                  ah okay
                  Würde das kaputt gehen wenn ich in JSONATA trotzdem msg. dran hänge? Würde es DAUs wie mir einfacher machen es einfach überall zu machen^^.

                  Nein - dann bekommst Du Warnmeldungen - mach es einfach nicht. 😉

                  Na diese ChangeNode - dass nur bei Bedarf die Zeitspanne mithilfe der Change Node gemacht haben - ist definitiv erst in diesem Jahr gewesen. Das dumme ist, dass der Thread inzwischen so lange ist. da ist das ganze zigbee2mqtt mit drin.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  mickymM 1 Reply Last reply
                  1
                  • mickymM mickym

                    @schmetterfliege sagte in Zigbee2mqtt installation:

                    ah okay
                    Würde das kaputt gehen wenn ich in JSONATA trotzdem msg. dran hänge? Würde es DAUs wie mir einfacher machen es einfach überall zu machen^^.

                    Nein - dann bekommst Du Warnmeldungen - mach es einfach nicht. 😉

                    Na diese ChangeNode - dass nur bei Bedarf die Zeitspanne mithilfe der Change Node gemacht haben - ist definitiv erst in diesem Jahr gewesen. Das dumme ist, dass der Thread inzwischen so lange ist. da ist das ganze zigbee2mqtt mit drin.

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    wrote on last edited by mickym
                    #257

                    @mickym Und wenn das halt anders ist und du die zigbee2mqtt später hast, dann hast Du doch mit zigbee2mqtt alles in dem JSON drin. da ist doch der timestamp mit enthalten.

                    Vielleicht findest ja noch die Stelle, wo wir das mit den Zeitstempeln diskutiert haben. Ansonsten ist es vielleicht wirklich sinnvoller kleinere Threads zu machen.

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    S 1 Reply Last reply
                    0
                    • mickymM mickym

                      @mickym Und wenn das halt anders ist und du die zigbee2mqtt später hast, dann hast Du doch mit zigbee2mqtt alles in dem JSON drin. da ist doch der timestamp mit enthalten.

                      Vielleicht findest ja noch die Stelle, wo wir das mit den Zeitstempeln diskutiert haben. Ansonsten ist es vielleicht wirklich sinnvoller kleinere Threads zu machen.

                      S Offline
                      S Offline
                      Schmetterfliege
                      wrote on last edited by Schmetterfliege
                      #258

                      @mickym said in Zigbee2mqtt installation:

                      @mickym Und wenn das halt anders ist und du die zigbee2mqtt später hast, dann hast Du doch mit zigbee2mqtt alles in dem JSON drin. da ist doch der timestamp mit enthalten.

                      Das ist schon richtig, nur lese ich ja nirgends das gesamte zigbee2mqtt Objekt aus, sondern die einzelnen Sensoren.
                      Und da bekomme ich dann auch nur die Werte von denen.
                      Das initialisieren hatte ich damals so gemacht:
                      6f66e024-fe61-4334-b79a-31428ed90269-image.png
                      Nur eben für zigbee.*.
                      Damit hatte ich vorhin versucht das Initialiseren in der Tabelle wieder einzubauen, was aber nicht funktioniert hatte.
                      Zumindest bekomme ich in der Debug Node keinerlei Output wenn ich das triggere.
                      Deshalb: Keine Ahnung wieso da dann plötzlich wieder alle Sensoren im Flow gespeichert sind, obwohl die meisten bisher noch kein Update geliefert haben seit ich vor mittlerweile fast einer Stunde NR neu gestartet habe.
                      Aber, das ist auch aktuell gar nicht mein Problem 🙂

                      Aktuell folgende 2 Themen:

                      1. LastUpdate wird nicht richtig berechnet.
                      2. Meine Tabelle ist weiß Gott warum leer und ich komme da ums verrecken nicht dahinter was das Problem ist.
                        Es wird alles richtig übergeben, und die Änderung die das kaputt gemacht hat wieder rückgängig gemacht wurden.
                        Aber bevor ich das in Angriff nehme, würde ich halt gerne die Change Node die das LastUpdate berechnet dazu bringen richtig zu funktionieren - hat mit der Tabelle ja jetzt eh erst mal nichts zu tun
                      mickymM 1 Reply Last reply
                      0
                      • S Schmetterfliege

                        @mickym said in Zigbee2mqtt installation:

                        @mickym Und wenn das halt anders ist und du die zigbee2mqtt später hast, dann hast Du doch mit zigbee2mqtt alles in dem JSON drin. da ist doch der timestamp mit enthalten.

                        Das ist schon richtig, nur lese ich ja nirgends das gesamte zigbee2mqtt Objekt aus, sondern die einzelnen Sensoren.
                        Und da bekomme ich dann auch nur die Werte von denen.
                        Das initialisieren hatte ich damals so gemacht:
                        6f66e024-fe61-4334-b79a-31428ed90269-image.png
                        Nur eben für zigbee.*.
                        Damit hatte ich vorhin versucht das Initialiseren in der Tabelle wieder einzubauen, was aber nicht funktioniert hatte.
                        Zumindest bekomme ich in der Debug Node keinerlei Output wenn ich das triggere.
                        Deshalb: Keine Ahnung wieso da dann plötzlich wieder alle Sensoren im Flow gespeichert sind, obwohl die meisten bisher noch kein Update geliefert haben seit ich vor mittlerweile fast einer Stunde NR neu gestartet habe.
                        Aber, das ist auch aktuell gar nicht mein Problem 🙂

                        Aktuell folgende 2 Themen:

                        1. LastUpdate wird nicht richtig berechnet.
                        2. Meine Tabelle ist weiß Gott warum leer und ich komme da ums verrecken nicht dahinter was das Problem ist.
                          Es wird alles richtig übergeben, und die Änderung die das kaputt gemacht hat wieder rückgängig gemacht wurden.
                          Aber bevor ich das in Angriff nehme, würde ich halt gerne die Change Node die das LastUpdate berechnet dazu bringen richtig zu funktionieren - hat mit der Tabelle ja jetzt eh erst mal nichts zu tun
                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        wrote on last edited by mickym
                        #259

                        @schmetterfliege Na ja ich hatte Dir aber auch gesagt, dass ich das auslesen nicht brauche, weil ich die Initialisierung am Anfang verzichte. Mir langt es wenn ich sehe, wie sich die werte füllen. Das wolltest Du aber nicht.

                        Fehlt da nicht ein Punkt hinter Multisensor?

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        S 1 Reply Last reply
                        0
                        • mickymM mickym

                          @schmetterfliege Na ja ich hatte Dir aber auch gesagt, dass ich das auslesen nicht brauche, weil ich die Initialisierung am Anfang verzichte. Mir langt es wenn ich sehe, wie sich die werte füllen. Das wolltest Du aber nicht.

                          Fehlt da nicht ein Punkt hinter Multisensor?

                          S Offline
                          S Offline
                          Schmetterfliege
                          wrote on last edited by Schmetterfliege
                          #260

                          @mickym said in Zigbee2mqtt installation:

                          @schmetterfliege Na ja ich hatte Dir aber auch gesagt, dass ich das auslesen nicht brauche, weil ich die Initialisierung am Anfang verzichte. Mir langt es wenn ich sehe, wie sich die werte füllen. Das wolltest Du aber nicht.

                          Fehlt da nicht ein Punkt hinter Multisensor?

                          Wie gesagt, das initialisieren habe ich ja auch nicht mehr drin. Eben mit der Konsequenz dass die Werte erst mal alle weg sind wenn ich den Flowkontext mal lösche. Dass die Werte gefehlt haben, war ja aber auch gar nicht mein Problem, sondern die beiden erwähnten Themen 😁

                          Selbst wenn ich den Punkt da hin mache, hatte ich keinerlei Output. Aber is ja auch egal, weil ich eh nicht mehr initialisiere 🙂
                          Und: dort fehlt der Punkt auch und Updates der Sensoren kommen trotzdem rein^^
                          f8499ab9-4e7e-4503-ae21-489f59211b9c-image.png

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            Schmetterfliege
                            wrote on last edited by
                            #261

                            Mal ganz blöd gefragt...
                            kannst du mal schauen ob bei dir die Tabelle damit funktioniert? Also Werte hat?

                            Nodes:

                            [
                               {
                                   "id": "9eecae9b.cc535",
                                   "type": "change",
                                   "z": "1090acf7.2d6813",
                                   "name": "ui_control",
                                   "rules": [
                                       {
                                           "t": "set",
                                           "p": "ui_control",
                                           "pt": "msg",
                                           "to": "topic",
                                           "tot": "msg"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 1200,
                                   "y": 1560,
                                   "wires": [
                                       [
                                           "53fb6562.08488c",
                                           "4e198116ebbecd60"
                                       ]
                                   ]
                               },
                               {
                                   "id": "53fb6562.08488c",
                                   "type": "ui_table",
                                   "z": "1090acf7.2d6813",
                                   "group": "ddbe343f.9952a8",
                                   "name": "Temperaturen",
                                   "order": 1,
                                   "width": "14",
                                   "height": "12",
                                   "columns": [],
                                   "outputs": 1,
                                   "cts": true,
                                   "x": 1380,
                                   "y": 1560,
                                   "wires": [
                                       []
                                   ]
                               },
                               {
                                   "id": "ddbe343f.9952a8",
                                   "type": "ui_group",
                                   "name": "Temperaturen",
                                   "tab": "2b447e3f.ff91d2",
                                   "order": 1,
                                   "disp": true,
                                   "width": "14",
                                   "collapse": false
                               },
                               {
                                   "id": "2b447e3f.ff91d2",
                                   "type": "ui_tab",
                                   "name": "Wohnung",
                                   "icon": "dashboard",
                                   "order": 14,
                                   "disabled": false,
                                   "hidden": false
                               }
                            ]
                            

                            Werte:

                            {"topic":{"tabulator":{"columnResized":"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }","columnMoved":"function(column, columns){     var newColumns=[];     columns.forEach(function (column) {         newColumns.push({'field': column._column.field});     });     this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }","groupHeader":"function (value, count, data, group) {return value + \"<span style='color:#d00; margin-left:10px;'>(\" + count + \" Termostat\"+((count>1) ? \"e\" : \"\") + \")</span>\";}","columns":[{"formatterParams":{"target":"_blank"},"title":"Room","field":"room","width":100,"frozen":true},{"formatterParams":{"target":"_blank"},"title":"Ort","field":"name","width":100,"align":"center"},{"formatterParams":{"target":"_blank"},"title":"Measurements","columns":[{"formatterParams":{"target":"_blank","allowEmpty":true,"min":5,"max":25,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'°C';}","legendColor":"#101010","legendAlign":"left"},"title":"Temperatur","field":"temperature","formatter":"progress","width":100},{"formatterParams":{"target":"_blank","allowEmpty":true,"min":0,"max":100,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'%';}","legendColor":"#101010","legendAlign":"left"},"title":"Luftfeuchtigkeit","field":"humidity","formatter":"progress","width":100},{"formatterParams":{"target":"_blank"},"title":"LastUpdate","field":"lastupdate","width":150,"frozen":true}]}],"layout":"fitColumns","movableColumns":true,"groupBy":""},"customHeight":20},"payload":{"Büro":{"temperature":19.98,"humidity":49.56,"name":"Besta","room":"Büro","id":"Büro/Besta","lastupdate":"vor ein paar Sekunden"},"Flur_1":{"temperature":23.03,"humidity":54.42,"name":"Kommode","room":"Flur_1","id":"Flur_1/Kommode","lastupdate":"vor ein paar Sekunden"},"Schlafzimmer":{"temperature":20.26,"humidity":64.96,"name":"Satsumas","room":"Schlafzimmer","id":"Schlafzimmer/Satsumas","lastupdate":"vor ein paar Sekunden"},"Wohnzimmer":{"temperature":21.53,"humidity":60.56,"name":"Couchtisch","room":"Wohnzimmer","id":"Wohnzimmer/Couchtisch","lastupdate":"vor ein paar Sekunden"},"Kleines_Bad":{"temperature":23.09,"humidity":54.32,"name":"Spiegel","room":"Kleines_Bad","id":"Kleines_Bad/Spiegel","lastupdate":"vor ein paar Sekunden"},"Flur_2":{"temperature":22.43,"humidity":55.37,"name":"Türrahmen_Küche","room":"Flur_2","id":"Flur_2/Türrahmen_Küche","lastupdate":"vor ein paar Sekunden"},"Großes_Bad":{"temperature":23.81,"humidity":53.33,"name":"Schrank","room":"Großes_Bad","id":"Großes_Bad/Schrank","lastupdate":"vor ein paar Sekunden"},"Küche":{"temperature":21.82,"humidity":57.56,"name":"undefined","room":"Küche","id":"Küche/undefined","lastupdate":"vor ein paar Sekunden"},"Abstellkammer":{"temperature":23.01,"humidity":52.64,"name":"Regal","room":"Abstellkammer","id":"Abstellkammer/Regal","lastupdate":"vor ein paar Sekunden"}},"acknowledged":true,"timestamp":1669581999051,"lastchange":1669581987201,"from":"system.adapter.mqtt.0","_msgid":"2ec2d90fd3b3e55c","ui_control":{"tabulator":{"columnResized":"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }","columnMoved":"function(column, columns){     var newColumns=[];     columns.forEach(function (column) {         newColumns.push({'field': column._column.field});     });     this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }","groupHeader":"function (value, count, data, group) {return value + \"<span style='color:#d00; margin-left:10px;'>(\" + count + \" Termostat\"+((count>1) ? \"e\" : \"\") + \")</span>\";}","columns":[{"formatterParams":{"target":"_blank"},"title":"Room","field":"room","width":100,"frozen":true},{"formatterParams":{"target":"_blank"},"title":"Ort","field":"name","width":100,"align":"center"},{"formatterParams":{"target":"_blank"},"title":"Measurements","columns":[{"formatterParams":{"target":"_blank","allowEmpty":true,"min":5,"max":25,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'°C';}","legendColor":"#101010","legendAlign":"left"},"title":"Temperatur","field":"temperature","formatter":"progress","width":100},{"formatterParams":{"target":"_blank","allowEmpty":true,"min":0,"max":100,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'%';}","legendColor":"#101010","legendAlign":"left"},"title":"Luftfeuchtigkeit","field":"humidity","formatter":"progress","width":100},{"formatterParams":{"target":"_blank"},"title":"LastUpdate","field":"lastupdate","width":150,"frozen":true}]}],"layout":"fitColumns","movableColumns":true,"groupBy":""},"customHeight":20}}
                            

                            mickymM 1 Reply Last reply
                            0
                            • S Schmetterfliege

                              Mal ganz blöd gefragt...
                              kannst du mal schauen ob bei dir die Tabelle damit funktioniert? Also Werte hat?

                              Nodes:

                              [
                                 {
                                     "id": "9eecae9b.cc535",
                                     "type": "change",
                                     "z": "1090acf7.2d6813",
                                     "name": "ui_control",
                                     "rules": [
                                         {
                                             "t": "set",
                                             "p": "ui_control",
                                             "pt": "msg",
                                             "to": "topic",
                                             "tot": "msg"
                                         }
                                     ],
                                     "action": "",
                                     "property": "",
                                     "from": "",
                                     "to": "",
                                     "reg": false,
                                     "x": 1200,
                                     "y": 1560,
                                     "wires": [
                                         [
                                             "53fb6562.08488c",
                                             "4e198116ebbecd60"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "53fb6562.08488c",
                                     "type": "ui_table",
                                     "z": "1090acf7.2d6813",
                                     "group": "ddbe343f.9952a8",
                                     "name": "Temperaturen",
                                     "order": 1,
                                     "width": "14",
                                     "height": "12",
                                     "columns": [],
                                     "outputs": 1,
                                     "cts": true,
                                     "x": 1380,
                                     "y": 1560,
                                     "wires": [
                                         []
                                     ]
                                 },
                                 {
                                     "id": "ddbe343f.9952a8",
                                     "type": "ui_group",
                                     "name": "Temperaturen",
                                     "tab": "2b447e3f.ff91d2",
                                     "order": 1,
                                     "disp": true,
                                     "width": "14",
                                     "collapse": false
                                 },
                                 {
                                     "id": "2b447e3f.ff91d2",
                                     "type": "ui_tab",
                                     "name": "Wohnung",
                                     "icon": "dashboard",
                                     "order": 14,
                                     "disabled": false,
                                     "hidden": false
                                 }
                              ]
                              

                              Werte:

                              {"topic":{"tabulator":{"columnResized":"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }","columnMoved":"function(column, columns){     var newColumns=[];     columns.forEach(function (column) {         newColumns.push({'field': column._column.field});     });     this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }","groupHeader":"function (value, count, data, group) {return value + \"<span style='color:#d00; margin-left:10px;'>(\" + count + \" Termostat\"+((count>1) ? \"e\" : \"\") + \")</span>\";}","columns":[{"formatterParams":{"target":"_blank"},"title":"Room","field":"room","width":100,"frozen":true},{"formatterParams":{"target":"_blank"},"title":"Ort","field":"name","width":100,"align":"center"},{"formatterParams":{"target":"_blank"},"title":"Measurements","columns":[{"formatterParams":{"target":"_blank","allowEmpty":true,"min":5,"max":25,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'°C';}","legendColor":"#101010","legendAlign":"left"},"title":"Temperatur","field":"temperature","formatter":"progress","width":100},{"formatterParams":{"target":"_blank","allowEmpty":true,"min":0,"max":100,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'%';}","legendColor":"#101010","legendAlign":"left"},"title":"Luftfeuchtigkeit","field":"humidity","formatter":"progress","width":100},{"formatterParams":{"target":"_blank"},"title":"LastUpdate","field":"lastupdate","width":150,"frozen":true}]}],"layout":"fitColumns","movableColumns":true,"groupBy":""},"customHeight":20},"payload":{"Büro":{"temperature":19.98,"humidity":49.56,"name":"Besta","room":"Büro","id":"Büro/Besta","lastupdate":"vor ein paar Sekunden"},"Flur_1":{"temperature":23.03,"humidity":54.42,"name":"Kommode","room":"Flur_1","id":"Flur_1/Kommode","lastupdate":"vor ein paar Sekunden"},"Schlafzimmer":{"temperature":20.26,"humidity":64.96,"name":"Satsumas","room":"Schlafzimmer","id":"Schlafzimmer/Satsumas","lastupdate":"vor ein paar Sekunden"},"Wohnzimmer":{"temperature":21.53,"humidity":60.56,"name":"Couchtisch","room":"Wohnzimmer","id":"Wohnzimmer/Couchtisch","lastupdate":"vor ein paar Sekunden"},"Kleines_Bad":{"temperature":23.09,"humidity":54.32,"name":"Spiegel","room":"Kleines_Bad","id":"Kleines_Bad/Spiegel","lastupdate":"vor ein paar Sekunden"},"Flur_2":{"temperature":22.43,"humidity":55.37,"name":"Türrahmen_Küche","room":"Flur_2","id":"Flur_2/Türrahmen_Küche","lastupdate":"vor ein paar Sekunden"},"Großes_Bad":{"temperature":23.81,"humidity":53.33,"name":"Schrank","room":"Großes_Bad","id":"Großes_Bad/Schrank","lastupdate":"vor ein paar Sekunden"},"Küche":{"temperature":21.82,"humidity":57.56,"name":"undefined","room":"Küche","id":"Küche/undefined","lastupdate":"vor ein paar Sekunden"},"Abstellkammer":{"temperature":23.01,"humidity":52.64,"name":"Regal","room":"Abstellkammer","id":"Abstellkammer/Regal","lastupdate":"vor ein paar Sekunden"}},"acknowledged":true,"timestamp":1669581999051,"lastchange":1669581987201,"from":"system.adapter.mqtt.0","_msgid":"2ec2d90fd3b3e55c","ui_control":{"tabulator":{"columnResized":"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }","columnMoved":"function(column, columns){     var newColumns=[];     columns.forEach(function (column) {         newColumns.push({'field': column._column.field});     });     this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }","groupHeader":"function (value, count, data, group) {return value + \"<span style='color:#d00; margin-left:10px;'>(\" + count + \" Termostat\"+((count>1) ? \"e\" : \"\") + \")</span>\";}","columns":[{"formatterParams":{"target":"_blank"},"title":"Room","field":"room","width":100,"frozen":true},{"formatterParams":{"target":"_blank"},"title":"Ort","field":"name","width":100,"align":"center"},{"formatterParams":{"target":"_blank"},"title":"Measurements","columns":[{"formatterParams":{"target":"_blank","allowEmpty":true,"min":5,"max":25,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'°C';}","legendColor":"#101010","legendAlign":"left"},"title":"Temperatur","field":"temperature","formatter":"progress","width":100},{"formatterParams":{"target":"_blank","allowEmpty":true,"min":0,"max":100,"color":["#91bd00","#b3bd00","#bdad00","#bd9700","#bd8700","#bd7e00","#bd7100","#bd6800","#bd5b00","#bd4500","#bd2f00"],"legend":"function (value) {return '&nbsp;&nbsp;'+value+'%';}","legendColor":"#101010","legendAlign":"left"},"title":"Luftfeuchtigkeit","field":"humidity","formatter":"progress","width":100},{"formatterParams":{"target":"_blank"},"title":"LastUpdate","field":"lastupdate","width":150,"frozen":true}]}],"layout":"fitColumns","movableColumns":true,"groupBy":""},"customHeight":20}}
                              

                              mickymM Offline
                              mickymM Offline
                              mickym
                              Most Active
                              wrote on last edited by mickym
                              #262

                              @schmetterfliege Nein - das geht nicht.

                              Aber:

                              1. Deine ChangeNode ist so ja nicht richtig. Wie injizierst Du denn die Daten.
                              2. Daten kommen über ein Array von Objekten rein. Bei Dir sehe ich aber nur Objekte.

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              S 1 Reply Last reply
                              0
                              • mickymM mickym

                                @schmetterfliege Nein - das geht nicht.

                                Aber:

                                1. Deine ChangeNode ist so ja nicht richtig. Wie injizierst Du denn die Daten.
                                2. Daten kommen über ein Array von Objekten rein. Bei Dir sehe ich aber nur Objekte.
                                S Offline
                                S Offline
                                Schmetterfliege
                                wrote on last edited by Schmetterfliege
                                #263

                                @mickym said in Zigbee2mqtt installation:

                                @schmetterfliege Nein - das geht nicht.

                                Aber:

                                1. Deine ChangeNode ist so ja nicht richtig. Wie injizierst Du denn die Daten.

                                Welche Daten genau?

                                1. Daten kommen über ein Array von Objekten rein. Bei Dir sehe ich aber nur Objekte.

                                Okay, das war tatsächlich das Problem. Aber das Split und Join (wo dann ein Array draus gemacht wird) hatte ich deutlich vorher entfernt gehabt - die Tabelle hatte noch was angezeigt. Aber vermutlich nicht geupdated... Danke dir. Anzeigeproblem gelöst

                                mickymM 1 Reply Last reply
                                0
                                • S Schmetterfliege

                                  @mickym said in Zigbee2mqtt installation:

                                  @schmetterfliege Nein - das geht nicht.

                                  Aber:

                                  1. Deine ChangeNode ist so ja nicht richtig. Wie injizierst Du denn die Daten.

                                  Welche Daten genau?

                                  1. Daten kommen über ein Array von Objekten rein. Bei Dir sehe ich aber nur Objekte.

                                  Okay, das war tatsächlich das Problem. Aber das Split und Join (wo dann ein Array draus gemacht wird) hatte ich deutlich vorher entfernt gehabt - die Tabelle hatte noch was angezeigt. Aber vermutlich nicht geupdated... Danke dir. Anzeigeproblem gelöst

                                  mickymM Offline
                                  mickymM Offline
                                  mickym
                                  Most Active
                                  wrote on last edited by mickym
                                  #264

                                  @schmetterfliege Ich werde Dir noch eine Methode zeigen, wo man nur mit JSONATA das wandeln kann. Das ist die eleganteste Methode. 😉

                                  Geschafft:

                                  4ef5569b-9498-49c0-94f4-11a83f412ee6-image.png

                                  Die eleganteste Methode, die Objekte in ein Array zu verwandeln geht so. 😁

                                  0363f5fb-05e3-4550-ae31-2e2654f3e13a-image.png

                                  [
                                     {
                                         "id": "53fb6562.08488c",
                                         "type": "ui_table",
                                         "z": "8b753c91a6565074",
                                         "group": "ddbe343f.9952a8",
                                         "name": "Temperaturen",
                                         "order": 1,
                                         "width": "14",
                                         "height": "12",
                                         "columns": [],
                                         "outputs": 1,
                                         "cts": true,
                                         "x": 600,
                                         "y": 380,
                                         "wires": [
                                             []
                                         ]
                                     },
                                     {
                                         "id": "0023a7983b1199db",
                                         "type": "inject",
                                         "z": "8b753c91a6565074",
                                         "name": "",
                                         "props": [
                                             {
                                                 "p": "payload"
                                             }
                                         ],
                                         "repeat": "",
                                         "crontab": "",
                                         "once": false,
                                         "onceDelay": 0.1,
                                         "topic": "",
                                         "payload": "{\"topic\":{\"tabulator\":{\"columnResized\":\"function(column){ var newColumn = { field: column._column.field, visible: column._column.visible, width: column._column.width, widthFixed: column._column.widthFixed, widthStyled: column._column.widthStyled }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\"columnMoved\":\"function(column, columns){ var newColumns=[]; columns.forEach(function (column) { newColumns.push({'field': column._column.field}); }); this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }\",\"groupHeader\":\"function (value, count, data, group) {return value + \\\"<span style='color:#d00; margin-left:10px;'>(\\\" + count + \\\" Termostat\\\"+((count>1) ? \\\"e\\\" : \\\"\\\") + \\\")</span>\\\";}\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Room\",\"field\":\"room\",\"width\":100,\"frozen\":true},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Ort\",\"field\":\"name\",\"width\":100,\"align\":\"center\"},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Measurements\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":5,\"max\":25,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'°C';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Temperatur\",\"field\":\"temperature\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":0,\"max\":100,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'%';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Luftfeuchtigkeit\",\"field\":\"humidity\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"LastUpdate\",\"field\":\"lastupdate\",\"width\":150,\"frozen\":true}]}],\"layout\":\"fitColumns\",\"movableColumns\":true,\"groupBy\":\"\"},\"customHeight\":20},\"payload\":{\"Büro\":{\"temperature\":19.98,\"humidity\":49.56,\"name\":\"Besta\",\"room\":\"Büro\",\"id\":\"Büro/Besta\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Flur_1\":{\"temperature\":23.03,\"humidity\":54.42,\"name\":\"Kommode\",\"room\":\"Flur_1\",\"id\":\"Flur_1/Kommode\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Schlafzimmer\":{\"temperature\":20.26,\"humidity\":64.96,\"name\":\"Satsumas\",\"room\":\"Schlafzimmer\",\"id\":\"Schlafzimmer/Satsumas\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Wohnzimmer\":{\"temperature\":21.53,\"humidity\":60.56,\"name\":\"Couchtisch\",\"room\":\"Wohnzimmer\",\"id\":\"Wohnzimmer/Couchtisch\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Kleines_Bad\":{\"temperature\":23.09,\"humidity\":54.32,\"name\":\"Spiegel\",\"room\":\"Kleines_Bad\",\"id\":\"Kleines_Bad/Spiegel\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Flur_2\":{\"temperature\":22.43,\"humidity\":55.37,\"name\":\"Türrahmen_Küche\",\"room\":\"Flur_2\",\"id\":\"Flur_2/Türrahmen_Küche\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Großes_Bad\":{\"temperature\":23.81,\"humidity\":53.33,\"name\":\"Schrank\",\"room\":\"Großes_Bad\",\"id\":\"Großes_Bad/Schrank\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Küche\":{\"temperature\":21.82,\"humidity\":57.56,\"name\":\"undefined\",\"room\":\"Küche\",\"id\":\"Küche/undefined\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Abstellkammer\":{\"temperature\":23.01,\"humidity\":52.64,\"name\":\"Regal\",\"room\":\"Abstellkammer\",\"id\":\"Abstellkammer/Regal\",\"lastupdate\":\"vor ein paar Sekunden\"}},\"acknowledged\":true,\"timestamp\":1669581999051,\"lastchange\":1669581987201,\"from\":\"system.adapter.mqtt.0\",\"_msgid\":\"2ec2d90fd3b3e55c\",\"ui_control\":{\"tabulator\":{\"columnResized\":\"function(column){ var newColumn = { field: column._column.field, visible: column._column.visible, width: column._column.width, widthFixed: column._column.widthFixed, widthStyled: column._column.widthStyled }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\"columnMoved\":\"function(column, columns){ var newColumns=[]; columns.forEach(function (column) { newColumns.push({'field': column._column.field}); }); this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }\",\"groupHeader\":\"function (value, count, data, group) {return value + \\\"<span style='color:#d00; margin-left:10px;'>(\\\" + count + \\\" Termostat\\\"+((count>1) ? \\\"e\\\" : \\\"\\\") + \\\")</span>\\\";}\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Room\",\"field\":\"room\",\"width\":100,\"frozen\":true},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Ort\",\"field\":\"name\",\"width\":100,\"align\":\"center\"},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Measurements\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":5,\"max\":25,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'°C';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Temperatur\",\"field\":\"temperature\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":0,\"max\":100,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'%';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Luftfeuchtigkeit\",\"field\":\"humidity\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"LastUpdate\",\"field\":\"lastupdate\",\"width\":150,\"frozen\":true}]}],\"layout\":\"fitColumns\",\"movableColumns\":true,\"groupBy\":\"\"},\"customHeight\":20}}",
                                         "payloadType": "json",
                                         "x": 230,
                                         "y": 380,
                                         "wires": [
                                             [
                                                 "9eecae9b.cc535"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "9eecae9b.cc535",
                                         "type": "change",
                                         "z": "8b753c91a6565074",
                                         "name": "ui_control",
                                         "rules": [
                                             {
                                                 "t": "set",
                                                 "p": "ui_control",
                                                 "pt": "msg",
                                                 "to": "payload.topic",
                                                 "tot": "msg"
                                             },
                                             {
                                                 "t": "set",
                                                 "p": "payload",
                                                 "pt": "msg",
                                                 "to": "payload.payload",
                                                 "tot": "msg"
                                             },
                                             {
                                                 "t": "set",
                                                 "p": "payload",
                                                 "pt": "msg",
                                                 "to": "payload.*",
                                                 "tot": "jsonata"
                                             }
                                         ],
                                         "action": "",
                                         "property": "",
                                         "from": "",
                                         "to": "",
                                         "reg": false,
                                         "x": 400,
                                         "y": 380,
                                         "wires": [
                                             [
                                                 "53fb6562.08488c"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "ddbe343f.9952a8",
                                         "type": "ui_group",
                                         "name": "Temperaturen",
                                         "tab": "2b447e3f.ff91d2",
                                         "order": 1,
                                         "disp": true,
                                         "width": "14",
                                         "collapse": false
                                     },
                                     {
                                         "id": "2b447e3f.ff91d2",
                                         "type": "ui_tab",
                                         "name": "Wohnung",
                                         "icon": "dashboard",
                                         "order": 14,
                                         "disabled": false,
                                         "hidden": false
                                     }
                                  ]
                                  

                                  Man mappt einfach.

                                  Also

                                  065d33f7-7715-45d0-9674-c5b1052739de-image.png

                                  https://docs.jsonata.org/path-operators

                                  Über eine JOIN Node kann man es auch machen, dann würde ich aber auch eine Reduktion machen.

                                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                  S 1 Reply Last reply
                                  0
                                  • mickymM mickym

                                    @schmetterfliege Ich werde Dir noch eine Methode zeigen, wo man nur mit JSONATA das wandeln kann. Das ist die eleganteste Methode. 😉

                                    Geschafft:

                                    4ef5569b-9498-49c0-94f4-11a83f412ee6-image.png

                                    Die eleganteste Methode, die Objekte in ein Array zu verwandeln geht so. 😁

                                    0363f5fb-05e3-4550-ae31-2e2654f3e13a-image.png

                                    [
                                       {
                                           "id": "53fb6562.08488c",
                                           "type": "ui_table",
                                           "z": "8b753c91a6565074",
                                           "group": "ddbe343f.9952a8",
                                           "name": "Temperaturen",
                                           "order": 1,
                                           "width": "14",
                                           "height": "12",
                                           "columns": [],
                                           "outputs": 1,
                                           "cts": true,
                                           "x": 600,
                                           "y": 380,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "0023a7983b1199db",
                                           "type": "inject",
                                           "z": "8b753c91a6565074",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "",
                                           "payload": "{\"topic\":{\"tabulator\":{\"columnResized\":\"function(column){ var newColumn = { field: column._column.field, visible: column._column.visible, width: column._column.width, widthFixed: column._column.widthFixed, widthStyled: column._column.widthStyled }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\"columnMoved\":\"function(column, columns){ var newColumns=[]; columns.forEach(function (column) { newColumns.push({'field': column._column.field}); }); this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }\",\"groupHeader\":\"function (value, count, data, group) {return value + \\\"<span style='color:#d00; margin-left:10px;'>(\\\" + count + \\\" Termostat\\\"+((count>1) ? \\\"e\\\" : \\\"\\\") + \\\")</span>\\\";}\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Room\",\"field\":\"room\",\"width\":100,\"frozen\":true},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Ort\",\"field\":\"name\",\"width\":100,\"align\":\"center\"},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Measurements\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":5,\"max\":25,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'°C';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Temperatur\",\"field\":\"temperature\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":0,\"max\":100,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'%';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Luftfeuchtigkeit\",\"field\":\"humidity\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"LastUpdate\",\"field\":\"lastupdate\",\"width\":150,\"frozen\":true}]}],\"layout\":\"fitColumns\",\"movableColumns\":true,\"groupBy\":\"\"},\"customHeight\":20},\"payload\":{\"Büro\":{\"temperature\":19.98,\"humidity\":49.56,\"name\":\"Besta\",\"room\":\"Büro\",\"id\":\"Büro/Besta\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Flur_1\":{\"temperature\":23.03,\"humidity\":54.42,\"name\":\"Kommode\",\"room\":\"Flur_1\",\"id\":\"Flur_1/Kommode\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Schlafzimmer\":{\"temperature\":20.26,\"humidity\":64.96,\"name\":\"Satsumas\",\"room\":\"Schlafzimmer\",\"id\":\"Schlafzimmer/Satsumas\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Wohnzimmer\":{\"temperature\":21.53,\"humidity\":60.56,\"name\":\"Couchtisch\",\"room\":\"Wohnzimmer\",\"id\":\"Wohnzimmer/Couchtisch\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Kleines_Bad\":{\"temperature\":23.09,\"humidity\":54.32,\"name\":\"Spiegel\",\"room\":\"Kleines_Bad\",\"id\":\"Kleines_Bad/Spiegel\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Flur_2\":{\"temperature\":22.43,\"humidity\":55.37,\"name\":\"Türrahmen_Küche\",\"room\":\"Flur_2\",\"id\":\"Flur_2/Türrahmen_Küche\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Großes_Bad\":{\"temperature\":23.81,\"humidity\":53.33,\"name\":\"Schrank\",\"room\":\"Großes_Bad\",\"id\":\"Großes_Bad/Schrank\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Küche\":{\"temperature\":21.82,\"humidity\":57.56,\"name\":\"undefined\",\"room\":\"Küche\",\"id\":\"Küche/undefined\",\"lastupdate\":\"vor ein paar Sekunden\"},\"Abstellkammer\":{\"temperature\":23.01,\"humidity\":52.64,\"name\":\"Regal\",\"room\":\"Abstellkammer\",\"id\":\"Abstellkammer/Regal\",\"lastupdate\":\"vor ein paar Sekunden\"}},\"acknowledged\":true,\"timestamp\":1669581999051,\"lastchange\":1669581987201,\"from\":\"system.adapter.mqtt.0\",\"_msgid\":\"2ec2d90fd3b3e55c\",\"ui_control\":{\"tabulator\":{\"columnResized\":\"function(column){ var newColumn = { field: column._column.field, visible: column._column.visible, width: column._column.width, widthFixed: column._column.widthFixed, widthStyled: column._column.widthStyled }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\"columnMoved\":\"function(column, columns){ var newColumns=[]; columns.forEach(function (column) { newColumns.push({'field': column._column.field}); }); this.send({topic:this.config.topic,ui_control:{callback:'columnMoved',columns:newColumns}}); }\",\"groupHeader\":\"function (value, count, data, group) {return value + \\\"<span style='color:#d00; margin-left:10px;'>(\\\" + count + \\\" Termostat\\\"+((count>1) ? \\\"e\\\" : \\\"\\\") + \\\")</span>\\\";}\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Room\",\"field\":\"room\",\"width\":100,\"frozen\":true},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Ort\",\"field\":\"name\",\"width\":100,\"align\":\"center\"},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"Measurements\",\"columns\":[{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":5,\"max\":25,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'°C';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Temperatur\",\"field\":\"temperature\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\",\"allowEmpty\":true,\"min\":0,\"max\":100,\"color\":[\"#91bd00\",\"#b3bd00\",\"#bdad00\",\"#bd9700\",\"#bd8700\",\"#bd7e00\",\"#bd7100\",\"#bd6800\",\"#bd5b00\",\"#bd4500\",\"#bd2f00\"],\"legend\":\"function (value) {return '&nbsp;&nbsp;'+value+'%';}\",\"legendColor\":\"#101010\",\"legendAlign\":\"left\"},\"title\":\"Luftfeuchtigkeit\",\"field\":\"humidity\",\"formatter\":\"progress\",\"width\":100},{\"formatterParams\":{\"target\":\"_blank\"},\"title\":\"LastUpdate\",\"field\":\"lastupdate\",\"width\":150,\"frozen\":true}]}],\"layout\":\"fitColumns\",\"movableColumns\":true,\"groupBy\":\"\"},\"customHeight\":20}}",
                                           "payloadType": "json",
                                           "x": 230,
                                           "y": 380,
                                           "wires": [
                                               [
                                                   "9eecae9b.cc535"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "9eecae9b.cc535",
                                           "type": "change",
                                           "z": "8b753c91a6565074",
                                           "name": "ui_control",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "ui_control",
                                                   "pt": "msg",
                                                   "to": "payload.topic",
                                                   "tot": "msg"
                                               },
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "payload.payload",
                                                   "tot": "msg"
                                               },
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "payload.*",
                                                   "tot": "jsonata"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 400,
                                           "y": 380,
                                           "wires": [
                                               [
                                                   "53fb6562.08488c"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "ddbe343f.9952a8",
                                           "type": "ui_group",
                                           "name": "Temperaturen",
                                           "tab": "2b447e3f.ff91d2",
                                           "order": 1,
                                           "disp": true,
                                           "width": "14",
                                           "collapse": false
                                       },
                                       {
                                           "id": "2b447e3f.ff91d2",
                                           "type": "ui_tab",
                                           "name": "Wohnung",
                                           "icon": "dashboard",
                                           "order": 14,
                                           "disabled": false,
                                           "hidden": false
                                       }
                                    ]
                                    

                                    Man mappt einfach.

                                    Also

                                    065d33f7-7715-45d0-9674-c5b1052739de-image.png

                                    https://docs.jsonata.org/path-operators

                                    Über eine JOIN Node kann man es auch machen, dann würde ich aber auch eine Reduktion machen.

                                    S Offline
                                    S Offline
                                    Schmetterfliege
                                    wrote on last edited by
                                    #265

                                    @mickym
                                    Das ist in der Tat deutlich eleganter! Danke

                                    mickymM 1 Reply Last reply
                                    0
                                    • S Schmetterfliege

                                      @mickym
                                      Das ist in der Tat deutlich eleganter! Danke

                                      mickymM Offline
                                      mickymM Offline
                                      mickym
                                      Most Active
                                      wrote on last edited by mickym
                                      #266

                                      @schmetterfliege So geht es auch, wenn auch etwas umständlicher - aber eben nicht mehr mit Zeit usw.

                                      [
                                          {
                                              "id": "e8f9b1fcb1b39fdb",
                                              "type": "split",
                                              "z": "8b753c91a6565074",
                                              "name": "",
                                              "splt": "\\n",
                                              "spltType": "str",
                                              "arraySplt": 1,
                                              "arraySpltType": "len",
                                              "stream": false,
                                              "addname": "",
                                              "x": 590,
                                              "y": 440,
                                              "wires": [
                                                  [
                                                      "2fb48db9fba6b839"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "2fb48db9fba6b839",
                                              "type": "join",
                                              "z": "8b753c91a6565074",
                                              "name": "",
                                              "mode": "reduce",
                                              "build": "object",
                                              "property": "payload",
                                              "propertyType": "msg",
                                              "key": "topic",
                                              "joiner": "\\n",
                                              "joinerType": "str",
                                              "accumulate": true,
                                              "timeout": "",
                                              "count": "",
                                              "reduceRight": false,
                                              "reduceExp": "$append($A, payload)\t",
                                              "reduceInit": "[]",
                                              "reduceInitType": "json",
                                              "reduceFixup": "",
                                              "x": 730,
                                              "y": 440,
                                              "wires": [
                                                  [
                                                      "f9e063e1acfe9200"
                                                  ]
                                              ]
                                          }
                                      ]
                                      

                                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                      S 1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        Schmetterfliege
                                        wrote on last edited by
                                        #267

                                        Hab das den Kontext jetzt auch angepasst dass alles auf gleiche Art benannt ist usw.
                                        Nur das LastUpdate muss ich jetzt halt noch hinbiegen.
                                        Kontext war gelöscht, daher aktuell nur für 1 Sensor der Timestamp da - trotzdem wird bei allen Sensoren die aktuell "da" sind der Wert gleich gesetzt.

                                        eb114e3e-4bb5-4cf3-8b94-9182b66e41e3-image.png
                                        457bcab4-2bb3-46f4-9b16-de1a2eef3690-image.png

                                        mickymM 1 Reply Last reply
                                        0
                                        • mickymM mickym

                                          @schmetterfliege So geht es auch, wenn auch etwas umständlicher - aber eben nicht mehr mit Zeit usw.

                                          [
                                              {
                                                  "id": "e8f9b1fcb1b39fdb",
                                                  "type": "split",
                                                  "z": "8b753c91a6565074",
                                                  "name": "",
                                                  "splt": "\\n",
                                                  "spltType": "str",
                                                  "arraySplt": 1,
                                                  "arraySpltType": "len",
                                                  "stream": false,
                                                  "addname": "",
                                                  "x": 590,
                                                  "y": 440,
                                                  "wires": [
                                                      [
                                                          "2fb48db9fba6b839"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "2fb48db9fba6b839",
                                                  "type": "join",
                                                  "z": "8b753c91a6565074",
                                                  "name": "",
                                                  "mode": "reduce",
                                                  "build": "object",
                                                  "property": "payload",
                                                  "propertyType": "msg",
                                                  "key": "topic",
                                                  "joiner": "\\n",
                                                  "joinerType": "str",
                                                  "accumulate": true,
                                                  "timeout": "",
                                                  "count": "",
                                                  "reduceRight": false,
                                                  "reduceExp": "$append($A, payload)\t",
                                                  "reduceInit": "[]",
                                                  "reduceInitType": "json",
                                                  "reduceFixup": "",
                                                  "x": 730,
                                                  "y": 440,
                                                  "wires": [
                                                      [
                                                          "f9e063e1acfe9200"
                                                      ]
                                                  ]
                                              }
                                          ]
                                          

                                          S Offline
                                          S Offline
                                          Schmetterfliege
                                          wrote on last edited by
                                          #268

                                          @mickym said in Zigbee2mqtt installation:

                                          @schmetterfliege So geht es auch, wenn auch etwas umständlicher - aber eben nicht mehr mit Zeit usw.

                                          [
                                              {
                                                  "id": "e8f9b1fcb1b39fdb",
                                                  "type": "split",
                                                  "z": "8b753c91a6565074",
                                                  "name": "",
                                                  "splt": "\\n",
                                                  "spltType": "str",
                                                  "arraySplt": 1,
                                                  "arraySpltType": "len",
                                                  "stream": false,
                                                  "addname": "",
                                                  "x": 590,
                                                  "y": 440,
                                                  "wires": [
                                                      [
                                                          "2fb48db9fba6b839"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "2fb48db9fba6b839",
                                                  "type": "join",
                                                  "z": "8b753c91a6565074",
                                                  "name": "",
                                                  "mode": "reduce",
                                                  "build": "object",
                                                  "property": "payload",
                                                  "propertyType": "msg",
                                                  "key": "topic",
                                                  "joiner": "\\n",
                                                  "joinerType": "str",
                                                  "accumulate": true,
                                                  "timeout": "",
                                                  "count": "",
                                                  "reduceRight": false,
                                                  "reduceExp": "$append($A, payload)\t",
                                                  "reduceInit": "[]",
                                                  "reduceInitType": "json",
                                                  "reduceFixup": "",
                                                  "x": 730,
                                                  "y": 440,
                                                  "wires": [
                                                      [
                                                          "f9e063e1acfe9200"
                                                      ]
                                                  ]
                                              }
                                          ]
                                          

                                          Okay, da habe ich es lieber in der Change Node und spar mir den Split und komplizierten Join 😁

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          98

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe