Ankündigung

Einklappen
Keine Ankündigung bisher.

openHAB2 - "Cannot retrieve item"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    openHAB2 - "Cannot retrieve item"

    Schönen guten Morgen,

    ich habe eine frische, Debian9-basierte OH2 Installation (kein Upgrade, keine Migration -> Neueinsteiger).
    • Die Installation verlief problemlos und anhand der offiziellen Doku.
    • Die UIs laufen problemlos sowohl unter HTTP, als auch HTTPS


    Über PaperUI habe ich sowohl das Network-, als auch das KNX-Binding installiert und entsprechend die [/etc/openhab2/services/knx.cfg] editiert.

    Auszug aus der [/var/log/openhab2/openhab.log]
    2017-06-28 19:06:45.050 [INFO ] [nx.internal.connection.KNXConnection] - Established connection to KNX bus on X.X.X.X:3671 in mode TUNNEL.

    Sohin kann davon ausgegangen werden, dass OH2 mit meinem KNX-Bus kommunizieren kann.

    Mein nächster Schritt wäre ein Test gewesen um die Deckenleuchte im meinem Büro via OH2 zu schalten. Das tatsächliche KNX-Binding über ETS läuft auf die Adresse 3/1/40 (und funktioniert sowohl über die ETS-Programmierung, als auch über meinen Smart-Visu Server einwandfrei).

    Ich habe daher in erster Instanz eine Items-Datei [/etc/openhab2/items/knx.items] angelegt..
    Code:
    [I]Switch test "Test" { knx="3/1/40" }[/I]
    ..und im Anschluss eine Sitemap-Datei [/etc/openhab2/sitemaps/knx.sitemap] angelegt.
    Code:
    sitemap knx label="KNX"
    {
        Switch item=test
    }
    In PaperUI habe ich abschließend via Configuration > Services > Basic UI > Configure die Default-Sitemap "knx" angegeben.

    Rufe ich nun https://X.X.X.X:YYYY/basicui/app auf wird auch korrekt die angelegte Default-Sitemap (mit dem einzelnen Switch) angezeigt.

    Nachdem jedoch das Licht nicht geschaltet wird (und auch in ETS im KNX-BUS-Protokoll nichts angezeigt wird), habe ich den OH2-Serverlog [/var/log/openhab2/openhab.log] geprüft.

    Insbesondere fallen folgende Zeilen auf;

    2017-06-29 08:54:25.303 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'test' for widget org.eclipse.smarthome.model.sitemap.Switch
    2017-06-29 08:54:25.306 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Switch
    2017-06-29 08:55:45.366 [INFO ] [thome.io.rest.core.item.ItemResource] - Received HTTP POST request at 'items/test' for the unknown item 'test'.

    Meine Frage/Bitte an Euch - hat jemand von Euch Idee an was es scheitert? Ich habe auch bereits lt. Tutorials funktionierende *.items/*.sitemap Kombinationen getestet (selbstverständlich mit editierter BUS-Adresse), jedoch leider mit dem gleichen Misserfolg.

    Besten Dank an alle, die sich die Zeit zum Lesen nehmen und sich hierzu Gedanken machen.

    Schönen Tag & LG!

    #2
    Hast Du openHAB schon mal neu gestartet? Eigentlich sollte das unnötig sein, aber es sieht so aus, als hätte openHAB das Item nicht eingelesen.

    Kommentar


      #3
      Servus udo1toni - besten Dank für Deine Rückmeldung. Ja, ich hatte schon mehrmals den Service durchgestartet.

      Nachfolgend die aktuellen Log-Entries nach dem Restart;
      Code:
      2017-06-29 12:04:25.290 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'knx.items'
      2017-06-29 12:04:29.497 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'knx.sitemap'
      2017-06-29 12:04:31.959 [INFO ] [.dashboard.internal.DashboardService] - Started dashboard at /start
      2017-06-29 12:04:32.936 [INFO ] [basic.internal.servlet.WebAppServlet] - Started Basic UI at /basicui/app
      2017-06-29 12:04:33.131 [INFO ] [arthome.ui.paper.internal.PaperUIApp] - Started Paper UI at /paperui
      2017-06-29 12:04:33.344 [INFO ] [panel.internal.HABPanelDashboardTile] - Started HABPanel at /habpanel
      2017-06-29 12:04:33.890 [INFO ] [nx.internal.connection.KNXConnection] - Established connection to KNX bus on X.X.X.X:3671 in mode TUNNEL.
      2017-06-29 12:04:34.061 [INFO ] [ui.habmin.internal.servlet.HABminApp] - Started HABmin servlet at /habmin
      => meine beiden Files werden sohin gefunden und geladen
      => KNX bus connection besteht ebenso

      Und gleich hierauf die Warnings & Erros;
      Code:
      2017-06-29 12:04:45.695 [WARN ] [basic.internal.render.SwitchRenderer] - Cannot determine item type of 'test'
      org.eclipse.smarthome.core.items.ItemNotFoundException: Item 'test' could not be found in the item registry
      **CUT**
      2017-06-29 12:04:45.705 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'test' for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:04:45.709 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:04:45.712 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:04:45.714 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:04:45.716 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'test' for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:04:45.720 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'test' for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:04:45.722 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'test' for widget org.eclipse.smarthome.model.sitemap.Switch
      2017-06-29 12:05:12.640 [INFO ] [thome.io.rest.core.item.ItemResource] - Received HTTP POST request at 'items/test' for the unknown item 'test'.
      2017-06-29 12:05:19.886 [INFO ] [thome.io.rest.core.item.ItemResource] - Received HTTP POST request at 'items/test' for the unknown item 'test'.
      "Blöde" Frage an dieser Stelle - macht es einen Unterschied wie das 'knx.items' File encodiert is (ANSI vs UTF-8)?

      LG!

      Kommentar


        #4
        Und in der knx.items ist exakt der oben angegebene Inhalt? Es gibt auch keine weiteren *.items-Dateien mit einem Item test oder ein über Paper UI angelegtes Item test? Welche Version von openHAB2 läuft denn, stable, unstable, OH2.0, OH2.1? (OH2.1 ist seit gestern oder vorgestern stable...)

        Alle Files sollten grundsätzlich UFT-8 codiert sein. Auch sollte nicht <cr><lf> als Zeilenschaltung verwendet werden (das ist in Windows Standard).
        Zuletzt geändert von udo1toni; 29.06.2017, 12:16.

        Kommentar


          #5
          Servus udo1toni!

          Und in der knx.items ist exakt der oben angegebene Inhalt?
          Exakt. Ich bearbeite standardmäßig mit Notepad++, das Dokument ist exakt 35 Zeichen lang (bei einer Zeile) - und das ist genau der String, den ich oberhalb in den Post eingefügt habe.

          Es gibt auch keine weiteren *.items-Dateien mit einem Item test oder ein über Paper UI angelegtes Item test?
          Nein, der Inhalt des Verzeichnisses ist die readme.txt und die knx.items.

          /etc/openhab2/items/
          - knx.items
          - readme.txt

          In PaperUI habe ich unter Configuration > Items "No items defined." als Output.

          Welche Version von openHAB2 läuft denn, stable, unstable, OH2.0, OH2.1?
          Ich nutze über Debian die offizielle openHAB2 Repo [deb https://dl.bintray.com/openhab/apt-repo2 stable main]. Installiert habe ich gestern Nachmittag.

          Betreffend der Version - ich wüsste nicht wo ich diese außerhalb des openhab.log finden würde - dort steht
          Code:
          version:Version="2.0.0"
          Danke für den Tip mit OH2.1 - ich habe soeben ein apt-get update laufen lassen und siehe da, es gibt definitiv die updates zu den Packages "openhab2", sowie "openhab2-addons". Ich werde die mal upgraden (Snapshot der VM ist sowieso aktuell).

          Kommentar


            #6
            Servus udo1toni!

            Gute Neuigkeiten, es funktioniert. Ich möchte Euch die Lösung nicht vorenthalten, deswegen ein kurzes Update;
            1. apt-get update
            2. apt-get upgrade (die beiden OH Packages werden auf 2.1 stable aktualisiert)
            3. Ich musste die Port-Bindings wieder anpassen [/etc/default/openhab2]
            4. systemctl daemon-reload / systemctl restart openhab2
            5. Interessant war nun, dass die Sitemap nicht mehr funktioniert hatte, daher blick in den openhab.log


            Code:
            2017-06-29 14:08:08.626 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'knx.items' has errors, therefore ignoring it: [1,1]: missing EOF at ' '
            2017-06-29 14:08:13.718 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'knx.sitemap' has errors, therefore ignoring it: [1,1]: extraneous input ' ' expecting 'sitemap'
            Hier kommt nun udo1toni's Hinweis ins Spiel. Es waren beide Files als UTF-8-BOM encodiert - ich habe dies dann in NotePad++ auf UTF-8 umgestellt und siehe da, alles perfekt. Am Inhalt selbst habe ich nichts geändert - das Item wird nun sogar auch in PaperUI angezeigt (ob dies normalerweise der Standard ist kann ich nicht sagen, da ich erstmals mit einer funktionierenden Installation arbeiten kann).

            udo1toni, Dir ein großes Dankeschön für Deine Mühen !

            Kommentar


              #7
              Immer gerne

              Kommentar


                #8
                Guten Morgen!

                Bei mir läuft derzeit alles prima - habe noch ein paar Fragen zur Syntax der Bindings wenn Du Zeit hast !

                GAs für Lichter/Dimmer sind wie folgt aufgebaut (5GAs pro Leuchte);
                3/1/40 - Leuchte 1 [E/A] (1bit)
                3/1/41 - Leuchte 1 [DIM] (4bit)
                3/1/42 - Leuchte 1 [WERT] (1byte)
                3/1/43 - Leuchte 1 [RM] (1bit)
                3/1/44 - Leuchte 1 [RM WERT] (1byte)

                Am Aktor (Dimmer):
                Schalten: 3/1/40 - Leuchte 1 [E/A] (1bit)
                Dimmen: 3/1/41 - Leuchte 1 [DIM] (4bit)
                Helligkeitswert: 3/1/42 - Leuchte 1 [WERT] (1byte)
                Rückmeldung Schalten: 3/1/43 - Leuchte 1 [RM] (1bit)
                Rückmeldung Helligkeitswert: 3/1/44 - Leuchte 1 [RM WERT] (1byte)

                Im Falle einer nicht-dimmbaren Leuchte wird der "Schalten"-Kanal des Aktors auf die [E/A] GA und der "Rückmeldung schalten"-Kanal auf die [RM] GA gesetzt.

                GAs für Rollläden sind bei wie folgt aufgebaut (10GAs pro Rollladen);
                3/2/80 - Rollo 1 [AUF/AB] (1bit)
                3/2/81 - Rollo 1 [STOPP] (1bit)
                3/2/82 - Rollo 1 [POSITION HÖHE] (1byte)
                3/2/83 - Rollo 1 [POSITION LAMELLEN] (unbound)
                3/2/84 - Rollo 1 [BESCHATTUNG] (unbound)
                3/2/85 - Rollo 1 [SPERREN] (unbound)
                3/2/86 - Rollo 1 [STATUS POSITION HÖHE] (1byte)
                3/2/87 - Rollo 1 [STATUS POSITION LAMELLEN] (unbound)
                3/2/88 - Rollo 1 [EMPTY] (unbound)
                3/2/89 - Rollo 1 [EMPTY] (unbound)

                Am Aktor:
                Langzeitbetrieb: 3/2/80 - Rollo 1 [AUF/AB] (1bit)
                Kurzzeitbetrieb: 3/2/81 - Rollo 1 [STOPP] (1bit)
                Rückmeldung Rollladenposition: 3/2/86 - Rollo 1 [STATUS POSITION HÖHE] (1byte)
                Position Rollladen/Markise: 3/2/82 - Rollo 1 [POSITION HÖHE] (1byte)

                Zu meinen Fragen:

                #1) Dimmer-Bindings
                Wie gesagt, es funktioniert alles tadellos. Jedoch finde ich im Log (nach Anpassung items/sitemaps) immer wieder Warnings wie..
                Code:
                2017-07-02 15:17:31.066 [WARN ] [al.bus.KNXBindingDatapointReaderTask] - Autorefresh: Cannot read value for item 'OG_LI_Office_Deckenleuchte' from KNX bus: timeout waiting for group read response: timeout
                2017-07-02 15:17:31.067 [WARN ] [al.bus.KNXBindingDatapointReaderTask] - Autorefresh: Remaining retries for address '3/1/44' = '3'
                Das Binding hierzu lautet:
                Code:
                Dimmer OG_LI_Office_Deckenleuchte "Office Deckenleuchte [%s %%]" <dimmablelight> { knx="3/1/40, 5.001:3/1/42+<5.001:3/1/44" }
                Meine erste Frage daher - hast Du einen Tipp ob man hier noch etwas verbessern kann (der initiale, korrekte Wert von 0% wird nach ein paar Minuten angezeigt wenn der Wert über den BUS gesendet wird)? Sobald der Slider bewegt wird, aktualisiert sich die %-Zahl auch entsprechend. Es ist hier vereinfacht gesagt nur ein "Schönheitsthema", da das Warning im Log erscheint.

                Zur Sicherheit - das korrekte Binding für eine normale Leuchte wäre..(?)
                Code:
                { knx="3/1/[COLOR=#FF8C00]40[/COLOR]+3/1/[COLOR=#00cc00]43[/COLOR]" }
                #2) Rollo-Bindings
                Meine zweite Frage bezieht sich auf das Binding der Rollos (funktionieren ebenso, Frage ist ob Du auch hier noch einen Verbesserungsvorschlag hast):
                Code:
                Rollershutter OG_RO_Office_Fenster "Office Rollo Fenster [%d %%]" <rollershutter> { knx="3/2/80, 3/2/81, 3/2/86" }
                #3) Aktionen definieren
                Hast du einen Tipp wie ich in OH2 2+ Rollos (oder 2+ Leuchten) simultan auf einen Zielwert setzen kann? Also bspw. 2 Rollos auf 60% runterfahren oder 2 Leuchten auf 0% (also AUS). Über meinen Smart-Visu-Server habe ich derzeit für jeden Raum eine "Goodbye" Aktion, die sowohl über Frontend, als auch über Taster gestartet werden kann.

                Vielen lieben Dank und guten Start in die Woche!
                Zuletzt geändert von Gast; 03.07.2017, 08:32.

                Kommentar


                  #9
                  Zu 1.: Die Definition sieht gut aus. Ist im Dimmaktor Rückmeldung Helligkeit (verknüpft mit 3/1/44) das R-Flag (in der deutschen ETS das L-Flag, Read/Lesen) gesetzt? Hast Du darauf geachtet, dass exakt ein Aktor auf die Leseanfragen reagiert? Die angefragte Adresse steht auch als erste in der Verknüpfung?

                  Zu 2.: Du hast in der Definition nur die Rückmeldung der Position, nicht aber die Adresse zum Setzen der Position. Ich habe selbst leider keine absolut positionierbaren Rollladenaktoren, aber das Item sollte eher so aussehen:
                  Code:
                  Rollershutter OG_RO_Office_Fenster "Office Rollo Fenster [%d %%]" <rollershutter> { knx="3/2/80, 3/2/81, 3/2/82+<3/2/86" }
                  Hier muss natürlich ebenso pro Rückmelde-GA exakt bei einem Aktor das Lesen-Flag gesetzt sein, analog zum Dimmer.

                  Zu 3.: Es gibt verschiedene Ansätze. Ich habe bei mir, weil ich schon vor openHAB knx Gruppen definiert hatte, diese genutzt, um bestimmte Positionen anzufahren (die Aktoren fahren dann die Läden alle komplett auf und anschließend auf Zeit herunter). Du kannst Aber auch die Gruppen-Funktion in openHAB nutzen. Dazu definierst Du ein Gruppenitem:
                  Code:
                  Group:Rollershutter MyRollershutters "Meine Läden"
                  Rollershutter OG_RO_Office_Fenster "Office Rollo Fenster [%d %%]" <rollershutter> (MyRollershutters) { knx="3/2/80, 3/2/81, 3/2/82+<3/2/86" }
                  Als Beispiel habe ich obigen Laden zum Mitglied der Gruppe erklärt.
                  In der Theorie sollte nun jeder Befehl, den Du an die Gruppe absetzt, an alle Gruppenmitglieder gesendet werden.
                  Theorie deshalb, weil das bei mir bisher teilweise nicht richtig funktioniert hat (mit geschalteten Lichtern geht es...).
                  Falls es also nicht funktioniert, brauchst Du noch eine zusätzliche Rule:
                  Code:
                  rule "My Rollershutters"
                  when
                      Item MyRollershutters received command
                  then
                      MyRollershutters.members.forEach(Shutter|Shutter.sendCommand(receivedCommand))
                  end
                  Entsprechend kannst Du auch gezielt bestimmte Läden auf eine bestimmte Position fahren, wenn diese als Gruppe zusammengefasst sind. Du musst dann die Befehlszeile nur abändern, indem Du receivedCommand durch einen konkreten Zahlenwert ersetzt, also z.B. 65.
                  Falls Du keine Rule brauchst, um die Läden mit dem Gruppenitem zu steuern, kannst Du das sendCommand() auch gegen die Gruppe schicken, sollte dann genauso funktionieren.
                  Wenn die Läden verschiedene Höhen anfahren sollen, ist es vermutlich das einfachste, jeden Laden gezielt auf seine Höhe zu schicken, es ist natürlich nicht so elegant, für fünf Läden fünf Zeilen item.sendCommand(value) zu schreiben, aber solche Zielpositionen werden ja eher selten geändert, sondern eher einmalig festgelegt.
                  Zuletzt geändert von udo1toni; 03.07.2017, 17:13.

                  Kommentar


                    #10
                    Schönen guten Morgen!

                    Herzlichen Dank für den sehr ausführlichen Post.

                    Zu 1.: Die Definition sieht gut aus. Ist im Dimmaktor Rückmeldung Helligkeit (verknüpft mit 3/1/44) das R-Flag (in der deutschen ETS das L-Flag, Read/Lesen) gesetzt? Hast Du darauf geachtet, dass exakt ein Aktor auf die Leseanfragen reagiert? Die angefragte Adresse steht auch als erste in der Verknüpfung?
                    Sorry für das verwirrende Beispiel, es ist sichergestellt, dass jede GA exakt von einem Aktor verwendet wird. Interessant war für mich folgender Test-Case: 2 Rollos in der Sitemap, die eine hat die korrekten % angezeigt, die andere nicht. "Debug" also über den BUS-Monitor und siehe da, der eine Aktor hat [STATUS POSITION HÖHE] gesendet, der andere nicht. Ich hab daraufhin, so wie von Dir vorgeschlagen, die Flags gechecked - READ war für (diesen einen Aktor!) nicht gesetzt. Trotzdem keine Abhilfe für das Problem mit der "-%" Ausgabe für Rollo #2. Die Lösung schlussendlich war, die Rollo einmal komplett auf und ab zu fahren, seitdem funktioniert alles tadellos.

                    Fazit: seit dem Setzen der entsprechenden READ-Flags (so wie von Dir geschrieben) habe ich auch keine Timeouts mehr im Log. Perfekt!

                    Zu 2.: Du hast in der Definition nur die Rückmeldung der Position, nicht aber die Adresse zum Setzen der Position. Ich habe selbst leider keine absolut positionierbaren Rollladenaktoren, aber das Item sollte eher so aussehen:
                    Ich habe, basierend auf Deiner Empfehlung, zunächst sichergestellt, dass alle Aktoren-Channels, die ich mit [RM*] GAs belegt habe, ein entsprechendes READ-Flag haben. Für meine beiden Test-Items habe ich die Syntax auf Deine Empfehlung umgestellt - auch hier funktioniert alles tadellos!

                    Zu 3.: Es gibt verschiedene Ansätze. Ich habe bei mir, weil ich schon vor openHAB knx Gruppen definiert hatte, diese genutzt, um bestimmte Positionen anzufahren (die Aktoren fahren dann die Läden alle komplett auf und anschließend auf Zeit herunter). Du kannst Aber auch die Gruppen-Funktion in openHAB nutzen.
                    OK - muss ich mal testen. Würde auch folgendes funktionieren?

                    items
                    Code:
                    Group:Rollershutter [COLOR=#FF8C00]OG_Office_Rollos[/COLOR] "Office Rollos"
                    Rollershutter [COLOR=#00FFFF]OG_RO_Office_Fenster[/COLOR] "Office Rollo Fenster [%d %%]" <rollershutter> ([COLOR=#FF8C00]OG_Office_Rollos[/COLOR]) { knx="3/2/80, 3/2/81, 3/2/82+<3/2/86" }
                    Rollershutter [COLOR=#008000]OG_RO_Office_Tuere[/COLOR] "Office Rollo Türe [%d %%]" <rollershutter> ([COLOR=#FF8C00]OG_Office_Rollos[/COLOR]) { knx="3/2/90, 3/2/91, 3/2/92+<3/2/96" }
                    rules
                    Code:
                    rule "My Rollershutters"
                    when Item [COLOR=#FF8C00]OG_Office_Rollos [/COLOR]received command then
                    [COLOR=#00FFFF]OG_RO_Office_Fenster[/COLOR].sendCommand(30)
                    [COLOR=#008000]OG_RO_Office_Tuere[/COLOR].sendCommand(60)
                    end
                    sitemaps
                    Reicht es hier einen Switch "OG_Office_Rollos" anzulegen?

                    Schönen Tag & LG!
                    Zuletzt geändert von Gast; 04.07.2017, 08:34.

                    Kommentar


                      #11
                      Natürlich kannst Du auch einfach einen Switch anlegen und diesen als Trigger für die Rule nutzen, in der Du die einzelnen Rollos fahren lässt. Dazu musst Du dann nicht mal eine Gruppe bilden (die Gruppe als Trigger zu verwenden wäre da auch kontraproduktiv, falls das direkte Setzen funktionieren sollte).

                      Kommentar


                        #12
                        Hi udo1toni,

                        alles klar! Hab' mittlerweile ein umfangreiches Gruppenkonzept und bereits Persistency / Graphing im Einsatz.

                        Momentan warte ich darauf, dass das Grafana (https://grafana.com/) Team ein Plugin für POSTGRESQL als Datensource rausbringt (damit man die Persistence-Daten hübsch aufbereiten kann).

                        Kommentar


                          #13
                          Hast Du influxdb schon ausprobiert? Ist einfach aufzusetzen und läuft sehr gut. Insbesondere spielt es gut mit Grafana zusammen und es gibt auch ein Binding für openHAB...

                          Kommentar


                            #14
                            Hi,

                            ja- davon hab' ich gelesen. Mir geht's darum, dass ich quasi alles virtualisiert habe und für sämtliche Services eine PostgreSQL-DB läuft. Ich möchte vermeiden hier mehrere unterschiedliche DBs einzusetzen (Wartung, VM-Performance, Sicherung, Tools, ...).

                            Eventuell teste ich das ganze über's WE mal in meiner Sandbox, mal sehen .

                            => Vom 21.03. gibt's ein Statement, dass das Grafana-Team an einem Support für MySQL/Postgres arbeitet (https://community.grafana.com/t/sql-...or-grafana/140).

                            Kommentar

                            Lädt...
                            X