Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

Geplant Angeheftet Gesperrt Verschoben Tester
appdark-modeiqontrolresponsivevisvisualisierungvisualizationwidget
7.6k Beiträge 296 Kommentatoren 7.0m Aufrufe 201 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • s.bormannS s.bormann

    @dslraser Ich habe echt keine Idee... Vielleicht eine merkwürdige Kombi aus "runde auf diese Anzahl Stellen" und "step" in den customs?

    dslraserD Offline
    dslraserD Offline
    dslraser
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #5895

    @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

    @dslraser Ich habe echt keine Idee... Vielleicht eine merkwürdige Kombi aus "runde auf diese Anzahl Stellen" und "step" in den customs?

    Ich habe auch keine Idee. Customs sind für die betroffenen DP gar keine eingestellt, siehe Konfig.
    Beim iot Adapter hatte ich mal was ähnliches, sobald man zwei Temperaturwerte zu einer Gruppe gemacht hat, dann wurde quasi so eine Art Mittelwert gebildet.
    Ich lege das heute Abend mal neu an und vergleiche nochmal.

    1 Antwort Letzte Antwort
    0
    • s.bormannS s.bormann

      @dslraser Ich habe echt keine Idee... Vielleicht eine merkwürdige Kombi aus "runde auf diese Anzahl Stellen" und "step" in den customs?

      dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #5896

      @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

      @dslraser Ich habe echt keine Idee... Vielleicht eine merkwürdige Kombi aus "runde auf diese Anzahl Stellen" und "step" in den customs?

      Ich weiß nicht was da im Arry mit Temperaturwerten passiert, aber irgendetwas stimmt nicht. Es stimmt nicht ein Wert, kannst Du doch nochmal schauen ? Diese Datenpunkte habe ich genommen. Es ist übrigens egal ob ich alias oder original DP nehme.

      Bildschirmfoto 2021-08-24 um 19.52.36.png

      Bildschirmfoto 2021-08-24 um 19.52.51.png

      s.bormannS 1 Antwort Letzte Antwort
      0
      • dslraserD dslraser

        @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

        @dslraser Ich habe echt keine Idee... Vielleicht eine merkwürdige Kombi aus "runde auf diese Anzahl Stellen" und "step" in den customs?

        Ich weiß nicht was da im Arry mit Temperaturwerten passiert, aber irgendetwas stimmt nicht. Es stimmt nicht ein Wert, kannst Du doch nochmal schauen ? Diese Datenpunkte habe ich genommen. Es ist übrigens egal ob ich alias oder original DP nehme.

        Bildschirmfoto 2021-08-24 um 19.52.36.png

        Bildschirmfoto 2021-08-24 um 19.52.51.png

        s.bormannS Offline
        s.bormannS Offline
        s.bormann
        Most Active
        schrieb am zuletzt editiert von
        #5897

        @dslraser Habe es bei mir nachgebaut und keinen Fehler festgestellt:
        32928b5b-4424-4afb-995a-e0bed995ab93-image.png

        Wir chatten mal, vielleicht finden wir da eine Lösung.

        1 Antwort Letzte Antwort
        0
        • s.bormannS Offline
          s.bormannS Offline
          s.bormann
          Most Active
          schrieb am zuletzt editiert von
          #5898

          @muuulle Das JSON-Table-Widget hat jetzt noch diese neuen Optionen bekommen:
          e4a82d2f-5593-4f1d-ae7e-d97234ad5d21-image.png

          Damit können die Spalten festgelegt werden, die immer sichtbar sind (können nicht ausgeblendet werden) und die, die bevorzugt sichtbar sind (also als letztes ausgeblendet werden, wenn der Platz zu eng wird). Man kann auch anklicken, dass sie auch bei wenig Platz immer angezeigt werden (man kann sie dann aber über das Menü manuell ausblenden).

          Außerdem gibt es jetzt noch das hier:
          a5c73ea1-a760-4632-a3a1-de23a3e2ebab-image.png
          als kleine Erleichterung (optimal wäre natürlich, er prüft, welche Optionen schon gesetzt sind - aber das ist mir aktuell zu aufwändig 🙂 )

          VG!

          1 Antwort Letzte Antwort
          0
          • B BenGreenHigh

            @s-bormann


            @s-bormann said in Test Adapter iQontrol 1.9.x Vis:

            @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

            @s-bormann Ich komme damit einfach nicht weiter. Zum Testen hab ich einen DP angelegt. Nehme ich eines der beiden Homematic-Thermostate, passiert im DP nichts. Ändere ich den DP manuell, wird die Änderung in der Vis korrekt angezeigt. Nehme ich das normale Thermostat, funktioniert die Änderung im DP nur mit den Einstellungen "string" und "state".

            Warum ist im normalen Thermostat nur die Darstellung als Pulldown-Menü möglich?

            Bis zur Version 1.9.0 hat die Steuerung mit dem Homematic-Thermostat problemlos funktioniert. Was hat sich dort geändert?

            Was für Befehle und Einstellungen braucht man für die beiden Homematic-Thermostate?

            LG

            Hi,
            hab gerade noch mal in den Code geschaut. Die Homematic-Thermostate (nicht IP! Da ist es wieder anders) senden ihre Auswahl nicht an den Datenpunkt selbst, sondern an .BOOST_MODE, .MANU_MODE und .AUTO_MODE.

            Erstelle mal bitte den Datenpunkt .CONTROL_MODE mit folgenden Einstellungen:

            {
              "type": "state",
              "common": {
                "name": "Heizungssteuerung Wohnzimmer - Sollwert.CONTROL_MODE",
                "def": 0,
                "type": "number",
                "read": true,
                "write": false,
                "min": 0,
                "max": 3,
                "states": {
                  "0": "AUTO-MODE",
                  "1": "MANU-MODE",
                  "2": "PARTY-MODE",
                  "3": "BOOST-MODE"
                },
                "role": "indicator"
              },
              "native":  {}
            }
            

            und die oben genannen drei Datenpunkte im gleichen Verzeichnis mit

            {
              "common": {
                "name": "Test.Testbool",
                "role": "button",
                "type": "boolean",
                "desc": "Manuell erzeugt",
                "def": "",
                "read": true,
                "write": true
              },
              "native": {}
            }
            

            Und diese drei Datenpunkte müsstest Du dann mit einem Blockly abgreifen und entsprechend die gewünschten Funktionen ausführen lassen.


            Yo! So hatte ich das schon vermutet, aber keine Infos dazu gefunden. 2 Punkte wären da noch:

            1. Ich brauche 4 Modi (Aus, Heizen, Absenkung, Boost). So weit ich verstanden habe, wird der PARTY_MODE per Zeitsteuerung aktiviert, fällt also aus. Wie komme ich denn auf 4 Modi?

            2. Wie kann ich die Beschriftung in der Vis ändern? So bald ich irgendwo irgendwas an den Namen verändere, geht nix mehr.

            Hatte ich glaub ich schon gefragt: Gibt's denn keine Chance die Buttons auch im normalen Thermostat zu bekommen?

            LG

            s.bormannS Offline
            s.bormannS Offline
            s.bormann
            Most Active
            schrieb am zuletzt editiert von
            #5899

            @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

            @s-bormann


            @s-bormann said in Test Adapter iQontrol 1.9.x Vis:

            @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

            @s-bormann Ich komme damit einfach nicht weiter. Zum Testen hab ich einen DP angelegt. Nehme ich eines der beiden Homematic-Thermostate, passiert im DP nichts. Ändere ich den DP manuell, wird die Änderung in der Vis korrekt angezeigt. Nehme ich das normale Thermostat, funktioniert die Änderung im DP nur mit den Einstellungen "string" und "state".

            Warum ist im normalen Thermostat nur die Darstellung als Pulldown-Menü möglich?

            Bis zur Version 1.9.0 hat die Steuerung mit dem Homematic-Thermostat problemlos funktioniert. Was hat sich dort geändert?

            Was für Befehle und Einstellungen braucht man für die beiden Homematic-Thermostate?

            LG

            Hi,
            hab gerade noch mal in den Code geschaut. Die Homematic-Thermostate (nicht IP! Da ist es wieder anders) senden ihre Auswahl nicht an den Datenpunkt selbst, sondern an .BOOST_MODE, .MANU_MODE und .AUTO_MODE.

            Erstelle mal bitte den Datenpunkt .CONTROL_MODE mit folgenden Einstellungen:

            {
              "type": "state",
              "common": {
                "name": "Heizungssteuerung Wohnzimmer - Sollwert.CONTROL_MODE",
                "def": 0,
                "type": "number",
                "read": true,
                "write": false,
                "min": 0,
                "max": 3,
                "states": {
                  "0": "AUTO-MODE",
                  "1": "MANU-MODE",
                  "2": "PARTY-MODE",
                  "3": "BOOST-MODE"
                },
                "role": "indicator"
              },
              "native":  {}
            }
            

            und die oben genannen drei Datenpunkte im gleichen Verzeichnis mit

            {
              "common": {
                "name": "Test.Testbool",
                "role": "button",
                "type": "boolean",
                "desc": "Manuell erzeugt",
                "def": "",
                "read": true,
                "write": true
              },
              "native": {}
            }
            

            Und diese drei Datenpunkte müsstest Du dann mit einem Blockly abgreifen und entsprechend die gewünschten Funktionen ausführen lassen.


            Yo! So hatte ich das schon vermutet, aber keine Infos dazu gefunden. 2 Punkte wären da noch:

            1. Ich brauche 4 Modi (Aus, Heizen, Absenkung, Boost). So weit ich verstanden habe, wird der PARTY_MODE per Zeitsteuerung aktiviert, fällt also aus. Wie komme ich denn auf 4 Modi?

            2. Wie kann ich die Beschriftung in der Vis ändern? So bald ich irgendwo irgendwas an den Namen verändere, geht nix mehr.

            Hatte ich glaub ich schon gefragt: Gibt's denn keine Chance die Buttons auch im normalen Thermostat zu bekommen?

            LG

            Hi,
            habe jetzt auf der aktuellen Github-Version das Verhalten für "Thermostat" (nicht Homematic / Homematic IP) geändert, um statt des Drop-Downs die Buttons anzuzeigen. Jetzt kannst Du ganz normal den CONTROL_MODE ohne den ganzen Hick-Hack verlinken.
            VG

            B 1 Antwort Letzte Antwort
            0
            • dslraserD Offline
              dslraserD Offline
              dslraser
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #5900

              @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

              Wir chatten mal, vielleicht finden wir da eine Lösung.

              können wir gern machen.
              Einen Unterschied sehe ich in Deinem rechten Bild bei den Thermostaten (ACTUAL_TEMPERATURE) im Vergleich mit meinen. Bei Dir stehen die Werte mit Komma, bei mir mit Punkt.

              s.bormannS 1 Antwort Letzte Antwort
              0
              • s.bormannS s.bormann

                @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

                @s-bormann


                @s-bormann said in Test Adapter iQontrol 1.9.x Vis:

                @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

                @s-bormann Ich komme damit einfach nicht weiter. Zum Testen hab ich einen DP angelegt. Nehme ich eines der beiden Homematic-Thermostate, passiert im DP nichts. Ändere ich den DP manuell, wird die Änderung in der Vis korrekt angezeigt. Nehme ich das normale Thermostat, funktioniert die Änderung im DP nur mit den Einstellungen "string" und "state".

                Warum ist im normalen Thermostat nur die Darstellung als Pulldown-Menü möglich?

                Bis zur Version 1.9.0 hat die Steuerung mit dem Homematic-Thermostat problemlos funktioniert. Was hat sich dort geändert?

                Was für Befehle und Einstellungen braucht man für die beiden Homematic-Thermostate?

                LG

                Hi,
                hab gerade noch mal in den Code geschaut. Die Homematic-Thermostate (nicht IP! Da ist es wieder anders) senden ihre Auswahl nicht an den Datenpunkt selbst, sondern an .BOOST_MODE, .MANU_MODE und .AUTO_MODE.

                Erstelle mal bitte den Datenpunkt .CONTROL_MODE mit folgenden Einstellungen:

                {
                  "type": "state",
                  "common": {
                    "name": "Heizungssteuerung Wohnzimmer - Sollwert.CONTROL_MODE",
                    "def": 0,
                    "type": "number",
                    "read": true,
                    "write": false,
                    "min": 0,
                    "max": 3,
                    "states": {
                      "0": "AUTO-MODE",
                      "1": "MANU-MODE",
                      "2": "PARTY-MODE",
                      "3": "BOOST-MODE"
                    },
                    "role": "indicator"
                  },
                  "native":  {}
                }
                

                und die oben genannen drei Datenpunkte im gleichen Verzeichnis mit

                {
                  "common": {
                    "name": "Test.Testbool",
                    "role": "button",
                    "type": "boolean",
                    "desc": "Manuell erzeugt",
                    "def": "",
                    "read": true,
                    "write": true
                  },
                  "native": {}
                }
                

                Und diese drei Datenpunkte müsstest Du dann mit einem Blockly abgreifen und entsprechend die gewünschten Funktionen ausführen lassen.


                Yo! So hatte ich das schon vermutet, aber keine Infos dazu gefunden. 2 Punkte wären da noch:

                1. Ich brauche 4 Modi (Aus, Heizen, Absenkung, Boost). So weit ich verstanden habe, wird der PARTY_MODE per Zeitsteuerung aktiviert, fällt also aus. Wie komme ich denn auf 4 Modi?

                2. Wie kann ich die Beschriftung in der Vis ändern? So bald ich irgendwo irgendwas an den Namen verändere, geht nix mehr.

                Hatte ich glaub ich schon gefragt: Gibt's denn keine Chance die Buttons auch im normalen Thermostat zu bekommen?

                LG

                Hi,
                habe jetzt auf der aktuellen Github-Version das Verhalten für "Thermostat" (nicht Homematic / Homematic IP) geändert, um statt des Drop-Downs die Buttons anzuzeigen. Jetzt kannst Du ganz normal den CONTROL_MODE ohne den ganzen Hick-Hack verlinken.
                VG

                B Offline
                B Offline
                BenGreenHigh
                schrieb am zuletzt editiert von
                #5901

                @s-bormann Du bist der Größte! Funktioniert wie gewünscht. Mega was Du hier leistest, dickes Dankeschön!

                LG

                dslraserD 1 Antwort Letzte Antwort
                2
                • B BenGreenHigh

                  @s-bormann Du bist der Größte! Funktioniert wie gewünscht. Mega was Du hier leistest, dickes Dankeschön!

                  LG

                  dslraserD Offline
                  dslraserD Offline
                  dslraser
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #5902

                  @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

                  @s-bormann Du bist der Größte! Funktioniert wie gewünscht. Mega was Du hier leistest, dickes Dankeschön!

                  LG

                  Dem schließe ich mich an 👍

                  1 Antwort Letzte Antwort
                  2
                  • dslraserD dslraser

                    @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

                    Wir chatten mal, vielleicht finden wir da eine Lösung.

                    können wir gern machen.
                    Einen Unterschied sehe ich in Deinem rechten Bild bei den Thermostaten (ACTUAL_TEMPERATURE) im Vergleich mit meinen. Bei Dir stehen die Werte mit Komma, bei mir mit Punkt.

                    s.bormannS Offline
                    s.bormannS Offline
                    s.bormann
                    Most Active
                    schrieb am zuletzt editiert von
                    #5903

                    Der Rundungsfehler bei HM-IP-Temperatursensoren wurde mit @dslraser beackert. Es lag daran, dass der hm-rpc-Adapter für Homematic-IP Temperatur-Sensoren sehr schräge min- und max-Werte liefert (min = -3276.8 und max = 3276.7). iQontrol überschreibt diese Werte jetzt mit -34 bis 65, dann werden auch die Temperaturen korrekt im Slider dargestellt. Wer eigene min- und max-Werte definieren möchte, kann dies über den Schraubenschlüssel natürlich weiterhin tun.

                    da_WoodyD 1 Antwort Letzte Antwort
                    2
                    • s.bormannS s.bormann

                      Der Rundungsfehler bei HM-IP-Temperatursensoren wurde mit @dslraser beackert. Es lag daran, dass der hm-rpc-Adapter für Homematic-IP Temperatur-Sensoren sehr schräge min- und max-Werte liefert (min = -3276.8 und max = 3276.7). iQontrol überschreibt diese Werte jetzt mit -34 bis 65, dann werden auch die Temperaturen korrekt im Slider dargestellt. Wer eigene min- und max-Werte definieren möchte, kann dies über den Schraubenschlüssel natürlich weiterhin tun.

                      da_WoodyD Offline
                      da_WoodyD Offline
                      da_Woody
                      schrieb am zuletzt editiert von
                      #5904

                      @s-bormann nachdem es in 2 tagen wieder mal ist, wollte ich endlich das vor längerer zeit gebastelte doppeltermin icon bei der müllanzeige rein operieren.
                      eb4ffe98-c43a-4712-b19e-d426557a6634-grafik.png
                      37171e79-65ad-4955-905d-631d0ec0c7c1-grafik.png Bio-Rest.gif
                      also hab ich flugs
                      0702896c-c7e3-4a78-b49f-b605a00d6a45-grafik.png
                      eingebaut. in trashschedule
                      a351699b-fb23-495e-b5db-0897591d7b6d-grafik.png
                      gebastelt. unter next siehts so aus
                      87ca4fd0-ce5f-4c44-9063-ca5c283e40b1-grafik.png
                      angezeigt wird nix... wo ist mein denkfehler?

                      gruß vom Woody
                      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                      dslraserD 2 Antworten Letzte Antwort
                      0
                      • M muuulle

                        @s-bormann
                        Besten Dank für den Dark Mode. Hier mein Strand der Dinge, ein bisschen Liebe muss aber noch investiert werden 😊

                        Normal
                        PNG-Bild.png

                        Dark Mode
                        PNG-Bild Dark Mode.png

                        N Offline
                        N Offline
                        Nordischerjung
                        schrieb am zuletzt editiert von
                        #5905

                        @muuulle @s-bormann

                        Moin,

                        wie genau bekomme ich dieses Feld so dargestellt? Ich bin zu blöd

                        52fb94a6-b35a-4272-84f0-2c5dc3113d2b-grafik.png

                        Gruß Nordischerjung

                        sonnige Grüße von der Ostsee

                        da_WoodyD 1 Antwort Letzte Antwort
                        0
                        • N Nordischerjung

                          @muuulle @s-bormann

                          Moin,

                          wie genau bekomme ich dieses Feld so dargestellt? Ich bin zu blöd

                          52fb94a6-b35a-4272-84f0-2c5dc3113d2b-grafik.png

                          da_WoodyD Offline
                          da_WoodyD Offline
                          da_Woody
                          schrieb am zuletzt editiert von
                          #5906

                          @nordischerjung sieht nach eine flott als hintergrund aus, invertiertem unreach icon und gerätetyp dürfte ein temperatur sensor sein.
                          warum das getrennt angezeigt wird, keine ahnung. ich hab die immer zusammen gefasst und auch gleich den heizstatus drinnen . allerdings verwende ich grafana und mach die grafen dafür extra.
                          924eb96f-8443-4aa3-aa2e-4d2fab500016-grafik.png
                          6cd01515-7e5c-423e-81ba-4011423af3ac-grafik.png

                          gruß vom Woody
                          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                          K 1 Antwort Letzte Antwort
                          0
                          • da_WoodyD da_Woody

                            @s-bormann nachdem es in 2 tagen wieder mal ist, wollte ich endlich das vor längerer zeit gebastelte doppeltermin icon bei der müllanzeige rein operieren.
                            eb4ffe98-c43a-4712-b19e-d426557a6634-grafik.png
                            37171e79-65ad-4955-905d-631d0ec0c7c1-grafik.png Bio-Rest.gif
                            also hab ich flugs
                            0702896c-c7e3-4a78-b49f-b605a00d6a45-grafik.png
                            eingebaut. in trashschedule
                            a351699b-fb23-495e-b5db-0897591d7b6d-grafik.png
                            gebastelt. unter next siehts so aus
                            87ca4fd0-ce5f-4c44-9063-ca5c283e40b1-grafik.png
                            angezeigt wird nix... wo ist mein denkfehler?

                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von dslraser
                            #5907

                            @da_woody sagte in Test Adapter iQontrol 1.9.x Vis:

                            angezeigt wird nix... wo ist mein denkfehler?

                            bei mir klappt es. Das Icon (Dein Gif) wechselt in der Anzeige brav die Farbe. Die Schreibweise im Adapter bei "Gilt für Termine" muss stimmen.

                            Bildschirmfoto 2021-08-26 um 09.07.18.png

                            Bildschirmfoto 2021-08-26 um 09.06.55.png

                            Bildschirmfoto 2021-08-26 um 09.09.29.png

                            Bildschirmfoto 2021-08-26 um 09.10.24.png

                            Dein Gif habe ich mal geklaut 😊
                            Mein Termin BioRest ist nur ein Testtermin.

                            1 Antwort Letzte Antwort
                            1
                            • da_WoodyD da_Woody

                              @nordischerjung sieht nach eine flott als hintergrund aus, invertiertem unreach icon und gerätetyp dürfte ein temperatur sensor sein.
                              warum das getrennt angezeigt wird, keine ahnung. ich hab die immer zusammen gefasst und auch gleich den heizstatus drinnen . allerdings verwende ich grafana und mach die grafen dafür extra.
                              924eb96f-8443-4aa3-aa2e-4d2fab500016-grafik.png
                              6cd01515-7e5c-423e-81ba-4011423af3ac-grafik.png

                              K Offline
                              K Offline
                              kilasat
                              schrieb am zuletzt editiert von
                              #5908

                              @da_woody Hi Woody,

                              kannst Du bitte mal die Konfig zeigen wie du die Grafana Grafen eingebunden hast.

                              Danke dir.

                              Wenn ich bei mir die Temperatur als Background einbinde, dann bekomme ich da nur einen Strich und keinen Verlauf.

                              41dec3fb-0fa4-4d29-943a-5e6aca14c0e4-image.png

                              1 Antwort Letzte Antwort
                              0
                              • da_WoodyD da_Woody

                                @s-bormann nachdem es in 2 tagen wieder mal ist, wollte ich endlich das vor längerer zeit gebastelte doppeltermin icon bei der müllanzeige rein operieren.
                                eb4ffe98-c43a-4712-b19e-d426557a6634-grafik.png
                                37171e79-65ad-4955-905d-631d0ec0c7c1-grafik.png Bio-Rest.gif
                                also hab ich flugs
                                0702896c-c7e3-4a78-b49f-b605a00d6a45-grafik.png
                                eingebaut. in trashschedule
                                a351699b-fb23-495e-b5db-0897591d7b6d-grafik.png
                                gebastelt. unter next siehts so aus
                                87ca4fd0-ce5f-4c44-9063-ca5c283e40b1-grafik.png
                                angezeigt wird nix... wo ist mein denkfehler?

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von dslraser
                                #5909

                                @da_woody sagte in Test Adapter iQontrol 1.9.x Vis:

                                angezeigt wird nix... wo ist mein denkfehler?

                                Vorn auf der Hauptkachel wird bei mir auch nix angezeigt, weil:

                                da steht .png

                                Bildschirmfoto 2021-08-26 um 10.14.36.png

                                mit .gif wird es angezeigt

                                Bildschirmfoto 2021-08-26 um 10.19.49.png

                                man müßte also alles auf .gif umstellen, dann geht....

                                Edit: alle Tonnen zusätzlich in .gif hochgeladen und dann geht alles.....

                                Bildschirmfoto 2021-08-26 um 10.31.45.png

                                wechselt gerade die Farbe....
                                Bildschirmfoto 2021-08-26 um 10.32.02.png

                                Links unten ist die Tonne

                                IMG_20210826_135625_092.mp4

                                1 Antwort Letzte Antwort
                                0
                                • M meerkat

                                  Hi @kilasat,

                                  hier die beiden Javascripte. Als erstes die Datenpunkte hinzufügen und das Script einmal ausführen (1. Script), danach das 2. Script aktivieren und laufen lassen. Achso, natürlich noch die Werte (in beiden Scripts) anpassen, ich habe 2 von den Dingern laufen und da kannste alles für den 2. rausschmeißen.
                                  In der Json ist meine Sicht mit dem Gerät, die kannste importieren und auch auf deine Datenpunkte anpassen.

                                  /* Setze neue Datenpunkte für 
                                  *  - Wartungspunkt setzen pro Vacuum
                                  *  - Weitere Zonen einrichten, über script, da wenn der Adapter mal nicht mehr funktioniert die Werte nicht erneut ermittelt werden müssen
                                  *  - Warteschlange erzeugen, Standard reichte mir nicht
                                  *  - 
                                  */
                                  
                                  //Settings
                                  //Anzahl der Vacuum
                                  var countVacuum = ['mihome-vacuum.0', 'mihome-vacuum.1'];
                                  var channelRooms = '.rooms';
                                  var servicePoints = ['22250,32300','27950,25450']
                                  var addRrooms = [
                                      {
                                      'room' : ['Zone1','Zone2','Zone3'],
                                      'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
                                      }
                                      ]
                                  
                                  //Channel für alle Vacuum unter userdata anlegen
                                  setObject("0_userdata.0.vacuums", {
                                      common: {
                                          name: "Vacuums Zusatzpunkte"
                                      },
                                      type: "channel"
                                  });
                                  
                                  //Datenpunkte für ServicePoint und CleaningQueue pro Vacuum anlegen
                                  for (var v = 0; v < countVacuum.length; v++) {
                                      
                                      //Koordinaten des jeweiligen ServicPoints speichern
                                      if (servicePoints[v] != null){
                                          createState("0_userdata.0." + countVacuum[v] + ".servicepoint", servicePoints[v], false, {
                                              name: "servicepoint",
                                              desc: "coordinates of servicepoint",
                                              type: "number",
                                              role: "value",
                                              unit: "",
                                              read: false,
                                              write: false
                                          });
                                      }
                                      
                                      //Eine erweiterte CleaningQueue anlegen, in der dann Zone und Segment herausgefiltert wird und nur der Name steht
                                      createState("0_userdata.0." + countVacuum[v] + ".cleaningQueue", "", false, {
                                          name: "cleaning queue",
                                          desc: "cleaning queue",
                                          type: "object",
                                          role: "info",
                                          unit: "",
                                          read: true,
                                          write: true
                                      });
                                      
                                      //Für die Ermittlung und anzeige des aktuellen Raumes, der gereinigt wird
                                      createState("0_userdata.0." + countVacuum[v] + ".currentRoom", "", false, {
                                          name: "current cleaning",
                                          desc: "current cleaning room or zone",
                                          type: "object",
                                          role: "info",
                                          unit: "",
                                          read: true,
                                          write: true
                                      });
                                  
                                      //Datenpunkt für den Button Servicepoint
                                      createState("0_userdata.0." + countVacuum[v] + ".goToService", false, false, {
                                          name: "goToService",
                                          desc: "going to ServicePointcleaning queue",
                                          type: "boolean",
                                          role: "button",
                                          unit: "",
                                          read: false,
                                          write: true
                                      });
                                      
                                      //Weitere Zonen anlegen
                                      if(addRrooms[v]!=null){
                                          for (var i = 0; i < addRrooms[v]['room'].length; i++) {
                                              
                                              setState(countVacuum[v] + channelRooms + ".addRoom", addRrooms[v]['datenpunkt'][i]);
                                              var roomchannel = addRrooms[v]['datenpunkt'][i].toString();
                                              roomchannel = roomchannel.replace("[", "");
                                              roomchannel = roomchannel.replace("]", "");
                                              roomchannel = roomchannel.split(",").join("_"); /*replaceAll(",", "_");*/
                                          
                                              setState(countVacuum[v] + channelRooms + "." + roomchannel + ".roomFanPower", 103);
                                              setState(countVacuum[v] + channelRooms +  "." + roomchannel + ".roomWaterBoxMode", 202);
                                          }
                                      }
                                  }
                                  
                                  
                                  //////////////////// Vacuum 1 //////////////////////
                                  //Die beim nach Hause schicken die Queue leeren
                                  on({id: 'mihome-vacuum.0.control.home', val: true}, function() {
                                     setState('mihome-vacuum.0.control.clearQueue', true);
                                  });
                                  
                                  //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
                                  on({id: 'mihome-vacuum.0.info.state'/*Vacuum state*/, val: 8}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', '');
                                  });
                                  
                                  //Den aktuell zu reinigenden Raum ermitteln
                                  on({id: 'mihome-vacuum.0.rooms.106001012191.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012191').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.106001012206.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012206').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.106001012207.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012207').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.106001012208.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012208').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.106001012209.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012209').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.106001012210.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012210').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.manual_23502_24895_25102_25995.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_23502_24895_25102_25995').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.manual_25235_29306_27535_30356.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_25235_29306_27535_30356').common.name);
                                  });
                                  on({id: 'mihome-vacuum.0.rooms.manual_27763_30413_29163_33013.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_27763_30413_29163_33013').common.name);
                                  });
                                  
                                  
                                  //Die Standard CleaningQueue anpassen
                                  on({id: 'mihome-vacuum.0.info.queue', change: 'any'}, function (obj) {
                                      var queue = obj.state.val
                                      var tmpCleaningQueue = "Next: ";
                                  
                                      if (queue.length != 0) {
                                          log(queue.length);
                                          queue.reverse();
                                          for (var i = 0; i < queue.length; i++){
                                              tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                                              if(i+1<queue.length){
                                                  tmpCleaningQueue+= ",";
                                              }
                                          }
                                      }
                                      else {
                                          tmpCleaningQueue = "";
                                      }
                                  
                                      setState('0_userdata.0.mihome-vacuum.0.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
                                    
                                  });
                                  
                                  //Auf den Button goToServicepoint reagieren
                                  on({id: '0_userdata.0.mihome-vacuum.0.goToService'/*goToService*/, val: true}, function (obj) {
                                      var servicepoint = getState('0_userdata.0.mihome-vacuum.0.servicepoint'/*map index*/).val;
                                      setState('mihome-vacuum.0.control.goTo'/*Go to point*/,servicepoint);
                                  });
                                  
                                  
                                  //////////////////// Vacuum 2 //////////////////////
                                  //Die beim nach Hause schicken die Queue leeren
                                  on({id: 'mihome-vacuum.1.control.home', val: true}, function() {
                                     setState('mihome-vacuum.1.control.clearQueue', true);
                                  });
                                  
                                  //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
                                  on({id: 'mihome-vacuum.1.info.state'/*Vacuum state*/, val: 8}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', '');
                                  });
                                  
                                  //Den aktuell zu reinigenden Raum ermitteln
                                  on({id: 'mihome-vacuum.1.rooms.106001012200.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012200').common.name);
                                  });
                                  on({id: 'mihome-vacuum.1.rooms.106001012201.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012201').common.name);
                                  });
                                  on({id: 'mihome-vacuum.1.rooms.106001012202.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012202').common.name);
                                  });
                                  on({id: 'mihome-vacuum.1.rooms.106001012203.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012203').common.name);
                                  });
                                  on({id: 'mihome-vacuum.1.rooms.106001012205.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012205').common.name);
                                  });
                                  on({id: 'mihome-vacuum.1.rooms.106001012607.state'/*info*/, val: "clean Room"}, function() {
                                     setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012607').common.name);
                                  });
                                  
                                  //Die Standard CleaningQueue anpassen
                                  on({id: 'mihome-vacuum.1.info.queue', change: 'any'}, function (obj) {
                                      var queue = obj.state.val
                                      var tmpCleaningQueue = "Next ";
                                  
                                      if (queue.length != 0) {
                                          for (var i = 0; i < queue.length; i++){
                                              tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                                              if(i+1<queue.length){
                                                  tmpCleaningQueue+= ",";
                                              }
                                          }
                                      }
                                      else {
                                          tmpCleaningQueue = "";
                                      }
                                  
                                      setState('0_userdata.0.mihome-vacuum.1.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
                                    
                                  });
                                  
                                  //Auf den Button goToServicepoint reagieren
                                  on({id: '0_userdata.0.mihome-vacuum.1.goToService'/*goToService*/, val: true}, function (obj) {
                                      var servicepoint = getState('0_userdata.0.mihome-vacuum.1.servicepoint'/*map index*/).val;
                                      setState('mihome-vacuum.1.control.goTo'/*Go to point*/,servicepoint);
                                  });
                                  

                                  2021-08-20_iqontrol_0_selected_views.json

                                  K Offline
                                  K Offline
                                  kilasat
                                  schrieb am zuletzt editiert von
                                  #5910

                                  @meerkat Hallo Meerkat,

                                  Danke erneut für die Bereitstellung des Scripts und der JSON.

                                  Ich habe das Script auf meine DP usw. angepasst jedoch habe ich noch ein paar Fragen dazu:

                                  1. Ich verwende keine Zonen - nur Räume. (weiss nicht wie ich die Koordinaten bekomme, funktioniert aber mit Räumen gut bei mir.)
                                    Kann ich diesen Teil im Script lassen?
                                  //Settings
                                  //Anzahl der Vacuum
                                  var countVacuum = ['mihome-vacuum.0'];
                                  var channelRooms = '.rooms';
                                  var servicePoints = ['25500,25500']
                                  var addRrooms = [
                                      {
                                      'room' : ['Zone1','Zone2','Zone3'],
                                      'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
                                      }
                                      ]
                                  
                                  1. Was macht - Vacuums Zusatzpunkte? Wozu der Channel?
                                  2. ServicePoint - ist der Standort der Ladestation oder wofür ist es gedacht?
                                  3. currentRoom - wird bei mir nicht in den Datenpunkten gefüllt. Die cleaning queue wird angezeigt aber nicht der Current Room.
                                  4. wozu das zweite Script?
                                  5. ist es möglich die Karte grösser anzeigen zu lassen? Vielleicht in Custom Controls oder als Popup?
                                  6. Die Scripte verursachen bei mir ein paar Warnings im Log, siehe Bild.

                                  4dfd8193-d035-4e04-885a-ef4359bccb79-image.png

                                  Vielen Dank für dein Feedback.

                                  M 1 Antwort Letzte Antwort
                                  0
                                  • Marco LaserM Offline
                                    Marco LaserM Offline
                                    Marco Laser
                                    schrieb am zuletzt editiert von
                                    #5911

                                    @s-bormann jetzt wo wir State und Level vernünftig benennen können, kannst du vielleicht auch ne Einstellung hinzufügen, dass im Status nicht beide Werte multipliziert angezeigt werden sondern nur State zum Beispiel?

                                    s.bormannS 1 Antwort Letzte Antwort
                                    0
                                    • da_WoodyD Offline
                                      da_WoodyD Offline
                                      da_Woody
                                      schrieb am zuletzt editiert von
                                      #5912

                                      @dslraser sagte in Test Adapter iQontrol 1.9.x Vis:

                                      @da_woody sagte in Test Adapter iQontrol 1.9.x Vis:

                                      angezeigt wird nix... wo ist mein denkfehler?

                                      bei mir klappt es. Das Icon (Dein Gif) wechselt in der Anzeige brav die Farbe. Die Schreibweise im Adapter bei "Gilt für Termine" muss stimmen.

                                      welchen muss ich da verwenden?
                                      habs auch schon mit .gif probiert. muss aber auch mit .png funzenI MHO hab ich das problem mit der schreibweise...
                                      "Gilt für Termine" den fisch muss ich lösen.
                                      0cfb1091-9a45-48f1-be21-19440b2f56fd-grafik.png
                                      bekomm da nix rein...
                                      52c3cfb5-68ed-4e5f-8da4-c716e2205869-grafik.png

                                      Dein Gif habe ich mal geklaut 😊

                                      das hast du nicht geklaut, da hab ich einige verschiedene zur verfügung gestellt... 😄

                                      gruß vom Woody
                                      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                      dslraserD 1 Antwort Letzte Antwort
                                      0
                                      • da_WoodyD da_Woody

                                        @dslraser sagte in Test Adapter iQontrol 1.9.x Vis:

                                        @da_woody sagte in Test Adapter iQontrol 1.9.x Vis:

                                        angezeigt wird nix... wo ist mein denkfehler?

                                        bei mir klappt es. Das Icon (Dein Gif) wechselt in der Anzeige brav die Farbe. Die Schreibweise im Adapter bei "Gilt für Termine" muss stimmen.

                                        welchen muss ich da verwenden?
                                        habs auch schon mit .gif probiert. muss aber auch mit .png funzenI MHO hab ich das problem mit der schreibweise...
                                        "Gilt für Termine" den fisch muss ich lösen.
                                        0cfb1091-9a45-48f1-be21-19440b2f56fd-grafik.png
                                        bekomm da nix rein...
                                        52c3cfb5-68ed-4e5f-8da4-c716e2205869-grafik.png

                                        Dein Gif habe ich mal geklaut 😊

                                        das hast du nicht geklaut, da hab ich einige verschiedene zur verfügung gestellt... 😄

                                        dslraserD Offline
                                        dslraserD Offline
                                        dslraser
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von dslraser
                                        #5913

                                        @da_woody sagte in Test Adapter iQontrol 1.9.x Vis:

                                        welchen muss ich da verwenden?

                                        Schreibweise Termine im Kalender

                                        Screenshot_20210826-195403_Business Calendar.jpg

                                        Schreibweise muß hier auch so sein

                                        Screenshot_20210826-195656_Chrome.jpg

                                        Und .png kann nicht gehen, denn in diesem Pfad steht die Tonne und es wird in dem bisherigen Link quasi .png drann gehangen, aber wenn es kein BioRest.png gibt (sondern .gif) dann kann auch keins angezeigt werden.

                                        Screenshot_20210826-200009_Chrome.jpg

                                        EDIT: Wenn Du alles gleich benennst, also die Bilddatei, die Du hochlädst und die Termine in Deinem Kalender sowie im Adapter, dann kannst Du nichts falsch machen. Groß und Kleinschreibung ebenfalls beachten.

                                        da_WoodyD 1 Antwort Letzte Antwort
                                        0
                                        • K kilasat

                                          @meerkat Hallo Meerkat,

                                          Danke erneut für die Bereitstellung des Scripts und der JSON.

                                          Ich habe das Script auf meine DP usw. angepasst jedoch habe ich noch ein paar Fragen dazu:

                                          1. Ich verwende keine Zonen - nur Räume. (weiss nicht wie ich die Koordinaten bekomme, funktioniert aber mit Räumen gut bei mir.)
                                            Kann ich diesen Teil im Script lassen?
                                          //Settings
                                          //Anzahl der Vacuum
                                          var countVacuum = ['mihome-vacuum.0'];
                                          var channelRooms = '.rooms';
                                          var servicePoints = ['25500,25500']
                                          var addRrooms = [
                                              {
                                              'room' : ['Zone1','Zone2','Zone3'],
                                              'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
                                              }
                                              ]
                                          
                                          1. Was macht - Vacuums Zusatzpunkte? Wozu der Channel?
                                          2. ServicePoint - ist der Standort der Ladestation oder wofür ist es gedacht?
                                          3. currentRoom - wird bei mir nicht in den Datenpunkten gefüllt. Die cleaning queue wird angezeigt aber nicht der Current Room.
                                          4. wozu das zweite Script?
                                          5. ist es möglich die Karte grösser anzeigen zu lassen? Vielleicht in Custom Controls oder als Popup?
                                          6. Die Scripte verursachen bei mir ein paar Warnings im Log, siehe Bild.

                                          4dfd8193-d035-4e04-885a-ef4359bccb79-image.png

                                          Vielen Dank für dein Feedback.

                                          M Offline
                                          M Offline
                                          meerkat
                                          schrieb am zuletzt editiert von meerkat
                                          #5914

                                          @kilasat
                                          Hi,

                                          1. wenn du nur die Räume und keine weiteren Zonen nutzt, kannst du im Script
                                          var addRrooms = [
                                              {
                                              'room' : ['Zone1','Zone2','Zone3'],
                                              'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
                                              }
                                              ];
                                          

                                          mit

                                          var addRrooms = null;
                                          

                                          ersetzen.

                                          1. Das legt ja einen Ordner (Channel) unter userdata an, wo die Datenpunkt Servicepoint usw. drunter angelegt werden.
                                          2. Der Servicepoint ist bei mir bspw. der Punkt wo ich den Staubbehälter leere, also direkt am Mülleimer in der Küche. Mein Sauger steht versteckt im Flur.
                                          3. Wenn du die Zeilen im zweiten Script auf deine Räume angepasst hast, sollte es gefüllt werden.
                                          4. Das zweite Script überwacht die Räume und setzt dann bspw. die Werte für CleaningRoom und den zuvor genannten currentRoom
                                          5. habe ich noch nicht getestet, da ich die Karte nicht wirklich beachte.
                                          6. Ändere mal die Zeile 9
                                          setState('0_userdata.0.mihome-vacuum.0.currentRoom', '');
                                          

                                          wie folgt ab

                                          setState('0_userdata.0.mihome-vacuum.0.currentRoom', null);
                                          

                                          ich hatte dort einen leeren String übergeben und das mag er nicht
                                          Das scheint auch in dem anderen Script zu sein
                                          8c3bbf81-94a4-4c7c-998e-375f4ab31eaf-image.png jedoch in Zeile 101

                                          K 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          422

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe