RequestAction funktioniert bei mir nicht bei HM Solltemperatur

Hallo,
habe das Problem, das ich für ein Wandthermostat von HM den Sollwert per eigenem Aktionsskript ändern möchte.

Mit der Standardaktion funktioniert es auch!

Wenn ich

HM_WriteValueFloat($ID_Parent, „SET_TEMPERATURE“, $Soll);<

nutze funktioniert es auch.

Setze ich jetzt

RequestAction($_IPS[‚VARIABLE‘],$Soll);

hängt sich Symcon komplett auf und fast alle PHP Slots(100 mögliche) sind mit diesem Aufruf belegt.

$Soll1=$_IPS['VALUE'];
$Soll=str_replace(['.', ','], ['', '.'], $Soll1);
//	$Soll=$_IPS['VALUE'];
$ID_Parent=IPS_GetParent ($_IPS['VARIABLE']);

HM_WriteValueFloat($ID_Parent, "SET_TEMPERATURE", $Soll);
//	RequestAction($_IPS['VARIABLE'],$Soll);
var_dump($Soll);

Ob ich str_replace nutze oder nicht macht kein unterschied , bei HMWrite funktionert es, bei RequestAction nicht.

Ja, Set_temperatur Variable ist vom Typ Float, ist halt die vom Modul angelegte Variable.

Gehe ich mit einem Testscript her und lese aus einem anderen Wandthermostat die Set_Temperatur aus und setzte diese mit ReqestAction ein, funktioniert es.

$Soll_Get=GetValueFloat(28711);

RequestAction(13128,$Soll);
//HM_WriteValueFloat(58636, "SET_TEMPERATURE", $Soll_Get);

Was mache ich falsch.

Leider wurde mein Post durch falsche Bedienung vorzeitig abgesendet, daher musste ich es nochmal editieren.
Gruß Achim

RequestAction ruft die Aktion also das Aktions-Skript auf. Du hast eine Endlosschleife gebaut.
Warum benutzt du nicht die normale Aktion der Instanz, also Aktions-Skript ganz weglassen?
Michael

Hallo Michael,
danke für die schnelle Antwort.

War bis jetzt auch so.
Benötige aber die Information ob der Wert per Voice geändert wurde.

Das heißt RequestAction darf nicht in einem Actionscript vorkommen, hatte ich bis jetzt noch nicht begriffen.
Das bedeutet also, wenn ich in Scripten RequestAction nutze, rufe ich automatisch das Actionsscript der Variablen auf.
Gut zu wissen, heißt für mich, RequestAction mit Vorsicht genießen, da ich sehr viel eigene Actionsscripte nutze. Vieles darf zum Beispielbei Abwesenheit nicht geändert werden, ausser die Variable overwrite ist true, die ich von unterwegs für eine gewisse Zeit auf true setzen kann.
Oder ich unterscheide den Sender beim Actionscript.

Noch eine dumme Frage, wer ist denn dann der Sender, wenn ich aus einem Script per RequestAction auf das Actionsript zugreife.

Gruß Achim

Ja lesen der Doku hilft und testen auch Sender=Action!

Wenn du unbedingt die Aktionen überschreiben willst, dann kannst du entweder die Original Instanz-Funktionen (HM_WriteValueXXX) oder aber auch die nicht dokumentierte Funktion IPS_RequestAction($InstanzID, $Ident, $Value) benutzen.

Ich löse das anders. Bei mir wird nicht erst beim ausführen geprüft, sondern dort wo die Aktion startet (z.B. Ereignis + Script).
Michael

Geht nicht um unbedingt, ich brauche öfter die Unterscheidung VoiceContol/WebFront weil ich dort unterschiedlich reagiere. Bei den Shelly und Tasmota brauche ich auch öfters eigene ActionScripte, weil ich direkt beim einschalten eine Laufzeit mit gebe, dass geht beim Shelly leider nur per Rest API und bei Tasmota mit Tasmota_sendMQTTCommand für die PulseTime.
Ich liebes es halt den Geräten direkt die Solleinschaltzeit mitzugeben und dies nicht IPS zu überwachen. :see_no_evil:

Ansonsten versuche ich immer mit der Standard Action klar zukommen.
Ich prüfe im normal alles in den normalen Scripten, habe aber von der Anfangszeit fast überall noch den Instanzbefehl und nicht RequestAction. In neuen Scripten verwende ich vorrangig RequestAction und muss mich irgendwann mal an die Anpassungen der alten Scripte begeben.
Nur schiebt man die Anpassungen, läuft ja. :innocent:

IPS_RequestAction schau ich mir mal näher an, danke für den Hinweis.