Scriptfehler unexpected "RequestAction (T_String) - Logitech Harmony Probleme

Guten Morgen,

ich habe vor, meine Alexa-Routine in eine Szene mit dahinterliegendem Skript umzubauen, da durch die Funkverbindung bei der Routine das ein oder andere „vergessen“ wird zu schalten.

Mein laienhaftes Skript sieht derzeit wie folgt aus:

<?php

AL_SwitchOff(54760);

IPS_Sleep(500);

RequestAction(37925, true);

IPS_Sleep(1000);

RequestAction(43237, 0);

IPS_Sleep(500);

RequestAction(45118, 0);

IPS_Sleep(500);

RequestAction(25798, 0);

IPS_Sleep(500);

$variable = IPS_GetVariable(16119);
$profileName = $variable['VariableCustomProfile'];
if ($profileName == '') {
   $profileName = $variable['VariableProfile'];
}
$value = 40;
if ($profileName != '') {
   $profile = IPS_GetVariableProfile($profileName);
   $value = (40 * 0.01 * ($profile['MaxValue'] - $profile['MinValue'])) + $profile['MinValue'];
}
RequestAction(16119, $value);

IPS_Sleep(1000);

RequestAction(49495, true);

hier noch als Screenshot, damit man sieht was sich hinter den IDs verbirgt:

Allerdings erhalte ich folgenden Fehler:

Zeile 11 wäre folgender Code:

RequestAction(43237, 0);

Ich verstehe nur nicht warum? Wenn ich die Varible „PowerOff“ direkt triggere, so wird der TV korrekt ausgeschaltet.
Was will mir der Fehler zu verstehen geben? Nehme ich die HarmonyHub Befehle raus, so läuft das Skript komplett durch und wird korrekt umgesetzt.
Es scheint hierbei wohl Probleme mit dem Harmony-Abläufen zu geben. Muss ich hierfür im Skript noch etwas besonderes beachten? Einzeln kann ich die „Harmony-Geräte“ ansteuern und schalten - grundsätzlich scheint also die Verbindung HarmonyHub <-> IPS zu funktionieren.

Als Workaround kann ich die vom Hub gesteuerten Geräte auch in eine Alexa-Routine mit aufnehmen (ohne IPS), aber würde es gerne im Skript haben, da ich ansonsten bei Änderungen immer an zwei Stellen umbauen muss.

Grüße
Simon

Du könntest mal versuchen im Skripteditor den Befeh über die Schaltfläche „Befehlt einfügen“ generieren zu lassen. Eventuell passt da etwas nicht.

so habe ich im Script jeglichen Befehl bis auf den IPS_Sleep generiert, da ich selber überhaupt nicht programmieren kann.
Ich bin naiverweise davon ausgegangen, dass die Befehle dann auch stimmig sind :wink:

Was passiert in Deinem Fall denn wenn Du zum Test ein einzelnes Skript öffnest und dort den Befehl ausführst?

Was passiert alternativ mit

LHD_Send(43237, "PowerOn");

Häufig kommen diese „unexpected“-Fehler, weil in der Zeile davor etwas nicht in Ordnung ist, beispielsweise ein fehlendes Semikolon oder dergleichen (Es wird ein Semikolon erwartet, aber er findet ein unerwartetes „RequestAction“).
Ich kann aber in deinem Skript nichts dergleichen sehen… Kannst du aber vielleicht mal testweise das IPS_Sleep(1000) mit den dazugehörigen Leerzeilen rausnehmen? Vielleicht stecken da irgendwelche unsichtbaren Spezialsymbole oder so?

Problem war nicht der TV, sondern der Sky-Receiver. Der Sky-Receiver kann leider nur ein PowerToggle, sodass ich nicht explizit ausschalten kann.
Warum sich der Fehler allerdings auf Zeile 11 (den TV) bezogen hat - keine Ahnung.

ich habe den Befehl zum Ausschalten des Sky-Receivers nochmals komplett neu eingefügt und jetzt läuft das Skript sauber durch.

Jetzt habe ich nur noch das Problem, dass die Harmony-Fernbedienung den „neuen“ Zustand der Geräte vom Hub nicht übermittelt bekommt.
Das ist aber denke ich in einem anderen Thread besser aufgehoben :wink:

Problem war tatsächlich nicht der TV in Zeile 11, sondern der Sky-Receiver in Zeile 15.
Warum hier jedoch dann explizit Zeile 11 angegeben wird - keine Ahnung.

Es muss definitiv ein Syntax Fehler gewesen sein. Bei einem Parse Error kommt er gar nicht bis zu Ausführung.

Da hatte sich mit Sicherheit auf Zeile 9 oder 10 ein Sonderzeichen eingeschlichen.

Aber egal, du bist ja nun weitergekommen.