michl
1. Oktober 2023 um 08:30
1
Guten Morgen,
ich hole mir mit folgendem Script die Daten aus einer API ab.
Sprich mit dem print_r($Daten) sehe ich welche Daten zur Verfügung stehen.
Wie kann ich jetzt bestimmtze Daten in eine Variable setzen?
Anbei das Auslesescript:
$status_id = 27268;
// Befehl zusammenstellen und per CURL absetzen
$Header = array(
'Authorization: Bearer ’ . $Access_Token,
‚Content-Type: application/json‘,
‚Accept: application/json‘,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HTTPHEADER, $Header);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $Command);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‚GET‘);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = explode(„\r\n\r\n“, $response); // Header abtrennen
$daten = json_decode($data[1], true); // Array erstellen
$status = $daten[‚components‘][‚hca.main‘][‚hca.washerMode‘][‚supportedModes‘][‚value‘];
SetValueString($status_id, $status);
print_r($daten)
In eine Variable möchte ich folgenden Wewert setzen um zu sehen welches Waschprogramm aktiv ist:
Auslesen möchte ich Folgende Position:
(
[components] => Array
(
[hca.main] => Array
(
[hca.washerMode] => Array
(
[mode] => Array
(
[value] => others
[timestamp] => 2023-09-17T11:27:46.435Z
)
[supportedModes] => Array
(
[value] => Array
(
[0] => normal
[1] => quickWash
[2] => eco
[3] => mix
[4] => spinOnly
Bin auch kein Profi aber du hast gar keine Variable angegeben, welche du befüllen willst.
Erstell mal eine String-Variable (im Beispiel die Nummer 12345)
Dann änderst du
SetValueString($status_id, $status);
in
SetValueString(12345, $status);
michl:
$status_id = 27268;
Und was sollte diese Variable denn liefern?
So kommt nichts, wenn dann so…
$status_id = getValue(27268);
Und wenn du diesen Wert dann ebenfalls in der Ausgabe willst
SetValueString(12345, "$status_id, $status");
Doch hat er, 1. Zeile.
Somit sind deine beiden Beiträge leider falsch.
Was auf jeden Fall nicht passt sind die falschen Hochkomma bzw. Anführungszeichen.
Diese müssen immer so aussenden
'einfach'
"doppelt"
Sehen bei @michl aber so aus:
Michael
michl
2. Oktober 2023 um 10:55
5
Hallo, danke für die Infos.
Ich habe jetzt die Hochkomma und Anführungszeichen geändert.
$supportedModes_id = 16144;
// Befehl zusammenstellen und per CURL absetzen
$Header = array(
'Authorization: Bearer ' . $Access_Token,
'Content-Type: application/json',
'Accept: application/json',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HTTPHEADER, $Header);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $Command);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = explode("\r\n\r\n", $response); // Header abtrennen
$daten = json_decode($data[1], true); // Array erstellen
$status = $daten['components']['hca.main']['hca.washerMode']['supportedModes']['value'];
SetValueInteger($supportedModes_id, $value);
print_r($daten);
Hab aber immer noch das Problem das die Variable nicht befüllt wir??
Folgende Fehlermeldung:
Notice: Undefined variable: value in /mnt/data/symcon/scripts/21137.ips.php on line 37
pitti
2. Oktober 2023 um 11:00
6
Anstatt $value willst Du wahrscheinlich $status schreiben, oder?
Die Fehlermeldung sagt doch klar das es $value nicht gibt!!?!?
Gruß Heiko
michl
2. Oktober 2023 um 17:26
7
Hallo Pitti,
das Versteh ich jetzt nicht ganz da ich ja gerne Wert"Value" auslesen und Setzen möchte?
Value ist doch der Wert 0 bis 4 ?
(
[components] => Array
(
[hca.main] => Array
(
[hca.washerMode] => Array
(
[mode] => Array
(
[value] => others
[timestamp] => 2023-09-17T11:27:46.435Z
)
[supportedModes] => Array
(
[value] => Array
(
[0] => normal
[1] => quickWash
[2] => eco
[3] => mix
[4] => spinOnly
Nicht so schlau, aber riecht so…
Schnell duschen
1 „Gefällt mir“
michl
3. Oktober 2023 um 08:51
11
Ich komm leider nicht drauf wo der Fehler ist.
$status = $daten['components']['hca.main']['hca.washerMode']['supportedModes']['value'];
SetValueInteger($supportedModes_id, $status);
Mode ist der IST Wert, nicht supportedModes.
$status = $daten['components']['hca.main']['hca.washerMode']['mode']['value'];
Michael
michl
5. Oktober 2023 um 06:36
14
Wie schaffe ich es, das ich Werte über die API an die Waschmaschine senden kann?
Keine Ahnung… viel zu wenig Infos dazu von dir.
Und mit dem Thema wie man eine Variable beschreibt hat das auch nix mehr zu tun
Michael
1 „Gefällt mir“