json Schnittstelle auslesen

Moin,
da nach ca. einem Jahr problemloser Funktion meine XBee-Roomba Konfiguration von jetzt auf gleich den Dienst versagt hat und ich teilweise ohnehin Empfangsprobleme habe, bin ich nun auf das Thinking Cleaner Interface umgestiegen. Neben der App und Webinterface bietet das Addon auch eine json Schnittstelle, hier der Link zur API: http://www.thinkingcleaner.com/downloads/TC_API.pdf

Befehle wie z.B. Clean senden klappt in IPS nun schon gut über

<?

$Datei = @file_get_contents("http://192.168.1.44/command.json?command=clean", false, NULL, 0,0);

?>

Weiß nicht ob das gepfuscht ist oder eleganter geht, auf jeden Fall funktioniert es. Die Herausforderung liegt nun darin, die Daten vom Roomba in IPS zu bekommen. Hierzu würde für die Werte die ich brauche der Aufruf http://192.168.1.44/status.json lauten, wobei das ganze in Safari folgendes liefert (siehe hierzu auch die API):

{
  "action" : "status",
  "result" : "success",
  "status" : {
    "name" : "Roomba",
    "battery_charge" : 100,
    "capacity" : "2696",
    "cleaner_state" : "st_base_full",
 	"cleaning" : "0",
    "schedule_serial_number" : "0",
    "near_homebase" : "0"
  }
}

Die Frage ist nun, wie ich diese einzelnen Werte (vor allem interessieren mich im Moment Batteriestatus und Cleaning) in IPS Variablen bekomme. Ich habe dazu im Forum schonmal diesen Ansatz gefunden, jedoch fehlt mir noch das Verständnis, um das Ganze auf meinen Anwendungsfall zu übertragen, kann mir da jemand helfen?

Gruß
Luca

Hi Luca!

Hier gibt es ein passendes Beispiel für dich :slight_smile:
IP-Symcon - Wie kann ich… 2.0

Grüße,
Chris

Super, danke!

Hallo,

ich komme leider mit dem Skript nicht zum Ziel. Der Roomba startet nicht. Ich habe schon meine IP Adresse verwendet.

<?

$Datei = @file_get_contents(„http://http://192.168.178.44/command.json?command=clean“, false, NULL, 0,0);

?>

Kann mir jemand helfen warum es so nicht geht?

Gruß, Michael

Fehlersuchspiel ? :smiley:

Michael

Geht aber leider so auch nicht!

<?


$Datei = @file_get_contents("http://192.168.178.44/status.json/command.json?command=clean");


?>

Sollte das nicht


<?
$Datei = @file_get_contents("http://192.168.178.44/command.json?command=clean", false, NULL, 0,0);
?>

heißen?
Die IP Adresse stimmt aber, und auf andere Befehle reagiert der Sauger?

Und wenn man das @ entfernt, sieht man auch ggf. Fehlermeldungen :rolleyes:

paresy