NEWS
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, aberwenn der RSSI State < '-60' ist, der Shelly automatisch neu gestartet wird.
was soll das bringen? glaubst du das der rssi dann besser ist?
-
@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, aberwenn 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.
-
@mickym ja, connection lost, aber nicht abhängig vom rssi.
-
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.
-
@raducanu da du ja schonn das wort Objektbasierend benutzt wirst du auch wissen was setter und getter Methoden sind
setState
getState -
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....
-
@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.
-
@paul53
Ok, danke für die Info. -
@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; }
-
@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.