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. Visualization
  4. getting started with visualisations

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

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

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

getting started with visualisations

Scheduled Pinned Locked Moved Visualization
vis
43 Posts 4 Posters 6.4k Views 4 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.
  • BluefoxB Bluefox

    @Taragorm I do it like this.

    My folder structure is like this one:

    /opt/iobroker
            iobroker.my-new-adapter
            node_modules
                   ...
                   iobroker.js-controle
                   iobroker.xxxx
                   ...
    

    Then I install my new adapter by writing npm i iobroker.my-new-adapter in /opt/iobroker.
    As result the npm creates a sym-link to my developer folder:

    /opt/iobroker
            iobroker.my-new-adapter
            node_modules
                   ...
                   iobroker.js-controle
                   iobroker.my-new-adapter (symlink)
                   iobroker.xxxx
                   ...
    

    after that I develop my adapter as usual in /opt/iobroker/iobroker.my-new-adapter even as a git repo.

    after every change I write iobroker r vis && iobroker u vis This should work 100%.

    Additionally I can write iobroker visdebug my-new-adapter and if I see the output
    Disable cache I restart the iobroker (only for the first time).

    After that I can directly modify the file /opt/iobroker/iobroker-data/files/vis/widgets/my-new-adapter.html and after every browser refresh it will be loaded anew from disk. So you can fast see your changes.

    But, the changes in /opt/iobroker/iobroker-data/files/vis/widgets/my-new-adapter.html must be copied to /opt/iobroker/iobroker.my-new-adapter/widgets/ manually and you may not call iobroker u vis till you do that, else they will be overwritten

    T Offline
    T Offline
    Taragorm
    wrote on last edited by
    #27

    @Bluefox said in getting started with visualisations:

    @Taragorm I do it like this.

    My folder structure is like this one:

    /opt/iobroker
            iobroker.my-new-adapter
            node_modules
                   ...
                   iobroker.js-controle
                   iobroker.xxxx
                   ...
    

    Then I install my new adapter by writing npm i iobroker.my-new-adapter in /opt/iobroker.
    As result the npm creates a sym-link to my developer folder:

    /opt/iobroker
            iobroker.my-new-adapter
            node_modules
                   ...
                   iobroker.js-controle
                   iobroker.my-new-adapter (symlink)
                   iobroker.xxxx
                   ...
    

    after that I develop my adapter as usual in /opt/iobroker/iobroker.my-new-adapter even as a git repo.

    after every change I write iobroker r vis && iobroker u vis This should work 100%.

    Additionally I can write iobroker visdebug my-new-adapter and if I see the output
    Disable cache I restart the iobroker (only for the first time).

    After that I can directly modify the file /opt/iobroker/iobroker-data/files/vis/widgets/my-new-adapter.html and after every browser refresh it will be loaded anew from disk. So you can fast see your changes.

    But, the changes in /opt/iobroker/iobroker-data/files/vis/widgets/my-new-adapter.html must be copied to /opt/iobroker/iobroker.my-new-adapter/widgets/ manually and you may not call iobroker u vis till you do that, else they will be overwritten

    ...and I have also set my environment up like this.

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #28

      Please set here the names without vis-
      1946c1e7-29c2-4a4a-b13d-2f7d13e26c22-image.png

      1 Reply Last reply
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        wrote on last edited by
        #29

        And you may not change class.
        a29115fc-9bf9-47e9-b033-cba03ec1fd78-image.png

        1 Reply Last reply
        0
        • T Offline
          T Offline
          Taragorm
          wrote on last edited by
          #30

          thanks, will do

          1 Reply Last reply
          0
          • T Offline
            T Offline
            Taragorm
            wrote on last edited by
            #31

            It's showing in the toolbox now - many thanks!

            1 Reply Last reply
            0
            • T Offline
              T Offline
              Taragorm
              wrote on last edited by
              #32

              Much progress, but another small issue.

              My visualisation shows values ok in the edit dialog.

              In the normal view, it shows the "undefined" value... unless the value is used by a different widget.

              This suggests I've done something wrong in binding, but as far as I can see, I've done pretty much what the template does.

              Have I missed something out? It feels like whatever code that populates vis.states[] hasn't been invoked correctly. (i.e. the view seems to be unaware of the points I'm asking for).

              1 Reply Last reply
              0
              • T Offline
                T Offline
                Taragorm
                wrote on last edited by
                #33

                ps: Changed the repo to: https://github.com/Taragorm/ioBroker.vistaragorm

                BluefoxB 1 Reply Last reply
                0
                • T Taragorm

                  ps: Changed the repo to: https://github.com/Taragorm/ioBroker.vistaragorm

                  BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  wrote on last edited by Bluefox
                  #34

                  @Taragorm It can be, that I forgot to describe, that all ObjectID Variables Names must start with "oid..." or end with "...oid" or "...oidN" (N is any number from 0 to 99)

                  Please use following files, that work:
                  vistaragorm.js
                  vistaragorm.html

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    Taragorm
                    wrote on last edited by
                    #35

                    Ah, that would be it then - I may have missed it.

                    I assumed that the /id type in the attr declaration was what did it.

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      Taragorm
                      wrote on last edited by
                      #36

                      That works nicely, thanks.

                      Out of curiosity, is there any way to force subscription?

                      I have a case where I have mutiple values on a sensor, and I'd like to be able to just specify the sensor oid for the widget, and have the implementation figure out the values.

                      e.g. I have
                      foo.bah.x
                      foo.bah.y
                      foo.bah.z

                      .. I'd like to only have to supply an oid of foo.bah - the widget can add .x, .y etc as those are fixed.

                      or does supplying an oid = "foo.bah" create a subscription for changes of all children too?

                      BluefoxB 1 Reply Last reply
                      0
                      • T Offline
                        T Offline
                        Taragorm
                        wrote on last edited by
                        #37

                        In case it's not obvious, I'd like a widget to be able to generate oids based on, or relative to, an oid in an attribute, and have the object correctly added to the widget/view so I can get data from it.

                        Surely there must be a way to do this?

                        BluefoxB 1 Reply Last reply
                        0
                        • T Taragorm

                          In case it's not obvious, I'd like a widget to be able to generate oids based on, or relative to, an oid in an attribute, and have the object correctly added to the widget/view so I can get data from it.

                          Surely there must be a way to do this?

                          BluefoxB Offline
                          BluefoxB Offline
                          Bluefox
                          wrote on last edited by
                          #38

                          @Taragorm I must check it

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            Taragorm
                            wrote on last edited by
                            #39

                            Appreciated

                            1 Reply Last reply
                            0
                            • T Taragorm

                              That works nicely, thanks.

                              Out of curiosity, is there any way to force subscription?

                              I have a case where I have mutiple values on a sensor, and I'd like to be able to just specify the sensor oid for the widget, and have the implementation figure out the values.

                              e.g. I have
                              foo.bah.x
                              foo.bah.y
                              foo.bah.z

                              .. I'd like to only have to supply an oid of foo.bah - the widget can add .x, .y etc as those are fixed.

                              or does supplying an oid = "foo.bah" create a subscription for changes of all children too?

                              BluefoxB Offline
                              BluefoxB Offline
                              Bluefox
                              wrote on last edited by
                              #40

                              @Taragorm Now I understand, what you want.
                              The solution is to provide all OIDs during configuration. You can see the example:

                              • https://github.com/ioBroker/ioBroker.vis-hqwidgets/blob/master/widgets/hqwidgets.html#L61
                              • https://github.com/ioBroker/ioBroker.vis-hqwidgets/blob/master/widgets/hqwidgets/js/hqwidgets.js#L3069

                              If your first OID is changed, the defined function (in example vis.binds.hqwidgets.changedButtonId) will be called and you can define other fields there with desired OIDs.

                              1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                Taragorm
                                wrote on last edited by
                                #41

                                Thanks- that solves the problem!

                                1 Reply Last reply
                                1
                                • G Offline
                                  G Offline
                                  goodDay14
                                  wrote on last edited by goodDay14
                                  #42

                                  That works nicely, thanks.
                                  Out of curiosity, is there any way to force subscription?
                                  I have a case where I have mutiple values on a sensor, and I'd like to be able to just specify auto clicker wordunscrambler jumblesolver

                                  the sensor oid for the widget, and have the implementation figure out the values.

                                  1 Reply Last reply
                                  0
                                  • BluefoxB Bluefox

                                    @Taragorm Have you seen that? https://github.com/ioBroker/ioBroker/wiki/How-to-debug-vis-and-to-write-own-widget-set

                                    S Offline
                                    S Offline
                                    sonusfaber
                                    wrote on last edited by
                                    #43

                                    @Bluefox I do struggle with the following instruction:
                                    "replace index.html and edit.html replace files in /opt/iobroker/iobroker-data/files/vis/index.html and edit.html with files from /opt/iobroker/node_modules/iobroker.vis/www/index.html.original and edit.html.original. Change the file /opt/iobroker/iobroker-data/files/vis/cache.manifest. No matter what, just one symbol to trigger the browser to load files anew. The files must be smaller than 200k. If you have got wrong files, so they are definitly largen than 400k."

                                    I understood ..
                                    Replace the following two files /opt/iobroker/iobroker-data/files/vis/index.html & /opt/iobroker/iobroker-data/files/vis/edit.html with
                                    /opt/iobroker/node_modules/iobroker.vis/www/index.html.original and /opt/iobroker/node_modules/iobroker.vis/www/edit.html.original.

                                    in other words..
                                    cp /opt/iobroker/node_modules/iobroker.vis/www/index.html.original /opt/iobroker/iobroker-data/files/vis/index.html
                                    cp /opt/iobroker/node_modules/iobroker.vis/www/edit.html.original /opt/iobroker/iobroker-data/files/vis/edit.html

                                    Is this correct ?

                                    If yes, in my installation
                                    /opt/iobroker/node_modules/iobroker.vis/www/index.html.original and /opt/iobroker/node_modules/iobroker.vis/www/edit.html.original do not exist!

                                    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

                                    539

                                    Online

                                    32.5k

                                    Users

                                    81.7k

                                    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