Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Fritzbox Anrufbeantworter komplexe Schaltung

    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

    Fritzbox Anrufbeantworter komplexe Schaltung

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

      Hallo,

      ich muss für eine Fritzbox immer wieder relativ komplexe Antwortbeantworter schalten, um das ganze zu vereinfachen.

      Die erste Idee war, dass über NodeRed zu steuern, ob das aber so möglich ist?

      Ich habe 5 Anrufbeantworter, die ich immer wieder ein und ausschalten muss.

      Ich habe bereits node-red-contrib-fritz installiert und bei der Abfrage von TAM1 und GetList kommt folgende Auswertung.

      10.5.2024, 10:36:44node: debug 105
      msg : Object
      object
      _msgid: "12bdf65b50981df3"
      payload: object
      NewTAMList: string
      <List><TAMRunning>1</TAMRunning><Stick>0</Stick><Status>0</Status><Capacity>3131</Capacity><Item><Index>0</Index><Display>1</Display><Enable>0</Enable><Name>#Notruf Wochenende 10-11Uhr</Name></Item><Item><Index>1</Index><Display>1</Display><Enable>0</Enable><Name>#Ansage  AußerhalbSprechstunde</Name></Item><Item><Index>2</Index><Display>1</Display><Enable>0</Enable><Name>Notdienst werktags</Name></Item><Item><Index>3</Index><Display>1</Display><Enable>1</Enable><Name>Sprechzeitenbeschränkt</Name></Item><Item><Index>4</Index><Display>1</Display><Enable>0</Enable><Name>Mittwoch zu (löschen)</Name></Item></List>
      topic: ""
      

      Die Idee wäre , mit einem Timer die verschiedenen Anrufbeantworter zu schalten. Wie mach ich das?

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @Taddy81 last edited by

        @taddy81 Also erstens hilft es nichts wenn Du aus dem Debug Fenster irgendwas mit der Maus kopierst. Wenn musst Du Werte schon komplett aus dem Debugfenster kopieren und dann hier in codetags einstellen.

        copy path.gif

        Was willst Du denn überhaupt erreichen und was willst Du denn auswerten?

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @mickym last edited by mickym

          So ich benutze zwar keinen Anrufbeantworter - aber mit GetList bekommst du ja nur allgemeines Bla, Bla.

          Du musst Dir dieses Dokument anschauen: https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_tam.pdf

          Wenn Du diese Schnittstelle nutzt, dann bekommst Du ja entsprechende Anweisungen wie die payload aussehen muss.

          Willst Du also zu Deinem Anrufbeantworter mit dem Index 0 - Informationen haben dann rufst Du GetInfo auf.

          4bc53e20-56d9-4a82-8024-727ec3f8652d-image.png

          Unter in stehen dann immer die Parameter die Du mitliefern musst, über out die Parameter die Du bekommst.

          Wenn Du auf die Lupe gehst - dann holt die Node alle möglichen Kommandos aus dem Dokument, die Du absetzen kannst.

          9294e988-1a58-4a90-91b4-b6cf4f76f4a4-image.png

          Wenn Du dann zum Beispiel GetInfo ausgewählt hast, dann erhälst Du unten eine Anleitung, wie eine payload auszusehen hat.

          12dbcc6d-caba-4044-8881-093482e881d8-image.png

          Also in diesem Fall

          {
            "NewIndex": "value"
          }
          

          Das kopierst Du die raus und erstellst ein entsprechendes Objekt in der payload mit dem Index den Du abfragen möchtest.

          Deine payload. um den Anrufbeantworter mit dem Index 0 abzufragen, schaut also so aus:

          435c4551-91ac-4fc0-8c27-a023e91ff0fe-image.png

          Als Ergebnis bekommst Du dann alle out Parameter wie in der Doku angegeben:

          fd00cff3-59d5-429f-8ac9-603a318360e7-image.png

          Um jetzt einen Anrufbeantworter zu enablen oder disablen nutzt Du halt die Methode

          d743d6b9-7dbb-42c0-bc2a-1c63c32b230f-image.png

          74e6d1f6-a4c8-4592-a99f-7b321eb76825-image.png

          Wie gesagt ich benutze keinen Anrufbeantworter - musst Du aber schauen.

          Wichtig ist aber, dass Du genau diese Syntax verwendest - also Zeichenketten als Werte verschickst und nicht bei true nun einen Boolean sondern wirklich "true" als Wert sendest.

          Die Kommandos MarkMessage oder DeleteMessage dürften ja selbsterklärend sein.

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active last edited by mickym

            Um jetzt eine Liste der Nachrichten auf einem Anrufbeantworter zu erhalten, wählst Du ja

            GetMessageList mit dem entsprechenden Index des jeweiligen Anrufbeantworters.

            e7e589da-c6c0-4f54-858d-38a060796e1e-image.png

            Als Resultat bekommst Du eine URL mit Deinen verschlüsselten Credentials zurück, mit der Du diese Liste abrufen kannst.

            904b1928-476d-449a-99e1-31c568a90463-image.png

            Du kannst also diese Url - als msg.url direkt in einer HTTP-Request Node verwenden und solltest dann eine Liste mit Deinen Nachrichten bekommen:

            f23cc6b2-b980-4665-85fa-6e9a066e32ea-image.png

            Diese Liste kannst ja mit der XML Node ggf. wieder parsen , irgendwo ausgeben oder analysieren, um best. Nachrichten zu löschen usw.

            Da ich wie gesagt keinen Anrufbeantworter benutze, solltest Du aber eine valide Liste bekommen.

            Die XML Node parsed eigentlich das ganz gut - wenn Du Liste mit der XML Node parsed bekommst Du schon ein vernünftiges Objekt zurück.

            1619b01c-8484-43a0-88a1-e18811650b5f-image.png

            Was die einzelnen Parameter bedeuten siehst Du ja in der Doku:

            df4145d4-ceaa-4665-8425-4f5654369c78-image.png

            Um aus der Liste zum Beispiele alle aktiven ABs zu ermitteln benutzt Du natürlich das mächtige JSONATA und siehst dann auf einen Blick, was aktiv ist und was nicht:

            fb8a0fa9-212d-4011-8075-78aa2f5589cf-image.png

            So nun solltest Du eigentlich alle Infos haben, um damit Deine Anrufbeantworter zu steuern bzw. kannst auswerten was aktiv ist oder nicht.

            1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active last edited by

              Und falls Du irgendwelche Timer brauchst - dann nutze die cron-plus Node - die ist super mächtig.

              1 Reply Last reply Reply Quote 1
              • mickym
                mickym Most Active last edited by mickym

                @taddy81 sagte in Fritzbox Anrufbeantworter komplexe Schaltung:

                                                                                                                                            10.5.2024, 10:36:44node: debug 105                                                                                                                                                                            msg : Object                                                                                                                                                                            object                                                                                                                                                                            _msgid: "12bdf65b50981df3"                                                                                                                                                                            payload: object                                                                                                                                                                            NewTAMList: string                                                                                                                                                                            <List><TAMRunning>1</TAMRunning><Stick>0</Stick><Status>0</Status><Capacity>3131</Capacity><Item><Index>0</Index><Display>1</Display><Enable>0</Enable><Name>#Notruf Wochenende 10-11Uhr</Name></Item><Item><Index>1</Index><Display>1</Display><Enable>0</Enable><Name>#Ansage  AußerhalbSprechstunde</Name></Item><Item><Index>2</Index><Display>1</Display><Enable>0</Enable><Name>Notdienst werktags</Name></Item><Item><Index>3</Index><Display>1</Display><Enable>1</Enable><Name>Sprechzeitenbeschränkt</Name></Item><Item><Index>4</Index><Display>1</Display><Enable>0</Enable><Name>Mittwoch zu (löschen)</Name></Item></List>                                                                                                                                                                            topic: ""                                            
                

                Wenn Du die Nachrichten über das Debugfenster auch richtig rauskopierst, wie ich Dir das in meinem ersten Post beschrieben habe, dann muss man sich auch nicht solche Verrenkungen machen, um Dein XML daraus zu extrahieren:

                f06f7c56-95a1-4f32-abdb-e150a57761b6-image.png

                Wenn Du dann den aktiven AB mit dem entsprechenden Index selektieren willst, dann erstellst Du daraus einfach mit JSONATA ein neues Objekt um den Index des AB zu erhalten, den Du dann ggf. deaktivieren musst.

                b8db7442-208e-4499-8227-616effb48447-image.png

                Hier das Ganze zum Ausprobieren:

                [
                   {
                       "id": "9fe064b470068754",
                       "type": "xml",
                       "z": "98625098e8162bbe",
                       "name": "",
                       "property": "payload",
                       "attr": "",
                       "chr": "",
                       "x": 510,
                       "y": 1700,
                       "wires": [
                           [
                               "2965d63e00796433",
                               "21758197ea07baa6",
                               "151785ef7897a99f"
                           ]
                       ]
                   },
                   {
                       "id": "2965d63e00796433",
                       "type": "debug",
                       "z": "98625098e8162bbe",
                       "name": "parsed XML",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 670,
                       "y": 1700,
                       "wires": []
                   },
                   {
                       "id": "21758197ea07baa6",
                       "type": "change",
                       "z": "98625098e8162bbe",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.List.Item.Name",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 710,
                       "y": 1760,
                       "wires": [
                           [
                               "e2b4901573aa9c47"
                           ]
                       ]
                   },
                   {
                       "id": "e2b4901573aa9c47",
                       "type": "debug",
                       "z": "98625098e8162bbe",
                       "name": "Liste Anrufbeantworter",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 940,
                       "y": 1760,
                       "wires": []
                   },
                   {
                       "id": "151785ef7897a99f",
                       "type": "change",
                       "z": "98625098e8162bbe",
                       "name": "Aktiver AB",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.List.Item[Enable[0]=\"1\"].{\"Name\":Name[0],\"Index\":Index[0]}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 690,
                       "y": 1820,
                       "wires": [
                           [
                               "2bfb64afc11893f3"
                           ]
                       ]
                   },
                   {
                       "id": "2bfb64afc11893f3",
                       "type": "debug",
                       "z": "98625098e8162bbe",
                       "name": "Aktiver AB",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 910,
                       "y": 1820,
                       "wires": []
                   }
                ]
                

                39d012a5-609a-48f8-815f-52e36a3bd3a0-image.png

                payload.List.Item[Enable[0]="1"].{"Name":Name[0],"Index":Index[0]}
                

                und hier die JSONATA Seite zum Testen Deines Codes eventuell:

                https://try.jsonata.org/1ug0vrQIX

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

                  Re: Fritzbox Anrufbeantworter komplexe Schaltung

                  Vielen vielen Dank @mickym, musste mich am Wochenende um eine Menge Reallife kümmern, danke für deine Zeit und werde mich nun mal um die Umsetzung kümmern

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

                    Ich hatte gehofft weiter zukommen, aber leider habe ich nun ein Problem mit dem TR064, auch der neuinstallierte Adapter kann sich nicht verbinden

                    784ebe9f-8bc5-492e-aa5a-0488b2a9db53-image.png

                    Auch ein Neustart der Fritzbox hat kein Effekt gehabt, muss ich mich morgen nochmal mit beschäftigen

                    mickym Thomas Braun 2 Replies Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Taddy81 last edited by mickym

                      @taddy81 du brauchst den ADAPTER nicht, wenn Du die Nodes verwendest! Wahrscheinlich versucht sowohl Node-Red und der Adapter sich zu verbinden und das ist großer Käse. Entweder Du nutzt den Adapter oder die Nodes.

                      Und Du hattest doch bereits verbindung mit Deiner Node in Node-Red, sonst hättest Du den Status doch gar nicht auslesen können. Wenn Du die Kommandos über den Adapter absetzen wolltest das geht im command Datenpunkt ist das viel mühseliger.

                      T 1 Reply Last reply Reply Quote 0
                      • Thomas Braun
                        Thomas Braun Most Active @Taddy81 last edited by Thomas Braun

                        @taddy81

                        Ebenfalls Käse ist es, eine ungerade Version von nodejs zu verwenden. Bring das auf die vorgesehene und derzeitig empfohlene Version 18.

                        iob nodejs-update 18
                        
                        1 Reply Last reply Reply Quote 0
                        • T
                          Taddy81 @mickym last edited by

                          @mickym ich habe den flow deaktiviert, da die Nodes nicht mehr funktioniert haben, bzw eine Fehlermeldung ausgegeben habe (irgendwas mit internal Error, bin gerade nicht am Handy und habe daher keinen Zugriff auf die Fehlermeldung)

                          Ein Update von nodejs werde ich gleich morgen durchführen!

                          Den Tipp mit der Cron Node ist übrigens echt super, nutze ich nun auch schon seit längerem und wundere mich, warum NodeRed keine ähnlich vielseitige injectnode anbieter

                          mickym Thomas Braun 2 Replies Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @Taddy81 last edited by mickym

                            @taddy81 Na dann wird wahrscheinlich alles damit zusammenhängen, dass Du eine schiefe NodeJS Version installiert hast. Erstens installiert man nur gerade Versionsnummern und für den iobroker ist gerade nur V18 freigegeben. Die normale LTS Version ist auch V20 (damit läuft auch NodeRed bzw. ist freigegeben)

                            379ae114-19ee-4dde-bf9e-867924c6abf6-image.png

                            Grundsätzlich installiert man nur LTS (Long Term Support) Versionen - es ist auch schon ein V.22 verfügbar. Aber an diesen Dingern schraubt man eigentlich nicht rum, bis eine entsprechende Freigabe erfolgt und da gibts dann im iobroker - Befehle die für Dich das update übernehmen. Also die Version V21 - ist auch keine LTS Version, das sind ggf. Beta oder Zwischenversionen.

                            1 Reply Last reply Reply Quote 0
                            • Thomas Braun
                              Thomas Braun Most Active @Taddy81 last edited by Thomas Braun

                              @taddy81 sagte in Fritzbox Anrufbeantworter komplexe Schaltung:

                              Ein Update von nodejs werde ich gleich morgen durchführen!

                              Eher ein Downgrade auf die V18.

                              Also die Version V21 - ist auch keine LTS Version, das sind ggf. Beta oder Zwischenversionen.

                              Und auch zwischenzeitlich abgekündigt.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              787
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              461
                              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