Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [Aufruf] IKEA-Trådfri Adapter testen

    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

    [Aufruf] IKEA-Trådfri Adapter testen

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      han_swurst last edited by Jey Cee

      Hallo AlCalzone,

      ich hab den Pi nochmal frisch aufgesetzt um alles nochmal durchzuführen und meine Schritte zu dokumentieren.

      Also gestartet wird mit nem frischen Pi3, anschließend node und iobroker installieren:

      alten node Kram entfernen..

      sudo apt-get --purge remove node
      sudo apt-get --purge remove nodejs
      sudo apt-get autoremove
      sudo reboot
      
      

      Repos für node 6.x einrichten und node 6.10.3 installieren:

      curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
      sudo apt-get install -y build-essentials python nodejs
      reboot
      
      

      Verzeichnis für iobroker erstellen und iobroker installieren:

      sudo mkdir /opt/iobroker
      sudo chmod 777 /opt/iobroker
      cd /opt/iobroker
      sudo npm install iobroker --unsafe-perm
      
      

      Beim installieren traten Fehler bei iobroker.discovery auf.

      Keine Ahnung ob das für Dein Adapter relevant ist.

      Hier mal das Log für die Installation von iobroker

      log.txt

      git-core und anschließend Deinen Adapter installieren:

      sudo apt-get install git-core
      sudo npm install https://github.com/AlCalzone/ioBroker.tradfri/tarball/master --production --unsafe-perm 2>&1 | tee tradfri_inst.log
      
      

      Hier das Log der Installation

      log.txt

      Adapter instanzieren…

      iobroker add tradfri
      
      

      Ausgabe:

       iobroker add tradfri
       host.raspberrypi install adapter tradfri
       npm install –production (System call) in "/opt/iobroker/node_modules/iobroker.tradfri"
       got /opt/iobroker/node_modules/iobroker.tradfri/admin
       upload [2] tradfri.admin /opt/iobroker/node_modules/iobroker.tradfri/admin/words.js words.js application/javascript
       upload [1] tradfri.admin /opt/iobroker/node_modules/iobroker.tradfri/admin/tradfri.png tradfri.png image/png
       upload [0] tradfri.admin /opt/iobroker/node_modules/iobroker.tradfri/admin/index.html index.html text/html
       host.raspberrypi object system.adapter.tradfri created
       host.raspberrypi create instance tradfri
       host.raspberrypi object system.adapter.tradfri.0.outputCount created
       host.raspberrypi object system.adapter.tradfri.0.inputCount created
       host.raspberrypi object system.adapter.tradfri.0.uptime created
       host.raspberrypi object system.adapter.tradfri.0.memRss created
       host.raspberrypi object system.adapter.tradfri.0.memHeapTotal created
       host.raspberrypi object system.adapter.tradfri.0.memHeapUsed created
       host.raspberrypi object system.adapter.tradfri.0.connected created
       host.raspberrypi object system.adapter.tradfri.0.alive created
       host.raspberrypi object system.adapter.tradfri.0 created
      

      Eingabe von IP und SecurityCode…

      Und leider wieder derselbe Fehler im iobroker Log:

      host.raspberrypi	2017-05-11 22:11:28.803	info	Restart adapter system.adapter.tradfri.0 because enabled
      host.raspberrypi	2017-05-11 22:11:28.802	error	instance system.adapter.tradfri.0 terminated with code null ()
      host.raspberrypi	2017-05-11 22:11:28.802	warn	instance system.adapter.tradfri.0 terminated due to SIGABRT
      host.raspberrypi	2017-05-11 22:11:26.334	info	instance system.adapter.tradfri.0 started with pid 4488
      host.raspberrypi	2017-05-11 22:10:56.317	info	Restart adapter system.adapter.tradfri.0 because enabled
      host.raspberrypi	2017-05-11 22:10:56.316	error	instance system.adapter.tradfri.0 terminated with code null ()
      host.raspberrypi	2017-05-11 22:10:56.315	warn	instance system.adapter.tradfri.0 terminated due to SIGABRT
      host.raspberrypi	2017-05-11 22:10:53.745	info	instance system.adapter.tradfri.0 started with pid 4478
      host.raspberrypi	2017-05-11 22:10:51.290	info	instance system.adapter.tradfri.0 terminated with code 0 (OK)
      tradfri.0	2017-05-11 22:10:51.254	info	terminating
      host.raspberrypi	2017-05-11 22:10:51.223	info	stopInstance system.adapter.tradfri.0 killing pid 4467
      host.raspberrypi	2017-05-11 22:10:51.222	info	stopInstance system.adapter.tradfri.0
      host.raspberrypi	2017-05-11 22:10:51.217	info	object change system.adapter.tradfri.0
      tradfri.0	2017-05-11 22:06:41.889	info	requesting coap endpoint /15001
      tradfri.0	2017-05-11 22:06:41.837	info	starting. Version 0.1.2 in /opt/iobroker/node_modules/iobroker.tradfri, node: v6.10.3
      host.raspberrypi	2017-05-11 22:06:39.392	info	instance system.adapter.tradfri.0 started with pid 4467
      host.raspberrypi	2017-05-11 22:06:39.358	info	object change system.adapter.tradfri.0
      
      

      Was mir noch aufgefallen ist, die Instanz des Adapters terminiert sich sobald sie eine IP konfiguriert hat. Im unkonfiguriertem Zustand, oder wenn die IP gelöscht wird, bleibt die Instanz gestartet.

      MfG

      Chris

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        @han_swurst:

        > mdns@2.3.3 install /opt/iobroker/node_modules/mdns
        > node-gyp rebuild
        
        make: Entering directory '/opt/iobroker/node_modules/mdns/build'
        CXX(target) Release/obj.target/dns_sd_bindings/src/dns_sd.o
        In file included from ../src/dns_sd.cpp:1:0:
        ../src/mdns.hpp:32:20: fatal error: dns_sd.h: Datei oder Verzeichnis nicht gefunden
        #include <dns_sd.h>
        ^
        compilation terminated.
        dns_sd_bindings.target.mk:149: recipe for target 'Release/obj.target/dns_sd_bindings/src/dns_sd.o' failed
        make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] Error 1
        make: Leaving directory '/opt/iobroker/node_modules/mdns/build'</dns_sd.h>
        ```` `  
        

        Da haben wir's doch! Ich schau, wie man das beheben/verhindern kann.

        1 Reply Last reply Reply Quote 0
        • AlCalzone
          AlCalzone Developer last edited by

          @Homoran:

          Auch nach versuch über die Konsole kein trådfri ordner

                                           
            CC(target) Release/obj.target/mbedcrypto/mbedtls/library/bignum.o                                          
          ../mbedtls/library/bignum.c: In function ‘mpi_mul_hlp’:                                                      
          ../mbedtls/library/bignum.c:1168:1: error: r7 cannot be used in asm here                                     
           }                                                                                                           
           ^                                                                                                           
          ../mbedtls/library/bignum.c:1168:1: error: r7 cannot be used in asm here                                     
          mbedcrypto.target.mk:144: recipe for target 'Release/obj.target/mbedcrypto/mbedtls/library/bignum.o' failed  
          
          ```` `  
          

          Die DTLS-Library scheint hier nicht kompatibel zu sein 😞 Muss ich mal schauen, ob ich ein anderes Paket finde.

          1 Reply Last reply Reply Quote 0
          • A
            ACE76 last edited by

            Hallo,

            erst einmal vielen Dank an AlCalzone für die Entwicklung dieses Adapters!

            Nach stöbern im Thread habe ich es letztendlich geschafft den Tradfri Adapter zu installieren. Nun habe ich allerdings das Problem, dass sich der Adapter scheinbar nicht mit dem Gateway verbindet, obwohl die IP als auch Security Code stimmen. Ich finde einfach den Fehler nicht selbst.

            Das Log zeigt die folgende Schleife (IP anonymisiert):

            tradfri.0	2017-05-13 00:11:06.844	info	requesting coap endpoint 192.168.XXX.XX/15001
            tradfri.0	2017-05-13 00:11:06.820	info	starting. Version 0.1.2 in /opt/iobroker/node_modules/iobroker.tradfri, node: v4.8.1
            tradfri.0	2017-05-13 00:11:06.774	debug	statesDB connected
            tradfri.0	2017-05-13 00:11:06.699	debug	objectDB connected
            tradfri.0	2017-05-13 00:10:52.588	info	requesting coap endpoint 192.168.XXX.XX/15001
            tradfri.0	2017-05-13 00:10:52.564	info	starting. Version 0.1.2 in /opt/iobroker/node_modules/iobroker.tradfri, node: v4.8.1
            tradfri.0	2017-05-13 00:10:52.497	debug	statesDB connected
            tradfri.0	2017-05-13 00:10:52.423	debug	objectDB connected
            

            Unter den Objekten werden keine Datenpunkte für die Geräte angelegt. Lediglich eine Instanz.

            Hat jemand eine Idee woran dies liegen könnte? Falls ich noch etwas anderes beisteuern kann zur Fehlerfindung bitte ich um Hinweis.

            PS:
            @han_swurst:

            Was mir noch aufgefallen ist, die Instanz des Adapters terminiert sich sobald sie eine IP konfiguriert hat. Im unkonfiguriertem Zustand, oder wenn die IP gelöscht wird, bleibt die Instanz gestartet. `
            Gerade noch diesen Post gesehen und überprüft. Ist bei mir genau so. Ändert aber nichts daran, dass kein Ordner angelegt wird mit den Geräten.
            2436_screenshot.jpg

            1 Reply Last reply Reply Quote 0
            • H
              han_swurst last edited by

              @AlCalzone:

              @han_swurst:

              > mdns@2.3.3 install /opt/iobroker/node_modules/mdns
              > node-gyp rebuild
              
              make: Entering directory '/opt/iobroker/node_modules/mdns/build'
              CXX(target) Release/obj.target/dns_sd_bindings/src/dns_sd.o
              In file included from ../src/dns_sd.cpp:1:0:
              ../src/mdns.hpp:32:20: fatal error: dns_sd.h: Datei oder Verzeichnis nicht gefunden
              #include <dns_sd.h>
              ^
              compilation terminated.
              dns_sd_bindings.target.mk:149: recipe for target 'Release/obj.target/dns_sd_bindings/src/dns_sd.o' failed
              make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] Error 1
              make: Leaving directory '/opt/iobroker/node_modules/mdns/build'</dns_sd.h>
              ```` `  
              

              Da haben wir's doch! Ich schau, wie man das beheben/verhindern kann. `

              Das ist nicht das Problem. Da fehlen ein nur ein paar Abhängigkeiten für mdns.

              Ein apt-get install libavahi-compat-libdnssd-dev behebt den Fehler beim Installieren von mdns.

              Ich hab auch schon libcoap installiert bzw. kompiliert. Aber auch damit bringt der Adapter den bekannten Fehler.

              Nochwas:

              Ich weiß nicht obs Dir beim Fehler suchen hilft, aber der Adapter schmiert nur ab, wenn man die IP vom Ikea-Gateway eingibt.

              MfG

              Chris

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                Danke für die zahlreichen Infos. Ich kann noch nichts versprechen, da ich aktuell nicht viel Zeit habe, aber ich versuche im Laufe der Woche nachzuvollziehen, was da bei euch schief läuft.

                Dass keine Objekte angelegt werden, ist zu erwarten, da der Adapter keine Verbindung herstellt. Die Objekte sollten bei erfolgreicher Verbindung angelegt werden.

                –-

                Update: Ich kann euer Problem mittlerweile reproduzieren. Bei Ausführung über Konsole gibt es weitere Infos:

                io.tradfri.0: ../../nan/nan.h:704: Nan::MaybeLocal <v8::object>Nan::CopyBuffer(const char*, uint32_t): Assertion `size <= imp::kMaxLength && "too large buffer"' failed.</v8::object>
                

                Wenn ich jetzt noch wüsste, warum das vorher bei mir funktioniert hat…

                1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer last edited by

                  Ich habe mal nach Alternativen geschaut:

                  • mbed-dtls (aktuelle Lösung, problematisch)

                  • tiny-dtls (in C geschrieben, schlecht bis nicht dokumentiert, muss ich irgendwie wrappen)

                  • node-dtls (nodeJS, aber kann nur RSA, kein PSK wie von Tradfri benötigt, Code ist etwas… äääh unübersichtlich)

                  • libcoap (kann kein DTLS, der beigelegte client erfordert pro überwachter Ressource [das sind einige] einen neuen Prozess)

                  Habe mich jetzt entschieden, DTLS und CoAP selbst zu implementieren, das wird aber noch ein bisschen dauern…

                  1 Reply Last reply Reply Quote 0
                  • S
                    smartie last edited by

                    Hallo!

                    "Update: Ich kann euer Problem mittlerweile reproduzieren. Bei Ausführung über Konsole gibt es weitere Infos:

                    Code:

                    io.tradfri.0: ../../nan/nan.h:704: Nan::MaybeLocal v8::objectNan::CopyBuffer(const char*, uint32_t): Assertion `size <= imp::kMaxLength && "too large buffer"' failed.

                    Wenn ich jetzt noch wüsste, warum das vorher bei mir funktioniert hat…"

                    Nun, ohne der große JS Experte zu sein:

                    Ich würde vermuten das wenn das auf RPi NICH läuft, auf anderen Umgebungen schon würde ich schlicht vermuten das es daran liegt, das der standardmäßig für JAVA bereitgestellte Speicher auf dem RPi schlicht kleiner ist als in anderen Umgebungen.

                    Das ist denke ich aber eher Symptom und nicht Ursache. Die Frage ist: Was braucht denn im tradfri Adapter so eine Menge an Speicher, denn offensichtlich ist die Größe, also der Wert des 1. Parameters zu groß ....

                    Ich bekomme diese start/crash schleife auch ohne eigegebene IP/Securitycode ....</v8::object>

                    1 Reply Last reply Reply Quote 0
                    • S
                      smartie last edited by

                      So, ich muss nun meinen Beitrag ergänzen - das Fehlerbild hat sich geändert.

                      Mein erstes Problem war: Die Prozedur zum Entfernen von node.js 4 hat wohl nicht funktioniert - und so hatte ich v4 und v7 parallel ( fieser weise hat die Command-line auf v7 zugegriffen, aber ioBroker auf v4).

                      Somit bin ich jetzt bei dem Status: Keine IP eingetragen –> Adapter läuft.

                      "Irgend eine IP - nur kein tradfri gate" --> Adapter sended coap request - und bekommt natürlich keine Antwort.

                      Sobald ich die IP vom Gate eingebe - auch ohne Securitycode crasht der Adapter mit

                      "host.csprint01 2017-05-30 16:43:38.925 error instance system.adapter.tradfri.0 terminated with code null ()

                      host.csprint01 2017-05-30 16:43:38.924 warn instance system.adapter.tradfri.0 terminated due to SIGABRT"

                      So ins Blaue geraten also dann wenn der client irgendwas antwortet ....

                      1 Reply Last reply Reply Quote 0
                      • S
                        smartie last edited by

                        Hallo zusammen!

                        Ich habe mal ein bischen angefangen zu debuggen- um einzugrenzen wo der crash passiert:

                        Es liegt an coapClient.js

                        Line 147 - 172

                        Mehr Details habe ich noch nicht, aber vielleicht hilft's ja ….

                        1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer last edited by

                          Danke für den Input. Mir ist bewusst, dass es an den 3rd-party libs liegt - irgendwas mit fehlerhafter Buffer-Größe. Hatte weiter oben auch schon mal einen Log gepostet mit dem exakten Fehler.

                          Was mich nur wundert:

                          Ich habe die erste Version auf einem Raspi 2 entwickelt, auf dem vorher schon einiges anderes installiert war. Da hats einwandfrei funktioniert. Die CI-Tests ebenfalls.

                          Dann kamen die ersten Nutzer, die es auf diversen Systemen nicht ausführen konnten. Auf einem frisch aufgesetzten Raspi (2 oder 3, weiß ich gerade nicht) ging es dann plötzlich auch bei mir nicht mehr. Irgendwas scheint also zu fehlen, nur was…?

                          Naja, ich werde die COAP und DTLS-Libraries demnächst durch eigenen Code ersetzen - ist nicht so schrecklich umfangreich auf der Client-Seite. Bin nur gerade im Umzugsstress, da ist keine Zeit für so Spielchen.

                          1 Reply Last reply Reply Quote 0
                          • S
                            smartie last edited by

                            Das ist sicher eine gute Idee.

                            Ich bin auch noch einen Schritt weiter:

                            Das Problem liegt in coap-dtls/index.js , bei der Instantiierung des Agent ab Zeile 41 - 52.

                            1 Reply Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer last edited by

                              Das Problem müsste eigentlich im Paket mbed-dtls liegen, da hier die Bindings zum nativen C-Code liegen.

                              https://github.com/AlCalzone/node-mbed- … master/src

                              Wenn du die exakte Stelle finden solltest, lass es mich wissen. Ansonsten werde ich (sobald ich Zeit habe) die Libraries durch selbstgeschriebenen Code (reines JS) ersetzen.

                              1 Reply Last reply Reply Quote 0
                              • S
                                smartie last edited by

                                Damit kann ich dienen:

                                in node-mbed-dstl\client_socket.js

                                Zeile 52: Bei der Instantiierung von mbed.DtlsClientSocket kracht's …..

                                Gruß

                                Smartie

                                1 Reply Last reply Reply Quote 0
                                • S
                                  smartie last edited by

                                  @smartie:

                                  Damit kann ich dienen:

                                  in node-mbed-dstl\client_socket.js

                                  Zeile 52: Bei der Instantiierung von mbed.DtlsClientSocket kracht's …..

                                  Gruß

                                  Smartie `

                                  … ich nehm alles zurück und behaupte das Gegenteil ....

                                  Dar Aufruf

                                  const data = this.mbedSocket.receiveData(msg);

                                  in client_socket.js macht das Problem. (So um Zeilennummer 85).

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    sunny999999 last edited by

                                    Gibts in dieser Richtung was neues ?

                                    Häng auch da und warte auf ne Lösung oder nen workaround…...

                                    Thx

                                    Sunny

                                    1 Reply Last reply Reply Quote 0
                                    • AlCalzone
                                      AlCalzone Developer last edited by

                                      Bin dran, dauert leider noch etwas. Die Implementierung von (D)TLS ist recht aufwändig und ich war die letzten Wochen nur unterwegs. Bin auf jeden Fall dran, da ich den Adapter in meiner Wohnung auch brauche.

                                      Gesendet von iPhone mit Tapatalk

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        sirtwist672 last edited by

                                        Hallo AlCalzone,

                                        ohne hetzen zu wollen,

                                        gibts was neues?

                                        SirTwist

                                        1 Reply Last reply Reply Quote 0
                                        • AlCalzone
                                          AlCalzone Developer last edited by

                                          Habe letzte Woche die ersten Kommunikationsversuche per DTLS unternommen und einige Fehler ausgebaut. Prinzipiell funktioniert der Handshake (Austausch der Verschlüsselungsinformationen).

                                          Allerdings habe ich dabei gemerkt, dass das Gateway nur AEAD-Verschlüsselungsmethoden unterstützt, die ich noch nicht implementiert hatte. Da komme ich frühestens Donnerstag dazu… habe leider momentan fast jede Minute neben der Arbeit verplant. Dann kann ich endlich testen, ob der reguläre Datenaustausch auch funktioniert.

                                          CoAP steht dann auch noch an. Das scheint zumindest in einer rudimentären Variante nicht besonders viel zu werden.

                                          1 Reply Last reply Reply Quote 0
                                          • AlCalzone
                                            AlCalzone Developer last edited by

                                            Ich habe gerade das erste Mal erfolgreich per DTLS mit dem Gateway kommuniziert. 🙂

                                            Jetzt noch ein bisschen Code aufräumen, dann ist CoAP dran. Sollte also bald was zum Testen geben.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            778
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            49
                                            471
                                            101599
                                            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