Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Switch Widget ID über Variablen Datenpunkt möglich?

NEWS

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

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

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

Switch Widget ID über Variablen Datenpunkt möglich?

Geplant Angeheftet Gesperrt Verschoben Visualisierung
16 Beiträge 4 Kommentatoren 1.0k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • O oFbEQnpoLKKl6mbY5e13

    @jojo58

    Was zumindest theoretisch auch noch ein Ansatz wäre, dass man durch ein Skript das Ziel eines Alias ändert.

    JoJo58J Offline
    JoJo58J Offline
    JoJo58
    schrieb am zuletzt editiert von JoJo58
    #6

    @ofbeqnpolkkl6mby5e13
    Deine Idee sieht sehr gut aus. Habe zum Testen ein kleines Blockly mit einer Funktion erstellt und darüber kann ich den Alias ändern. Das funktioniert schon mal. Jetzt werde ich morgen mal testen, ob das auch in der View den State des Widgets ändert, also ob mir angezeigt wird der DP an oder aus ist. Wenn das auch noch klappt, dann wäre das genial :+1: :+1:

    Danke schon mal für den Tipp...

    Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
    Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
    Einfach ein tolles Hobby :-)

    1 Antwort Letzte Antwort
    1
    • JoJo58J JoJo58

      Moin Zusammen,

      kann man die ID von einem Switch Widget, wie z.B. Inventwo Universal, über einen Datenpunkt variable angeben?

      Beispiel:
      Es gibt einen Datenpunkt mit Namen "Schalter"
      Der soll variable gefüllt werden mit:

      Datenpunkt - adapter1.0.Wert.on
      Datenpunkt - adapter2.0.Wert.on
      Datenpunkt - adapter3.1.Wert.on

      Das kriege ich über Blockly hin. Aber, ich möchte auf der View nur ein Widget haben und das soll je nach, über dem "select" Widget, ausgewählten Inhalt eben die entsprechenden Datenpunkte ein- oder ausschalten.

      Bei Objekt ID müsste also der Inhalt eines Datenpunktes stehen und nicht der Datenpunkt.

      Hoffe das ich mich einigermaßen verständlich ausgedrückt habe?

      Gruß, Johannes

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #7

      @jojo58

      am einfachsten wäre es für jeden Datenpunkt ein eigenes Widget anzulegen und dann die Anzeige des richtigen Datenpunkts in Sichtbarkeit des widgets zu steuern.

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

      JoJo58J 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @jojo58

        am einfachsten wäre es für jeden Datenpunkt ein eigenes Widget anzulegen und dann die Anzeige des richtigen Datenpunkts in Sichtbarkeit des widgets zu steuern.

        JoJo58J Offline
        JoJo58J Offline
        JoJo58
        schrieb am zuletzt editiert von
        #8

        @oliverio
        Auch eine gute Idee. Man müsste die dann alle übereinander legen und dann über den Wert vom entsprechenden Datenpunkt anzeigen oder ausblenden.
        Ich brauche das dann auch für ein JSON Widget und weiß nicht wie VIS das macht. Wenn ich 10 Widgets habe, werden die dann immer alle geladen und nur wenn die Sichtbarkeit zutrifft, dann auch angezeigt? Oder wird so ein Universal oder JSON erst dann geladen, wenn es auch angezeigt wird?
        Falls immer alles geladen wird, dann wäre die Version über den Alias etwas Ressourcenschonender. Ich werde einfach beide Versionen testen und dann mal sehen was mir besser gefällt.

        Danke für den Tipp.

        Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
        Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
        Einfach ein tolles Hobby :-)

        1 Antwort Letzte Antwort
        0
        • OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #9

          @jojo58

          Datenpunkte müssen bei Start von vis
          sowieso alle bekannt sein. Dynamische Datenpunkte funktionieren nicht.
          Ich glaube, alle Widgets werden angelegt und dann per CSS sichtbar gemacht oder nicht. Bin mir da nicht ganz so sicher, wie bis innen drin funktioniert.

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

          O JoJo58J 2 Antworten Letzte Antwort
          0
          • OliverIOO OliverIO

            @jojo58

            Datenpunkte müssen bei Start von vis
            sowieso alle bekannt sein. Dynamische Datenpunkte funktionieren nicht.
            Ich glaube, alle Widgets werden angelegt und dann per CSS sichtbar gemacht oder nicht. Bin mir da nicht ganz so sicher, wie bis innen drin funktioniert.

            O Offline
            O Offline
            oFbEQnpoLKKl6mbY5e13
            schrieb am zuletzt editiert von
            #10

            @oliverio sagte in Switch Widget ID über Variablen Datenpunkt möglich?:

            Dynamische Datenpunkte funktionieren nicht.

            Gerade mal mit der Änderung des Ziels bei einem Alias ausprobiert. Funktioniert einwandfrei. Muss man nur noch in ein Skript gießen.

            JoJo58J 1 Antwort Letzte Antwort
            0
            • O oFbEQnpoLKKl6mbY5e13

              @oliverio sagte in Switch Widget ID über Variablen Datenpunkt möglich?:

              Dynamische Datenpunkte funktionieren nicht.

              Gerade mal mit der Änderung des Ziels bei einem Alias ausprobiert. Funktioniert einwandfrei. Muss man nur noch in ein Skript gießen.

              JoJo58J Offline
              JoJo58J Offline
              JoJo58
              schrieb am zuletzt editiert von
              #11

              @ofbeqnpolkkl6mby5e13
              Das funktioniert über ein Blockly mit Funktionen. Mit einer Funktion ändere ich das Ziel des Alias Datenpunktes und mit einer weiteren Funktion, die etwas später (1 Sekunde) aufgerufen wird, lese ich den Wert des Ziel Datenpunktes aus und schreibe diesen auch direkt wieder zurück, so das der Zeitstempel geändert wird. Dadurch bekommt der Alias auch den richtigen Wert, denn der wird beim ändern des Ziels nicht übernommen.
              Ein Programmierer würde das wohl in einer Funktion unterbringen, aber ich habe keinen Plan von Javascript und bin froh das es mit zweien klappt.
              Somit habe ich ein funktionierendes Widget bei dem der zu schaltende Datenpunkt über das "select" Widget von Material Design ausgewählt wird.
              Coole Sache :sunglasses:
              Vielen Dank für den Tipp...

              Johannes

              Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
              Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
              Einfach ein tolles Hobby :-)

              O 1 Antwort Letzte Antwort
              1
              • OliverIOO OliverIO

                @jojo58

                Datenpunkte müssen bei Start von vis
                sowieso alle bekannt sein. Dynamische Datenpunkte funktionieren nicht.
                Ich glaube, alle Widgets werden angelegt und dann per CSS sichtbar gemacht oder nicht. Bin mir da nicht ganz so sicher, wie bis innen drin funktioniert.

                JoJo58J Offline
                JoJo58J Offline
                JoJo58
                schrieb am zuletzt editiert von JoJo58
                #12

                @oliverio sagte in Switch Widget ID über Variablen Datenpunkt möglich?:

                Datenpunkte müssen bei Start von vis
                sowieso alle bekannt sein.

                Stimmt, das hat ein anderer User bei Facebook auch geschrieben, deswegen funktioniert das ja auch nicht mit Binding in einer Objekt ID.

                Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                Einfach ein tolles Hobby :-)

                1 Antwort Letzte Antwort
                0
                • JoJo58J JoJo58

                  @ofbeqnpolkkl6mby5e13
                  Das funktioniert über ein Blockly mit Funktionen. Mit einer Funktion ändere ich das Ziel des Alias Datenpunktes und mit einer weiteren Funktion, die etwas später (1 Sekunde) aufgerufen wird, lese ich den Wert des Ziel Datenpunktes aus und schreibe diesen auch direkt wieder zurück, so das der Zeitstempel geändert wird. Dadurch bekommt der Alias auch den richtigen Wert, denn der wird beim ändern des Ziels nicht übernommen.
                  Ein Programmierer würde das wohl in einer Funktion unterbringen, aber ich habe keinen Plan von Javascript und bin froh das es mit zweien klappt.
                  Somit habe ich ein funktionierendes Widget bei dem der zu schaltende Datenpunkt über das "select" Widget von Material Design ausgewählt wird.
                  Coole Sache :sunglasses:
                  Vielen Dank für den Tipp...

                  Johannes

                  O Offline
                  O Offline
                  oFbEQnpoLKKl6mbY5e13
                  schrieb am zuletzt editiert von
                  #13

                  @jojo58

                  Wärst du bereit, deine zwei Funktionen zu teilen? Vielleicht brauche ich das auch mal, dann könnte ich das verwenden.

                  JoJo58J 2 Antworten Letzte Antwort
                  0
                  • O oFbEQnpoLKKl6mbY5e13

                    @jojo58

                    Wärst du bereit, deine zwei Funktionen zu teilen? Vielleicht brauche ich das auch mal, dann könnte ich das verwenden.

                    JoJo58J Offline
                    JoJo58J Offline
                    JoJo58
                    schrieb am zuletzt editiert von
                    #14

                    @ofbeqnpolkkl6mby5e13
                    Klar, mache ich morgen früh als erstes. Im Moment hab ich nur mein Handy zur Verfügung.

                    Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                    Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                    Einfach ein tolles Hobby :-)

                    1 Antwort Letzte Antwort
                    1
                    • O oFbEQnpoLKKl6mbY5e13

                      @jojo58

                      Wärst du bereit, deine zwei Funktionen zu teilen? Vielleicht brauche ich das auch mal, dann könnte ich das verwenden.

                      JoJo58J Offline
                      JoJo58J Offline
                      JoJo58
                      schrieb am zuletzt editiert von
                      #15

                      @ofbeqnpolkkl6mby5e13

                      Moin, wie gestern versprochen, hier die beiden Scripte.

                      Mit dieser Funktion ändere ich den Alias Datenpunkt:

                      // Ziel-Datenpunkt ändern
                      const targetAlias = alias_DP; // Der Alias-Datenpunkt, dessen Ziel geändert werden soll
                      const newTarget = source_Alias_DP; // Der neue Ziel-Datenpunkt
                      
                      // Objekt-ID des Alias-Datenpunkts abrufen
                      const aliasObj = getObject(targetAlias, (err, obj) => {
                          if (err) {
                              console.error('Fehler beim Abrufen des Alias-Datenpunkts:', err);
                              return;
                          }
                      
                          if (!obj) {
                              console.error('Alias-Datenpunkt nicht gefunden:', targetAlias);
                              return;
                          }
                      
                          // Ziel-Datenpunkt des Alias ändern
                          obj.common.alias.id = newTarget;
                      
                          // Aktualisierte Objekteigenschaften speichern
                          setObject(targetAlias, obj, (err) => {
                              if (err) {
                                  console.error('Fehler beim Speichern der aktualisierten Alias-Eigenschaften:', err);
                                  return;
                              }
                      
                              console.log('Alias-Datenpunkt erfolgreich aktualisiert:', targetAlias);
                          });
                      });
                      
                      return 0;
                      

                      Und mit dieser Funktion lese ich den Wert von einem DP und schreibe ihn direkt wieder zurück, damit sich der Zeitstempel ändert und der geänderte Alias den richtigen Wert hat.

                      const stateName = source_Alias_DP; // Name der State-Variable
                      
                      // Wert der State-Variable abrufen
                      getState(stateName, (err, state) => {
                          if (err) {
                              console.error('Fehler beim Abrufen des Zustands:', err);
                              return;
                          }
                      
                          if (state) {
                              const value = state.val;
                              
                              // Wert wieder in den gleichen Datenpunkt schreiben
                              setState(stateName, value, (err) => {
                                  if (err) {
                                      console.error('Fehler beim Schreiben des Zustands:', err);
                                      return;
                                  }
                                  console.log('Wert erfolgreich aktualisiert:', value);
                              });
                          } else {
                              console.error('Zustand nicht gefunden:', stateName);
                          }
                      });
                      
                      return 0;
                      

                      Wie bereits erwähnt, ich bin kein Programmierer und bei mir laufen die beiden Funktionen einwandfrei. Falls hier jemand einen Verbesserungsvorschlag hat, immer her damit.

                      Gruß, Johannes

                      Intel NUC i7 64GB 1TB SSD - Proxmox - Raspi 4 8GB 500 GB SSD - Raspi 4 4GB 500GB SSD - Qnap 16TB - CCU3 - Fritz 6591 Cable - Green Cell USV 1500VA
                      Sonoff CC2652P - HUE Bridge - Broadlink RM4 pro u. RM3 mini - 5 x Echo - 1 x Samsung STab 8 - 54 x HM und HMIP - 32 x Zigbee - 2 x Shelly 3EM.
                      Einfach ein tolles Hobby :-)

                      O 1 Antwort Letzte Antwort
                      1
                      • JoJo58J JoJo58

                        @ofbeqnpolkkl6mby5e13

                        Moin, wie gestern versprochen, hier die beiden Scripte.

                        Mit dieser Funktion ändere ich den Alias Datenpunkt:

                        // Ziel-Datenpunkt ändern
                        const targetAlias = alias_DP; // Der Alias-Datenpunkt, dessen Ziel geändert werden soll
                        const newTarget = source_Alias_DP; // Der neue Ziel-Datenpunkt
                        
                        // Objekt-ID des Alias-Datenpunkts abrufen
                        const aliasObj = getObject(targetAlias, (err, obj) => {
                            if (err) {
                                console.error('Fehler beim Abrufen des Alias-Datenpunkts:', err);
                                return;
                            }
                        
                            if (!obj) {
                                console.error('Alias-Datenpunkt nicht gefunden:', targetAlias);
                                return;
                            }
                        
                            // Ziel-Datenpunkt des Alias ändern
                            obj.common.alias.id = newTarget;
                        
                            // Aktualisierte Objekteigenschaften speichern
                            setObject(targetAlias, obj, (err) => {
                                if (err) {
                                    console.error('Fehler beim Speichern der aktualisierten Alias-Eigenschaften:', err);
                                    return;
                                }
                        
                                console.log('Alias-Datenpunkt erfolgreich aktualisiert:', targetAlias);
                            });
                        });
                        
                        return 0;
                        

                        Und mit dieser Funktion lese ich den Wert von einem DP und schreibe ihn direkt wieder zurück, damit sich der Zeitstempel ändert und der geänderte Alias den richtigen Wert hat.

                        const stateName = source_Alias_DP; // Name der State-Variable
                        
                        // Wert der State-Variable abrufen
                        getState(stateName, (err, state) => {
                            if (err) {
                                console.error('Fehler beim Abrufen des Zustands:', err);
                                return;
                            }
                        
                            if (state) {
                                const value = state.val;
                                
                                // Wert wieder in den gleichen Datenpunkt schreiben
                                setState(stateName, value, (err) => {
                                    if (err) {
                                        console.error('Fehler beim Schreiben des Zustands:', err);
                                        return;
                                    }
                                    console.log('Wert erfolgreich aktualisiert:', value);
                                });
                            } else {
                                console.error('Zustand nicht gefunden:', stateName);
                            }
                        });
                        
                        return 0;
                        

                        Wie bereits erwähnt, ich bin kein Programmierer und bei mir laufen die beiden Funktionen einwandfrei. Falls hier jemand einen Verbesserungsvorschlag hat, immer her damit.

                        Gruß, Johannes

                        O Offline
                        O Offline
                        oFbEQnpoLKKl6mbY5e13
                        schrieb am zuletzt editiert von
                        #16

                        @jojo58

                        Vielen Dank!

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        784

                        Online

                        32.5k

                        Benutzer

                        81.6k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe