Jump to content

piwo2

Members
  • Gesamte Inhalte

    18
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von piwo2

  1. folgende pip-warnung exisitert (schon länger) :

    DEPRECATION: Loading egg at /usr/local/lib/python3.12/site-packages/tinkerforge-2.1.31-py3.12.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..

    könnt ihr euch das mal ansehen ?
    lg w

  2. gibt es irgendwann trixie ode bleibt es bei bookworm ?

    danke & lg w

     

    p.s. .gpg ist deprecated

    statt

    wget https://download.tinkerforge.com/apt/$(. /etc/os-release; echo $ID)/tinkerforge.gpg -q -O - | sudo tee /etc/apt/trusted.gpg.d/tinkerforge.gpg > /dev/null

    konvertieren in .asc

    wget -qO /tmp/tinkerforge.gpg https://download.tinkerforge.com/apt/debian/tinkerforge.gpg
    gpg  --keyring /tmp/temp.gpg  --no-default-keyring --import  /tmp/tinkerforge.gpg
    gpg  --keyring /tmp/temp.gpg  --no-default-keyring  --export -a | sudo tee /etc/apt/trusted.gpg.d/tinkerforge.asc >/dev/null
    rm -f /tmp/tinkerforge.gpg /tmp/temp.gpg

    ... oder als intelligenter einzeiler falls das möglich ist, was ich nicht glaube

    ... oder gleich zusätzlich ein tinkerforge.asc deployen ?

    • Thanks 1
  3. dies wird beim installationsprozess automatisch gemacht, wenn man den "normalen" user als admin deklariert ...

    mag heissen, member von dialout ist der fall ...

    [rotten@vlap-wp ~]$ grep dialout /etc/group
    dialout:x:18:rotten

    der /dev/ACM1 (oder wie er auch immer heisst, nagel mich nicht fest) der das flash-device unter fedora ist, spielt offensichtlich beim dialout nicht mit
    tty* schon ...

    genügt das ?

  4. ok. funkt.

    kleine frage noch :

    ich sehe schon länger, dass ein "sudo brickv" offensichtlich eine andere gui erzeugt als "brickv".
    die fehlende
    XDG_RUNTIME_DIR mittels "sudo XDG_RUNTIME_DIR=/run/user/0 brickv" zu spezifizieren ändert nichts ....

    darüber hinaus wirft "brickv" bei mir folgenden fehler :

    "qt.qpa.qgnomeplatform.theme: The desktop style for QtQuick Controls 2 applications is not available on the system (qqc2-desktop-style). The application may look broken."
    ..... und so sieht es auch aus : vollkommen unleserlich ....

    würde mich nur grundsätzlich interessieren, wie beides zustande kommt, bzw. ob da mit fedora-37 (cinnamon desktop) was zu tun ist.

    lg wolfgang

  5.  

    no deal - meckert jetzt anders ...

     

    building Debian package
    dpkg-buildpackage: info: source package tinkerforge-brickv
    dpkg-buildpackage: info: source version 2.4.25
    dpkg-buildpackage: info: source distribution stable
    dpkg-buildpackage: info: source changed by Matthias Bolte <matthias@tinkerforge.com>
    dpkg-buildpackage: info: host architecture amd64
     dpkg-source --before-build .
    dpkg-checkbuilddeps: error: Unmet build dependencies: debhelper (>= 10)
    dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
    dpkg-buildpackage: warning: (Use -d flag to override.)
    Traceback (most recent call last):
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 264, in <module>
        exit_code = main()
                    ^^^^^^
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 252, in main
        build_linux_pkg()
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 141, in build_linux_pkg
        utils.build_debian_pkg()
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg_utils.py", line 206, in build_debian_pkg
        system(['dpkg-buildpackage', '-us', '-uc'], cwd=self.build_data_dest_path)
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg_utils.py", line 33, in system
        subprocess.check_call(command, **kwargs)
      File "/usr/lib64/python3.11/subprocess.py", line 413, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['dpkg-buildpackage', '-us', '-uc']' returned non-zero exit status 3.

    ====================

           patch build_pkg_utils.py <<EOFEOF
    206c206
    <         system(['dpkg-buildpackage', '-us', '-uc'], cwd=self.build_data_dest_path)
    ---
    >         system(['dpkg-buildpackage', '-d', '-us', '-uc'], cwd=self.build_data_dest_path)
    EOFEOF

    d.h. build ohne dependencies : ergebnis :

    building Debian package
    dpkg-buildpackage: info: source package tinkerforge-brickv
    dpkg-buildpackage: info: source version 2.4.25
    dpkg-buildpackage: info: source distribution stable
    dpkg-buildpackage: info: source changed by Matthias Bolte <matthias@tinkerforge.com>
    dpkg-buildpackage: info: host architecture amd64
     dpkg-source --before-build .
     fakeroot debian/rules clean
    dh clean
    dh: error: Please specify the compatibility level in debian/compat or via Build-Depends: debhelper-compat (= X)
    make: *** [debian/rules:4: clean] Fehler 255
    dpkg-buildpackage: error: fakeroot debian/rules clean subprocess returned exit status 2
    Traceback (most recent call last):
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 264, in <module>
        exit_code = main()
                    ^^^^^^
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 252, in main
        build_linux_pkg()
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 141, in build_linux_pkg
        utils.build_debian_pkg()
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg_utils.py", line 206, in build_debian_pkg
        system(['dpkg-buildpackage', '-d', '-us', '-uc'], cwd=self.build_data_dest_path)
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg_utils.py", line 33, in system
        subprocess.check_call(command, **kwargs)
      File "/usr/lib64/python3.11/subprocess.py", line 413, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['dpkg-buildpackage', '-d', '-us', '-uc']' returned non-zero exit status 2.

     

  6. bisher habe ich den brickv ohne probleme bauen können

    jezt :

    # dpkg-deb -x ${k}_all.deb deb

    building Debian package
    dpkg-buildpackage: info: source package tinkerforge-brickv
    dpkg-buildpackage: info: source version 2.4.25
    dpkg-buildpackage: info: source distribution stable
    dpkg-buildpackage: info: source changed by Matthias Bolte <matthias@tinkerforge.com>
    dpkg-buildpackage: info: host architecture amd64
     dpkg-source --before-build .
    dpkg-checkbuilddeps: error: Unmet build dependencies: debhelper-compat (= 10)
    dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
    dpkg-buildpackage: warning: (Use -d flag to override.)
    Traceback (most recent call last):
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 264, in <module>
        exit_code = main()
                    ^^^^^^
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 252, in main
        build_linux_pkg()
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg.py", line 141, in build_linux_pkg
        utils.build_debian_pkg()
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg_utils.py", line 206, in build_debian_pkg
        system(['dpkg-buildpackage', '-us', '-uc'], cwd=self.build_data_dest_path)
      File "/home/rotten/TRPM/brickv-2.4.25/src/build_pkg_utils.py", line 33, in system
        subprocess.check_call(command, **kwargs)
      File "/usr/lib64/python3.11/subprocess.py", line 413, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['dpkg-buildpackage', '-us', '-uc']' returned non-zero exit status 3.

    -------------------

    FEDORA 37 scheint keine dbhelper-compat zu haben

    mein bisheriger trick, eure deb mittels debian-tools zu kompilieren und dann anschliessend die binaries "rauszuziehen"

    instf=( lib/udev/rules.d/99-tinkerforge-brickv.rules usr/bin/brickv usr/share/applications/brickv.desktop usr/share/pixmaps/brickv-icon.png )
            instd=( usr/share/brickv )
            for i in "${instf[@]}" ; do [ -f "deb/$i" ] || continue ; ii="$(dirname "$i")" ; [ -d "/$ii" ] || continue ; done
            for i in "${instd[@]}" ; do [ -d "deb/$i" ] || continue ; ii="$(dirname "$i")" ; [ -d "/$ii" ] || continue ; done
            for i in "${instf[@]}" ; do ii="$(dirname "$i")"
              echo cp "deb/$i" "/$ii" ; sudo cp "deb/$i" "/$ii" ; done
            for i in "${instd[@]}" ; do ii="$(dirname "$i")"
              if [ -d "/$i" ] ; then echo rm "/$i" ; sudo rm -rf "/$i" ; fi
              echo cp "deb/$i" "/$ii" ; sudo cp -r "deb/$i" "/$ii" ; done

    schlägt fehl ....

    entweder bitte diese expliziten dependencies mit -d irgendwie managbar machen, oder bitte für fedora / redhat mal eine gute anleitung zum build from source - nicht über dpkg -

    ICH MÖCHTE NICHT BETONEN, WIE SEHR ICH DEN BRICKV BRAUCHE, NACHDEM ICH DIE AKTUELLE (ALTE) VERSION NICHT MEHR HABE ...

  7. ... nur weil ichs wieder einmal dynamisch arbeite und den leidigen vollständigen import von allen tinkerforge-modulen nicht wirklich mehr will :
    --- statt statisch in main.py als "required header":

    from tinkerforge.bricklet_temperature import BrickletTemperature

    --- dynamisch, d.h. vor verwendung nach bedarf :


    # load with str
    from importlib import import_module
    mod = import_module("tinkerforge.bricklet_temperature")
    cls = getattr(mod,"BrickletTemperature")

    ---

    print(' \n'.join([ v for v in vars(cls).keys() if v.lower()==v and not v[0]=="_" ]))
    get_temperature
    set_temperature_callback_period
    get_temperature_callback_period
    set_temperature_callback_threshold
    get_temperature_callback_threshold
    set_debounce_period
    get_debounce_period
    set_i2c_mode
    get_i2c_mode
    get_identity
    register_callback

    ---

    sonstige verdächtige zur praktischen nutzung nich nur beim enumerate() ...

    cls.DEVICE_IDENTIFIER
    cls.DEVICE_DISPLAY_NAME

    ---

    obj = cls(ipconn,uid)
    ...

    ---

    btw. wann kommt endlich ein python3.11 brickd der auf generatorbasis (aka "async") läuft, damit der moloch endlich taskfrei und sauber neu geschfieben wird ? ;-)
    so schöne sachen gibts auch neu dazu : dataclasses, ....  - hm ? ... und bitte mal endlich die callbackhölle verlassen können, es gibt elaboriertere dinge für eventbasierte saubere läsungen als eie queue und aus den fugen krachenden code da drumherum, der sie notdürftig zusammenflickt ...
    ab und zu träume ich von einem wunderbaren dict() aus weakrefs das von einem automaischen enumerate und auto-reconnects im hintergrund gepflegt wird, aus dem man sich dann das rausholt, was man braucht....

    auf den brick-devices kann ja von mir aus laufen, was will, aber in der grossen weiten welt des pythonischen ... wär mal eine grundlegende renovierung from scratch eine echt geniale sache ...
    was bleibt is ein moloch, den ich schon von den verschiedensten seiten her versucht habe, eleganter zu verwenden.
    was halt bleibt sind die harten fakten einer api, die wie ein stein im magen liegt und eben unverdaulich ist ...
    die offenischtliche openhab-tragödie spricht ja auch bände, wie hart der stein wohl ist ...

    keine sorge, bin schon wieder still
    für die paar automationssachen ist polling mit grossen zyklenzeiten durchaus ausreichend
    und fürs autoladen auch. wer braucht schon eine gute api .................. ;-)

    lg

  8. hallo !

    ich habe mal was codiert für aout als 0..10V ansteuerung für eine kachelofenheizung, der massiv mit ptc-bricklets gemonitort wird
    (code ohne alle gewähr !!!!)

    was man verantwortungsvollerweise ALLENFALLS machen muss : watchdogs einbauen für ALLE EVENTUALITÄTEN dass das programm oder ein teil "stirbt" !!!

    (d.h. den aout in serie mit relay-bricklets schalten, sodass der leistungssteller sicher stromlos gesetzt wird)

     

     

  9. tinkerforge_openhab_bindings_2_0_0_beta9.zip       24-Sep-2019 15:06             3566354

    liebe leute ...

    sosehr ich die nöte einer wallbox-opportunity die eier legt sehe, möchte ich auch drauf hinweisen, dass das tinkerforge-ecosystem aus viel und teuerer brick/bricklet-hardware besteht, das auch ein bisschen was vertragen könnte :

    ich erwarte sehnlichst eine definitive openhab (3/2???) integration samt definitiver installationsanleitung wo dieser bereich endlich aus den tiefen aufsteigt und auch für normalsterbliche verwendbar ...

    eine ETA die halbwegs haltbar ist und nicht "mal sehen" wäre da auch glaube ich nichts, was einer zumutung gleichkäme, denke ich

    danke für das verständnis & die aufwände
    wp

  10. ok.

    kleine frage :

    warum wird dann der request des callbacks des bricklets honoriert (d.h. callback-responses treten erneut auf) ?

    "Überlebt" der callback des temperature bricklets (und die bricklet-callbacks antworten wieder weil noch aktiv oder wieder aktiviert oder noch nicht deaktiviert) oder wird nur der enumerate-callback quasi "vergessen" ?

    (edit:)
    ok. es wurde nur der enumerate-request nicht erneut abgesetzt, und ein erneutes enumerate beim start der bindings fehlt dann .... aber soweit ich gesehen habe erfolgt doch ein enumerate beim start der bindings ...

    (edit2:)
    ich habe auch die these, dass die callbacks ja in den bricks ablaufen und nur die mqtt-bridge das vermittelt.
    d.h. wenn es kein disconnect gibt, läuft alles wie gehabt beim reconnect zum mqtt-broker ... ein RESET topic ist also KEIN echtes reset.
    was wäre dann ein echtes RESET-topic ? mqtt-disconnect UND ipconn.disconnect ?
    fragen über fragen. und wie wäre das in eine einheitliche status-maschine zu bringen ?

    (edit3:)

    ich habe ein problem, eine definitve entscheigungsgrundlage zu haben, wann die bricks/bricklets WIRKLICH neu konfiguriert werden müsen :
    wenn es nicht im int-file erfolgt.

    szenarien:
    mqtt-disconnect, ipconn-disconnect -> konfiguration verloren, aber keine entscheidungsgrundlage weil nicht in den topics erkennbar
    nur mqtt-disconnect : gab es einen ipconn-disconnect ? -> siehe oben
    nur ipconn-disconnect : ist der brickd wohin connected wurde noch intakt ? -> siehe oben

    warum : es gibt ja auch stateless bricklets wo man intern den "status" behalten muss bzw. wiederherstellen wie das remote switch bricklet, weil man da gar keinen status abfragen kann ... oder NC-digital-outs die bei reinitialisierungen mal ein bisschen lang offen sein könnten ...
    die sind dann besonders kritisch, vor allem wenn ein impliziter state-change umd sie zu initialisieren recht unangenehm werden kann (sierenen heulen, lichter blinken, womöglich gibts einen disconnect bei der initialen herstellung .... ohgott ...)

    d.h. die reinitialisierung des brickd hat absoluten vorrang, am besten von der mqtt-bridge aus bei disconnects ! den einzigen gau, den ich akzeptiere ist der stromverlust auf den bricks/bricklets bzw. tod des brickd, denn "kritische" NC sind sowieso mit 2 NO ausgängen & beschaltung auch im stromlosen zustand  gewährleistet ;-)
    aber wie soll das automatisiert wiederherstellbar bzw. konsistent erkennbar sein ??? stromversorgung über spezielle bricklets aus/ein (habe ich auch schon für notfälle über parallen/unabhängigen brickd *ggg*) ???

    bitte um kurze erklärung ;-) bzw. best-practice und ausblick, worauf ich mich gefasst machen sollte ;-)

     

  11. --init-file

    {
        "pre_connect": {
            "tinkerforge/register/ip_connection/connected": {"register": true},
            "tinkerforge/register/ip_connection/disconnected": {"register": true},
            "tinkerforge/register/ip_connection/enumerate": {"register": true}
        },
        "post_connect": {
            "tinkerforge/request/ip_connection/enumerate": "",
            "tinkerforge/request/temperature_bricklet/siX/set_temperature_callback_period": {"period":10000},
            "tinkerforge/register/temperature_bricklet/siX/temperature": {"register": true}
        }
    }

    SZENARIO1 : start tinkerforge_mqtt, start mosquitto, stop mosquitto, wait, start mosquitto

    !!! beim wieder-connecten zum mqtt-broker wird die enumeration NICHT durchgeführt (die befehle f.d. temperature-bricklets aber DOCH !!!

    mosquitto log

    [rotten@vlap ~]$ mosquitto -v 2>&1 | awk '(($3~"^PUB")||($3~"^SUB")){print;i=1;next}(i>0){i=0;print}'
    1608665630: Received SUBSCRIBE from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34
    1608665630: 	tinkerforge/request/# (QoS 0)
    1608665630: Sending SUBACK to auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34
    1608665630: Received SUBSCRIBE from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34
    1608665630: 	tinkerforge/register/# (QoS 0)
    1608665630: Sending SUBACK to auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/bindings/restart', ... (4 bytes))
    1608665630: Received SUBSCRIBE from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34
    1608665630: 	tinkerforge/callback/bindings/restart (QoS 0)
    1608665630: Sending SUBACK to auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/connected', ... (29 bytes))
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (215 bytes))
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (215 bytes))
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (226 bytes))
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (239 bytes))
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (233 bytes))
    1608665630: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (250 bytes))
    1608665634: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608665655: Received PUBLISH from auto-2EDD88C3-26B4-DD9D-C98C-BEE87E941B34 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    ^C
    [rotten@vlap ~]$ # ... wait some time
    [rotten@vlap ~]$ 
    [rotten@vlap ~]$ mosquitto -v 2>&1 | awk '(($3~"^PUB")||($3~"^SUB")){print;i=1;next}(i>0){i=0;print}'
    1608665696: Received SUBSCRIBE from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    1608665696: 	tinkerforge/request/# (QoS 0)
    1608665696: Sending SUBACK to auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    1608665696: Received SUBSCRIBE from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    1608665696: 	tinkerforge/register/# (QoS 0)
    1608665696: Sending SUBACK to auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    1608665696: Received SUBSCRIBE from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    1608665696: 	tinkerforge/callback/bindings/restart (QoS 0)
    1608665696: Sending SUBACK to auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    1608665709: Received PUBLISH from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608665718: Received PUBLISH from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608665732: Received PUBLISH from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608665733: Received PUBLISH from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/disconnected', ... (32 bytes))
    1608665733: Received PUBLISH from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877 (d0, q0, r0, m0, 'tinkerforge/callback/bindings/shutdown', ... (4 bytes))
    1608665733: Received DISCONNECT from auto-B61BF8CE-693C-6675-FC0E-FA85790E2877
    ^C
    [rotten@vlap ~]$ 

    tinkerforge_mqtt log

    [rotten@vlap-wp tf]$ tinkerforge_mqtt --init-file tf-std.json --ipcon-port 44445 --debug
    2020-12-22 20:33:35,015 <INFO> MQTT bindings: Starting Tinkerforge MQTT bindings 2.0.12
    2020-12-22 20:33:35,015 <DEBUG> MQTT bindings: Configuring connection to MQTT broker at localhost:1883
    2020-12-22 20:33:35,015 <DEBUG> MQTT bindings: Connected to MQTT broker at localhost:1883
    2020-12-22 20:33:35,017 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:33:35,018 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:33:38,022 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:33:38,023 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:33:42,026 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:33:42,026 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:33:50,029 <DEBUG> paho.mqtt.client: Sending CONNECT (u0, p0, wr0, wq0, wf1, c1, k60) client_id=b''
    2020-12-22 20:33:50,029 <DEBUG> paho.mqtt.client: Received CONNACK (0, 0)
    2020-12-22 20:33:50,029 <DEBUG> MQTT bindings: Connected to mqtt broker.
    2020-12-22 20:33:50,029 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m1) [(b'tinkerforge/request/#', 0)]
    2020-12-22 20:33:50,030 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m2) [(b'tinkerforge/register/#', 0)]
    2020-12-22 20:33:50,030 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m3), 'b'tinkerforge/callback/bindings/restart'', ... (4 bytes)
    2020-12-22 20:33:50,030 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m4) [(b'tinkerforge/callback/bindings/restart', 0)]
    2020-12-22 20:33:50,030 <DEBUG> MQTT bindings: 
    
    2020-12-22 20:33:50,031 <DEBUG> MQTT bindings: Registered ip connection callback 0 under topic tinkerforge/callback/ip_connection/connected.
    2020-12-22 20:33:50,031 <DEBUG> MQTT bindings: 
    
    2020-12-22 20:33:50,031 <DEBUG> MQTT bindings: Registered ip connection callback 1 under topic tinkerforge/callback/ip_connection/disconnected.
    2020-12-22 20:33:50,031 <DEBUG> MQTT bindings: 
    
    2020-12-22 20:33:50,031 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 20:33:50,031 <DEBUG> MQTT bindings: Registered ip connection callback 253 under topic tinkerforge/callback/ip_connection/enumerate.
    2020-12-22 20:33:50,032 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 20:33:50,032 <DEBUG> MQTT bindings: Connecting to brickd at localhost:44445
    2020-12-22 20:33:50,032 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 20:33:50,034 <DEBUG> MQTT bindings: Connected to Brick Daemon: Connection established after request from user.
    2020-12-22 20:33:50,034 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m5), 'b'tinkerforge/callback/ip_connection/connected'', ... (29 bytes)
    2020-12-22 20:33:50,034 <DEBUG> MQTT bindings: Connected to brickd at localhost:44445
    2020-12-22 20:33:50,035 <DEBUG> MQTT bindings: 
    
    2020-12-22 20:33:50,035 <DEBUG> MQTT bindings: Enumerating devices.
    2020-12-22 20:33:50,035 <DEBUG> MQTT bindings: 
    
    2020-12-22 20:33:50,035 <DEBUG> MQTT bindings: Calling function set_temperature_callback_period for device siX of type temperature_bricklet.
    2020-12-22 20:33:50,113 <DEBUG> MQTT bindings: Device connected: 2GYM6W at 0 (Pos 0), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 17
    2020-12-22 20:33:50,113 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m6), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (215 bytes)
    2020-12-22 20:33:50,197 <DEBUG> MQTT bindings: Device available: 2GYM6W at 0 (Pos 0), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 17
    2020-12-22 20:33:50,198 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m7), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (215 bytes)
    2020-12-22 20:33:50,199 <DEBUG> MQTT bindings: Device available: 6CPXd6 at 2GYM6W (Pos 1), Hardware: 1.0.0, Firmware: 2.4.9, Dev ID: 13
    2020-12-22 20:33:50,200 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m8), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (226 bytes)
    2020-12-22 20:33:50,200 <DEBUG> MQTT bindings: Device available: siX at 6CPXd6 (Pos b), Hardware: 1.1.0, Firmware: 2.0.4, Dev ID: 216
    2020-12-22 20:33:50,201 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m9), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (239 bytes)
    2020-12-22 20:33:50,202 <DEBUG> MQTT bindings: Device available: qRa at 6CPXd6 (Pos d), Hardware: 1.1.0, Firmware: 2.0.2, Dev ID: 27
    2020-12-22 20:33:50,202 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m10), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (233 bytes)
    2020-12-22 20:33:50,203 <DEBUG> MQTT bindings: Device available: EBH at 6CPXd6 (Pos a), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 289
    2020-12-22 20:33:50,203 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m11), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (250 bytes)
    2020-12-22 20:33:50,235 <DEBUG> MQTT bindings: Calling function set_temperature_callback_period for device siX of type temperature_bricklet succedded.
    2020-12-22 20:33:50,235 <DEBUG> MQTT bindings: 
    
    2020-12-22 20:33:50,235 <DEBUG> MQTT bindings: Registered callback temperature for device siX of type temperature_bricklet. Will publish messages to tinkerforge/callback/temperature_bricklet/siX/temperature.
    2020-12-22 20:33:54,045 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m12), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 20:34:15,549 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m13), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 20:34:26,069 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:34:26,069 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:34:28,073 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:34:28,074 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:34:32,077 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:34:32,078 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:34:40,081 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 20:34:40,082 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 20:34:56,086 <DEBUG> paho.mqtt.client: Sending CONNECT (u0, p0, wr0, wq0, wf1, c1, k60) client_id=b''
    2020-12-22 20:34:56,087 <DEBUG> paho.mqtt.client: Received CONNACK (0, 0)
    2020-12-22 20:34:56,087 <DEBUG> MQTT bindings: Connected to mqtt broker.
    2020-12-22 20:34:56,087 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m17) [(b'tinkerforge/request/#', 0)]
    2020-12-22 20:34:56,088 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m18) [(b'tinkerforge/register/#', 0)]
    2020-12-22 20:34:56,088 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m19) [(b'tinkerforge/callback/bindings/restart', 0)]
    2020-12-22 20:34:56,089 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 20:34:56,090 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 20:34:56,090 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 20:35:09,105 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m20), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 20:35:18,973 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m21), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 20:35:32,555 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m22), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    ^C2020-12-22 20:35:33,687 <DEBUG> MQTT bindings: Disconnecting from brickd and mqtt broker.
    2020-12-22 20:35:33,788 <DEBUG> MQTT bindings: Disconnected from Brick Daemon: Disconnect was requested by user.
    2020-12-22 20:35:33,789 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m23), 'b'tinkerforge/callback/ip_connection/disconnected'', ... (32 bytes)
    2020-12-22 20:35:33,790 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m24), 'b'tinkerforge/callback/bindings/shutdown'', ... (4 bytes)
    2020-12-22 20:35:33,791 <DEBUG> paho.mqtt.client: Sending DISCONNECT
    [rotten@vlap-wp tf]$ 

     

    SZENARIO2 start mosquitto, start tinkerforge_mqtt, connection zu brickd unterbrechen/wiederherstellen : 1. mal "kurz", 2.mal "lang"

    beim wieder-connecten zum brickd wird die enumeration NICHT durchgeführt (die befehle f.d. temperature-bricklets aber DOCH !!!

    mosquitto log

    [rotten@vlap ~]$ mosquitto -v 2>&1 | awk '(($3~"^PUB")||($3~"^SUB")){print;i=1;next}(i>0){i=0;print}'
    1608668265: Received SUBSCRIBE from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668265: 	tinkerforge/request/# (QoS 0)
    1608668265: Sending SUBACK to auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668265: Received SUBSCRIBE from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668265: 	tinkerforge/register/# (QoS 0)
    1608668265: Sending SUBACK to auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/bindings/restart', ... (4 bytes))
    1608668265: Received SUBSCRIBE from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668265: 	tinkerforge/callback/bindings/restart (QoS 0)
    1608668265: Sending SUBACK to auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/connected', ... (29 bytes))
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (215 bytes))
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (215 bytes))
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (226 bytes))
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (239 bytes))
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (233 bytes))
    1608668265: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (250 bytes))
    1608668273: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668283: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668312: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668315: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/disconnected', ... (33 bytes))
    1608668326: Received PINGREQ from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668415: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/connected', ... (36 bytes))
    1608668415: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/enumerate', ... (215 bytes))
    1608668420: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668446: Received PINGREQ from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838
    1608668473: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668483: Received PUBLISH from auto-5B1E6410-87AF-0E4C-3787-DF2D85582838 (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    ^C^
    [rotten@vlap ~]$ mosquitto -v 2>&1 | awk '(($3~"^PUB")||($3~"^SUB")){print;i=1;next}(i>0){i=0;print}'
    1608668528: Received SUBSCRIBE from auto-789C9A36-55FE-8919-8859-89627A21EBCC
    1608668528: 	tinkerforge/request/# (QoS 0)
    1608668528: Sending SUBACK to auto-789C9A36-55FE-8919-8859-89627A21EBCC
    1608668528: Received SUBSCRIBE from auto-789C9A36-55FE-8919-8859-89627A21EBCC
    1608668528: 	tinkerforge/register/# (QoS 0)
    1608668528: Sending SUBACK to auto-789C9A36-55FE-8919-8859-89627A21EBCC
    1608668528: Received SUBSCRIBE from auto-789C9A36-55FE-8919-8859-89627A21EBCC
    1608668528: 	tinkerforge/callback/bindings/restart (QoS 0)
    1608668528: Sending SUBACK to auto-789C9A36-55FE-8919-8859-89627A21EBCC
    1608668534: Received PUBLISH from auto-789C9A36-55FE-8919-8859-89627A21EBCC (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668544: Received PUBLISH from auto-789C9A36-55FE-8919-8859-89627A21EBCC (d0, q0, r0, m0, 'tinkerforge/callback/temperature_bricklet/siX/temperature', ... (21 bytes))
    1608668561: Received PUBLISH from auto-789C9A36-55FE-8919-8859-89627A21EBCC (d0, q0, r0, m0, 'tinkerforge/callback/ip_connection/disconnected', ... (32 bytes))
    1608668561: Received PUBLISH from auto-789C9A36-55FE-8919-8859-89627A21EBCC (d0, q0, r0, m0, 'tinkerforge/callback/bindings/shutdown', ... (4 bytes))
    1608668561: Received DISCONNECT from auto-789C9A36-55FE-8919-8859-89627A21EBCC
    ^C
    [rotten@vlap ~]$ 

    tinkerforge_mqtt log

    [rotten@vlap-wp tf]$ tinkerforge_mqtt --init-file tf-std.json --ipcon-port 44445 --debug
    2020-12-22 21:17:45,851 <INFO> MQTT bindings: Starting Tinkerforge MQTT bindings 2.0.12
    2020-12-22 21:17:45,851 <DEBUG> MQTT bindings: Configuring connection to MQTT broker at localhost:1883
    2020-12-22 21:17:45,851 <DEBUG> MQTT bindings: Connected to MQTT broker at localhost:1883
    2020-12-22 21:17:45,854 <DEBUG> paho.mqtt.client: Sending CONNECT (u0, p0, wr0, wq0, wf1, c1, k60) client_id=b''
    2020-12-22 21:17:45,854 <DEBUG> paho.mqtt.client: Received CONNACK (0, 0)
    2020-12-22 21:17:45,854 <DEBUG> MQTT bindings: Connected to mqtt broker.
    2020-12-22 21:17:45,854 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m1) [(b'tinkerforge/request/#', 0)]
    2020-12-22 21:17:45,854 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m2) [(b'tinkerforge/register/#', 0)]
    2020-12-22 21:17:45,855 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m3), 'b'tinkerforge/callback/bindings/restart'', ... (4 bytes)
    2020-12-22 21:17:45,855 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m4) [(b'tinkerforge/callback/bindings/restart', 0)]
    2020-12-22 21:17:45,855 <DEBUG> MQTT bindings: 
    
    2020-12-22 21:17:45,855 <DEBUG> MQTT bindings: Registered ip connection callback 0 under topic tinkerforge/callback/ip_connection/connected.
    2020-12-22 21:17:45,855 <DEBUG> MQTT bindings: 
    
    2020-12-22 21:17:45,855 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 21:17:45,855 <DEBUG> MQTT bindings: Registered ip connection callback 1 under topic tinkerforge/callback/ip_connection/disconnected.
    2020-12-22 21:17:45,855 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 21:17:45,855 <DEBUG> MQTT bindings: 
    
    2020-12-22 21:17:45,856 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 21:17:45,856 <DEBUG> MQTT bindings: Registered ip connection callback 253 under topic tinkerforge/callback/ip_connection/enumerate.
    2020-12-22 21:17:45,856 <DEBUG> MQTT bindings: Connecting to brickd at localhost:44445
    2020-12-22 21:17:45,857 <DEBUG> MQTT bindings: Connected to Brick Daemon: Connection established after request from user.
    2020-12-22 21:17:45,857 <DEBUG> MQTT bindings: Connected to brickd at localhost:44445
    2020-12-22 21:17:45,857 <DEBUG> MQTT bindings: 
    
    2020-12-22 21:17:45,857 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m5), 'b'tinkerforge/callback/ip_connection/connected'', ... (29 bytes)
    2020-12-22 21:17:45,857 <DEBUG> MQTT bindings: Enumerating devices.
    2020-12-22 21:17:45,857 <DEBUG> MQTT bindings: 
    
    2020-12-22 21:17:45,857 <DEBUG> MQTT bindings: Calling function set_temperature_callback_period for device siX of type temperature_bricklet.
    2020-12-22 21:17:45,937 <DEBUG> MQTT bindings: Device connected: 2GYM6W at 0 (Pos 0), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 17
    2020-12-22 21:17:45,938 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m6), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (215 bytes)
    2020-12-22 21:17:45,970 <DEBUG> MQTT bindings: Device available: 2GYM6W at 0 (Pos 0), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 17
    2020-12-22 21:17:45,971 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m7), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (215 bytes)
    2020-12-22 21:17:45,972 <DEBUG> MQTT bindings: Device available: 6CPXd6 at 2GYM6W (Pos 1), Hardware: 1.0.0, Firmware: 2.4.9, Dev ID: 13
    2020-12-22 21:17:45,972 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m8), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (226 bytes)
    2020-12-22 21:17:45,974 <DEBUG> MQTT bindings: Device available: siX at 6CPXd6 (Pos b), Hardware: 1.1.0, Firmware: 2.0.4, Dev ID: 216
    2020-12-22 21:17:45,974 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m9), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (239 bytes)
    2020-12-22 21:17:45,975 <DEBUG> MQTT bindings: Device available: qRa at 6CPXd6 (Pos d), Hardware: 1.1.0, Firmware: 2.0.2, Dev ID: 27
    2020-12-22 21:17:45,975 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m10), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (233 bytes)
    2020-12-22 21:17:45,976 <DEBUG> MQTT bindings: Device available: EBH at 6CPXd6 (Pos a), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 289
    2020-12-22 21:17:45,976 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m11), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (250 bytes)
    2020-12-22 21:17:46,011 <DEBUG> MQTT bindings: Calling function set_temperature_callback_period for device siX of type temperature_bricklet succedded.
    2020-12-22 21:17:46,012 <DEBUG> MQTT bindings: 
    
    2020-12-22 21:17:46,012 <DEBUG> MQTT bindings: Registered callback temperature for device siX of type temperature_bricklet. Will publish messages to tinkerforge/callback/temperature_bricklet/siX/temperature.
    2020-12-22 21:17:53,550 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m12), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:18:03,483 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m13), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:18:32,770 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m14), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:18:35,085 <DEBUG> MQTT bindings: Disconnected from Brick Daemon: Disconnect initiated by Brick Daemon or WIFI/Ethernet Extension.
    2020-12-22 21:18:35,085 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m15), 'b'tinkerforge/callback/ip_connection/disconnected'', ... (33 bytes)
    2020-12-22 21:18:46,098 <DEBUG> paho.mqtt.client: Sending PINGREQ
    2020-12-22 21:18:46,099 <DEBUG> paho.mqtt.client: Received PINGRESP
    2020-12-22 21:19:46,157 <DEBUG> paho.mqtt.client: Sending PINGREQ
    2020-12-22 21:19:46,158 <DEBUG> paho.mqtt.client: Received PINGRESP
    2020-12-22 21:20:15,063 <DEBUG> MQTT bindings: Connected to Brick Daemon: Connection after auto-reconnect.
    2020-12-22 21:20:15,063 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m16), 'b'tinkerforge/callback/ip_connection/connected'', ... (36 bytes)
    2020-12-22 21:20:15,230 <DEBUG> MQTT bindings: Device connected: 2GYM6W at 0 (Pos 0), Hardware: 1.0.0, Firmware: 2.0.3, Dev ID: 17
    2020-12-22 21:20:15,230 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m17), 'b'tinkerforge/callback/ip_connection/enumerate'', ... (215 bytes)
    2020-12-22 21:20:20,599 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m18), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:20:46,626 <DEBUG> paho.mqtt.client: Sending PINGREQ
    2020-12-22 21:20:46,627 <DEBUG> paho.mqtt.client: Received PINGRESP
    2020-12-22 21:21:13,540 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m19), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:21:23,475 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m20), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:21:38,205 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 21:21:38,205 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 21:21:40,208 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 21:21:40,209 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 21:21:44,211 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 21:21:44,211 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 21:21:52,214 <INFO> MQTT bindings: Could not connect to MQTT Broker. Will retry.
    2020-12-22 21:21:52,215 <DEBUG> paho.mqtt.client: Connection failed, retrying
    2020-12-22 21:22:08,219 <DEBUG> paho.mqtt.client: Sending CONNECT (u0, p0, wr0, wq0, wf1, c1, k60) client_id=b''
    2020-12-22 21:22:08,220 <DEBUG> paho.mqtt.client: Received CONNACK (0, 0)
    2020-12-22 21:22:08,220 <DEBUG> MQTT bindings: Connected to mqtt broker.
    2020-12-22 21:22:08,220 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m21) [(b'tinkerforge/request/#', 0)]
    2020-12-22 21:22:08,221 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m22) [(b'tinkerforge/register/#', 0)]
    2020-12-22 21:22:08,221 <DEBUG> paho.mqtt.client: Sending SUBSCRIBE (d0, m23) [(b'tinkerforge/callback/bindings/restart', 0)]
    2020-12-22 21:22:08,222 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 21:22:08,223 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 21:22:08,223 <DEBUG> paho.mqtt.client: Received SUBACK
    2020-12-22 21:22:14,267 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m24), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    2020-12-22 21:22:24,404 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m25), 'b'tinkerforge/callback/temperature_bricklet/siX/temperature'', ... (21 bytes)
    ^C2020-12-22 21:22:41,761 <DEBUG> MQTT bindings: Disconnecting from brickd and mqtt broker.
    2020-12-22 21:22:41,863 <DEBUG> MQTT bindings: Disconnected from Brick Daemon: Disconnect was requested by user.
    2020-12-22 21:22:41,863 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m26), 'b'tinkerforge/callback/ip_connection/disconnected'', ... (32 bytes)
    2020-12-22 21:22:41,864 <DEBUG> paho.mqtt.client: Sending PUBLISH (d0, q0, r0, m27), 'b'tinkerforge/callback/bindings/shutdown'', ... (4 bytes)
    2020-12-22 21:22:41,865 <DEBUG> paho.mqtt.client: Sending DISCONNECT
    [rotten@vlap-wp tf]$

     

    ALLGREMEIN :

    die funktionelle differenzierung im inti-file (pre_connect, post_connect) ist wirklich eine gute sache !!!

    1) ich würde mir hier noch "verbesserungen" bzw sinnvolle "features" wünschen wie pre_reconnect, post_reconnect, post_disconnect,  ...

    das würde manche sachen erheblich vereinfachen, da man damit die zustansmaschine für ein
     -> mqtt-topic-translation-gateway (an dem ich gerade arbeite)
    <-
    recht nett über 
    message_callback_add() umsetzen könnte

    lg wp

  12. !!!!!!!!!!!!! grossartige nachricht !!!!!!!!!!!!!!!

     

    ich forsche schon seit wochen nach frameworks & deren möglichkeiten, anpassungen/workarounds in richtung tinkerforge UND andere (z.b. ebus, knx) unter einen hut zu bringen ....

    als einziger ansatz ist mir bisher seitens tf der mqtt-proxy via einer eigens zu schreibenden "übersetzungs-middleware" eingefallen ....

     

    eigene bindings würden nun openhab definitiv als integrationsschicht der ersten wahl anbieten !

     

    bin echt gespannt & aufgeregt. endlich nägel mit köpfen.

     

    lg wp

     

  13. hallo !

     

    in meiner sichtwiese sind die bindings wie ein service für höherliegende applikationen !

     

    das hat 2 konsequenzen :

     

    a) das service (bindings) muss theoretisch immer laufen.

     

    dazu müssen sie (bindings) :

     

    1) gestartet und im

     

    a) nicht fatalen fehlerfall restartet werden bis ein retry-count oder timeout erreicht wird : diese aufgabe übernimmt im idealfall der systemd oder ein cron-job

     

    b) fatalen fehlerfall nicht mehr restartet werden

     

    c) muss ich diesen "systemzustand" entweder aus den mqtt-topics der bindings erkennen können oder separate topics im restart-script einbauen, die den zustand dieses "services" für übergeordnete applikationen widerspiegeln

     

    d) dazu muss idealerweise ein (re-)startscript ausreichend informationen von den topics bindings haben

     

    e) sollte eine (re-)startlogik aber in den bindings über "ihre" topics selbst verfügbar sein, bzw. der "systemzustand" auch dort ablesbar sein, so fällt eine externe überwachung über ein (re-)start-script natürlich weg  ...

     

    die state-machine wäre idealerweise so ähnlich wie

     

     

    state=starting, ts_started=<now>, ts_now=<now>

     

    state=running, ts_started=<time of state == starting>, ts_now=<now>

     

    state=retrying, ts_started=..., ts_now=..., retry_count_now=..., time_between_retries=<cmd_line_parameter>, max_retry_count=<cmd_line_parameter>

     

    state=giveup, ts_started=..., ts_now=..., retry_count_now=<same as max_retry_count>, time_between_retries=<cmd_line_parameter>, max_retry_count=<cmd_line_parameter>

     

    ----

     

    beantwortet das die frage ?

     

    nebenbei : warum wird für jeden internen zustand der bindings ein eigener topic mit inhalt "null" genutzt ?

     

    es wäre doch EIN topic mit entsprechdem inhalt ev. besser

    bzw. EIN topic für (re-)start und je EINER für jeden "internen zustand" einer dezidierten komponente :

    z.b. mqtt-status, brickd-status, _ERROR-status ....

     

    lg wp

  14. danke vielmals !

     

    werde das testen mal ...

    mqtt ist für mich das werkzeug derwahl, somit ziemlich zentral ;-)

     

    =============

     

    noch ein paar gedanken .........

     

     

    ich nutze folgedes pattern für

     

    - cronjob oder sonstige endloslogik in einem bash-skript :

     

    sub(topic=PREFIX/status)

    # falls "terminated" (mqtt-proxy abnormales ende) :

    # retry counter bzw. timeout

     

    ## mqtt-proxy start

    pub(qos=2,retained=true,topic="PREFIX/status",data="starting")

     

     

    - im gestarteten programm :

     

    connect(LWT=(qos=2,retained=true,topic="PREFIX/status",data="died"))

    ...

    pub(qos=2,retained=true,topic="PREFIX/status",data="started")

    sub(topic=PREFIX/status)

    pub(qos=2,retained=true,topic="PREFIX/status",data="functional")

    ...

    ...

    # exceptions triggern LWT und

    # sinnvolle statusinformationen werden gepublished :

      pub(qos=2,retained=true,topic="PREFIX/status",data="blah-whatever")

    ...

    ...

    if transient_error:

      pub(qos=2,retained=true,topic="PREFIX/status",data="restartable")

      disconnect() # LWT discard

      exit(1)

    if fatal_error:

      pub(qos=2,retained=true,topic="PREFIX/status",data="fatal")

      disconnect() # LWT discard

      exit(1)

    ...

    ...

    pub(qos=2,retained=true,topic="PREFIX/status",data="done")

    disconnect() # LWT discard

    exit(0) # reguläres programmende

     

    ---

     

    je nach programmstruktur sollte sich mit einem solchen pattern

     

    1) nutzbare informationen für die restartlogik ergeben

     

    2) eine verlässliche (quos=2 !!!) "interne" state-machine implementieren, die über on_message()

     

    nicht nur auf mehrfachen programmstart checkt, sondern auch sonst z.b. den *** "robusten ansatz" der tinkerforge-programme *** umsetzt ;-)

     

    =============

     

    bottom line :

     

    bitte nochmals ein review, das die (externe) restartlogik in die überlegungen miteinbezieht

     

    und : wie wird der MQTT-proxy eigentlich von aussen "regulär beendet" ? SIGTERM ? ... er läuft ja idealerweise endlos ... und KeyboardInterrupt von extern triggern - da bin ich kein spezialist ;-)

     

    lg wp

  15. hallo !

     

    a)

     

    soweit ich der doku und den sourcen von "tinkerforge_mqtt" entnehme, ist es bereits jetzt möglich -> register/ip_connection/disconnected und -> register/ip_connection/connected vorzunehmen ...

     

    -> callback/ip_connection/connected wird am anfang aber explizit nie aufgerufen :

     

    stattdessen ist mit dem initialisierungs-file implizit die einzige möglichkeit gegeben, callbacks zu registrieren bzw. ein anfängliches enumerate anzustossen ...

     

    -> callback/ip_connection/disconnected ist aber z.zt. ebenfalls "seltsam" :

     

    soweit ich sehe, wird dieser callback nur getriggert, falls ein "regulärer" ausstieg via KeyboardInterrupt erfolgt. alle anderen umstände haben "seltsame" dinge zur folge :

     

    (PROBLEM ? BUG? falsch verstanden ?)

     

    wenn ich eine zwischenzeitliche ip-netzwerk-unterbrechung zum brickd simuliere, scheint der disconnect probe thread dies nicht zu erkennen !

     

    selbst wenn ich abseits der zu erwartenden callbacks auch funktionen via -> request/.../get_identity o.ä. absetze, erhalte ich -> response/.../get_identity { '_ERROR' : "Did not receive response for function BLAH in time ..." } ...

     

    aber es erfolgt keinerlei triggern eines -> callback/ip_connection/disconnected !!!

     

    b)

     

    dieses momentane design macht es ausserordentlich mühsam, ein scheitern eines kompletten "stacks" aus erwarteten uid's konsistent zu managen :

     

    jeden topic auf { ..., "_ERROR" : ... } zu prüfen IST mühsam !

     

    es könnte auch einen weiterer "höher" aggregierter topic z.b.

    -> callback/bindings/issue { "type" : ... } eingebaut werden, wo dann von aussen entschieden werden kann, ob es sich um ein potentiell temporäres problem der ip_connection handelt und das wartens auf ein reconnect sinnvoll ist oder eine - permanent fatale - exception auftrat ...

    aufgrund dieser info kann man noch immer entscheiden, ob man mittels z.b. -> request/bindings/terminate ein normales mqtt-disconnect durchführt oder über -> request/bindings/abort und den proxy ohne disconnect mit exit(1) beendet ...

     

    wenn -> callback/ip_connection/connected & -> callback/ip_connection/disconnected arbeiten wie es sein sollte (d.h. von anfang an und der disconnect prober funkt !!!), dann kann eine restartlogik über -> request/bindings/reset_callbacks & -> request/ip_connection/enumerate auch mühelos eingebaut werden ...

     

    wie gesagt :

    es müsste aber auch ein -> request/bindings/terminate beinhalten, wo durch einen sofortigen "normalen" disconnect vom mqtt-proxy ein benutzerdefinierter "last will" verhindert wird

    oder über -> request/bindings/abort mit exit(1) so wie bei fatalen fehlern den proxy einfach beendet und den "last will" triggert ...

     

    vorteile :

     

    sämtliche exceptions die NICHT AUSSCHLIESSLICH connection-bezogen sind und wo man (MIT TIMEOUT ;-) !!!) auf einen reconnect warten kann & sollte, aber auch fatale exceptions werden durch - eventuell von aussen angesteuerte - abnormale termination & benutzerdefinierten last will "von aussen" erkennbar ...

     

    ---

     

    ersuche um gedanken & ev. andere lösungsvorschläge

     

    ziel ist : sinnvolle behandlung von connection-issues auf höher aggregierter topic-ebene, die eine sinnvolle restartlogik erlauben oder eben ein GIVEUP

     

    und : der proxy soll ja auch für eine generelle integration tauglich sein, und nicht nur für fire & forget & warten auf godot ...

×
×
  • Neu erstellen...