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. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    652

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

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

Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt

Scheduled Pinned Locked Moved JavaScript
11 Posts 5 Posters 878 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.
  • R Offline
    R Offline
    Raducanu
    wrote on last edited by
    #1

    Hallo Zusammen,
    meine Javascriptkenntnisse sind auf einfachsten Grundschullevel, daher bitte ich um eine kurzen Tipp wie man folgende Aufgabe "sinnvoll" lößt:

    Ich habe einen Trigger auf all meine Shelly Objekte

    on({id: /^shelly.0.*.rssi/, change: "ne"}, function(obj) {
    if (obj.state.val < '-60'){
    console.log('WiFi RSSI for Shelly Device [' + obj.id + '] below -60 db.')
    }
    })
    
    

    Das Funktioniert auch alles wunderbar.

    (25987) script.js.common.Notification.Shelly_CheckforBadWifi: WiFi RSSI for Shelly Device [shelly.0.SHSW-25#BCDDC277ABAD#1.rssi] below -60 db.
    

    Nun möchte ich aber, dass wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.
    Hierzu gibt es bei jedem Shelly Gerät einen "Reboot" Button.

    shelly.0.SHSW-25#BCDDC277ABAD#1.reboot
    

    Nur wie komme bekomme ich nun zu diesen Wert?
    Ich kann natürlich den Wert "obj.id" am letzten Punkt abschneiden und dann "reboot" dem String hinzufügen. Aber da ja Java(Script) Objektbasiert ist, müsste es doch irgendwas mit "Parent Objekt" oder so geben?

    Hat hier wer jemand einen Tipp für mich?

    Danke

    da_WoodyD arteckA paul53P 3 Replies Last reply
    0
    • R Raducanu

      Hallo Zusammen,
      meine Javascriptkenntnisse sind auf einfachsten Grundschullevel, daher bitte ich um eine kurzen Tipp wie man folgende Aufgabe "sinnvoll" lößt:

      Ich habe einen Trigger auf all meine Shelly Objekte

      on({id: /^shelly.0.*.rssi/, change: "ne"}, function(obj) {
      if (obj.state.val < '-60'){
      console.log('WiFi RSSI for Shelly Device [' + obj.id + '] below -60 db.')
      }
      })
      
      

      Das Funktioniert auch alles wunderbar.

      (25987) script.js.common.Notification.Shelly_CheckforBadWifi: WiFi RSSI for Shelly Device [shelly.0.SHSW-25#BCDDC277ABAD#1.rssi] below -60 db.
      

      Nun möchte ich aber, dass wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.
      Hierzu gibt es bei jedem Shelly Gerät einen "Reboot" Button.

      shelly.0.SHSW-25#BCDDC277ABAD#1.reboot
      

      Nur wie komme bekomme ich nun zu diesen Wert?
      Ich kann natürlich den Wert "obj.id" am letzten Punkt abschneiden und dann "reboot" dem String hinzufügen. Aber da ja Java(Script) Objektbasiert ist, müsste es doch irgendwas mit "Parent Objekt" oder so geben?

      Hat hier wer jemand einen Tipp für mich?

      Danke

      da_WoodyD Online
      da_WoodyD Online
      da_Woody
      wrote on last edited by
      #2

      @raducanu said in Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt:
      sorry, kann dir zwar nicht helfen, aber

      wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.

      was soll das bringen? glaubst du das der rssi dann besser ist?

      gruß vom Woody
      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

      mickymM 1 Reply Last reply
      0
      • da_WoodyD da_Woody

        @raducanu said in Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt:
        sorry, kann dir zwar nicht helfen, aber

        wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.

        was soll das bringen? glaubst du das der rssi dann besser ist?

        mickymM Online
        mickymM Online
        mickym
        Most Active
        wrote on last edited by
        #3

        @da_woody said in Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt:

        @raducanu said in Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt:
        sorry, kann dir zwar nicht helfen, aber

        wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.

        was soll das bringen? glaubst du das der rssi dann besser ist?

        Mit der neuen FW ist das doch quasi schon eingebaut - da braucht man gar nichts mehr tun.

        screen.png

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        da_WoodyD 1 Reply Last reply
        0
        • mickymM mickym

          @da_woody said in Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt:

          @raducanu said in Anfängerfrage: Wie komme ich zum Schwester / Parent Objekt:
          sorry, kann dir zwar nicht helfen, aber

          wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.

          was soll das bringen? glaubst du das der rssi dann besser ist?

          Mit der neuen FW ist das doch quasi schon eingebaut - da braucht man gar nichts mehr tun.

          screen.png

          da_WoodyD Online
          da_WoodyD Online
          da_Woody
          wrote on last edited by da_Woody
          #4

          @mickym ja, connection lost, aber nicht abhängig vom rssi.

          gruß vom Woody
          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

          R 1 Reply Last reply
          0
          • da_WoodyD da_Woody

            @mickym ja, connection lost, aber nicht abhängig vom rssi.

            R Offline
            R Offline
            Raducanu
            wrote on last edited by
            #5

            @da_woody

            Sorry, aber das war doch gar nicht die Frage. Sondern wie komme ich zum Parent Object.

            Und ja, ich habe ein Fritzbox Mesh WLAN. Manchmal (wieso auch immer) verbinden sich die Shellys mit einem Mesh Repeater deutlich weiter entfernt.
            Nach einem Reboot wird dann i.d.R. der stärkste Repeater genommen.

            Z.b. bei mir im Schlafzimmer: Vor dem Reboot -75db, nach dem Reboot -45db. Nur weil ein anderer Repeater genommen wurde.

            1 Reply Last reply
            0
            • R Raducanu

              Hallo Zusammen,
              meine Javascriptkenntnisse sind auf einfachsten Grundschullevel, daher bitte ich um eine kurzen Tipp wie man folgende Aufgabe "sinnvoll" lößt:

              Ich habe einen Trigger auf all meine Shelly Objekte

              on({id: /^shelly.0.*.rssi/, change: "ne"}, function(obj) {
              if (obj.state.val < '-60'){
              console.log('WiFi RSSI for Shelly Device [' + obj.id + '] below -60 db.')
              }
              })
              
              

              Das Funktioniert auch alles wunderbar.

              (25987) script.js.common.Notification.Shelly_CheckforBadWifi: WiFi RSSI for Shelly Device [shelly.0.SHSW-25#BCDDC277ABAD#1.rssi] below -60 db.
              

              Nun möchte ich aber, dass wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.
              Hierzu gibt es bei jedem Shelly Gerät einen "Reboot" Button.

              shelly.0.SHSW-25#BCDDC277ABAD#1.reboot
              

              Nur wie komme bekomme ich nun zu diesen Wert?
              Ich kann natürlich den Wert "obj.id" am letzten Punkt abschneiden und dann "reboot" dem String hinzufügen. Aber da ja Java(Script) Objektbasiert ist, müsste es doch irgendwas mit "Parent Objekt" oder so geben?

              Hat hier wer jemand einen Tipp für mich?

              Danke

              arteckA Offline
              arteckA Offline
              arteck
              Developer Most Active
              wrote on last edited by
              #6

              @raducanu da du ja schonn das wort Objektbasierend benutzt wirst du auch wissen was setter und getter Methoden sind

              setState
              getState

              zigbee hab ich, zwave auch, nuc's genauso und HA auch

              1 Reply Last reply
              0
              • R Offline
                R Offline
                Raducanu
                wrote on last edited by Raducanu
                #7

                @arteck

                Das ist mir klar.
                Aber für SetState benötige ich das Objekt
                'shelly.0.SHSW-25#BCDDC277ABAD#1.reboot'

                Die Frage ist wie komme ich !schlau! von
                'shelly.0.SHSW-25#BCDDC277ABAD#1.rssi'
                nach
                'shelly.0.SHSW-25#BCDDC277ABAD#1.reboot'

                Methode 1 ("Dummes Replace")
                $obj = 'shelly.0.SHSW-25#BCDDC277ABAD#1.rssi'.replace('rssi','reboot')
                SetState ('$obj',true)

                Metode 2 (mit Object Mitteln)
                $parent = 'shelly.0.SHSW-25#BCDDC277ABAD#1.rssi'.parent
                SetState ($parent.reboot,true)

                Methode 1 kriege ich hin, bei Methode zwei istelle ich mir halt die Frage, wie ich an das Übergeordnete Objekt von 'shelly.0.SHSW-25#BCDDC277ABAD#1.rssi' komme (also shelly.0.SHSW-25#BCDDC277ABAD#1).
                Weil spätestens wenn ich nicht genau weiß, in welcher Ebene ich mich befinde, funktioniert ein einfaches Replace nicht mehr (oder ich muß für jeden Anwendungsfall ein eigenes Script bauen)

                Mir geht es hier aktuell um das lernen von Javascript in Bezug auf ioBroker....

                1 Reply Last reply
                0
                • R Raducanu

                  Hallo Zusammen,
                  meine Javascriptkenntnisse sind auf einfachsten Grundschullevel, daher bitte ich um eine kurzen Tipp wie man folgende Aufgabe "sinnvoll" lößt:

                  Ich habe einen Trigger auf all meine Shelly Objekte

                  on({id: /^shelly.0.*.rssi/, change: "ne"}, function(obj) {
                  if (obj.state.val < '-60'){
                  console.log('WiFi RSSI for Shelly Device [' + obj.id + '] below -60 db.')
                  }
                  })
                  
                  

                  Das Funktioniert auch alles wunderbar.

                  (25987) script.js.common.Notification.Shelly_CheckforBadWifi: WiFi RSSI for Shelly Device [shelly.0.SHSW-25#BCDDC277ABAD#1.rssi] below -60 db.
                  

                  Nun möchte ich aber, dass wenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.
                  Hierzu gibt es bei jedem Shelly Gerät einen "Reboot" Button.

                  shelly.0.SHSW-25#BCDDC277ABAD#1.reboot
                  

                  Nur wie komme bekomme ich nun zu diesen Wert?
                  Ich kann natürlich den Wert "obj.id" am letzten Punkt abschneiden und dann "reboot" dem String hinzufügen. Aber da ja Java(Script) Objektbasiert ist, müsste es doch irgendwas mit "Parent Objekt" oder so geben?

                  Hat hier wer jemand einen Tipp für mich?

                  Danke

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

                  @raducanu said: müsste es doch irgendwas mit "Parent Objekt" oder so geben?

                  Nein, so etwas gibt es nicht. Die Strukturen werden durch Punkte in der Objekt-ID gebildet, wobei es leider keine einheitliche Struktur gibt.

                  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

                  R 1 Reply Last reply
                  1
                  • paul53P paul53

                    @raducanu said: müsste es doch irgendwas mit "Parent Objekt" oder so geben?

                    Nein, so etwas gibt es nicht. Die Strukturen werden durch Punkte in der Objekt-ID gebildet, wobei es leider keine einheitliche Struktur gibt.

                    R Offline
                    R Offline
                    Raducanu
                    wrote on last edited by
                    #9

                    @paul53
                    Ok, danke für die Info.

                    paul53P 1 Reply Last reply
                    0
                    • R Raducanu

                      @paul53
                      Ok, danke für die Info.

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

                      @raducanu
                      Funktion, mit der man die ID des Parent-Objektes ermitteln kann:

                      function idParent(id) { // id = Datenpunkt-ID
                          id = id.substring(0, id.lastIndexOf('.'));
                          if(existsObject(id)) return id;
                          id = id.substring(0, id.lastIndexOf('.'));
                          if(existsObject(id)) return id;
                      }
                      

                      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

                      mickymM 1 Reply Last reply
                      0
                      • paul53P paul53

                        @raducanu
                        Funktion, mit der man die ID des Parent-Objektes ermitteln kann:

                        function idParent(id) { // id = Datenpunkt-ID
                            id = id.substring(0, id.lastIndexOf('.'));
                            if(existsObject(id)) return id;
                            id = id.substring(0, id.lastIndexOf('.'));
                            if(existsObject(id)) return id;
                        }
                        
                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        wrote on last edited by mickym
                        #11

                        @paul53 oder man nutzt einen "regulären Ausdruck". ;)

                        // Beispiel für id
                        // var id = "0_userdata.0.test"; 
                        parent = id.replace(/(.*)\..*$/g,"$1");
                        

                        allerdings zugegeben ohne Überprüfung auf Existenz.

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        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

                        429

                        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