Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox

    This topic has been deleted. Only users with topic management privileges can see it.
    • Stuebi
      Stuebi @martin last edited by

      @martin , ich muss mal sehen ob ich irgendwie herausbekommen, wann ein Anruf erfolgreich beendet wurde über Events.
      Aber was ich machen kann, ist bei jedem Start der Instanz alle alten Dateien zu löschen. Hilft das schon?

      1 Reply Last reply Reply Quote 0
      • Stuebi
        Stuebi @martin last edited by

        @martin, ich habe eben etwas experimentiert . Du kannst folgendes in Deine /etc/asterisk/extensions.ael einbauen ( h => { ..... } 😞

        context default {
                1000 => {
                Goto(ael-antwort,s,1);
                }
        }
        
        context ael-ansage {
                _. => {
                Answer();
                Wait(1);
                        Read(dtmf,${file}&beep,0,s,${repeat},1);
                        if ("${dtmf}"  != "") {
                                SayDigits(${dtmf});
                        }
                        Hangup();
                }
        
                h =>  {
                        NoOp(/bin/rm ${file}.*);
                        System(/bin/rm ${file}.*);
                }
        }
        
        context ael-antwort {
                s  => {
                        Answer();
                        Wait(1);
                        Set(repeat=5);
                        Read(dtmf,/tmp/asterisk_dtmf&beep,0,s,${repeat},1);
                        if ("${dtmf}"  != "") {
                                SayDigits(${dtmf});
                        }
                        Hangup();
                }
        }
        
        1 Reply Last reply Reply Quote 0
        • M
          martin last edited by

          VIELEN DANK!
          Jetzt bleibt der Ordner sauber.

          Stuebi 1 Reply Last reply Reply Quote 0
          • Stuebi
            Stuebi @martin last edited by

            @martin , werde ich in der nächsten Version bei Textnachrichten berücksichtigen.
            Wird eine Audiodatei statt Text vorgegeben, bleibt die Datei bestehen.

            1 Reply Last reply Reply Quote 0
            • T
              TemPeck last edited by

              Hallo!

              Ich habe eben ein Update von 1.0.1. auf 1.0.6 gemacht, seitdem funktionieren die Anrufe nicht mehr und es gibt folgenden Fehler im Log:


              2019-03-27 17:50:05.059 - info: asterisk.0 Start dialing
              2019-03-27 17:50:05.064 - error: asterisk.0 Error while dialing (1). Error: {"response":"Error","actionid":"7505cffe-eea8-eee4-5289-b60c7711e803","message":"Extension does not exist."}, Result: {"parameter":{"telnr":"+XXXXX","callerid":"+XXXXXX","text":"Einbruchalarm","extension":"XXXXX","audiofile":"/tmp/audio_10953344","delete":"delete"},"options":{"action":"originate","channel":"SIP/XXXX/XXXXX","context":"ael-ansage","exten":"XXXXX","priority":1,"timeout":60000,"variable":{"repeat":5,"file":"/tmp/audio_10953344","del":"delete"},"callerid":"XXXX"},"guid":"7505cffe-eea8-eee4-5289-b60c7711e803","result":{"response":"Error","actionid":"7505cffe-eea8-eee4-5289-b60c7711e803","message":"Extension does not exist."}}
              2019-03-27 17:50:05.066 - info: javascript.0 script.js.Sicherheit.Kamera.test_asterisk: Result: {"result":{"parameter":{"telnr":"+XXXXX","callerid":"+XXXXX","text":"Einbruchalarm","extension":"XXXX","audiofile":"/tmp/audio_10953344","delete":"delete"},"options":{"action":"originate","channel":"SIP/XXXX/XXXXX","context":"ael-ansage","exten":"XXXXXX","priority":1,"timeout":60000,"variable":{"repeat":5,"file":"/tmp/audio_10953344","del":"delete"},"callerid":"XXXXXX"},"guid":"7505cffe-eea8-eee4-5289-b60c7711e803","result":{"response":"Error","actionid":"7505cffe-eea8-eee4-5289-b60c7711e803","message":"Extension does not exist."}},"error":{"response":"Error","actionid":"7505cffe-eea8-eee4-5289-b60c7711e803","message":"Extension does not exist."}}

              Meine Nummern hab ich im Log natürlich gerade durch XXXXX ersetzt.

              Da ich unter Proxmox arbeite habe ich vorher ein Snapshot erstellt und hab den Zustand wiederhergestellt. Unter 1.0.1 läuft es nun wieder.

              Nun meine Frage: Was hätte ich im Skript oder sonst wo anpassen müssen?
              Aus dem Log werde ich leider nicht schlau...

              Das Script, was gestartet wurde, sieht wie folgt aus:

              var number   = "HANDYNUMMER";
              var callerid = 'FESTNETZNUMMER'; // optional, if not set anonymous call
              var msg      = "Einbruchalarm"; 
              
              // call telephone nummber 040 666-7766 and play text message as audio
              sendTo('asterisk.0', "dial", { telnr: number, callerid: callerid, text:  msg},  (res) => {
                    console.log('Result: ' + JSON.stringify(res));
              });  
              
              Stuebi 1 Reply Last reply Reply Quote 0
              • Stuebi
                Stuebi @TemPeck last edited by Stuebi

                @TemPeck, Dein Skript ist okay. die Konfiguration hat sich seit 1.0.1 sher geändert. Hintergrund, Bugfixing, einfachere Konfiguration und neue Anforderungen.
                Am einfachsten ist es, Du installierst die Version 1.0.6 und füllst nochmals nach der Anleitung https://github.com/schmupu/ioBroker.asterisk/blob/master/docs/SIP_FRITZBOX.md die Felder in der Asterisk Konfiguration aus. Anschließend "Asterisk Konfiguration erstellen (einmalig)" anklicken und speichern/schließen. Nun werden die Asterisk Konfigurationsfiles im Verzeichnis /tmp/ abgelegt. Diese wie folgt kopieren:

                sudo mv /tmp/extensions.ael /etc/asterisk/extensions.ael
                sudo mv /tmp/manager.conf /etc/asterisk/manager.conf
                sudo mv /tmp/sip_fritzbox.conf /etc/asterisk/sip.conf
                sudo mv /tmp/rtp.conf /etc/asterisk/rtp.conf
                

                Jetzt Asterisk (sudo /etc/init.d/asterisk restart) und die ioBroker Asterisk Instanz neu starten!

                Alternativ kannst Du auch wie hier beschrieben vorgehen: https://github.com/schmupu/ioBroker.asterisk/blob/master/docs/PJSIP_FRITZBOX.md . Bitte dann die /etc/asterisk/sip.conf löschen, da jetzt die pjsip.conf genutzt wird.

                T 1 Reply Last reply Reply Quote 0
                • T
                  TemPeck @Stuebi last edited by

                  @Stuebi Wunderbar, danke für den Support, es läuft nun alles in der neuesten Version.

                  Für mich einer der wichtigsten Adapter, da ich jederzeit "alarmiert" werden kann. Top und vielen Dank für die Arbeit an diesem Adapter!!

                  Stuebi 1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    Gibt es die Möglichkeit auf DTMF zu reagieren?

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

                      @Bluefox sagte in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                      Gibt es die Möglichkeit auf DTMF zu reagieren?

                      Ja das geht. Man kann zum Beispiel Asterisk anrufen und Und den dann DTMF in iobroker auswerten.
                      Es geht auch umgekehrt, ioBroker ruft dich über Asterix an und der Angerufene gibt dann ein DTMF Code ein

                      guss
                      stübi

                      1 Reply Last reply Reply Quote 0
                      • Stuebi
                        Stuebi @TemPeck last edited by

                        @TemPeck sagte in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                        @Stuebi Wunderbar, danke für den Support, es läuft nun alles in der neuesten Version.

                        Für mich einer der wichtigsten Adapter, da ich jederzeit "alarmiert" werden kann. Top und vielen Dank für die Arbeit an diesem Adapter!!

                        Super, danke das freut mich

                        1 Reply Last reply Reply Quote 0
                        • K
                          Kai103 last edited by

                          Ich muss mich hier noch mal reinhängen, ursprünglich war ich Kai102, aber irgendwie hat es mich bei der Forumsumstellung zerschossen. Habe nun zum Herbst wieder mal angefangen mich mit Asterisk zu beschäftigten und hänge ziemlich an dem "Standardproblem"Cound not connect to Asterisk Manager! T. Die drei Dateien sind entsprechend angepasst, mir ist aber aufgefallen, dass ich nach dem Befehl asterisk -rvvvvv die Fehlermeldung bekomme :
                          Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?). Stimmt, bzw. stimmt nicht, asterisk.ctl gibt es, die ist aber leer..... Jemand ein Tip ?

                          Stuebi 1 Reply Last reply Reply Quote 0
                          • Stuebi
                            Stuebi @Kai103 last edited by

                            @Kai103 sagte in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                            und hänge ziemlich an dem

                            ja, das klingt so, als ob asterisk nicht läuft. Hast Du es auch gestartet? Unter Linux geht das z.B. mit

                            sudo /etc/init.d/asterisk stop
                            sudo /etc/init.d/asterisk start 
                            

                            prüfe vorher mit

                            ps -ef | grep asterisk
                             
                            

                            ob asterisk läuft. Wenn das der Fall ist, dann sollte auch asterisk -rvvvvv
                            funktionieren.

                            1 Reply Last reply Reply Quote 0
                            • K
                              Kai103 last edited by

                              @Stuebi said in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                              ps -ef | grep asterisk

                              da bekomme ich

                              asterisk  2821     1 99 17:18 ?        00:00:19 /usr/sbin/asterisk -g -f -U asterisk
                              root      2924  2592  0 17:19 pts/1    00:00:00 grep asterisk
                              

                              muss aber zugeben, dass mir das nix sagt...
                              nach dem Startbefehl sah alles gut aus

                              root@ioBroker-RasPi:/etc/asterisk# /etc/init.d/asterisk restart
                              [ ok ] Restarting asterisk (via systemctl): asterisk.service.
                              

                              asterisk -rvvvvv ergibt

                              root@ioBroker-RasPi:/etc/asterisk# ps -ef | grep asterisk
                              asterisk  2821     1 99 17:18 ?        00:00:19 /usr/sbin/asterisk -g -f -U asterisk
                              root      2924  2592  0 17:19 pts/1    00:00:00 grep asterisk
                              root@ioBroker-RasPi:/etc/asterisk#  asterisk -rvvvvv
                              Asterisk 13.14.1~dfsg-2+deb9u4, Copyright (C) 1999 - 2014, Digium, Inc. and others.
                              Created by Mark Spencer <markster@digium.com>
                              Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
                              This is free software, with components licensed under the GNU General Public
                              License version 2 and other licenses; you are welcome to redistribute it under
                              certain conditions. Type 'core show license' for details.
                              =========================================================================
                              Connected to Asterisk 13.14.1~dfsg-2+deb9u4 currently running on ioBroker-RasPi (pid = 2821)
                              ioBroker-RasPi*CLI> 
                              

                              und trotzdem bekomme ich, nach dem ich im Iobroker Asterisk gestartet habe das hier im LOG angezeigt :
                              asterisk.0 2019-10-13 17:22:49.587 error Cound not connect to Asterisk Manager! Try to connect in 30 seconds again!
                              asterisk.0 2019-10-13 17:22:44.393 info Starting Adapter asterisk.0 in version 1.0.6 with transcoder ffmpeg and language DE
                              asterisk.0 2019-10-13 17:22:44.318 info starting. Version 1.0.6 in /opt/iobroker/node_modules/iobroker.asterisk, node: v8.15.0
                              asterisk.0 2019-10-13 17:22:44.233 info States connected to redis: 127.0.0.1:6379

                              Stuebi 1 Reply Last reply Reply Quote 0
                              • Stuebi
                                Stuebi @Kai103 last edited by Stuebi

                                @Kai103 , jetzt läuft schon einmal asterisk. Du sieht unter asterisk -rvvvv ob sich ioBroker connected oder nicht. Wenn das nicht der Fall ist, stimmt etwas an Deiner Konfiguration nicht. Ich nehme an, dass Du die IP Adressen vertauscht hast unter "IP / Hostname des Asterisk-Servers". Dort muss die vom Asterisk Server stehen oder Du hast die erzeugten Konfigurationsdateien von ioBroker aus dem /tmp/ Verzeichnis nicht in /etc/asterisk kopiert oder es stimmen nicht die Berechtigungen der kopierten Dateien.
                                Falls Du die Konfigruationsdateien in /etc/asterisk anpasst, musst asterisk neu starten oder die Konfiguration neu lesen.

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Kai103 last edited by Kai103

                                  @Stuebi said in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                                  Ich nehme an, dass Du die IP Adressen vertauscht hast unter "IP / Hostname des Asterisk-Servers"

                                  AUTSCH.... ich sage mal nix, aber ich hatte da gedacht , dass da auch die von der Fritz.box rein muss.... Geändert auf die IP vom PI und schon läuft, zumindest kommt die Verbindung zustande und ich kann einen Call ausgeben. Der Text wird aber "noch" nicht vorgelesen ?

                                  Stuebi 1 Reply Last reply Reply Quote 0
                                  • Stuebi
                                    Stuebi @Kai103 last edited by

                                    @Kai103 , wenn das mit dem Anruf funktioniert und es bei Dir klingelt ist schon einmal super.
                                    Steht irgendetwas im ioBroker Logfile? Ick könnte mir vorstellen, dass entweder ein falsches Verzeichnis unter "Path for temporary audio files. Must be accessible and authorized for Asterisk and ioBroker" steht. Versuche es z.B. mit /tmp/ . Auf das Verzeichnis sollte ioBroker und asterisk zugreifen können. Dann kann ich mir noch vorstellen, dass kein DNS Service auf Deinem RPI installiert ist und google translate nicht gefunden wird. Um das auszuschließen, versuche auf der Kommandozeile einmal folgendes einzugeben:

                                    nslookup translate.googleapis.com
                                    # oder folgendes
                                    ping translate.googleapis.com
                                    

                                    Was passiert?

                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      Kai103 last edited by

                                      Log vom Iobroker ist jetzt da (habe aber eben auch erst die ausgehende Nummer angegeben, die er zwar nicht übernimmt, aber das ist erst mal so was von Egal...)
                                      *2019-10-13 17:55:00.354 - error: asterisk.0 Error while dialing (1). Error: {"response":"Error","actionid":"5b498833-0a07-5170-aef9-5203a0ebc80b","message":"Originate failed"}, Result: {"parameter":{"callerid":"045242XXXXXX","telnr":"0176XXXXXXX","text":"Testansage"extension":"24XXXXXX","audiofile":"/tmp/audio_1570981947749","delete":"delete"},"options":{"action":"originate","channel":"SIP/24XXXXX/0176XXXXXXX","context":"ael-ansage","exten":"01765XXXXXX","priority":1,"timeout":60000,"variable":{"repeat":5,"file":"/tmp/audio_1570981947749","del":"delete"},"callerid":"0452XXXXXXXX"},"guid":"5b498833-0a07-5170-aef9-5203a0ebc80b","result":{"response":"Error","actionid":"5b498833-0a07-5170-aef9-5203a0ebc80b","message":"Originate failed"}}
                                      *
                                      tmp Verzeichnis scheint zu gehen, hier mal der Inhalt :

                                      asterisk_dtmf.gsm
                                      audio_1570965683966.gsm
                                      audio_1570980870624.gsm
                                      audio_1570980895399.gsm
                                      audio_1570981857561.gsm
                                      audio_1570981862292.gsm
                                      audio_1570981903327.gsm
                                      audio_1570981947749.gsm
                                      extensions.ael
                                      manager.conf
                                      npm-1744-b847243b
                                      rtp.conf
                                      sip_fritzbox.conf
                                      systemd-private-f88aeb7dfaff441e8c80f60c295e2eac-redis-server.service-wPY7MK
                                      systemd-private-f88aeb7dfaff441e8c80f60c295e2eac-systemd-timesyncd.service-tWRw10
                                      
                                      

                                      Der Pingbefehl geht, der erste wird nicht erkannt...
                                      PS: Danke schon mal 👍

                                      Stuebi 1 Reply Last reply Reply Quote 0
                                      • Stuebi
                                        Stuebi @Kai103 last edited by Stuebi

                                        @Kai103 sagte in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                                        Originate failed

                                        jetzt musst Du suchen, im ioBroker Logfile und unter asterisk -rvvvv schauen. Das ist nicht ganz so einfach den Fehler einzugrenzen. Ich schätze irgendetwas stimmt mit Deiner Konfiguration nicht.

                                        Du kannst gerne einmal alle Konfigurationsfiles (/etc/asterisk/sip.conf , /etc/asterisk/extensions.ael, /etc/asterisk/manager.conf, ... ) und Screenshots von der ioBroker Asterisk Konfiguration schicken.
                                        Bitte alle Passwörter entfernen bzw. nachdem verschicken ändern. Du kannst mir diese auch gerne an thorsten@stueben.de direkt schicken.

                                        1 Reply Last reply Reply Quote 0
                                        • K
                                          Kai103 last edited by Kai103

                                          @Stuebi said in IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox:

                                          asterisk -rvvvv

                                          hm... jetzt zwei mal einen Anruf gemacht, keine Fehler . im Asterisk -rvvvv erscheint

                                          Using SIP RTP CoS mark 5
                                             -- Called 24......../01765XXXXXXXX
                                                > 0x73f07880 -- Strict RTP learning after remote address set to: 192.168.0.1:7078
                                             -- SIP/24.......-00000001 is making progress
                                             -- SIP/24........-00000001 answered
                                             -- Executing [0176XXXXXXXXX@ael-ansage:1] Answer("SIP/24......-00000001", "") in new stack
                                             -- Executing [0176XXXXXXX@ael-ansage:2] Wait("SIP/24.........-00000001", "1") in new stack
                                             -- Executing [0176XXXXXXX@ael-ansage:3] Read("SIP/24........-00000001", "dtmf,/tmp/audio_1570985582279&beep,0,s,5,1") in new stack
                                             -- <SIP/24..........-00000001> Playing '/tmp/audio_1570985582279.gsm' (language 'en')
                                             -- <SIP/24...........-00000001> Playing 'beep.gsm' (language 'en')
                                             -- User entered nothing, 4 chances left
                                             -- <SIP/24...........-00000001> Playing '/tmp/audio_1570985582279.gsm' (language 'en')
                                             -- <SIP/24.............-00000001> Playing 'beep.gsm' (language 'en')
                                             -- User entered nothing, 3 chances left
                                             -- <SIP/24.........-00000001> Playing '/tmp/audio_1570985582279.gsm' (language 'en')
                                             -- <SIP/24...........-00000001> Playing 'beep.gsm' (language 'en')
                                             -- User entered nothing, 2 chances left
                                             -- <SIP/24..........-00000001> Playing '/tmp/audio_1570985582279.gsm' (language 'en')
                                             -- <SIP/24...........-00000001> Playing 'beep.gsm' (language 'en')
                                             -- User entered nothing, 1 chance left
                                             -- <SIP/24...........-00000001> Playing '/tmp/audio_1570985582279.gsm' (language 'en')
                                             -- <SIP/24.........-00000001> Playing 'beep.gsm' (language 'en')
                                             -- User entered nothing.
                                             -- Executing [0176xxxxxxxx@ael-ansage:4] GotoIf("SIP/24.......-00000001", "0?5:6") in new stack
                                             -- Goto (ael-ansage,0176xxxxxxx,6)
                                             -- Executing [0176xxxxxxx@ael-ansage:6] NoOp("SIP/24...........-00000001", "Finish if_ael-ansage_1") in new stack
                                             -- Executing [0176xxxxxxxxx@ael-ansage:7] Hangup("SIP/24..........-00000001", "") in new stack
                                           == Spawn extension (ael-ansage, 0176xxxxxxxx, 7) exited non-zero on 'SIP/24........-00000001'
                                             -- Executing [h@ael-ansage:1] GotoIf("SIP/24.........-00000001", "1?2:4") in new stack
                                             -- Goto (ael-ansage,h,2)
                                             -- Executing [h@ael-ansage:2] NoOp("SIP/2...........-00000001", "/bin/rm /tmp/audio_1570985582279.*") in new stack
                                             -- Executing [h@ael-ansage:3] System("SIP/24..........-00000001", "/bin/rm /tmp/audio_1570985582279.*") in new stack
                                             -- Executing [h@ael-ansage:4] NoOp("SIP/24...........-00000001", "Finish if_ael-ansage_2") in new stack
                                             -- Executing [h@ael-ansage:5] SayDigits("SIP/24........-00000001", "") in new stack
                                             -- Executing [h@ael-ansage:6] NoOp("SIP/24.......-00000001", "Finish if_ael-ansage_1") in new stack
                                             -- Executing [h@ael-ansage:7] Hangup("SIP/24........-00000001", "") in new stack
                                           == Spawn extension (ael-ansage, h, 7) exited non-zero on 'SIP/24.......-00000001'
                                          

                                          gefühlt sehe ich da keinen Fehler, aber auf was wartet das Programm ?

                                          User entered nothing, 1 chance left
                                          

                                          Und im Iobroker Log auch keine Fehler mehr :
                                          2019-10-13 18:53:24.161 - info: asterisk.0 Dialing completed. Result: {"parameter":{"callerid":"04111111111","telnr":"0176XXXXXXXX","text":"Test Test","extension":"24........","audiofile":"/tmp/audio_1570985582279","delete":"delete"},"options":{"action":"originate","channel":"SIP/24....../0176XXXXXXX","context":"ael-ansage","exten":"0176XXXXXXX","priority":1,"timeout":60000,"variable":{"repeat":5,"file":"/tmp/audio_1570985582279","del":"delete"},"callerid":"0411111111111111"},"guid":"8d8e363b-67e2-3517-d116-f8f1aa366880","result":{"response":"Success","actionid":"8d8e363b-67e2-3517-d116-f8f1aa366880","message":"Originate successfully queued"}}

                                          Wobei es schon faszinierend ist, überall ist die zu verwendende abgehende Nummer eingetragen, das wird aber ignoriert und es wird immer die Hauptfestnetznummer angezeigt.

                                          Stuebi 1 Reply Last reply Reply Quote 0
                                          • Stuebi
                                            Stuebi @Kai103 last edited by

                                            @Kai103 , wenn ich dich richtig verstehe, funktioniert es jetzt.
                                            Das Problem mit der Hauptfestnetznummer kenne ich. Ich glaube die Fritzbox überschreibt den die Hauptfestnetznummer wieder. Du kannst ja nochmals versuchen diese mit Vorwahl und ohne Vorwahl einzutragen. Vielleicht hilft das.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            490
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            44
                                            202
                                            31003
                                            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