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

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    689

  • 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

Geplant Angeheftet Gesperrt Verschoben JavaScript
11 Beiträge 5 Kommentatoren 878 Aufrufe 4 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.
  • R Offline
    R Offline
    Raducanu
    schrieb am zuletzt editiert von
    #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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
          0
          • da_WoodyD da_Woody

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

            R Offline
            R Offline
            Raducanu
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                Raducanu
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #9

                    @paul53
                    Ok, danke für die Info.

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • R Raducanu

                      @paul53
                      Ok, danke für die Info.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von 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 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

                        727

                        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