Daten (Status aus Shelly 2.5 auslesen)

[b]Hallo Experten

[/b]Wer kann helfen
Mit diesem Script lese ich den Shelly 2.5 aus.
Die Befehle Scripte Hoch/Runter Stop funktionieren


[b]<?php[/b]
$url = "http://192.168.xxx.xxx/roller/0";      // URL nach API ergänzen

$result = Sys_GetURLContent($url);
if($result)

{
$json = json_decode($result);
var_dump($json);
// $json auswerten und Werte in Variablen ablegen
// Wie kann man das machen? 
}
############################################
[b]Nach Scriptausführung wird das ausgegeben:[/b]

object(stdClass)#1 (11) {
  ["state"]=>
  string(4) "stop"
  ["source"]=>
  string(4) "http"
  ["power"]=>
  float(0)
  ["is_valid"]=>
  bool(true)
  ["safety_switch"]=>
  bool(false)
  ["overtemperature"]=>
  bool(false)
  ["stop_reason"]=>
  string(6) "normal"
  ["last_direction"]=>
  string(5) "close"
  [b]["current_pos"]=>
  int(101)[/b]
  ["calibrating"]=>
  bool(false)
  ["positioning"]=>
  bool(true)
}
#########################################
Wie kann ich die Daten in Variablen schreiben
Wobei mir die [b]current_pos[/b] reichen würde....

Vielen Dank im Voraus
Egon

Ich würde dir empfehlen, beim json_decode noch ein true mit ranzuhängen. Dann bekommst du nämlich ein assoziatives Array zurück, die gleiche Form, die auch die IPS-spezifischen Funktionen wie IPS_GetObject verwenden. Danach kannst du auf die einzelnen Felder zugreifen und diese in ein Array speichern, beispielsweise:


// Vorher alles analog machen

$json = json_decode($result, true);

SetValue(12345 /* Hier die VariablenID anpassen */, $json['current_pos']);
// Nach belieben weitere Variablen füttern

Hallo Dr Niels

Vielen Dank
Funktioniert prima.
Darum habe ich IPSymcon

Schönen Gruß:)
Egon

Darf ich fragen, wieso du das alles selbst machst?
Du kannst doch auch das Shelly Modul mit MQTT nutzen.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Kai
Danke, hab ich schon im Blick aber für Hoch, Runter Stop gehts mit diesen Scripten
sehr einfach.

MQTT:
Ist mir alles zu unübersichtlich.
Muss ich den Shelly flashen?
Welchen MQTT Broker oder und Client was ist der Token?
MQTT von Symcon oder dein MQTT Modul?

Oder ist mit dem Script noch ein Nachteil damit, wo ich noch nicht entdeckt habe…

$runter = file_get_contents(  "http://192.168.xxx.xxx/roller/0?go=close");

Schönen Gruß:)
Egon

Hallo Egon,

ich sehe keinen Nachteil auch über http ein Shelly zu steuern.
Aber MQTT hat halt Vorteile, da der Status von leber kommt.
Brauchen tust du, den Symcon MQTTserver und Kai’s Shelly Modul.
Shelly braucht NICHT geflasht werden, kann MQTT von Haus aus.

Ich habe auch mittlerweile 4 verschiedene Shellys mit dem Shelly-Modul in Betrieb und bin bestens zufrieden.
Beim ersten Shelly habe ich mir die einzelnen Schritte genau aufgeschrieben und dann geht es bei den anderen raz faz :slight_smile:
Danke in diesem Zusammenhang Kai für die Erstellung dieses tollen Moduls.

LG. Werner

Gerne und bei Fragen einfach im Thread nachfragen. :slight_smile:

Grüße,
Kai