NEWS
CC2538+CC2592 PA Zigbee Stick/Platine
-
Solche skripte NIE NIE NIE als root mit heruntergelassener Hose ausführen.
-
@thomas-braun kein Problem direkt auf einen User gewechselt...
helios@helios64:/root/cc2538-bsl$ python cc2538-bsl.py -h File "cc2538-bsl.py", line 82 print(message, end=attr, file=sys.stderr) ^ SyntaxError: invalid syntax
-
python -v python3 -v
-
@thomas-braun sagte in CC2538+CC2592 PA Zigbee Stick/Platine:
python3 -v
python -v
helios@helios64:/root/cc2538-bsl$ python -v # installing zipimport hook import zipimport # builtin # installed zipimport hook # /usr/lib/python2.7/site.pyc matches /usr/lib/python2.7/site.py import site # precompiled from /usr/lib/python2.7/site.pyc # /usr/lib/python2.7/os.pyc matches /usr/lib/python2.7/os.py import os # precompiled from /usr/lib/python2.7/os.pyc import errno # builtin import posix # builtin # /usr/lib/python2.7/posixpath.pyc matches /usr/lib/python2.7/posixpath.py import posixpath # precompiled from /usr/lib/python2.7/posixpath.pyc # /usr/lib/python2.7/stat.pyc matches /usr/lib/python2.7/stat.py import stat # precompiled from /usr/lib/python2.7/stat.pyc # /usr/lib/python2.7/genericpath.pyc matches /usr/lib/python2.7/genericpath.py import genericpath # precompiled from /usr/lib/python2.7/genericpath.pyc # /usr/lib/python2.7/warnings.pyc matches /usr/lib/python2.7/warnings.py import warnings # precompiled from /usr/lib/python2.7/warnings.pyc # /usr/lib/python2.7/linecache.pyc matches /usr/lib/python2.7/linecache.py import linecache # precompiled from /usr/lib/python2.7/linecache.pyc # /usr/lib/python2.7/types.pyc matches /usr/lib/python2.7/types.py import types # precompiled from /usr/lib/python2.7/types.pyc # /usr/lib/python2.7/UserDict.pyc matches /usr/lib/python2.7/UserDict.py import UserDict # precompiled from /usr/lib/python2.7/UserDict.pyc # /usr/lib/python2.7/_abcoll.pyc matches /usr/lib/python2.7/_abcoll.py import _abcoll # precompiled from /usr/lib/python2.7/_abcoll.pyc # /usr/lib/python2.7/abc.pyc matches /usr/lib/python2.7/abc.py import abc # precompiled from /usr/lib/python2.7/abc.pyc # /usr/lib/python2.7/_weakrefset.pyc matches /usr/lib/python2.7/_weakrefset.py import _weakrefset # precompiled from /usr/lib/python2.7/_weakrefset.pyc import _weakref # builtin # /usr/lib/python2.7/copy_reg.pyc matches /usr/lib/python2.7/copy_reg.py import copy_reg # precompiled from /usr/lib/python2.7/copy_reg.pyc # /usr/lib/python2.7/traceback.pyc matches /usr/lib/python2.7/traceback.py import traceback # precompiled from /usr/lib/python2.7/traceback.pyc # /usr/lib/python2.7/sysconfig.pyc matches /usr/lib/python2.7/sysconfig.py import sysconfig # precompiled from /usr/lib/python2.7/sysconfig.pyc # /usr/lib/python2.7/re.pyc matches /usr/lib/python2.7/re.py import re # precompiled from /usr/lib/python2.7/re.pyc # /usr/lib/python2.7/sre_compile.pyc matches /usr/lib/python2.7/sre_compile.py import sre_compile # precompiled from /usr/lib/python2.7/sre_compile.pyc import _sre # builtin # /usr/lib/python2.7/sre_parse.pyc matches /usr/lib/python2.7/sre_parse.py import sre_parse # precompiled from /usr/lib/python2.7/sre_parse.pyc # /usr/lib/python2.7/sre_constants.pyc matches /usr/lib/python2.7/sre_constants.py import sre_constants # precompiled from /usr/lib/python2.7/sre_constants.pyc import _locale # builtin # /usr/lib/python2.7/_sysconfigdata.pyc matches /usr/lib/python2.7/_sysconfigdata.py import _sysconfigdata # precompiled from /usr/lib/python2.7/_sysconfigdata.pyc # /usr/lib/python2.7/plat-aarch64-linux-gnu/_sysconfigdata_nd.pyc matches /usr/lib/python2.7/plat-aarch64-linux-gnu/_sysconfigdata_nd.py import _sysconfigdata_nd # precompiled from /usr/lib/python2.7/plat-aarch64-linux-gnu/_sysconfigdata_nd.pyc # /usr/lib/python2.7/sitecustomize.pyc matches /usr/lib/python2.7/sitecustomize.py import sitecustomize # precompiled from /usr/lib/python2.7/sitecustomize.pyc import encodings # directory /usr/lib/python2.7/encodings # /usr/lib/python2.7/encodings/__init__.pyc matches /usr/lib/python2.7/encodings/__init__.py import encodings # precompiled from /usr/lib/python2.7/encodings/__init__.pyc # /usr/lib/python2.7/codecs.pyc matches /usr/lib/python2.7/codecs.py import codecs # precompiled from /usr/lib/python2.7/codecs.pyc import _codecs # builtin # /usr/lib/python2.7/encodings/aliases.pyc matches /usr/lib/python2.7/encodings/aliases.py import encodings.aliases # precompiled from /usr/lib/python2.7/encodings/aliases.pyc # /usr/lib/python2.7/encodings/utf_8.pyc matches /usr/lib/python2.7/encodings/utf_8.py import encodings.utf_8 # precompiled from /usr/lib/python2.7/encodings/utf_8.pyc Python 2.7.16 (default, Oct 10 2019, 22:02:15) [GCC 8.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. dlopen("/usr/lib/python2.7/lib-dynload/readline.aarch64-linux-gnu.so", 2); import readline # dynamically loaded from /usr/lib/python2.7/lib-dynload/readline.aarch64-linux-gnu.so >>> exit() # clear __builtin__._ # clear sys.path # clear sys.argv # clear sys.ps1 # clear sys.ps2 # clear sys.exitfunc # clear sys.exc_type # clear sys.exc_value # clear sys.exc_traceback # clear sys.last_type # clear sys.last_value # clear sys.last_traceback # clear sys.path_hooks # clear sys.path_importer_cache # clear sys.meta_path # clear sys.flags # clear sys.float_info # restore sys.stdin # restore sys.stdout # restore sys.stderr # cleanup __main__ # cleanup[1] encodings # cleanup[1] site # cleanup[1] sysconfig # cleanup[1] abc # cleanup[1] _weakrefset # cleanup[1] sre_constants # cleanup[1] re # cleanup[1] _codecs # cleanup[1] _warnings # cleanup[1] zipimport # cleanup[1] _sysconfigdata # cleanup[1] encodings.utf_8 # cleanup[1] codecs # cleanup[1] readline # cleanup[1] _sysconfigdata_nd # cleanup[1] _locale # cleanup[1] sitecustomize # cleanup[1] signal # cleanup[1] traceback # cleanup[1] posix # cleanup[1] encodings.aliases # cleanup[1] exceptions # cleanup[1] _weakref # cleanup[1] sre_compile # cleanup[1] _sre # cleanup[1] sre_parse # cleanup[2] copy_reg # cleanup[2] posixpath # cleanup[2] errno # cleanup[2] _abcoll # cleanup[2] types # cleanup[2] genericpath # cleanup[2] stat # cleanup[2] warnings # cleanup[2] UserDict # cleanup[2] os.path # cleanup[2] linecache # cleanup[2] os # cleanup sys # cleanup __builtin__ # cleanup ints: 19 unfreed ints # cleanup floats
python3 -v
helios@helios64:/root/cc2538-bsl$ python3 -v import _frozen_importlib # frozen import _imp # builtin import '_thread' # <class '_frozen_importlib.BuiltinImporter'> import '_warnings' # <class '_frozen_importlib.BuiltinImporter'> import '_weakref' # <class '_frozen_importlib.BuiltinImporter'> # installing zipimport hook import 'zipimport' # <class '_frozen_importlib.BuiltinImporter'> # installed zipimport hook import '_frozen_importlib_external' # <class '_frozen_importlib.FrozenImporter'> import '_io' # <class '_frozen_importlib.BuiltinImporter'> import 'marshal' # <class '_frozen_importlib.BuiltinImporter'> import 'posix' # <class '_frozen_importlib.BuiltinImporter'> import _thread # previously loaded ('_thread') import '_thread' # <class '_frozen_importlib.BuiltinImporter'> import _weakref # previously loaded ('_weakref') import '_weakref' # <class '_frozen_importlib.BuiltinImporter'> # /usr/lib/python3.7/encodings/__pycache__/__init__.cpython-37.pyc matches /usr/lib/python3.7/encodings/__init__.py # code object from '/usr/lib/python3.7/encodings/__pycache__/__init__.cpython-37.pyc' # /usr/lib/python3.7/__pycache__/codecs.cpython-37.pyc matches /usr/lib/python3.7/codecs.py # code object from '/usr/lib/python3.7/__pycache__/codecs.cpython-37.pyc' import '_codecs' # <class '_frozen_importlib.BuiltinImporter'> import 'codecs' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd33eda0> # /usr/lib/python3.7/encodings/__pycache__/aliases.cpython-37.pyc matches /usr/lib/python3.7/encodings/aliases.py # code object from '/usr/lib/python3.7/encodings/__pycache__/aliases.cpython-37.pyc' import 'encodings.aliases' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd3537b8> import 'encodings' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd33e828> # /usr/lib/python3.7/encodings/__pycache__/utf_8.cpython-37.pyc matches /usr/lib/python3.7/encodings/utf_8.py # code object from '/usr/lib/python3.7/encodings/__pycache__/utf_8.cpython-37.pyc' import 'encodings.utf_8' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd3624e0> import '_signal' # <class '_frozen_importlib.BuiltinImporter'> # /usr/lib/python3.7/encodings/__pycache__/latin_1.cpython-37.pyc matches /usr/lib/python3.7/encodings/latin_1.py # code object from '/usr/lib/python3.7/encodings/__pycache__/latin_1.cpython-37.pyc' import 'encodings.latin_1' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd362f98> # /usr/lib/python3.7/__pycache__/io.cpython-37.pyc matches /usr/lib/python3.7/io.py # code object from '/usr/lib/python3.7/__pycache__/io.cpython-37.pyc' # /usr/lib/python3.7/__pycache__/abc.cpython-37.pyc matches /usr/lib/python3.7/abc.py # code object from '/usr/lib/python3.7/__pycache__/abc.cpython-37.pyc' import '_abc' # <class '_frozen_importlib.BuiltinImporter'> import 'abc' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd3675c0> import 'io' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd367208> # /usr/lib/python3.7/__pycache__/site.cpython-37.pyc matches /usr/lib/python3.7/site.py # code object from '/usr/lib/python3.7/__pycache__/site.cpython-37.pyc' # /usr/lib/python3.7/__pycache__/os.cpython-37.pyc matches /usr/lib/python3.7/os.py # code object from '/usr/lib/python3.7/__pycache__/os.cpython-37.pyc' # /usr/lib/python3.7/__pycache__/stat.cpython-37.pyc matches /usr/lib/python3.7/stat.py # code object from '/usr/lib/python3.7/__pycache__/stat.cpython-37.pyc' import '_stat' # <class '_frozen_importlib.BuiltinImporter'> import 'stat' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd3008d0> # /usr/lib/python3.7/__pycache__/posixpath.cpython-37.pyc matches /usr/lib/python3.7/posixpath.py # code object from '/usr/lib/python3.7/__pycache__/posixpath.cpython-37.pyc' # /usr/lib/python3.7/__pycache__/genericpath.cpython-37.pyc matches /usr/lib/python3.7/genericpath.py # code object from '/usr/lib/python3.7/__pycache__/genericpath.cpython-37.pyc' import 'genericpath' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd3093c8> import 'posixpath' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd306048> # /usr/lib/python3.7/__pycache__/_collections_abc.cpython-37.pyc matches /usr/lib/python3.7/_collections_abc.py # code object from '/usr/lib/python3.7/__pycache__/_collections_abc.cpython-37.pyc' import '_collections_abc' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd309a20> import 'os' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd374588> # /usr/lib/python3.7/__pycache__/_sitebuiltins.cpython-37.pyc matches /usr/lib/python3.7/_sitebuiltins.py # code object from '/usr/lib/python3.7/__pycache__/_sitebuiltins.cpython-37.pyc' import '_sitebuiltins' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd374940> # /usr/lib/python3.7/__pycache__/sitecustomize.cpython-37.pyc matches /usr/lib/python3.7/sitecustomize.py # code object from '/usr/lib/python3.7/__pycache__/sitecustomize.cpython-37.pyc' import 'sitecustomize' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd328ba8> import 'site' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd370198> Python 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. # extension module 'readline' loaded from '/usr/lib/python3.7/lib-dynload/readline.cpython-37m-aarch64-linux-gnu.so' # extension module 'readline' executed from '/usr/lib/python3.7/lib-dynload/readline.cpython-37m-aarch64-linux-gnu.so' import 'readline' # <_frozen_importlib_external.ExtensionFileLoader object at 0xffffbd328b00> import 'atexit' # <class '_frozen_importlib.BuiltinImporter'> # /usr/lib/python3.7/__pycache__/rlcompleter.cpython-37.pyc matches /usr/lib/python3.7/rlcompleter.py # code object from '/usr/lib/python3.7/__pycache__/rlcompleter.cpython-37.pyc' import 'rlcompleter' # <_frozen_importlib_external.SourceFileLoader object at 0xffffbd328c88> >>> exit() # clear builtins._ # clear sys.path # clear sys.argv # clear sys.ps1 # clear sys.ps2 # clear sys.last_type # clear sys.last_value # clear sys.last_traceback # clear sys.path_hooks # clear sys.path_importer_cache # clear sys.meta_path # clear sys.__interactivehook__ # clear sys.flags # clear sys.float_info # restore sys.stdin # restore sys.stdout # restore sys.stderr # cleanup[2] removing sys # cleanup[2] removing builtins # cleanup[2] removing _frozen_importlib # cleanup[2] removing _imp # cleanup[2] removing _thread # cleanup[2] removing _warnings # cleanup[2] removing _weakref # cleanup[2] removing zipimport # cleanup[2] removing _frozen_importlib_external # cleanup[2] removing _io # cleanup[2] removing marshal # cleanup[2] removing posix # cleanup[2] removing encodings # destroy encodings # cleanup[2] removing codecs # cleanup[2] removing _codecs # cleanup[2] removing encodings.aliases # cleanup[2] removing encodings.utf_8 # cleanup[2] removing _signal # cleanup[2] removing __main__ # cleanup[2] removing encodings.latin_1 # cleanup[2] removing io # destroy io # cleanup[2] removing abc # cleanup[2] removing _abc # cleanup[2] removing site # destroy site # cleanup[2] removing os # cleanup[2] removing stat # cleanup[2] removing _stat # cleanup[2] removing posixpath # cleanup[2] removing genericpath # cleanup[2] removing os.path # cleanup[2] removing _collections_abc # destroy _collections_abc # cleanup[2] removing _sitebuiltins # cleanup[2] removing sitecustomize # destroy sitecustomize # cleanup[2] removing readline # cleanup[2] removing atexit # cleanup[2] removing rlcompleter # destroy rlcompleter # destroy zipimport # destroy _signal # destroy _abc # destroy _sitebuiltins # destroy abc # destroy posixpath # destroy _stat # destroy genericpath # destroy os # destroy stat # destroy atexit # destroy __main__ # destroy readline # cleanup[3] wiping _frozen_importlib # destroy _frozen_importlib_external # cleanup[3] wiping _imp # cleanup[3] wiping _thread # cleanup[3] wiping _warnings # cleanup[3] wiping _weakref # cleanup[3] wiping _io # cleanup[3] wiping marshal # cleanup[3] wiping posix # cleanup[3] wiping codecs # cleanup[3] wiping _codecs # cleanup[3] wiping encodings.aliases # cleanup[3] wiping encodings.utf_8 # cleanup[3] wiping encodings.latin_1 # cleanup[3] wiping sys # cleanup[3] wiping builtins
-
Du hampelst da ja schon wieder als root rum.
Hab ich keinen Bock drauf. -
@thomas-braun sorry habe den User eben wieder geändert.
Der Host ist sowieso fast nackig, da alles im Docker läuftzu meiner Python Version...
helios@helios64:~/cc2538-bsl$ python --version Python 2.7.16 helios@helios64:~/cc2538-bsl$ python3 --version Python 3.7.3
anhand anderer Anleitung wird das Python Skript nicht mit python SKRIPTNAME aufgerufen, sondern per ./SKRIPTNAME
Dabei kommt folgendes bei mir...helios@helios64:~/cc2538-bsl$ sudo ./cc2538-bsl.py -p /dev/ttyACM1 -evw JH_2538_2592_ZNP_USB_20201010.hex Opening port /dev/ttyACM1, baud 500000 Reading data from JH_2538_2592_ZNP_USB_20201010.hex Firmware file: Intel Hex Connecting to target... ERROR: Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)'
-
Das skript setzt python 3.7 oder höher voraus.
Dein 'python' ruft aber python 2.7.16 auf.
Es muss alsopython3 blahblubb
lauten.
-
@thomas-braun ja das klappt...
helios@helios64:~/cc2538-bsl$ python3 cc2538-bsl.py -h Usage: cc2538-bsl.py [-DhqVfewvr] [-l length] [-p port] [-b baud] [-a addr] [-i addr] [--bootloader-active-high] [--bootloader-invert-lines] [file.bin] -h, --help This help -q Quiet -V Verbose -f Force operation(s) without asking any questions -e Mass erase -E, --erase-page p/a,range Receives an address(a) range or page(p) range, default is address(a) eg: -E a,0x00000000,0x00001000, -E p,1,4 -w Write -v Verify (CRC32 check) -r Read -l length Length of read -p port Serial port (default: first USB-like port in /dev) -b baud Baud speed (default: 500000) -a addr Target address -i, --ieee-address addr Set the secondary 64 bit IEEE address --bootloader-active-high Use active high signals to enter bootloader --bootloader-invert-lines Inverts the use of RTS and DTR to enter bootloader -D, --disable-bootloader After finishing, disable the bootloader --version Print script version Examples: ./cc2538-bsl.py -e -w -v example/main.bin ./cc2538-bsl.py -e -w -v --ieee-address 00:12:4b:aa:bb:cc:dd:ee example/main.bin helios@helios64:~/cc2538-bsl$
bleibt nur noch das Problem das der Stick wohl nicht angesprochen wird.
Habe ihn vom Host getrennt, den Button auf dem Board gehalten und wieder verbunden.
Bleibt beim Timeout !?helios@helios64:~/cc2538-bsl$ ll /dev/serial/by-id/ insgesamt 0 lrwxrwxrwx 1 root root 13 Okt 12 20:35 usb-Texas_Instruments_CC2538_USB_CDC-if00 -> ../../ttyACM0
helios@helios64:~/cc2538-bsl$ python3 cc2538-bsl.py -p /dev/ttyACM0 -evw JH_2538_2592_ZNP_USB_20201010.hex Opening port /dev/ttyACM0, baud 500000 Reading data from JH_2538_2592_ZNP_USB_20201010.hex Firmware file: Intel Hex Connecting to target... ERROR: Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)'
Habe ich wohl eine Firmware drauf die nur per JTag geflasht werden kann?
-
@tdcropower
Möglich. Evtl. muss der Stick aber auch noch in einen bestimmten Boot-Mode versetzt werden.
Bei meinem ist das nicht erforderlich, der lauscht immer. -
@thomas-braun vielleicht weiß das @arteck genauer?
Von wann hast du denn deinen Stick erhalten bzw. mit welche Firmware drauf? -
Das ist meiner:
https://slae.sh/projects/cc2652/
Firmware ist (Stand heute) die letzte: 20210708
Die hab ich da halt mit dem besagten python-Skript drauf gebügelt. -
@thomas-braun sagte in CC2538+CC2592 PA Zigbee Stick/Platine:
der Hinweis könnte der Knackpunkt sein...
... Deadly easy programming, thanks to the automatic-bootloader thing! ;) ...
-
Möglich. Das war auch einer der Gründe, warum ich mir den zugelegt habe. Hatte keine Lust da großartig Klimmzüge machen zu müssen.
-
@thomas-braun dann hol ich mir wohl mal einen JTag Programmer und flashe nicht die aktuelle, sondern eine davor und teste erneut, ob das Skript dann funktioniert.
-
ich habe hier noch vom den ESPxxx flashen einen FTDI Programmer (Amazon: AZDelivery FT232RL).
kann man den vielleicht auch zum JTAG flashen verwenden?
Wenn ja, weiß jemand an welche PINs ich ran muss, die JLink PINs kann ich hierfür ja dann nicht verwenden.Habe versucht ihn an RX, TX, GND und VCC anzuschließen aber irgendwie kommt da kein Saft an.
Läuft das Board eigentlich auf 3,3V oder 5V ? -
@tdcropower nein, kannst dafür nicht benutzen.
-
Hallo gibt es neue Firmware das letzte mal habe ich es am 11.2020 beim artec updaten lassen.
Bei mir werden die neuen Aqara Tür Sensoren zwar erkannt aber kein Status,gibt es da Fortschritt? -
@expello said in CC2538+CC2592 PA Zigbee Stick/Platine:
Hi zusammen,
hier eine kurze Rezension!
Ich bin wirklich begeistert, der Stick ist einwandfrei verarbeitet und wurde schnell und sicher geliefert!
Während mein alter Conbee II ab ca. 50 Devices immer wieder Probleme verursacht hat (obwohl er mit bis zu 200 Geräten beworben wird) und ich Stunden um Stunden nach den Fehlern gesucht habe, bin nun nach längerer Recherche zu diesem fantastischen Stück Hardware gelangt. (Für mich ein Rätsel warum hierzu keine kommerziellen Alternativen am Markt angeboten werden).
Mittlerweile sind 86 Devices (IKEA. Aquara, Heiman) per Z2M angemeldet und bis jetzt funktioniert alles einwandfrei, also seit ca. 3 Tagen. Wobei diese 3 Tage für mich schon ein riesen Fortschritt sind, denn der Conbee II hat bereits nach einem Tag völlig verrückt gespielt.
Ich hoffe das hilft dem einen oder anderen, denn ich habe bestimmt 30 Stunden Lebenszeit verballert um mit dem Conbee II eine Lösung zu finden...VERGEBENS!
Ganz lieben Dank an arteck...schön das solche Projekte existieren!
VG
Hallo zusammen,
nach weiteren drei Monaten, kann ich euch sagen, dass der Stick einwandfrei und zuverlässig funktioniert.
Aktuell sind 91 Geräte Angemeldet und ich nutze Zigbee2Mqtt auf einem HA System.Ich bin von diesem Stück Hardware wirklich sehr begeistert...alles läuft zuverlässig und stabil!
-
@exitus said in CC2538+CC2592 PA Zigbee Stick/Platine:
Hallo gibt es neue Firmware das letzte mal habe ich es am 11.2020 beim artec updaten lassen.
Bei mir werden die neuen Aqara Tür Sensoren zwar erkannt aber kein Status,gibt es da Fortschritt?Meinst du die Xiaomi MCCGQ11LM? Die laufen einwandfrei!
Welche nutzt du genau? Typenbezeichnung?
-
@expello MCCGQ14LM die bei mir wird es erkannt habe aber keine Funktion isopen kein state