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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. English
  3. ioBroker general
  4. How to replace null with 0 using alias-manager

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

How to replace null with 0 using alias-manager

Scheduled Pinned Locked Moved ioBroker general
25 Posts 9 Posters 3.5k Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Tomasz NowakT Tomasz Nowak

    I've never used Javascript in ioBroker, but I have installed Javascript adapter now, created that channel and object under 0_userdata.0 and......
    WOW, it works as it should !!!!!!!!!!!!
    I get 26 and 24 values on 1- and 2-click and then the objects turns to 0. And it works with mqtt-client putting it to the broker just fine:

    9be4e581-c53e-4147-a0ce-0a7deb513310-image.png

    Thank you @paul53 for this quick solution! 🙌

    I hope mqtt-client (and probably zwave2) adapters will be address with this issue in the future, but for now I may switch my lights again!

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

    @tomasz-nowak sagte in How to replace null with 0 using alias-manager:

    and probably zwave2

    I can only repeat myself: This is not a problem in zwave2. It just uses the expire feature for states which mqtt-client doesn't handle correctly.

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

    Tomasz NowakT paul53P 2 Replies Last reply
    1
    • AlCalzoneA AlCalzone

      @tomasz-nowak sagte in How to replace null with 0 using alias-manager:

      and probably zwave2

      I can only repeat myself: This is not a problem in zwave2. It just uses the expire feature for states which mqtt-client doesn't handle correctly.

      Tomasz NowakT Offline
      Tomasz NowakT Offline
      Tomasz Nowak
      wrote on last edited by Tomasz Nowak
      #22

      Yes, that's true.

      And for the record, this issue (with Fibaro sceneId) is totally solved with two PR's to mqtt-client adapter proposed by @AlCalzone (#46 & #47) and merged by @apollon77

      You guys are amazing!

      1 Reply Last reply
      1
      • AlCalzoneA AlCalzone

        @tomasz-nowak sagte in How to replace null with 0 using alias-manager:

        and probably zwave2

        I can only repeat myself: This is not a problem in zwave2. It just uses the expire feature for states which mqtt-client doesn't handle correctly.

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #23

        @alcalzone sagte: It just uses the expire feature for states

        Wozu ist ein Datenpunkt ohne Zustand gut? Bringt es irgend einen Vorteil, state.expire zu nutzen?

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        AlCalzoneA apollon77A 2 Replies Last reply
        0
        • paul53P paul53

          @alcalzone sagte: It just uses the expire feature for states

          Wozu ist ein Datenpunkt ohne Zustand gut? Bringt es irgend einen Vorteil, state.expire zu nutzen?

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

          @paul53 Im vorliegenden Fall handelt es sich um Events, die eigentlich nur exakt in dem Moment, in dem sie empfangen werden, eine Bedeutung haben (z.B. kurzer Knopfdruck). Damit man trotzdem sowohl darauf reagieren kann, als auch im Admin etwas sieht, habe ich mich entschieden, diese für jeweils 1 Sekunde im State zu speichern.

          Expire macht diese Funktion recht praktisch, weil sich ioBroker bzw. die Datenbank dann ums Timeout kümmert und man nicht selbst jeden State tracken muss.
          Das Zurücksetzen funktioniert so auch dann noch, wenn innerhalb der Sekunde der Adapter beendet wird.

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

          1 Reply Last reply
          0
          • paul53P paul53

            @alcalzone sagte: It just uses the expire feature for states

            Wozu ist ein Datenpunkt ohne Zustand gut? Bringt es irgend einen Vorteil, state.expire zu nutzen?

            apollon77A Offline
            apollon77A Offline
            apollon77
            wrote on last edited by
            #25

            @paul53 Naja Formal ist es ein Unterschied (auf einer reinen Datenebene) ob ein State einen Wert hat - und ja formal ist auch "null" ein Wert der eine spezifische Bedeutung haben kann. Damit braucht es eine Abgrenzung zu "es ist kein Wert da" und das ist genau der Fall hier.

            Auch das zurücksetzen von Werten (einige Adapter machen bei "Button" States die an sich immer nur auf true getriggert werden extra timeouts damit der Button wieder auf false zurückgesetzt wird (weil User das gern in Visus so haben wollen ... no offense ;-) ) Wenn aber jetzt der Adapter beendet wird oder das Skript nicht mehr läuft bleibt das halt auf true stehen.

            Mit expires kann du den Wert automatisiert "clearen" weil das in der Verantwortung der Datenbank liegt (File-DB bzw Redis sorgt dafür)

            Mit expires kann man auch durchaus Überwachungen bauen. Zum Beispiel funktionieren die wie system.adapter.alive so, dass diese alle 15s neu gesetzt werden mit einem expire von 30s oder so. So lange also der prozess läuft expired das nie weil es immer neu gesetzt wird.
            Wenn jetzt der Adater komisch hängenbleibt, sodass er nicht crasht aber auch nicht regelmässig alive setzen kann wird der state expiren ... das registriert der Controller und reragiert durch kill des prozesses und neustart ...

            Also es gibt durchaus sinnvolle Anwendungsformen.

            Die die @AlCalzone beschrieben hat könnte man für alle buttons nutzen (wenn es mit alles visus und der User erwartung kompatibel wäre ;-) )

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            709

            Online

            32.5k

            Users

            81.6k

            Topics

            1.3m

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

            • Don't have an account? Register

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