Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. IOBroker in Container mit Asterisk-Adapter Installation

    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

    IOBroker in Container mit Asterisk-Adapter Installation

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

      Hallo zusammen,
      ich habe schon seit längerem auf meiner Synology NAS einen IOBroker im Docker-Container laufen.
      U.a. verwende ich den Asterisk-Adapter für Telefonanrufe (z.B. Rauchalarm). Dafür werden jedoch auch weitere Bibliotheken
      benötigt:

      • ffmpeg
      • lame
      • sox
      • libsox-fmt-mp
      • asterisk

      Da bin ich prinzipiell gemäß dieser Anleitung vorgegangen:
      https://github.com/schmupu/ioBroker.asterisk/blob/master/docs/SIP_FRITZBOX_DE.md

      Natürlich etwas angepasst, da IOBroker im Docker-Container läuft. D.h. die o.g. Linux-Pakete habe ich dann im Docker installiert:
      Also so:

      pkill -u iobroker
      apt-get update
      apt-get install ffmpeg
      apt-get install lame
      apt-get install sox
      apt-get install libsox-fmt-mp3
      apt-get install asterisk
      
      

      Aus unterschiedlichen Gründen habe ich nun meine Docker-Container nochmals ganz neu aufgesetzt, u.a. auch um bei Updates solche Linux-Pakete nicht immer wieder installieren zu müssen.
      Das mache ich jetzt eben über ein Docker-compose file im Portainer, dort kann man ja auch unter environment solche Linux-Pakete gleich mit installieren:

         environment:
            - PACKAGES=ffmpeg lame sox libsox-fmt-mp3 asterisk influxdb2-cli
      

      Allerdings funktioniert das nicht (mehr), da asterisk so nicht mehr als Paket bereitgestellt wird, es kommt bei Container-Start dann auch dieser Fehler:
      1698357672329-2023-10-26-23_08_36-window.png
      siehe auch dieser Thread:
      https://forum.iobroker.net/topic/69281/usb-in-docker-via-neuer-container-über-compose-u-a-andere/74

      Da schreibt @Thomas-Braun :
      Asterisk wird nicht mehr direkt von Debian für 'Bookworm' gepackt:
      https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031046

      Lösungsansatz war nun, auch asterisk als weiteren Container zu installieren, da gibt es auch
      auf: https://github.com/andrius/asterisk
      Einen docker von andrius, davon habe ich nun ein eigenes Image abgeleitet, in dem die anderen Linux-Pakete noch installiert werden und dann dieses container-image im docker-compose verwendet.
      Soweit alles gut, der Asterisk-Adapter im IOBroker scheint auch zu connecten:
      2023-11-07_23h35_35.png

      Aber es kommt eben dieser Fehler (z.B. wenn über Blockly Telefonanruf abgesetzt werden soll:
      2023-11-07_23h37_47.png

      Ich habe alle Konfigurationen wie Ports und die config-files schon x-mal geprüt und variiert.

      Hat jemand ein ähnliches Setup, ähnliche Erfahrungen?

      Bzw. wie installiert ihr heute Asterisk-Adapter ohne die verfügbaren Linux-Paket-Installationen?

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Chrisham last edited by OliverIO

        @chrisham

        ich schon wieder.
        ich hab mal in den code reingeschaut.
        problem deines logs ist, das da zwar errors entstehen
        aber keine weiteren hinweise, was für fehler da passiert

        jetzt kommt eine etwas arg hacky Möglichkeit, ohne aussicht auf erfolg.
        alles was jetzt kommt passiert im container. du kannst das auch im gemappten verzeichnis machen, dann stimmen halt die verzeichnisnamen nicht komplett

        1. suche im iobroker verzeichnis unter /opt/iobroker/node_modules nach dem adapter iobroker.asterix
        2. innerhalb dieses ordners müsste es wieder einen ordner node_modules geben, falls nicht dann suche im ordner /opt/iobroker/node_modules nach einem verzeichnis namens asterix-manager
        3. in diesem verzeichnis findest du den inhalt dieses repositorys. das ist der code um mit dem asterix manager zu kommunizieren
          https://github.com/pipobscure/NodeJS-AsteriskManager/blob/fd49676787d74c4885731a67f45d45614d362de3/lib/ami.js#L11
        4. In Zeile 11 müsste debug = false; stehen, änder das auf debug = true;
        5. stope im iobroker den adapter asterix
        6. führe im container die folgenden befehle aus hintereinander aus (wichtig: in der container console ausführen)
        cd /opt/iobroker
        node node_modules/iobroker.asterix/asterix.js
        
        

        das startet den adapter manuell und du siehst dann in der console alle weiteren ausgaben, die nicht an das iobroker log weitergeleitet werden
        7) schau dir die ausgaben an, ob da nochmal bessere fehlermeldungen erscheinen

        C 1 Reply Last reply Reply Quote 0
        • C
          Chrisham @OliverIO last edited by

          @oliverio ok, danke für den Hinweis, ich habe mal das ami.js file gesucht, es ist vorhanden aber nicht in

          /opt/iobroker/node_modules/iobroker.asterisk/node_modules
          

          sondern es liegt in

          /opt/iobroker/node_modules/iobroker.asterisk/lib
          

          Allerdings sieht das file etwas anders aus, als auf dem o.g. github repo:
          Da gibt es z.B. keine debug variable:

          /* jshint -W097 */
          /* jshint -W030 */
          /* jshint strict:true */
          /* jslint node: true */
          /* jslint esversion: 6 */
          'use strict';
          
          const AsteriskManagerGlobal = require('asterisk-manager');
          
          function textToNumber(text) {
            let numb = '';
            if (text) {
              numb = text.match(/[\d*#]/g);
              numb = numb.join('');
            }
            return numb;
          }
          
          function getGuid() {
            function _p8(s) {
              var p = (Math.random().toString(16) + '000000000').substr(2, 8);
              return s ? '-' + p.substr(0, 4) + '-' + p.substr(4, 4) : p;
            }
            return _p8() + _p8(true) + _p8(true) + _p8();
          }
          
          
          // *****************************************************************************************************
          // Asterix Manager Class. More Infos:
          //  https://github.com/pipobscure/NodeJS-AsteriskManager
          //  https://github.com/mscdex/node-asterisk
          // *****************************************************************************************************
          class AsteriskManager {
          
            constructor(config) {
              this.ami = new AsteriskManagerGlobal(config.port, config.hostname, config.username, config.password, config.events || false);
              this.options = {
                'port': config.port,
                'hostname': config.hostname,
                'username': config.username,
                'password': config.password,
                'service': config.service || 'sip',
                'events': config.events || false
              };
            }
          
            getAmi() {
              return this.ami;
            }
          
            asteriskEvent(eventname, callback) {
              if (eventname.length > 0 && callback) {
                this.ami.on(eventname, (evt) => {
                  if (callback) callback(evt);
                });
              }
            }
          
            eventManager(callback) {
              this.asteriskEvent('managerevent', callback);
            }
          
            eventHangup(callback) {
              this.asteriskEvent('hangup', callback);
            }
          
            eventResponse(callback) {
              this.asteriskEvent('response', callback);
            }
          
            eventConfBridgeJoin(callback) {
              this.asteriskEvent('confbridgejoin', callback);
            }
          
            disconnect(callback) {
              this.ami.disconnect(callback);
            }
          
            isConnected() {
              return this.ami.isConnected();
            }
          
            connected() {
              return this.isConnected();
            }
          
            connect(callback) {
              this.ami.connect(this.options.port, this.options.hostname, callback);
            }
          
            keepConnected() {
              this.ami.keepConnected();
            }
          
            login(callback) {
              this.ami.login(callback);
            }
          
            reconnect(callback) {
              if (!this.isConnected()) {
                this.connect(() => {
                  this.login(callback);
                });
              } else {
                if (callback) callback();
              }
            }
          
            dial(parameter, callback) {
          
              if (!parameter) return;
          
              let telnrs = (typeof parameter.telnr === 'string') ? Array(parameter.telnr) : parameter.telnr;
              let extension = parameter.extension || 'none';
              let resultarray = [];
          
              for (let i in telnrs) {
                let telnr = textToNumber(telnrs[i]);
                let channel;
                if (this.options.service === 'pjsip') {
                  channel = (extension === 'none') ? 'PJSIP/' + telnr : 'PJSIP/' + telnr + '@' + extension;
                } else {
                  channel = (extension === 'none') ? 'SIP/' + telnr : 'SIP/' + extension + '/' + telnr;
                }
                let guid = getGuid();
                let options = {
                  'action': 'originate',
                  'channel': channel,
                  'context': parameter.context || 'ael-ansage',
                  'exten': parameter.exten || telnr,
                  'priority': parameter.priority || 1,
                  'actionid': guid,
                  'timeout': parameter.timeout || (60 * 1000),
                  'variable': {
                    'repeat': parameter.repeat || 5,
                    'file': parameter.audiofile,
                    'del': parameter.delete || ''
                  }
                };
          
                if (parameter.hasOwnProperty('async')) { options.async = parameter.async; }
                if (parameter.hasOwnProperty('callerid')) { options.callerid = textToNumber(parameter.callerid); }
                if (parameter.hasOwnProperty('variable')) { options.variable = parameter.variable; }
                this.ami.action(options, (err, res) => {
                  let result = {
                    parameter: parameter,
                    options: options,
                    guid: guid,
                    result: res
                  };
                  callback && callback(err, result);
                });
                resultarray.push({ parameter: parameter, guid: guid });
              }
          
              return resultarray;
            }
          
            action(parameter, callback) {
              let guid = getGuid();
              this.ami.action(parameter, (err, res) => {
                let result = {
                  parameter: parameter,
                  guid: guid,
                  result: res
                };
                callback && callback(err, result);
              });
            }
          
          }
          
          module.exports = AsteriskManager;
          
          

          Ich habe dann mal meine Astersik-Adapter version geprüft innerhalb iobroker, aber die ist die aktuellste die dort angeboten wird, jedenfalls scheinen das nicht die gleichen Versionen zu sein.

          Hab dann mal ins asterisk.js geschaut, da gibt es bzgl. logging diese 3 Aufrufe:

          adapter.log.debug
          adapter.log.info
          adapter.log.error
          

          also info und error landen dann im protokolle-log vom iobroker, wobei ja eigentlich auch bis auf debug-level konfiguriert werden kann:
          2023-11-09 00_24_39-Window.png

          Dennoch erscheinen da keine log-entries mit diesem level, was ja eigentlich nicht sein kann, da müsste es doch welche geben, zzumindest ist der code voll davon:

            adapter.log.debug('Message: ' + JSON.stringify(parameter));
          
            if (parameter) {
              if (command == 'dial') {
                adapter.log.debug('Dial Command');
          
                if (!parameter.extension) parameter.extension = adapter.config.sipuser;
                if (parameter.telnr) { adapter.setState('dialout.telnr', parameter.telnr, true); }
                if (parameter.text) { adapter.setState('dialout.text', parameter.text, true); }
                if (parameter.callerid) { adapter.setState('dialout.callerid', parameter.callerid, true); }
          
          
                if (parameter.text && parameter.telnr) {
                  if (!parameter.audiofile) parameter.audiofile = tmppath + 'audio_' + id;
                  if (converter.getFilenameExtension(parameter.audiofile).toLowerCase() == 'gsm') {
                    parameter.audiofile = converter.getBasename(parameter.audiofile);
                  }
                  if(!parameter.delete) { parameter.delete = 'delete'; } // delete file after dialing
          
          OliverIO 3 Replies Last reply Reply Quote 0
          • OliverIO
            OliverIO @Chrisham last edited by OliverIO

            @chrisham

            du sollst nicht im paket
            iobroker.asterix
            suchen, sondern im paket
            asterix-manager
            suchen

            der paketname muss genau so geschrieben werden.
            auch dort gibt es eine ami.js datei

            C 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @Chrisham last edited by

              @chrisham

              ich verstehe nicht ganz
              9c8d78f0-f0a3-48e5-a5ec-52a941101c2b-image.png

              das sind log einträge die einen ganz anderen adapter betreffen

              C 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @Chrisham last edited by

                @chrisham sagte in IOBroker in Container mit Asterisk-Adapter Installation:

                zzumindest ist der code voll davon

                dann stell den adapter mal auf log-level debug
                dazu musst du die experteneinstellung (dieser kopf oben am rand) aktivieren

                C 1 Reply Last reply Reply Quote 0
                • C
                  Chrisham @OliverIO last edited by

                  @oliverio ok, sry, ja hier hab ich das jetzt gefunden:

                  opt/iobroker/node_modules/asterisk-manager/lib/ami.js
                  

                  Da hab ichs angepasst:

                  /*
                   * NodeJS Asterisk Manager API
                   * (Based on https://github.com/mscdex/node-asterisk.git)
                   * But radically altered thereafter so as to constitute a new work.
                   *
                   * © See LICENSE file
                   *
                   */
                  /* jshint node:true, newcap:false */
                  'use strict';
                  var debug = true;
                  
                  

                  dann asterisk-adapter gestoppt und das ausageführt:
                  2023-11-09 09_18_11-DS920-Plus - Synology NAS - Brave.png

                  da gibts in consolce kurz eine gedenk-sekunde und dann aber nichts mehr und im iobroker taucht im log dieser eintrag auf:
                  2023-11-09 09_11_16-logs - iobroker-9 - Brave.png
                  Adapter bleibt in iobroker-GUI auf ausgeschaltet.

                  1 Reply Last reply Reply Quote 0
                  • C
                    Chrisham @OliverIO last edited by

                    @oliverio ja, ne die log-einträge sind für alle adapter (wenn man in der spalte "Quelle" nicht explizit einen ausfiltert), sieht man ja auch, dass das von unterschiedlichen Quellen kommt und der log-level (err, warn, info, debug...) wirkt dann auf alle adapter.
                    2023-11-09 09_20_15-logs - iobroker-9 - Brave.png

                    1 Reply Last reply Reply Quote 0
                    • C
                      Chrisham @OliverIO last edited by

                      @oliverio s.o. also ich bin der meinung, dass dieser log-level auf alle adater wirkt (zumindest bei error, warn, info ist das auch wirksam und sichtbar...), aber wenn ich auf debug schalte ändert sich tatsächlich nichts.
                      2023-11-09 09_23_47-logs - iobroker-9 - Brave.png

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Chrisham last edited by

                        @chrisham
                        der expertenknopf an sich macht nicht so viel
                        er zeigt nur zusätzliche knöpfe und möglichkeiten an

                        du sollst auf die Instanzseite gehen
                        dann schauen über der Expertenknopf aktiviert ist
                        dann die asterix-instanz auswählen
                        dort gibt es die möglichkeit den max loglevel zu ändern.
                        der dürfte aktuell auf info stehen
                        24c045a5-5ba4-4776-a470-4ab0a0b07bda-image.png

                        C 1 Reply Last reply Reply Quote 0
                        • C
                          Chrisham @OliverIO last edited by

                          @oliverio aha, das gibts nochmals auf adapte-ebene ...man lernt irgendwie nie aus
                          jetzt kommen die zusätzlichen debug-logs:
                          2023-11-09 09_52_23-● ami.js - Visual Studio Code.png

                          so ergiebig ist das wohl auch nicht, damit müsste ich jetzt nochmals in den asterisk.js code schauen, ob darüber was rauszufinden ist.
                          Aber die ausgabe über die console scheint noch nicht zu funktionieren...

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @Chrisham last edited by

                            @chrisham

                            wenn du den adapter über die console startest und die datei entsprechend anpasst kommt gar nix?
                            mach mal dann noch auf der console

                            iob upload all
                            

                            eine weitere Möglichkeit wäre dann noch in das asterix log selbst zu schauen
                            im container im pfad

                            /var/log/asterisk/
                            

                            natürlich auch noch die container log ausgabe beobachten

                            C 1 Reply Last reply Reply Quote 0
                            • C
                              Chrisham @OliverIO last edited by

                              @oliverio
                              das

                              iob upload all
                              

                              habe ich gemacht (da werden jede menge files transferiert... was passiert da genau?) und danach nochmals

                              node node_modules/iobroker.asterisk/asterisk.js
                              

                              --> da passiert nichts, außer dass es im iobroker-log diesen eintrag gibt:
                              2023-11-09 14_35_58-logs - iobroker-9 - Brave.png

                              Ansonsten bzgl.

                              /var/log/asterisk/
                              

                              -> das verzeichnis gibt es in meinem IObroker gar nicht (oder bin ich wieder an der falschen stelle):
                              2023-11-09 14_42_51-OpenSSH SSH client.png

                              OliverIO 2 Replies Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @Chrisham last edited by

                                @chrisham sagte in IOBroker in Container mit Asterisk-Adapter Installation:

                                das verzeichnis gibt es in meinem IObroker gar nicht (oder bin ich wieder an der falschen stelle):

                                im asterix container

                                C 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @Chrisham last edited by OliverIO

                                  @chrisham sagte in IOBroker in Container mit Asterisk-Adapter Installation:

                                  habe ich gemacht (da werden jede menge files transferiert... was passiert da genau?) und danach nochmals

                                  da werden die ganzen module und dateien neu bei iobroker registriert.
                                  manchmal braucht er das um neue/geänderte dateien zu erkennen.

                                  aber wenn dann im consolen fenster nix kommt.

                                  der iobroker adapter schaut ja nur nach asterix und steuert fern.
                                  daher zuerst bei der applikation asterix schauen, weil dann ist da etwas noch nicht richtig eingerichtet/konfiguriert oder es fehlen noch komponenten.
                                  hast du den bei github (bei andrius) ein issue aufgemacht? evtl sehen das auch andere und können darauf antworten

                                  C 1 Reply Last reply Reply Quote 0
                                  • C
                                    Chrisham @OliverIO last edited by

                                    @oliverio ah ok, also ja, da gibts:
                                    2023-11-09 15_46_54-OpenSSH SSH client.png
                                    Im messages file scheint was relevantes drin zu sein, hänge es mal mit dran, das ist vom 7.11. ich meine, das war das letzte mal, dass ich die container hochgefahren habe...

                                    muss dann heute abend, mit etwas mehr zeit das mal analysieren:
                                    messages

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      Chrisham @OliverIO last edited by

                                      @oliverio noch nicht, habe ja erstmal diesen thread hier dazu aufgemacht, dann habe ich andrius über telegram angeschrieben, er antwortet aber nur sehr sporadisch, er meinte da nur, dass wohl netzwerk config noch nicht stimmt, aber das haben wir eigentlich jetzt ausgeschlossen...

                                      OliverIO 2 Replies Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Chrisham last edited by

                                        @chrisham
                                        https://github.com/TECH7Fox/asterisk-hass-addons/issues/23
                                        zu den fehlern steht da etwas.
                                        allerdings scheinen die nicht schuld daran zu sein, das asterix nicht funktioniert

                                        TECH7Fox created this issue in TECH7Fox/asterisk-hass-addons

                                        open Fix remaining Asterisk errors #23

                                        1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @Chrisham last edited by

                                          @chrisham

                                          also wie gesagt. ich habe kein asterix und habe auch nie damit gearbeitet.
                                          wir sind jetzt auf einer ebene angelangt, bei dem die fehler genau so sind, wie wenn das programm nativ irgendwo installiert ist.

                                          du kannst jetzt nur so vorgehen, gemäß anleitung von asterix die konfiguration so zu vervollständigen, das es läuft.
                                          was mir noch einfällt, wie erfährt den der asterix von irgendwelche telefonaten?
                                          wir haben zwar den docker container konfiguriert, aber wie hast du den asterix selbst konfiguriert? sind alle module beieinander (scheint ja zumindest verschiedene module zu geben)?
                                          ist jedes für sich korrekt konfiguriert. wie kann man die funktionsfähigkeit testen? passen alle ports mit deinen restlichen geräten zusammen? etc.

                                          bei fehler in logs bspw von asterix kannst du einfach die zeile kopieren und in google einfügen. meist findet google dann irgendwelche stellen, an dem so etwas schon besprochen wurde.

                                          wenn andrius sagt, das es noch an irgendwelcher netzkonfiguration liegt glaub ich das auch. irgendwo stimmt noch was nicht und das muss nicht unbedingt am container liegen.

                                          C 1 Reply Last reply Reply Quote 0
                                          • C
                                            Chrisham @OliverIO last edited by

                                            @oliverio Ja, klar ich weiß, dass du dich da mehr als erwartbar engagierst, obwohl du selbst es gar nicht nutzt, das ist echt super!

                                            Also bzgl. Config bin ich nach der Neuinstallation der asterisk app nochmals alles gemäß
                                            https://github.com/schmupu/ioBroker.asterisk/blob/master/docs/SIP_FRITZBOX_DE.md
                                            durchgegangen.

                                            Wie die Module im Container abgelegt sind, das habe ich jetzt nicht geprüft, da bin ich davon ausgegangen, dass das im andrius referenz-container richtig gemacht ist, von dem ich meinen abgeleitet habe.

                                            Ansonsten gibt es eben diese Config-Files:

                                            extensions.ael 
                                            manager.conf 
                                            rtp.conf
                                            sip_fritzbox.conf 
                                            

                                            Die werden nach Konfiguraiton des IObroker-Asterisk-Adapters erzeugt, dort im IOBroker ins /tmp geschrieben uns müssen dann nach

                                            /etc/asterisk/
                                            

                                            kopiert werden, die habe ich ja dann persistent ausverlagert:

                                                volumes:
                                                  - /volume1/docker/asterisk/extensions.ael:/etc/asterisk/extensions.ael
                                                  - /volume1/docker/asterisk/manager.conf:/etc/asterisk/manager.conf
                                                  - /volume1/docker/asterisk/sip.conf:/etc/asterisk/sip.conf
                                                  - /volume1/docker/asterisk/sip_fritzbox.conf:/etc/asterisk/sip_fritzbox.conf
                                                  - /volume1/docker/asterisk/rtp.conf:/etc/asterisk/rtp.conf
                                            

                                            In diesen Files stehen z.B. auch die ganzen Verbindungsdaten zur Fritzbox drin, das habe ich übernommen aus der früheren Configuraiton als asterisk noch als nach-installierte library im iobroker container lief. Ich bin trotzdem nochmals alles akribisch durchgegangen. Das einzige was mach etwas stutzig macht ist die Sache mit den Ports. Wenn ich überall konsequent 5060 (in allen diesen Config-files und im Asterisk-Adapter), dann kann Adapter nicht connecten, d.h. da kommst schon beim Start der Fehler: Could not connect to Asterisk Manager. Wenn ich überall konsequent 5038 eintrage, dann kann er connecten, aber dann kommen diese anderen Fehler (error while converting, error while dialing).
                                            Keine Ahnung ob da der Hund begraben liegt.
                                            Andere Möglichkeit, dass die o.b. Anleitung für dieses binding des Asterisk-Managers im Container so nicht mehr gültig ist, denn die o.g. Anleitung geht davon aus, dass der Asterisk-Manager über

                                            apt-get install ffmpeg
                                            apt-get install lame
                                            apt-get install sox
                                            apt-get install libsox-fmt-mp3
                                            apt-get install asterisk
                                            
                                            

                                            installiert werden.

                                            Ok, mal morgen weiter schauen....

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

                                            Support us

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

                                            846
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            26
                                            1114
                                            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