Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. AVM DECT200/smartfritz

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    AVM DECT200/smartfritz

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

      Hallo Kollegen,

      ich glänze mal wieder mit meinem JavaScript-Unwissen :roll:

      Ich würde gerne das Modul 'smartfritz' (https://github.com/nischelwitzer/smartfritz) einbinden, um mein AVM DECT200 zu steuern. Die Installation mittels````
      npm install smartfritz

      
      Doch wie benutze ich diese Bibliothek/dieses Modul?
      
      

      var fritz = require('smartfritz');

      liefert leider:
      

      20:25:18.625 [error] javascript.0 script.js.selfmade.FritzDECT: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/node_modules/smartfritz' at script.js.selfmade.FritzDECT:1:13
      20:25:18.626 [error] javascript.0 script.js.selfmade.FritzDECT: TypeError: Cannot read property 'getSessionID' of undefined at script.js.selfmade.FritzDECT:3:6

      
      Muss ich dem ****require**** noch den richtigen Pfad mitgeben?
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @mamoel:

        Doch wie benutze ich diese Bibliothek/dieses Modul? `
        Trage es in der Konfiguration der JS-Instanz unter "Zusätzliche NPM-Module" ein.

        1 Reply Last reply Reply Quote 0
        • M
          mamoel last edited by

          Vielen Dank, jetzt funktioniert's.

          1 Reply Last reply Reply Quote 0
          • M
            mamoel last edited by

            Falls es noch jemanden interessiert, wie man die Werte des AVM Fritz! DECT200 in den ioBroker bekommt:

            npm install smartfritz-promise
            ````in der Kommandozeile ausführen.
            
            Das Modul im JavaScript-Adapter eintragen.
            
            Folgendes Script anpassen (ain des DECT200 und user+password des FritzBox-Benutzers):
            

            const ain = 'XXXXXXXXXXXX';
            var fritz = require('smartfritz-promise');

            //Starte Scheduler (5s)
            schedule("*/5 * * * * *", function () {
            createStates();
            getDeviceReadings(ain);
            });

            function getDeviceReadings(devId) {
            fritz.getSessionID("user", "password").then(function(sid) {
            fritz.getSwitchPower(sid, devId).then(function(power) {
            if (isNumeric(power)) {
            var p = parseFloat(power);
            //log('Power: ' + p);
            setState('DECT200.Leistung', p);
            }
            });
            fritz.getTemperature(sid, devId).then(function(temperature) {
            if (isNumeric(temperature)) {
            var t = parseFloat(temperature);
            //log('Temperature: ' + t);
            setState('DECT200.Temperatur', t);
            }
            });
            });
            }

            function createStates() {
            createState('DECT200.Leistung', 0, {name: 'Leistung DECT200', type: 'number', unit:'W'});
            createState('DECT200.Temperatur', 0, {name: 'Temperatur DECT200', type: 'number', unit:'°C'});
            }

            function isNumeric(n) {
            return !isNaN(parseFloat(n)) && isFinite(n);
            }

            
            Ich bin ja wie gesagt noch Amateur in JavaScript, aber obiges Script läuft bisher ziemlich problemlos.
            [1340_js.png](/assets/uploads/files/1340_js.png)
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 last edited by

              @mamoel:

              npm install smartfritz-promise
              

              in der Kommandozeile ausführen. `
              Das ist nicht erforderlich. Der Eintrag in der JS-Instanz-Konfiguration ist ausreichend.

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

                ich kram den mal raus…

                hat das einer am laufen... bekomme keine werte raus..

                aber auch ohne fehlermeldung

                axo.paket wurde umbenannt "fritzapi"

                const ain = '4711';
                var fritz = require('fritzapi');
                var moreParam = { url:"192.168.13.1" };
                
                //Starte Scheduler (5s)
                schedule("*/5 * * * * *", function () {
                    createStates();
                    getDeviceReadings(ain);
                });
                
                function getDeviceReadings(devId) {
                    fritz.getSessionID("hier user ", "geheim").then(function(sid) {
                        fritz.getSwitchPower(sid, devId).then(function(power) {
                            if (isNumeric(power)) {
                                var p = parseFloat(power);
                             //   log('Power: ' + p);
                                setState('DECT200.Leistung', p);
                            }
                        });
                        fritz.getTemperature(sid, devId).then(function(temperature) {
                            if (isNumeric(temperature)) {
                                var t = parseFloat(temperature);
                            //    log('Temperature: ' + t);
                                setState('DECT200.Temperatur', t);
                            }
                        });
                    }, moreParam);
                }
                
                function createStates() {
                    createState('DECT200.Leistung',   0, {name: 'Leistung DECT200', type: 'number', unit:'W'});
                    createState('DECT200.Temperatur', 0, {name: 'Temperatur DECT200', type: 'number', unit:'°C'});
                }
                
                function isNumeric(n) {
                  return !isNaN(parseFloat(n)) && isFinite(n);
                }
                

                1518_vis.png

                1 Reply Last reply Reply Quote 0
                • M
                  mamoel last edited by

                  Bei mir läuft das seit rund einem halben Jahr ohne Aussetzer. Die einzige Änderung war (wie Du ja schon bemerkt hast), dass das Paket inzwischen 'fritzapi' heißt.

                  Hast Du schon getestet, ob die Kommunikation prinzipiell funktioniert, in dem Du einzelne Befehle absetzt, wie z.B. den um eine SID zu bekommen?

                  https://www.npmjs.com/package/fritzapi

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

                    na jetzt wo du es sagst.

                    18:47:40.880	[info]	javascript.1 Stop script script.js.rest.dect200
                    18:47:40.888	[info]	javascript.0 Stop script script.js.rest.dect200
                    18:47:40.955	[info]	javascript.0 Start javascript script.js.rest.dect200
                    18:47:40.967	[info]	javascript.0 script.js.rest.dect200: registered 0 subscriptions and 0 schedules
                    

                    keine Fehlermeldung aber auch keine sid…

                    fritz.getSessionID("xxx", "xxxx", {
                      url: "192.168.178.1",
                      strictSSL: false         
                    }).then(function(sid) {
                      console.log(sid);
                    
                      fritz.getSwitchList(sid, options).then(function(ains){
                        console.log(ains);
                      });
                    });
                    

                    was für ne fritzbox hasten du ??

                    1 Reply Last reply Reply Quote 0
                    • M
                      mamoel last edited by

                      Ich habe die 7490

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

                        softwareversion 6.60 ??

                        ich sehe gerade der upnp adapter liefert auch keine sid

                        1 Reply Last reply Reply Quote 0
                        • M
                          mamoel last edited by

                          Ja, die derzeit aktuellste (6.60).

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

                            hab ich auch.. muss ich nicht verstehen..

                            box gerade neu gestertet nix… keine sid...

                            vielleicht liegt es da dran dass meine 7490 an der 6360... obwohl neee... warum auch...

                            1 Reply Last reply Reply Quote 0
                            • M
                              mamoel last edited by

                              Hast Du dem Benutzer in den Einstellungen auch die "Smarthome"-Freigabe erteilt?

                              System->FRITZ!Box-Benutzer->Bearbeiten

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

                                türlich..

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

                                  so ich habs

                                  nachdem ich die index.js aus dem fritzapi auseinander genommen habe ….

                                  die

                                  getSessionID(username, password,"192.168.1.1").then(function(sid) {

                                  war verkehrt..zumindest was die parameter angeht

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    mamoel last edited by

                                    Was genau musstest Du an meinem Skript ändern? Das würde eventuell anderen Interessierten weiter helfen.

                                    Deine Box scheint nicht unter 'fritz.box' erreichbar zu sein oder warum verwendest Du

                                    fritz.getSessionID("user", "password", {
                                      url: "192.168.178.1",
                                      strictSSL: false         // workaround DEPTH_ZERO_SELF_SIGNED_CERT SSL error 
                                    }).then(function(sid) {
                                      console.log(sid);
                                    

                                    statt einfach nur

                                    var fritz = require('fritzapi');
                                    
                                    fritz.getSessionID("user", "password").then(function(sid) {
                                        console.log(sid);
                                    });
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • arteck
                                      arteck Developer Most Active last edited by

                                      @mamoel:

                                      Was genau musstest Du an meinem Skript ändern? Das würde eventuell anderen Interessierten weiter helfen.

                                      Deine Box scheint nicht unter 'fritz.box' erreichbar zu sein oder warum verwendest Du `

                                      jep genau so ist es…

                                      geändert habe ich nichts.. im Beispiel ist die nur die Parameterübergabe verkehrt

                                      fritz.getSessionID("user", "password", {
                                        url: "192.168.178.1",
                                        strictSSL: false         // workaround DEPTH_ZERO_SELF_SIGNED_CERT SSL error 
                                      }).then(function(sid) {
                                      
                                      

                                      sondern

                                      fritz.getSessionID("user", "password", "192.168.178.1",
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • E
                                        ein-bayer last edited by

                                        Hallo,

                                        ich hab gerade das script getestet, läuft soweit.

                                        jetzt hab ich bei mir 2 dect200, wo gebe ich in dem script an welcher stecker verwendet wird?

                                        1 Reply Last reply Reply Quote 0
                                        • E
                                          ein-bayer last edited by

                                          habs übersehen , die erste zeile

                                          const ain = '4711';

                                          ist die Lösung!!

                                          1 Reply Last reply Reply Quote 0
                                          • F
                                            foxthefox Developer last edited by

                                            Falls es von Interesse ist, ich hab einen Adapter iobroker.fritzdect mit geeigneten metro-widget erstellt.

                                            Ist derzeitig noch nicht im admin Bereich gelistet, aber über npm installierbar.

                                            Gruß

                                            Klaus

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            779
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            28
                                            6533
                                            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