Beiträge von der_robert
-
-
Hier eine mal fix zusammen geschrieben:
Code
Alles anzeigen$shelly_ip = 'http://192.168.0.'; // hier deine Lokale IP der Shellys eintragen $shellys_liste = array( array( 'name' => 'Wohnzimmer Deckenlicht', 'ip' => 120), // Der letzte Block der IP -> http://192.168.0.120 array( 'name' => 'Wohnzimmer Stehlampe', 'ip' => 139), // Der letzte Block der IP -> http://192.168.0.139 ); $shelly_data = []; foreach($shellys_liste as $key => $shelly){ $shelly_data[$shelly['ip']] = $data = json_decode(file_get_contents($shelly_ip.$shelly['ip'].'/status'),true); // entweder direkt hier $data auswerten // bei [0] aufpassen fals es mehr als ein relay im Shelly gibt! echo"Shelly: ".$shelly['name']."<br />"; echo"Status: ".($data['relays'][0]['ison'] ? 'AN' : 'AUS'); echo"<hr>"; } // oder hier das Array $shelly_data auswerten echo"<pre>"; print_r($shelly_data); echo"</pre>";
Durch die Abfrage per file_get_contents und der anschließenden Umwandlung in ein Array kann man damit viel besser arbeiten als aus einem JSON String die Sachen rauszuparsen die man braucht.
Das Array für eine Shelly sieht dann so aus:
Code
Alles anzeigen[120] => Array ( [wifi_sta] => Array ( [connected] => 1 [ssid] => XXXXXXXXX [ip] => 192.168.0.120 [rssi] => -66 ) [cloud] => Array ( [enabled] => 1 [connected] => 1 ) [mqtt] => Array ( [connected] => ) [time] => 12:12 [unixtime] => 1605787979 [serial] => 54 [has_update] => [mac] => XXXXXXXXX [cfg_changed_cnt] => 0 [actions_stats] => Array ( [skipped] => 0 ) [relays] => Array ( [0] => Array ( [ison] => [has_timer] => [timer_started] => 0 [timer_duration] => 0 [timer_remaining] => 0 [source] => cloud ) ) [meters] => Array ( [0] => Array ( [power] => 0 [is_valid] => 1 ) ) [inputs] => Array ( [0] => Array ( [input] => 0 [event] => [event_cnt] => 0 ) ) [ext_sensors] => Array ( ) [ext_temperature] => Array ( ) [ext_humidity] => Array ( ) [update] => Array ( [status] => idle [has_update] => [new_version] => 20200827-065344/v1.8.3@4a8bc427 [old_version] => 20200827-065344/v1.8.3@4a8bc427 ) [ram_total] => 51112 [ram_free] => 39260 [fs_size] => 233681 [fs_free] => 150600 [uptime] => 230030 )
Die Ausgabe sieht dann so aus: