Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Umsetzung Adapter auf Class

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    228

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Umsetzung Adapter auf Class

Umsetzung Adapter auf Class

Scheduled Pinned Locked Moved Entwicklung
adapterclassquestion
6 Posts 3 Posters 513 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    foxthefox
    Developer
    wrote on last edited by foxthefox
    #1

    Ich versuche gerade den fritzdect Adapter auf die klassenbasierte Variante umzusetzen.

    für die Funktion decrypt gibt es vom linter diese Meldung:

    Class 'AdapterInstance<undefined, undefined>' defines instance member property 'decrypt', but extended class 'Fritzdect' defines it as instance member function.ts(2425)
    

    ist das normal, oder kann ich da etwas verbessern?

    und dann habe ich noch Probleme mit adapter.log was nun zu this.log wird.
    für das errorhandling habe ich Aufrufe mit

    .catch(this.errorHandler);
    

    und dann die Funktion

    errorHandler(error) {....}
    

    hier scheint das this.log nicht mehr zu gehen, muß ich dazu im constructor etwas machen?
    und wenn ja was?
    etwa so:

    this.errorHandler.bind(this); ???
    

    und dann kommt da noch die Warnung:

    Deprecated! Please use objectsInMemServerRedis.js in tests!
    

    ????

    Gruß
    Klaus

    Adapterüberblick: Profil Github;

    Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

    Ein Aufruf: video

    UncleSamU 1 Reply Last reply
    0
    • F foxthefox

      Ich versuche gerade den fritzdect Adapter auf die klassenbasierte Variante umzusetzen.

      für die Funktion decrypt gibt es vom linter diese Meldung:

      Class 'AdapterInstance<undefined, undefined>' defines instance member property 'decrypt', but extended class 'Fritzdect' defines it as instance member function.ts(2425)
      

      ist das normal, oder kann ich da etwas verbessern?

      und dann habe ich noch Probleme mit adapter.log was nun zu this.log wird.
      für das errorhandling habe ich Aufrufe mit

      .catch(this.errorHandler);
      

      und dann die Funktion

      errorHandler(error) {....}
      

      hier scheint das this.log nicht mehr zu gehen, muß ich dazu im constructor etwas machen?
      und wenn ja was?
      etwa so:

      this.errorHandler.bind(this); ???
      

      und dann kommt da noch die Warnung:

      Deprecated! Please use objectsInMemServerRedis.js in tests!
      

      ????

      Gruß
      Klaus

      UncleSamU Offline
      UncleSamU Offline
      UncleSam
      Developer
      wrote on last edited by UncleSam
      #2

      @foxthefox sagte in Umsetzung Adapter auf Class:

      Ich versuche gerade den fritzdect Adapter auf die klassenbasierte Variante umzusetzen.

      Super Idee, das habe ich auch bei mehreren Adaptern gemacht. Hilft ungemein, schönen Code zu schreiben. Allerdings habe ich gleich auch auf TypeScript umgestellt. Du kannst genauso JavaScript Code schreiben wie vorher, aber es geht dann noch mehr typisiert (wenn gewünscht).

      für die Funktion decrypt gibt es vom linter diese Meldung:

      Class 'AdapterInstance<undefined, undefined>' defines instance member property 'decrypt', but extended class 'Fritzdect' defines it as instance member function.ts(2425)
      

      ist das normal, oder kann ich da etwas verbessern?

      Hast du selber eine Funktion decrypt geschrieben? Es gibt bereits eine so benannte Funktion in der Basisklasse.

      und dann habe ich noch Probleme mit adapter.log was nun zu this.log wird.
      für das errorhandling habe ich Aufrufe mit

      .catch(this.errorHandler);
      

      und dann die Funktion

      errorHandler(error) {....}
      

      hier scheint das this.log nicht mehr zu gehen, muß ich dazu im constructor etwas machen?
      und wenn ja was?
      etwa so: this.errorHandler.bind(this);

      Ganz genau. Ich bevorzuge allerdings einfach Lambdas zu verwenden: catch(e => this.errorHandler(e));
      Aber das ist Geschmacksache.

      Hingegen würde ich gleich auf alle async/await gehen, anstatt noch direkt mit Promises zu arbeiten. Das gibt noch viel schöneren Code!

      und dann kommt da noch die Warnung:

      Deprecated! Please use objectsInMemServerRedis.js in tests!
      

      ????

      Ich würde an deiner Stelle den Adapter neu mit dem Adapter Creator erstellen und dann den alten Code übernehmen, so sollten solche Fehler nicht mehr vorkommen. Zudem kannst du den Code dann recht einfach aktuell halten. Das habe ich bei meinen beiden Adaptern so gemacht und bin sehr glücklich damit.

      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
      ♡-lichen Dank an meine Sponsoren

      F 1 Reply Last reply
      0
      • UncleSamU UncleSam

        @foxthefox sagte in Umsetzung Adapter auf Class:

        Ich versuche gerade den fritzdect Adapter auf die klassenbasierte Variante umzusetzen.

        Super Idee, das habe ich auch bei mehreren Adaptern gemacht. Hilft ungemein, schönen Code zu schreiben. Allerdings habe ich gleich auch auf TypeScript umgestellt. Du kannst genauso JavaScript Code schreiben wie vorher, aber es geht dann noch mehr typisiert (wenn gewünscht).

        für die Funktion decrypt gibt es vom linter diese Meldung:

        Class 'AdapterInstance<undefined, undefined>' defines instance member property 'decrypt', but extended class 'Fritzdect' defines it as instance member function.ts(2425)
        

        ist das normal, oder kann ich da etwas verbessern?

        Hast du selber eine Funktion decrypt geschrieben? Es gibt bereits eine so benannte Funktion in der Basisklasse.

        und dann habe ich noch Probleme mit adapter.log was nun zu this.log wird.
        für das errorhandling habe ich Aufrufe mit

        .catch(this.errorHandler);
        

        und dann die Funktion

        errorHandler(error) {....}
        

        hier scheint das this.log nicht mehr zu gehen, muß ich dazu im constructor etwas machen?
        und wenn ja was?
        etwa so: this.errorHandler.bind(this);

        Ganz genau. Ich bevorzuge allerdings einfach Lambdas zu verwenden: catch(e => this.errorHandler(e));
        Aber das ist Geschmacksache.

        Hingegen würde ich gleich auf alle async/await gehen, anstatt noch direkt mit Promises zu arbeiten. Das gibt noch viel schöneren Code!

        und dann kommt da noch die Warnung:

        Deprecated! Please use objectsInMemServerRedis.js in tests!
        

        ????

        Ich würde an deiner Stelle den Adapter neu mit dem Adapter Creator erstellen und dann den alten Code übernehmen, so sollten solche Fehler nicht mehr vorkommen. Zudem kannst du den Code dann recht einfach aktuell halten. Das habe ich bei meinen beiden Adaptern so gemacht und bin sehr glücklich damit.

        F Offline
        F Offline
        foxthefox
        Developer
        wrote on last edited by
        #3

        @UncleSam

        danke.

        ich hatte die Meldung schon so interpretiert, wenn ich die vorhandene decrypt nehme, dann braucht die scheinbar nur ein Argument. Ich habe die Funktion, die in de meisten verwendet Adaptern verwendet wird (damals den Tip bekommen, mir es von iobroker.meross abzuschauen).
        Wenn nur noch ein Argument verwendet wird, dann ist wohl irgendwie sichergestellt, daß 'system.config.native.secret' schon vorgesetzt ist ?!

        Also wenn ich es richtig verstehen this.errorHandler.bind(this); UND catch(e => this.errorHandler(e));??

        Wie ich alles auf async/await umstelle, habe ich keinen Plan 😞 Ich bin da nicht der Guru, soll das dann alles ein try/catch mit innenliegenden await sein ?

        Den neuen Adapter habe ich genau wie bevorzugt mit dem creator angelegt und dann mühevoll meinen alten code dort hinein adaptiert, leider kommt die Meldung trotzdem.

        Bin noch am experimentieren wie ich den integration test hinbekomme. Das ist komplett anders als vorher 😞
        Aber dazu muß ich wohl nen eigenen Thread aufmachen.

        Gruß
        Klaus

        Adapterüberblick: Profil Github;

        Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

        Ein Aufruf: video

        UncleSamU 1 Reply Last reply
        0
        • F foxthefox

          @UncleSam

          danke.

          ich hatte die Meldung schon so interpretiert, wenn ich die vorhandene decrypt nehme, dann braucht die scheinbar nur ein Argument. Ich habe die Funktion, die in de meisten verwendet Adaptern verwendet wird (damals den Tip bekommen, mir es von iobroker.meross abzuschauen).
          Wenn nur noch ein Argument verwendet wird, dann ist wohl irgendwie sichergestellt, daß 'system.config.native.secret' schon vorgesetzt ist ?!

          Also wenn ich es richtig verstehen this.errorHandler.bind(this); UND catch(e => this.errorHandler(e));??

          Wie ich alles auf async/await umstelle, habe ich keinen Plan 😞 Ich bin da nicht der Guru, soll das dann alles ein try/catch mit innenliegenden await sein ?

          Den neuen Adapter habe ich genau wie bevorzugt mit dem creator angelegt und dann mühevoll meinen alten code dort hinein adaptiert, leider kommt die Meldung trotzdem.

          Bin noch am experimentieren wie ich den integration test hinbekomme. Das ist komplett anders als vorher 😞
          Aber dazu muß ich wohl nen eigenen Thread aufmachen.

          Gruß
          Klaus

          UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          wrote on last edited by
          #4

          @foxthefox sagte in Umsetzung Adapter auf Class:

          ich hatte die Meldung schon so interpretiert, wenn ich die vorhandene decrypt nehme, dann braucht die scheinbar nur ein Argument. Ich habe die Funktion, die in de meisten verwendet Adaptern verwendet wird (damals den Tip bekommen, mir es von iobroker.meross abzuschauen).

          Ich würde solche "alten Zöpfe" abschneiden (sofern du Kompatibilität garantieren kannst). Wenn du auf die eingebaute Funktion wechselst, wird auch die zukünftige bessere Verschlüsselung einfach so funktioneren.

          Wenn nur noch ein Argument verwendet wird, dann ist wohl irgendwie sichergestellt, daß 'system.config.native.secret' schon vorgesetzt ist ?!

          Musst du im Code von adapter-core nachschauen.

          Also wenn ich es richtig verstehen this.errorHandler.bind(this); UND catch(e => this.errorHandler(e));??

          Nein, entweder oder.

          Wie ich alles auf async/await umstelle, habe ich keinen Plan 😞 Ich bin da nicht der Guru, soll das dann alles ein try/catch mit innenliegenden await sein ?

          Genau. Den Code schreibst du dann, als ob es synchron wäre (einfach eine Zeile nach der anderen) ohne irgendwelche then und catch. Schau dir mal eine Einführung zB auf YouTube an. Der Code wird so viel lesbarer.

          Den neuen Adapter habe ich genau wie bevorzugt mit dem creator angelegt und dann mühevoll meinen alten code dort hinein adaptiert, leider kommt die Meldung trotzdem.

          Super!

          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
          ♡-lichen Dank an meine Sponsoren

          AlCalzoneA 1 Reply Last reply
          0
          • UncleSamU UncleSam

            @foxthefox sagte in Umsetzung Adapter auf Class:

            ich hatte die Meldung schon so interpretiert, wenn ich die vorhandene decrypt nehme, dann braucht die scheinbar nur ein Argument. Ich habe die Funktion, die in de meisten verwendet Adaptern verwendet wird (damals den Tip bekommen, mir es von iobroker.meross abzuschauen).

            Ich würde solche "alten Zöpfe" abschneiden (sofern du Kompatibilität garantieren kannst). Wenn du auf die eingebaute Funktion wechselst, wird auch die zukünftige bessere Verschlüsselung einfach so funktioneren.

            Wenn nur noch ein Argument verwendet wird, dann ist wohl irgendwie sichergestellt, daß 'system.config.native.secret' schon vorgesetzt ist ?!

            Musst du im Code von adapter-core nachschauen.

            Also wenn ich es richtig verstehen this.errorHandler.bind(this); UND catch(e => this.errorHandler(e));??

            Nein, entweder oder.

            Wie ich alles auf async/await umstelle, habe ich keinen Plan 😞 Ich bin da nicht der Guru, soll das dann alles ein try/catch mit innenliegenden await sein ?

            Genau. Den Code schreibst du dann, als ob es synchron wäre (einfach eine Zeile nach der anderen) ohne irgendwelche then und catch. Schau dir mal eine Einführung zB auf YouTube an. Der Code wird so viel lesbarer.

            Den neuen Adapter habe ich genau wie bevorzugt mit dem creator angelegt und dann mühevoll meinen alten code dort hinein adaptiert, leider kommt die Meldung trotzdem.

            Super!

            AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #5

            @UncleSam sagte in Umsetzung Adapter auf Class:

            Wie ich alles auf async/await umstelle, habe ich keinen Plan

            Hilft dir das?
            https://gist.github.com/AlCalzone/d14b854b69ce5e8a03718336cc650a95#

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            F 1 Reply Last reply
            0
            • AlCalzoneA AlCalzone

              @UncleSam sagte in Umsetzung Adapter auf Class:

              Wie ich alles auf async/await umstelle, habe ich keinen Plan

              Hilft dir das?
              https://gist.github.com/AlCalzone/d14b854b69ce5e8a03718336cc650a95#

              F Offline
              F Offline
              foxthefox
              Developer
              wrote on last edited by
              #6

              @AlCalzone
              SUPER writeup!

              Kapitel 6, war so meine Idee was damit gemeint ist.

              Adapterüberblick: Profil Github;

              Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

              Ein Aufruf: video

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              52

              Online

              32.4k

              Users

              81.3k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe