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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

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

Scheduled Pinned Locked Moved JavaScript
11 Posts 5 Posters 1.0k 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 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 Offline
      mickymM Offline
      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 Offline
                      mickymM Offline
                      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

                      642

                      Online

                      32.7k

                      Users

                      82.3k

                      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