Hallo,
nachdem sich für die Aktualisierung des bestehenden Moduls für eine openWB-Wallbox Version ab 2.x niemand gefunden hat, habe ich mich mal selber dran gemacht etwas zusammen-zu-frickeln.
Ich habe noch nie etwas mit Modulprogrammierung zu tun gehabt. Trotz allem habe ich es geschafft, dass Werte via MQTT in IPS ankommen.
Sobald ich den ClientSocket vom MQTT-Clienten aktiviere, steigt die CPU-Last um gut 20% - 30% an und bleibt auch auf diesem Level. Sobald ich den ClientSocket deaktiviere, verbraucht Symcon nur noch zwischen 1% und 5% CPU-Last.
Ist das normal, oder mache ich etwas falsch???
Grüße
Proxima
Wenn du keinen SetReceiveDataFilter setzt, ist das normal. Weil dann bei jedem Datenpaket deine Instanzen alle Daten erhalten, was eine entsprechende Auslastung der PHP Slots und somit der Systemlast erzeugt.
Michael
PS: Frage zum SDK bitte in PHP-Module (Entwicklung) stellen, ich verschiebe es dorthin.
Hallo,
baue ich den Pfad so richtig zusammen (mit den Punkten und / und Hochkommas):
$MQTTTopic = $this->ReadPropertyString('topic');
$this->SetReceiveDataFilter('.*' . $MQTTTopic . '/chargepoint/' . $id . '.*');
bzw.:
$MQTTTopic = $this->ReadPropertyString('topic');
$this->SetReceiveDataFilter('.*' . $MQTTTopic . '/bat/get/' . '.*');
so war es zuvor:
$MQTTTopic = $this->ReadPropertyString('topic');
$this->SetReceiveDataFilter('.*' . $MQTTTopic . '.*');
D A N K E
Grüße
Proxima
Ob das richtig ist, kannst nur du sagen.
Aktuell übergibst du nur einen String, der ja theoretisch irgendwo auch vorkommen kann.
Wenn du explizit auf Topics reagieren willst, wäre es besser das auch so anzugeben.
$Filter1 = preg_quote('"Topic":"' . $Topic . '/chargepoint/');
$Filter2 = preg_quote('"Topic":"' . $Topic . '/bat/get/');
$this->SendDebug('Filter', '.*(' . $Filter1 . '|' . $Filter2 . ').*', 0);
$this->SetReceiveDataFilter('.*(' . $Filter1 . '|' . $Filter2 . ').*');
Michael