Mit Webhook erste Versuche - schalten einer Boolean Variablen

Hallo,
ich versuche mich gerade ein wenig daran, per URL einen Schalter zu betätigen. Dies möchte ich später für 2 Funktionen auf meinem Stream-Desk legen.

Irgendwo mache ich noch Fehler.
Boolean Variable 53081:
mit einem Profil „Licht“ ist eingerichtet, die Variable ist aus LCN und schaltet über das WebFront ohne Probleme.

Aufruf:
http://IP:PORT/hook/Test?Schalter=True

Script:

// ab hier okay - Beispiel-Script aus dem Forum
IPS_LogMessage(„WebHook GET“, print_r($_GET, true));
IPS_LogMessage(„WebHook POST“, print_r($_POST, true));
IPS_LogMessage(„WebHook IPS“, print_r($_IPS, true));
IPS_LogMessage(„WebHook RAW“, file_get_contents(„php://input“));
//echo "Schalter: " . $_GET[‚Schalter‘];

//$tmp = GetValueBoolean(53081);
$tmp = $_GET[‚Schalter‘] ;
echo "Schalter: " . $tmp;
SetValueBoolean (53081, ‚$tmp‘);

Fehlermeldung im Browser:

Schalter: True

Warning: Cannot auto-convert value for parameter VariableValue (stod) in /mnt/data/symcon/scripts/26350.ips.php on line 12

Line 12 ist die letzte Zeile des Scripts

Gruß
Ralf

Nimm den Punkt vor dem $tmp weg und probier es noch einmal.

Das sind aber alles merkwürdige implizite String zu Bool Konvertierungen. Korrekt wäre etwa sowas:

$tmp = $_GET['schalter'] ; // kleines S, auch so übergeben, da konvention der Großbuchstabe für Klassen reserviert ist
echo "Schalter: " . $tmp;
if($tmp=="true"){
    SetValueBoolean (53081, true);
}elseif($tmp=="false"){
    SetValueBoolean (53081, true);
}else{
   echo "ungültige Eingabe";
}

Bei dir kommt immer True raus :smiley:

@hfichtinger, der Punkt ist keiner, zumindest im Script-Editor sehe ich keinen in der Zeile und „immer True“ wäre auch suboptimal

@tobiasr, das versuche ich gleich mal, sieht anders aus :wink:

Danke, ich melde mich. Macht Spaß die Gehversuche auf dem Gebiet :slight_smile:

das sind einfache Anführungszeichen

@hfichtinger, der gleiche Fehler
@tobiasr, wenn ich dein Script nutze, kommt „ungültige Eingabe“.
Die Variable „Schalter“ habe ich zum testen gegen „buero“ getauscht, da „schalter“ im Browser immer wieder auf „Schalter“ in Goßgeschrieben gesetzt wird nach dem Aufruf. Keine Ahnung warum.

Ich habe mal folgendes in dem Dashboard, der Schnelllausführung eingegeben

SetValueBoolean (53081, true);

dabei kam dann folgende Meldung, kann das der Grund sein?

Warning: Variable is marked as read-only an cannot be changed on/- in line 2

Wenn ja, wie schalte ich das ab? Über WebFront funktioniert genau diese ID ohne Probleme

Zu dem ‚es kommt immer true raus‘: Ja Kopierfehler, einmal will man natürlich auf false schalten.

Bzgl. ‚ungültige Eingabe‘: Dass auch auf Kleinbuchstaben true geprüft wird (in deinem ersten Beispiel steht ja Schalter=True), hast du ebenfalls angepasst?

Du musst dann statt SetValueBoolean RequestAction verwenden.

$tmp = $_GET['buero'] ;
echo "Schalter: " . $tmp;
if($tmp=="true"){
    RequestAction (53081, true);
}elseif($tmp=="false"){
    RequestAction(53081, false);
}else{
   echo "ungültige Eingabe";
}

das habe ich jetzt mit „RequestAction“ gemacht, derselbe Fehler auch das einmal tauschen auf false hatte ich vorher schon getauscht.

Kann es sein, dass hier noch etwas falsch ist, die Variable hat ein Profil „Licht“ mit den Werten (genau so geschrieben)

false und Text= Aus
true und den Text=Ein

Link:

http://IP:PORT/hook/Test?buero=true)

Mach mal statt echo $tmp; ein var_dump($tmp);
Und ggf. mal die Worte true/false konsequent auf an/aus oder so ändern.

Moin Ralf,
nur mal am Rand: wenn du da LCN mit schaltest nimmst du entweder die LCN_xxx Kommandos auf die Instanz–ID oder das RequestAction auf die VariablenID. Ein SetValue auf eine LCN-Variable geht nicht.

Der Webhook wären auch bei mir erste Gehversuche …

Grüße, Uwe

@tobiasr, habe ich auch versucht, mit an/aus, ein/aus usw.
Bei var_dump($tmp); zeigt er immer

string(x) „Ein“ ungültige Eingabe

wobei x für wechselnde Zahlen steht, je nachdem was ich einsetze (True, true, Ein, …)

Moin Uwe,
ja es geht hier um LCN, dann muss ich mal sehen woher ich die „Referenz“ der Kommandos bekomme oder ob ich schon so etwas bei mir im Einsatz finde und es entsprechend anpassen kann. Das RequestAction auf die VariablenID hatte ich ja versucht, mit selbigen Fehler. Ich bleibe da auf jeden Fall dran, es lässt einen keine Ruhe :wink:

@All, Auf jeden Fall ein spannendes Feld und toll wie einem hier geholfen wird.
Danke

So. Ich habe mein Beispielscript jetzt mal in mein IP-Symcon als Hook gekippt. Erwartungsgemäß funktioniert es sofort.

Danke, dann muss ich alles von vorne noch mal angehen, irgendwo ist der Wurm drin und den Hinweis von Uwe auch betrachten.

so ich bin jetzt am Testen,

Ich habe folgendes LCN Modul in der Splitter-Instanz

22590, Kanal 1 Ausgang (A1 mit ID 54798)

Dann müsste ich doch den Befehl wie folgt im Paneel „Schnellausführung“ ausführen können, oder?

LCN_SendCommand(22590, „A1“, „–K-10000000“);

Splitterinstanz, Ausgang 1 den Kurzbefehl Taste A1 an ?!

image
image
image

oder habe ich generell ein Verständnisproblem oder nerve ich hier zu stark :wink:

Hier wird nicht genervt … hier wird geholfen :loveips:
Generell: hast du die PCK-Doku? Die gibt es per Mail auf Anfrage bei der LCN-Hotline (ist personifiziert, halte ich für :-1:). Deine Kommandosyntax ist falsch …
Schau mal:
https://www.symcon.de/de/service/dokumentation/modulreferenz/lcn/

Grüße, Uwe

1 „Gefällt mir“

Moin Uwe,

Hier wird nicht genervt … hier wird geholfen :loveips:
Das hebt dieses Forum auch stark von anderen ab.

Genau da habe ich ja mein „Befehl“ her und zusammengestellt.
Wohl nicht richtig. Hast Du noch ein Schubs für die richtige Richtung, des richtigen Befehls?

Gruß
Ralf

Was spricht gegen RequestAction?
Michael