Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. getState im vis Script

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

getState im vis Script

getState im vis Script

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 3 Posters 928 Views 2 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.
  • M Offline
    M Offline
    mike1429
    wrote on last edited by
    #1

    Hallo,
    als newbie versuche ich im js eines vis Buttons einen Datenpunkt auszulesen.
    Mit getState probiert, no luck.
    Dies bringt den richtigen Wert eines selbstdefinierten DP: var Clima=vis.states.attr('0_userdata.0.AutoStatusClima.val');
    Dies : var Clima=vis.states.attr('bmw.0.xxxxxxxxxx.state.climateControlState.activity.val'); bringt "undefined" (mit oder ohne dem ".val")

    Was mache ich falsch? Wie geht's richtig?
    Besten Dank!

    Ro75R OliverIOO 2 Replies Last reply
    0
    • M mike1429

      Hallo,
      als newbie versuche ich im js eines vis Buttons einen Datenpunkt auszulesen.
      Mit getState probiert, no luck.
      Dies bringt den richtigen Wert eines selbstdefinierten DP: var Clima=vis.states.attr('0_userdata.0.AutoStatusClima.val');
      Dies : var Clima=vis.states.attr('bmw.0.xxxxxxxxxx.state.climateControlState.activity.val'); bringt "undefined" (mit oder ohne dem ".val")

      Was mache ich falsch? Wie geht's richtig?
      Besten Dank!

      Ro75R Online
      Ro75R Online
      Ro75
      wrote on last edited by
      #2

      @mike1429 sagte in getState im vis Script:

      var Clima=vis.states.attr('0_userdata.0.AutoStatusClima.val');

      versuche mal

      var Clima=getState('0_userdata.0.AutoStatusClima').val;
      

      Ro75.

      SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mike1429
        wrote on last edited by
        #3

        @ro75

        Den Wert kann ich ja schon ermitteln, mein Problem ist, wie ich den Wert von 'bmw.0.xxxxxxxxxx.state.climateControlState.activity' auslese.

        1 Reply Last reply
        0
        • M mike1429

          Hallo,
          als newbie versuche ich im js eines vis Buttons einen Datenpunkt auszulesen.
          Mit getState probiert, no luck.
          Dies bringt den richtigen Wert eines selbstdefinierten DP: var Clima=vis.states.attr('0_userdata.0.AutoStatusClima.val');
          Dies : var Clima=vis.states.attr('bmw.0.xxxxxxxxxx.state.climateControlState.activity.val'); bringt "undefined" (mit oder ohne dem ".val")

          Was mache ich falsch? Wie geht's richtig?
          Besten Dank!

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          wrote on last edited by OliverIO
          #4

          @mike1429 sagte in getState im vis Script:

          vis.states.attr('bmw.0.xxxxxxxxxx.state.climateControlState.activity.val');

          du bist schon auf der richtigen fährte.
          allerdings musst du vis dazu bringen, den state auch zu abonnieren. nur dann
          steht da auch ein wert drin

          früher wurden nur alle datenpunkte beim ersten aufruf eines vis-projektes abonniert.
          mittlerweile gibt es wohl auch eine javascript funktion, mit der man nachträglich das auch noch machen kann. die habe ich mir aber noch nicht angeschaut.
          daher der einfachste weg der auch funktioniert ist, du packst irgendwo ein widget hin und trägst dort die object id ein. dann müsste es funktionieren.

          warum willst du diesen wert den auslesen? diese tricks sollten normalerweise nicht notwendig sein, da du für viele usecases auch widgets hast, bei denen du dich da nicht drum kümmern musst

          der vorgeschlagene getStates Befehl gibt es unter vis so direkt nicht.
          Man kann den schon ausführen, ist aber etwas komplitzierter, da man an den server über das connection objekt eine nachricht schicken muss und dann auf dem rückweg den wert erhält (geht auch mit den anderen iobroker befehlen, sollte man sich aber 3x überlegen ob es keinen anderen weg gibt)

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          M 1 Reply Last reply
          0
          • OliverIOO OliverIO

            @mike1429 sagte in getState im vis Script:

            vis.states.attr('bmw.0.xxxxxxxxxx.state.climateControlState.activity.val');

            du bist schon auf der richtigen fährte.
            allerdings musst du vis dazu bringen, den state auch zu abonnieren. nur dann
            steht da auch ein wert drin

            früher wurden nur alle datenpunkte beim ersten aufruf eines vis-projektes abonniert.
            mittlerweile gibt es wohl auch eine javascript funktion, mit der man nachträglich das auch noch machen kann. die habe ich mir aber noch nicht angeschaut.
            daher der einfachste weg der auch funktioniert ist, du packst irgendwo ein widget hin und trägst dort die object id ein. dann müsste es funktionieren.

            warum willst du diesen wert den auslesen? diese tricks sollten normalerweise nicht notwendig sein, da du für viele usecases auch widgets hast, bei denen du dich da nicht drum kümmern musst

            der vorgeschlagene getStates Befehl gibt es unter vis so direkt nicht.
            Man kann den schon ausführen, ist aber etwas komplitzierter, da man an den server über das connection objekt eine nachricht schicken muss und dann auf dem rückweg den wert erhält (geht auch mit den anderen iobroker befehlen, sollte man sich aber 3x überlegen ob es keinen anderen weg gibt)

            M Offline
            M Offline
            mike1429
            wrote on last edited by
            #5

            @oliverio
            Vielen Dank, OliverIO !
            werde das mit dem Widget probieren.

            Warum ich den Weg gehe? Die Idee ist, ein Symbol (Lüfter) für die Standklimatisierung des E-Autos in vis bauen, dass wie folgt reagiert:
            ...Wenn das Symbol grau ist (also Klima aus), drauf klicken um einschalten. Dann wird das Symbol auch rot oder blau (also heizen oder kühlen)
            ...Wenn das Symbol farbig ist, drauf klicken und ausschalten.
            ...Wenn die Klimatisierung über die BMW App ein- oder ausgeschaltet wird, soll das Symbol auch entsprechend gesetzt werden.

            Geht das auch anders?

            OliverIOO 1 Reply Last reply
            0
            • M mike1429

              @oliverio
              Vielen Dank, OliverIO !
              werde das mit dem Widget probieren.

              Warum ich den Weg gehe? Die Idee ist, ein Symbol (Lüfter) für die Standklimatisierung des E-Autos in vis bauen, dass wie folgt reagiert:
              ...Wenn das Symbol grau ist (also Klima aus), drauf klicken um einschalten. Dann wird das Symbol auch rot oder blau (also heizen oder kühlen)
              ...Wenn das Symbol farbig ist, drauf klicken und ausschalten.
              ...Wenn die Klimatisierung über die BMW App ein- oder ausgeschaltet wird, soll das Symbol auch entsprechend gesetzt werden.

              Geht das auch anders?

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              wrote on last edited by
              #6

              @mike1429

              ja das geht auch anders.
              für reinen an/aus knopf mit bild kann man aus den hqwidgets den On/Off Button nehmen.
              Da kannst du direkt ein Bild für Aus definieren.
              Bei an, würde ich dann einen Hilfs-Datenpunkt definieren und im widget diesen Datenpunkt per Binding verbinden.
              In einen skript im javascript-adapter wird dann festgestellt, welches An-Bild da angezeigt werden soll (rot oder blau). Der Dateiname wird dann in diesen Hilfsdatenpunkt geschrieben, das widget bekommt das dann über die bindingkonstruktion mit und aktualisiert das bild im client.

              Woran stellt man fest ob rot oder blau angezeigt werden soll, wenn An?

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              M 1 Reply Last reply
              0
              • OliverIOO OliverIO

                @mike1429

                ja das geht auch anders.
                für reinen an/aus knopf mit bild kann man aus den hqwidgets den On/Off Button nehmen.
                Da kannst du direkt ein Bild für Aus definieren.
                Bei an, würde ich dann einen Hilfs-Datenpunkt definieren und im widget diesen Datenpunkt per Binding verbinden.
                In einen skript im javascript-adapter wird dann festgestellt, welches An-Bild da angezeigt werden soll (rot oder blau). Der Dateiname wird dann in diesen Hilfsdatenpunkt geschrieben, das widget bekommt das dann über die bindingkonstruktion mit und aktualisiert das bild im client.

                Woran stellt man fest ob rot oder blau angezeigt werden soll, wenn An?

                M Offline
                M Offline
                mike1429
                wrote on last edited by
                #7

                @oliverio
                Werde ich auf jeden Fall probieren, wobei es nicht weniger komplex klingt, wie was ich gemacht habe.
                Rot ist Heizung, Blau Kühlung. Der Wert im 'bmw....activity' steht entweder "INACTIVE", "HEATING" oder "COOLING".
                Eine kleine Komplikation kommt dazu...das Symbol kann auch gelb sein, also neuer Status ans Auto gesendet, noch nicht bestätigt.
                Passt so OliverIO, hab was dazu gelert, danke!

                OliverIOO 1 Reply Last reply
                0
                • M mike1429

                  @oliverio
                  Werde ich auf jeden Fall probieren, wobei es nicht weniger komplex klingt, wie was ich gemacht habe.
                  Rot ist Heizung, Blau Kühlung. Der Wert im 'bmw....activity' steht entweder "INACTIVE", "HEATING" oder "COOLING".
                  Eine kleine Komplikation kommt dazu...das Symbol kann auch gelb sein, also neuer Status ans Auto gesendet, noch nicht bestätigt.
                  Passt so OliverIO, hab was dazu gelert, danke!

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  wrote on last edited by OliverIO
                  #8

                  @mike1429

                  ok, dann musst du im javascript diese verschiedenen zustände auswerten und den richtigen bildnamen in den datenpunkt reinschreiben.
                  bei dem gelben symbol müsstest du wahrscheinlich noch die ack-information des datenpunktes auswerten. false=wert ist gesetzt aber noch nicht bestätigt, true=wert wurde gesetzt und durch den adapter/bzw des eigentlichen gerätes bestätigt.

                  das mag zwar gleich komplex sein, aber es ist der vis-Weg.
                  Der vis-weg sollte für die zukunft auch noch möglich sein.
                  die javascript-funktionen mit vis.states.attr sind sozusagen inoffiziell und nicht dokumentiert. d.h. es besteht in zukunft keine garantie, das es so bleibt.

                  aktuell wird vis2 entwickelt. vis2 verwendet react, also ein komplett anderes framework. man hat glück, das eine kleine kompatibilitätsschicht eingefügt wurde, so das vis1 dinge noch funktionieren, aber es hätte auch anders kommen können.

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  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

                  602

                  Online

                  32.4k

                  Users

                  81.3k

                  Topics

                  1.3m

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

                  • Don't have an account? Register

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