Frage zu GetConfigurationForParent()

Moin,

ich baue gerade das Tibber_Realtime Modul um. Dazu möchte ich GetConfigurationForParent() nutzen, sobald ich aber die IO Instanz öffne, erscheint folgende Meldung

Die Konfiguration muss aufgrund eines untergeordneten Knotens aktualisiert werden. Dies kann durch einen Klick auf "Änderungen übernehmen" getan werden.

Die Funktion sieht so aus:

public function GetConfigurationForParent()
		{
			$Config = [
							"Active"       		 => $this->ReadPropertyBoolean("Active"),
							"URL"       		 => $this->ReadPropertyString("Api_RT"),
							"VerifyCertificate"  => true,
							"Headers"		 	 => "[{\"Name\":\"Sec-WebSocket-Protocol\",\"Value\":\"graphql-transport-ws\"},{\"Name\":\"user-agent\",\"Value\":\"symcon\/6.4 com.tibber\/1.8.3\"}]"
		 			];
			$this->SendDebug(__FUNCTION__, 'Create the Configuration '.json_encode($Config), 0);
			return json_encode($Config);
		}

Ich hätte erwartet das nur das IO Fenster erscheint


statt

Kann man das ändern? Wie? Ziel soll sein, das die IO Instamz vom User nicht mehr angefasst wird, das soll rein über die Instanz gehen. Es funktioniert auch soweit, aber die Meldung finde ich suboptimal :wink:

Viele Grüße

Du willst dann direkt IPS_SetProperty und IPS_ApplyChanges nutzen. Ich weiß, dies ist laut Store Richtlinie nicht erlaubt, aber in diesem Kontext vermutlich nicht vermeidbar, da du die Änderungen ja direkt übertragen willst.

paresy

verrückt, kaum macht man es richtig :face_with_hand_over_mouth:

Danke schön.

Wobei ich bei Active und URL rundsätzlich Versuche in dem eigenen Modul zu vermeiden und aus dem IO nutze.
Dann kann man die restlichen ‚statischen‘ Parameter wie SSL oder Header auch per SetProperty setzen.
Michael

Hallo kris,

hast du eine Lösung dazu gefunden? Ich habe auch so ein Thema.

Gruß
Jan Peter

Hi,

Ich bin unterwegs, aber schau dir das mal an.

Insbesondere die funktion UpdateConfigurationForParent()

Die rufe ich im applychange() auf. In meinem fall muss der userheader bei jeder version angepasst werden.

Viele grüsse

Hi kris,
vielen Dank, das sehe ich mir in Ruhe an.
Auf den ersten Blick coole Lösung

HI kris,
die Lösung ist spannend, es geht nicht direkt im Modul …

Bei mir reicht es innerhalb des Modul mit IPS_SetConfiguration() zu arbeiten.
Jedoch sobald ich die Funktion GetConfigurationForParent im Modul definiere geht auch das nicht.
So ganz habe ich es noch nicht verstanden, aber es funzt.

Falls du magst:EcoFlow/PowerStream/module.php at main · janpeterdietz/EcoFlow · GitHub

Der ganze Aufbau funktioniert so auch nicht und ist so eigentlich auch nicht gedacht.
Korrektes Vorgehen ware:
Es gibt eine Konfigurator Instanz wo der User sich an der API anmeldet.
Dieser listet dann die Geräte auf und erstellt die ganze Kette von deiner Geräte Instanz, MQTT Client und Client Socket. Hier kannst du auch auf die ganze Konfiguration der Instanzen Einfluss nehmen.
Michael

Hi Michael,

ich verstehe was du schreibst, aber wie ich sowas in diesem Fall in IP-Symcon angehe ist mir noch nicht klar.

Vorhaben: Integration EcoFlow Balkonkraftwerk.
Steps: in Symcon umzusetzen

  • Eintragen der Anlagen Daten in ein Formular
  • Auslesen von Konfigurationsdaten für eine MQTT Client über HTTP
  • Konfiguration des MQTT Clients.
    Resultat: der Client stellt die relevanten Daten bereit

Mein Gedanke dazu (offenbar nicht ganz richtig):
Nutzung / Aufbau eines Moduls => Formular für die Anlagendaten
Dann Konfiguration des Clients etc. über das Modul.
Dazu benötige ich den MQTT Client Splitter und MQTT Client Socket
Also Konfiguration des Splitter als Parent in einem Modul.

Der Splitter sendet die Daten an mein Modul und dann werden nur die notwendigen Daten in Variablen geschrieben.

Gruß Jan Peter