Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwickler-Meetings
    4. Meeting für ioBroker Core/Dev/Admin 14.07.20 20:30

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Meeting für ioBroker Core/Dev/Admin 14.07.20 20:30

    This topic has been deleted. Only users with topic management privileges can see it.
    • Mic
      Mic Developer @apollon77 last edited by

      Test. HTML scheint defekt im letzten Beitrag von mir

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

        ja irgendwie hats das jetzt zerballert 😞

        Ich verstehe auch Deine Argumente und sind natürlich auch immer ein nerviges Thema als Entwickler, wie ich nur zu gut selbst kenne :-).
        Das der Ansatz mit dem "eindeutigen IDs für lokalisierbare Inhalte" nicht perfekt ist ist denke überall bekannt ... aber eine echte Alternative gibts irgendwie auch nicht 😞

        Wäre damit nicht eine Idee ein "gulp" Dingens oder ein Skript zu schreiben was es erlaubt bestimmt "geschriebenes html" zu parsen und anzupassen?
        Also sowas wie ein tag "translate" was als property die text-ID oder sowas hat und ggf. eine Notation "nicht zu übersetzende teile" zu markieren die dann auch behandelt werden. Dann kann man das initial einfach so schreiben und am Ende lässt man das Skript drüber rennen was diese Art von Sonder-Tags nimmt, in die transpation files einfügt und so ... Das text Polishing (De/en) ist denke immer mit dabei ... da kommt man nicht drum rum fürchte ich.

        Lasst uns doch mal Kreativ werden wie wir dieses nervige Problem so angehen können mit dem was wir können ... Coden 🙂

        Vllt kriegen wir die 30 mins so auf 10 "am Ende einer Änderung" runter

        Ingo

        1 Reply Last reply Reply Quote 1
        • Jey Cee
          Jey Cee Developer @ldittmar last edited by

          @ldittmar sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

          Nicht Open Source Abhängigkeiten im ioBroker Core -> Redis Protokoll (Jey Cee)

          Object in Redis - Bluefox, Apollon77 und Foxriver haben Zugriff
          SocketIO war nicht stabil und verursachte Probleme
          Alles geht jetzt über Redis
          Object Kommunikation wird wieder OpenSource

          Seit 29.07.20 ist objects-redis Open Source unter Apache 2.0 Lizenz.

          1 Reply Last reply Reply Quote 3
          • Mic
            Mic Developer @apollon77 last edited by

            @apollon77

            Ich konnte jetzt nur durch einen Trick hier antworten (weiter oben vor dem Fehler bei einem Beitrag auf "Antwort" klicken. Siehe Thread: https://forum.iobroker.net/topic/35464/fehler-in-forum-thread-html-markdown-problem

            Wäre damit nicht eine Idee ein "gulp" Dingens oder ein Skript zu schreiben was es erlaubt bestimmt "geschriebenes html" zu parsen und anzupassen?

            An gulp dachte ich auch, wollte auch schon selbst was implementieren, aber dann schnell festgestellt, dass ich zu wenig/keine Erfahrung mit gulp hab und daher aus Zeitgründen verworfen.

            Also sowas wie ein tag "translate" was als property die text-ID oder sowas hat und ggf. eine Notation "nicht zu übersetzende teile" zu markieren die dann auch behandelt werden.

            Ja, genau, also index_m.html per gulp.

            Beispiel, so etwas sollte halt dann übersetzt werden:

            <td class="translate">
            	Sobald der Wert vom Datenpunkt mit diesem Wert übereinstimmt, wird der Auslöser aktiviert. 
            	<br>Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>ABCDEF</code> verwenden. 
            	<br>
            	<br>Ebenso kannst du die Vergleichs-Operatoren <code>></code>, <code><</code>, <code>>=</code> und <code><=</code> vor Zahlen schreiben.
            	<br>Um also auszulösen, wenn z.B. die Temperatur größer als 20°C ist, trägst du <code>>20</code> ein.
            	<br>
            	<br>Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.
            </td>
            

            Ausgangstext muss dann aber in Englisch sein, wobei auch als gulp-Option in Landessprache vorstellbar wäre...

            Hierbei müssen ein paar HTML-Tags ignoriert werden, z.b. <code>. Satzteile formatiert (z.B. <bold> etc.) sollen übersetzt werden.
            Evtl. noch eine "translate-ignore" CSS-Klasse für manche Teile (z.B. <span class="translate-ignore">Mich ignorieren</span>

            Soweit die Idee 😉

            Dann kann man das initial einfach so schreiben und am Ende lässt man das Skript drüber rennen was diese Art von Sonder-Tags nimmt, in die transpation files einfügt und so ... Das text Polishing (De/en) ist denke immer mit dabei ... da kommt man nicht drum rum fürchte ich.

            Das wäre super. Und klar, deutsch/englisch Anpassungen werden immer sein. Wobei man theoretisch auch die Quellsprache per gulp Option festlegen könnte.
            Nachteil wäre aber: index_m.html enthält dann deutsche Texte (oder spanische, etc.), also nicht so schön zu pflegen für andere Entwickler.

            Weitere Ideen? 🙂

            Garfonso apollon77 2 Replies Last reply Reply Quote 1
            • Garfonso
              Garfonso Developer @Mic last edited by

              @Mic
              Das klingt nach einer super Lösung. 🙂

              1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 @Mic last edited by apollon77

                @Mic Ich denke für die "nicht zu übersetzenden texte" müsste man sie erkennen, durch Platzhalter ersetzen die nicht übersetzt werden und dann nach der Übersetzung zurück-einsetzen. müsste man in entsprechende "Tags" einschliessen ...(zB wie Du in "code").

                Aber auch wichtig für die erkennung wäre noch ein "<div>" aussen rum.

                Also etwas wie
                <td class="translate">
                <div translation_id="meinCoolerText">....<code>do not translate</code>...</div>
                </td>

                ... müsste man jetzt nur noch bauen 🙂

                @ldittmar Schon nach dem Urlaub was vor? ;-)))

                Garfonso 1 Reply Last reply Reply Quote 0
                • Garfonso
                  Garfonso Developer @apollon77 last edited by

                  @apollon77 said in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                  <div translation_id="meinCoolerText">

                  Wofür brauchst du die id dann noch? Ich hatte den Ansatz von @Mic so verstanden, dass er ja gerade das mit den IDs nicht mehr will und das im Grunde alles automatisch generiert werden soll -> das könnte ja dann die IDs direkt mit generieren, damit man da nicht wieder in das Problem läuft, dass IDs nicht gepflegt werden (nicht eindeutig, ungenutzt, blah).

                  Oder hab ich da was falsch verstanden / übersehen?

                  apollon77 1 Reply Last reply Reply Quote 0
                  • apollon77
                    apollon77 @Garfonso last edited by

                    @Garfonso Naja die Idee ist ja das Mapping zu Loca-IDs und damit das "auslagern in die words.js" zu automatisieren. ich kennen aktuell noch keinen sinnvollen Weg ohne dies. Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

                    AlCalzone 1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer @apollon77 last edited by

                      @apollon77 sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                      Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

                      Die Fehlermeldungen vom TypeScript-Compiler werden beispielsweise genau so generiert.

                      Mic 1 Reply Last reply Reply Quote 0
                      • Mic
                        Mic Developer @AlCalzone last edited by

                        Hi zusammen,

                        • Hier noch mal der initiale Beitrag von mir zu dieser Diskussion.
                        • Und hier der derzeitige Aufwand für Entwickler aus meiner Sichtweise.

                        @AlCalzone sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                        @apollon77 sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                        Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

                        Die Fehlermeldungen vom TypeScript-Compiler werden beispielsweise genau so generiert.

                        Ich kenne jetzt die Übersetzungs-Funktionalität (Stichwort word.js) noch nicht wirklich, aber ich denke, der dafür zuständige Code müsste auch angepasst werden.

                        Wie auch immer:
                        So wie ich die JavaScript-Spezifikation verstehe, darf ein Objekt-Key (also der key bei {'key':'val'} ein beliebiges String beinhalten. Somit sind also keine Grenzen gesetzt. Lasse mich da gerne korrigieren 😉
                        Damit ist es also egal, wie komplex das String ist, (Browser-)Performance mal außen vor.

                        Jetzt kann doch ein Script folgendes machen:

                        index_m.html per jQuery: alle Inhalte, die translate als Klassen-Zuweisung enthalten, per Loop durchlaufen:

                        1. Inhalte übersetzen und Ergebnis in Variable und dann Zieldatei.
                          • Für Übersetzung: vorher definierte Tags zur Übersetzung ignorieren (z.B. <code>true</true> oder Text <span="non-translate">ioBroker<span> und einzelne Teile separat übersetzen.
                          • Nach Übersetzung: ignorierte Bestandteile wieder in HTML-Variable hinzufügen
                        2. Ergebnis ab in die words.js:
                          • hier dann auch bereinigen zum Schluss, d.h. unbenutzte Einträge löschen. Geht natürlich nur, wenn global verfügbar, welche Keys gesetzt wurden.

                        Falls das on-the-fly nicht möglich oder aus Browser-Performance-Gründen nicht sinnvoll, könnte man auch entsprechend komplilieren und "_min.xxx" Dateien generieren lassen, wie z.B. "words_min.js"

                        apollon77 1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 @Mic last edited by

                          @Mic Also ja natürlich kann man den beliebigen Text in die Words packen ... Dann bräuchte man beim zurückschreiben noch eine Erkennung das ein text schon übersetzt ist damit er nicht nochmal wird - und man muss sich selbst dran halten sowas nicht nochmal zu editieren sondern die words.js ab der initialen Übersetzung zu nutzen ... sonst landet der neue text beim nächsten "übersetzungslauf ausführen" unter dem neuen text nochmal drin und es entstehen doubletten und riiiesige words.js Files 🙂 Daher meine Idee es durch ne unique ID zu ersetzen ... dann sieht man das gleich. geht aber bestimt auch anders.

                          Die Logik mit Übersetzung und so (geht ja nicht in words.js sondern in die translation files denke ich) ist glaube im gulp drin. Am Ende passt eine neue Logik denke da am besten hin. Also im gulp das html parsen, texte finden und "bearbeiten".

                          Ansonsten: einzelne Teile überstzen geht nicht wiel sonst der Satzaufbau komplett zerstört wird. Also man muss wirklich die nicht zu übersetzenden Teile rausholen und durch etwas ersetzen was er nicht übersetzt, und danach den ganzen Text mit den Platzhaltern übersetzen lassen und dann wieder die platzhalter zurück-einfügen

                          Mic 1 Reply Last reply Reply Quote 0
                          • Mic
                            Mic Developer @apollon77 last edited by Mic

                            @apollon77

                            Ich werfe auch mal https://weblate.org/de/ in den Raum, UncleSam hat mich darauf aufmerksam gemacht 😉

                            @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                            Hallo ldittmar

                            Übersetzungen sind ein schwieriges Thema. Bis jetzt müssen wir Adapter Entwickler mit Google/Yandex übersetzen und dann "native speaker" im GIT Korrekturen per PR einbringen. Bei meinem aktuellen Arbeitgeber sind wir von einem teilweise manuellen Prozess (mit Excel-Listen!) auf https://weblate.org/en/ umgestiegen.

                            Die Installation und Konfiguration war innert wenigen Stunden erledigt und nun können wir alle Übersetzungen in einem Online Tool pflegen - wenn nötig auch mit externen Übersetzern. Wir sind schon nach wenigen Wochen begeistert - der Prozess benötigt keine manuellen Schritte mehr für die Entwickler!

                            Wäre das nicht ein interessantes Tool für all die Übersetzungen von Adaptern? Es liesse sich auch jeder Adapter mit seinem eigenen GitHub Repo einbinden (sofern die entsprechenden Autoren einverstanden sind).

                            Wenn das Interesse vorhanden ist, kann ich auch noch etwas detaillierter über das Tool berichten und euch bei der Inbetriebnahme / Integration helfen.

                            /UncleSam

                            @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                            Es ist Open Source und wie gesagt innert kürzester Zeit eingerichtet. Ich gehe davon aus, dass ioBroker schon eine gewisse Server Infrastruktur (respektive Cloud Infrastruktur) hat, damit würde der Preis aus meiner Sicht 0 € betragen.

                            @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                            Die Einrichtung ist keine grosse Sache; ein Aufwand besteht natürlich pro GIT Repo, das man anhängen will (für uns: pro Adapter).

                            Weblate nimmt die Übersetzungen direkt aus dem GIT und kann sie auch wieder ins GIT zurückspielen. Für GitHub gibt es die Möglichkeit über Pull Requests: https://docs.weblate.org/en/latest/vcs.html#github Damit muss Weblate nicht einmal spezielle Rechte für ein Repository haben.

                            Wie gesagt bin ich gerne bereit, bei der Umsetzung zu helfen und würde das auch einfach mal mit einem meiner Adapter testen, bevor wir das "ausrollen" würden. Ich will nur nicht für mich eine "Insellösung" erarbeiten, wenn wir gleich eine Lösung für (fast) alle bauen können.

                            Ich kenne Weblate null, aber das klingt wirklich hochinteressant!

                            der Prozess benötigt keine manuellen Schritte mehr für die Entwickler!

                            🙂

                            UncleSam 1 Reply Last reply Reply Quote 1
                            • UncleSam
                              UncleSam Developer @Mic last edited by

                              @Mic Danke für die zahlreichen Zitate 😉

                              I18N (Internationalization) ist ein häufiges Problem und wir sind sicherlich nicht die ersten (und nicht die letzten), die sich dem annehmen müssen. Als Schweizer Softwareentwickler bin ich fast in jedem Projekt zweisprachig unterwegs (DE/FR); meist kommt noch Englisch dazu.

                              Die Problematik muss an zwei Stellen angegangen werden:

                              1. Die Software muss übersetzbar sein
                              2. Die Übersetzungen müssen einfach gepflegt werden können

                              Die Diskussion hier dreht sich vor allem um den ersten Punkt, mein Vorschlag für Weblate konzentriert sich auf den zweiten (nur damit wir hier nicht allzu wirr durcheinander reden).

                              Für 1. gibt es gute Frameworks und gute Beschreibungssprachen. Hier einige Beispiele: https://docs.weblate.org/en/latest/formats.html
                              Dabei ist wichtig, dass das Tool nicht nur einfache Texte übersetzen kann, sondern zum Beispiel auch mit Plural/Daten umgehen kann. ICU macht das sehr schön: http://userguide.icu-project.org/formatparse/messages :

                              "{num_guests, plural, offset:1 "
                                    "=0 {{host} does not give a party.}"
                                    "=1 {{host} invites {guest} to her party.}"
                                    "=2 {{host} invites {guest} and one other person to her party.}"
                                    "other {{host} invites {guest} and # other people to her party.}}}"
                              

                              Ich denke wir müssen uns für beide Punkte auf etwas einigen und beides muss zusammen passen. Dabei würde ich versuchen, auf Standard-Tools zu setzen und nicht zu viel selber zu erfinden/entwickeln. Bis jetzt habe ich im Web-Bereich nur mit Angular I18N gearbeitet - und allein schon dort gibt es drei populäre Lösungen.

                              "Im Nachhinein Übersetzen" ist IMHO eine schlechte Strategie, sprich: Übersetzungen müssen von Anfang an in der Software vorgesehen sein. Irgendwie versuchen, Texte herauszusuchen und diese dann in eine Datei abzufüllen funktioniert sehr schlecht. Gerade auch Teilsätze (beim Einsetzen von Daten) können ein heilloses Durcheinander auslösen.

                              Automatische Übersetzungen sind ein guter erster Schritt, damit ioBroker internationaler wird, aber wer mag Software schlecht die Übersetzung sein or not all translated? 😉 Teilweise ist schon Deutsch schwierig, beim Englisch holpert es dann doch öfters in ioBroker.

                              Ich freue mich auf einen guten Austausch und bin gerne bereit in den nächsten Wochen Zeit in eine gute Lösung zu stecken.

                              Mic apollon77 2 Replies Last reply Reply Quote 4
                              • Mic
                                Mic Developer @UncleSam last edited by Mic

                                @UncleSam

                                Vielen Dank für deine Initiative, Super 🙂

                                Wie ist das denn mit Weblate hinsichtlich Dokumentation versus Applikation (Frontend) selbst:

                                Mein persönlicher Anstoß war, dass ich in ioBroker.adapter-xyz/admin/index_m.html auch eine direkte Hilfe dem Anwender biete (https://github.com/Mic-M/ioBroker.smartcontrol).

                                Dort habe ich etwa folgendes, also eine "Online-Hilfe/Dokumentation" für den Anwender:
                                zzu778.gif

                                Lässt sich denn so etwas, also der Text mit der Tabelle, auch einfach mit Weblate abbilden?

                                Quellcode:

                                <ul class="collapsible">
                                	<li>
                                		<div class="collapsible-header config-section"><h5 class="translate">Zusätzliche Bedingungen</h5><i class="material-icons">help_outline</i></div>
                                		<div class="collapsible-body">
                                			<p style="margin-top:0px" class="translate">
                                				Diese Tabelle ist optional:
                                				<br>Hier trägst du zusätzliche Bedingungen ein, die (nicht) zutreffen sollen, z.B.: Jemand ist anwesend, Keiner ist anwesend, Heute ist Feiertag, Oma schläft, usw.
                                				<br>
                                				<br>Diese kannst du dann in den entsprechenden anderen Optionen-Tabellen auswählen.
                                			</p>
                                			<table>
                                				<thead>
                                				  <tr>
                                					  <th class="translate">Spalte</th>
                                					  <th class="translate">Pflichtfeld</th>
                                					  <th class="translate">Beschreibung</th>
                                				  </tr>
                                				</thead>
                                		
                                				<tbody>
                                				  <tr>
                                					<td class="translate">✓</td>
                                					<td class="translate">Ja</td>
                                					<td class="translate">Aktiviert/deaktiviert diese Tabellenzeile. Falls nicht aktiviert, wird diese Tabellenzeile vom Adapter nicht beachtet.</td>
                                				  </tr>
                                				  <tr>
                                					<td class="translate">Name der Bedingung</td>
                                					<td class="translate">Ja</td>
                                					<td class="translate">Hier beliebigen Namen deiner Bedingung eintragen, z.B. 'Feiertag Heute'.</td>
                                				  </tr>
                                				  <tr>
                                					<td class="translate">Datenpunkt der Bedingung</td>
                                					<td class="translate">Ja</td>
                                					<td class="translate">Datenpunkt für diese Bedingung, wie <code>javascript.0.Holiday.isHolidayToday</code>.</td>
                                				</tr>
                                				  <tr>
                                					<td class="translate">DP-Wert</td>
                                					<td class="translate">Ja</td>
                                					<td class="translate">Datenpunkt-Wert der Bedingung, wenn sie zutreffen soll. Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>Oma schläft jetzt</code> verwenden. Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.</td>
                                				  </tr>
                                				</tbody>
                                			  </table>
                                		</div>
                                	</li>
                                </ul>
                                
                                

                                Oder ist Weblate primär für die "eigentliche" Software gedacht, also Auswahlfelder, Feldbezeichnungen, usw.?

                                UncleSam 1 Reply Last reply Reply Quote 0
                                • apollon77
                                  apollon77 @UncleSam last edited by

                                  @UncleSam Weblate kostet aber, oder ?!

                                  Jey Cee 1 Reply Last reply Reply Quote 0
                                  • Jey Cee
                                    Jey Cee Developer @apollon77 last edited by

                                    @apollon77 selfhosted ist kostenlos.

                                    1 Reply Last reply Reply Quote 1
                                    • UncleSam
                                      UncleSam Developer @Mic last edited by

                                      @Mic sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                      Lässt sich denn so etwas, also der Text mit der Tabelle, auch einfach mit Weblate abbilden?

                                      Weblate übersetzt - nicht mehr und nicht weniger. Du hast ja bereits class="translate" hinzugefügt, das muss dann ein Tool extrahieren (geht in deinem Fall sehr einfach) und Weblate bietet dann einfach alle Teil-Strings zur Übersetzung an.

                                      Ganze Seiten mit HTML Tags etc. würde ich nicht von Weblate übersetzen lassen (das bedingt, dass der Übersetzer HTML versteht), allerdings kann ich mir vorstellen, einfaches Markdown übersetzen zu lassen (z.B. für https://raw.githubusercontent.com/ioBroker/ioBroker.docs/master/docs/en/dev/adaptervis.md, aber eher nicht für grosse Dokumente wie https://raw.githubusercontent.com/ioBroker/ioBroker.docs/master/docs/en/dev/adapterdev.md).

                                      Das mit dem Extrahieren ist ein wichtiger Punkt: der Entwickler muss natürlich zu übersetzenden Text irgendwie markieren, aber den markierten Text zu extrahieren sollte man unbedingt einem Tool überlassen. Sprich für ioBroker: words.js (oder was es dann auch immer sein wird) wird komplett von Weblate erzeugt, der Entwickler muss nur etwas (z.B. class="translate" eventuell mit id="unique-id") zu jedem Tag hinzufügen, den er übersetzt haben will.

                                      Bluefox 1 Reply Last reply Reply Quote 0
                                      • Bluefox
                                        Bluefox @UncleSam last edited by Bluefox

                                        @UncleSam Bevor wir noch einen Server aufsetzten, vielleicht können wir in die Richtung crowdin schauen?

                                        Ich habe ein Beispielprojekt angelegt: https://crowdin.com/project/iobrokeradmin

                                        Oder hier als Enterprise: https://iobroker.crowdin.com/

                                        UncleSam 1 Reply Last reply Reply Quote 0
                                        • UncleSam
                                          UncleSam Developer @Bluefox last edited by

                                          @Bluefox sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                          vielleicht können wir in die Richtung crowdin schauen?

                                          Crowdin sieht auch gut aus. Ich habe schon davon gehört, aber noch nie damit gearbeitet. Ich nehme an, die GitHub/PR Integration ist sicherlich gut gelöst. Wie sieht es mit mehreren Repos aus? Kann man alle Adapter Repos zusammenfassen oder muss das jeder Entwickler selber machen? Ich denke eine zentrale Lösung ist notwendig, sonst macht wieder jeder Entwickler etwas und Übersetzungen sind dann immer noch gleich schwierig zu behandeln.

                                          Bluefox apollon77 2 Replies Last reply Reply Quote 0
                                          • Bluefox
                                            Bluefox @UncleSam last edited by

                                            @UncleSam Ich vermute, dass es keine Zentrale Lösung gibt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            575
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            admin-team entwickler-team tester treffen
                                            18
                                            79
                                            7111
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo