besmartand-pro / bsap-sensor-client
Framework-independent PHP client for the BeSmartAnd.Pro Sensor API.
Package info
github.com/BeSmartAnd-Pro/bsap-sensor-client
pkg:composer/besmartand-pro/bsap-sensor-client
Requires
- php: ^8.4
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.1 || ^2.0
Requires (Dev)
- besmartand-pro/php-quality-config: ^1.1
- guzzlehttp/guzzle: ^7.9
- nyholm/psr7: ^1.8
- phpunit/phpunit: ^12.5
Suggests
- guzzlehttp/guzzle: PSR-18 transport for standalone PHP applications.
- nyholm/psr7: PSR-17 request factory for standalone PHP applications.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-12 21:47:47 UTC
README
Klient publicznego REST API sensor.besmartand.pro dla PHP 8.4+. Korzysta z transportu PSR-18 i fabryki żądań PSR-17 dostarczonych przez aplikację.
Instalacja
composer require besmartand-pro/bsap-sensor-client guzzlehttp/guzzle nyholm/psr7
Użycie w czystym PHP
use BeSmartAndPro\BsapSensorClient\SensorClient; use GuzzleHttp\Client; use Nyholm\Psr7\Factory\Psr17Factory; require 'vendor/autoload.php'; $client = new SensorClient( new Client(['timeout' => 10, 'connect_timeout' => 5]), new Psr17Factory(), $_ENV['SENSOR_API_TOKEN'], ); foreach ($client->getSensorHistory('SENSOR_UUID') as $measurement) { echo $measurement->getSensor() . ': ' . $measurement->getTemperature() . PHP_EOL; }
Zakres API
getSensorHistory(string $sensorId): array wywołuje GET /api/client/sensors/{id}/history z nagłówkiem X-Api-Token. Zwraca listę obiektów SensorMeasurement:
| Metoda | Typ zwracany |
|---|---|
getSensor() |
string — etykieta sensora |
getTemperature() |
float |
getHumidity() |
?float |
getDatetime() |
?DateTimeImmutable |
Serwer zwraca maksymalnie 200 ostatnich pomiarów. Kolejność odpowiedzi jest zachowywana. Obecny endpoint nie udostępnia paginacji ani filtrów dat. Token organizacji jest dostępny w panelu w sekcji Tokeny API, a identyfikator sensora w sekcji Sensory.
Biblioteka obsługuje publiczne API klienta. Endpointy urządzeń, parowania i administratora mają inne mechanizmy autoryzacji i pozostają poza jej zakresem.
Błędy
ApiException: odpowiedź inna niż HTTP 200. MetodygetStatusCode()igetRetryAfter()zwracają kod i opcjonalny nagłówekRetry-After(sekundy lub data HTTP). Dotyczy m.in. 401, 403, 404, 429 oraz 5xx. Treść błędnej odpowiedzi nie jest dodawana do wyjątku.InvalidResponseException: niepoprawny JSON, struktura danych lub data pomiaru.Psr\Http\Client\ClientExceptionInterface: błąd transportu przekazywany bez zmian.InvalidArgumentException: niepoprawna konfiguracja albo pusty identyfikator sensora.
Klient nie ponawia żądań automatycznie. PSR-18 nie podąża automatycznie za przekierowaniami; przekazana implementacja transportu powinna przestrzegać tego kontraktu. Konfigurację timeoutu ustawia aplikacja. Nagłówek X-Api-Token nie powinien trafiać do logów.
Development
composer install composer qa
Testy używają odpowiedzi HTTP w pamięci. Nie kontaktują się z produkcyjnym API.
Licencja MIT.