feat(api): humidity, CO2, current pressure and 24h pressure history
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,7 @@ final class StationMapperTest extends TestCase
|
||||
'min_at' => 1789099800,
|
||||
'max' => 19.8,
|
||||
'max_at' => 1789124700,
|
||||
'humidity' => 71.0,
|
||||
], $m['outdoor']);
|
||||
}
|
||||
|
||||
@@ -47,8 +48,8 @@ final class StationMapperTest extends TestCase
|
||||
|
||||
self::assertCount(3, $m['indoor']);
|
||||
self::assertSame(['Woonkamer', 'Slaapkamer', 'Kantoor'], array_column($m['indoor'], 'name'));
|
||||
self::assertSame(['id' => '70:ee:50:00:00:01', 'name' => 'Woonkamer', 'temp' => 21.3, 'min' => 20.4, 'max' => 22.1, 'reachable' => true], $m['indoor'][0]);
|
||||
self::assertSame(['id' => '03:00:00:00:00:03', 'name' => 'Kantoor', 'temp' => null, 'min' => null, 'max' => null, 'reachable' => false], $m['indoor'][2]);
|
||||
self::assertSame(['id' => '70:ee:50:00:00:01', 'name' => 'Woonkamer', 'temp' => 21.3, 'min' => 20.4, 'max' => 22.1, 'humidity' => 48.0, 'co2' => 612, 'reachable' => true], $m['indoor'][0]);
|
||||
self::assertSame(['id' => '03:00:00:00:00:03', 'name' => 'Kantoor', 'temp' => null, 'min' => null, 'max' => null, 'humidity' => null, 'co2' => null, 'reachable' => false], $m['indoor'][2]);
|
||||
}
|
||||
|
||||
public function testIndoorConfigDeterminesOrderAndLabels(): void
|
||||
@@ -69,6 +70,24 @@ final class StationMapperTest extends TestCase
|
||||
self::assertSame(2.4, $m['sum_rain_24']);
|
||||
}
|
||||
|
||||
public function testPressureFromBaseStation(): void
|
||||
{
|
||||
$m = StationMapper::map($this->body(), null, []);
|
||||
|
||||
self::assertSame(['current' => 1014.2, 'trend' => 'up'], $m['pressure']);
|
||||
}
|
||||
|
||||
public function testPressureNullWhenBaseStationUnreachable(): void
|
||||
{
|
||||
$body = $this->body();
|
||||
$body['devices'][0]['reachable'] = false;
|
||||
unset($body['devices'][0]['dashboard_data']);
|
||||
$m = StationMapper::map($body, null, []);
|
||||
|
||||
self::assertSame(['current' => null, 'trend' => null], $m['pressure']);
|
||||
self::assertSame(1789129780, $m['measured_at'], 'valt terug op time_utc van de buitenmodule');
|
||||
}
|
||||
|
||||
public function testWithoutRainModule(): void
|
||||
{
|
||||
$body = $this->body();
|
||||
@@ -89,7 +108,7 @@ final class StationMapperTest extends TestCase
|
||||
unset($body['devices'][0]['modules'][0]['dashboard_data']);
|
||||
$m = StationMapper::map($body, null, []);
|
||||
|
||||
self::assertSame(['temp' => null, 'trend' => null, 'min' => null, 'min_at' => null, 'max' => null, 'max_at' => null], $m['outdoor']);
|
||||
self::assertSame(['temp' => null, 'trend' => null, 'min' => null, 'min_at' => null, 'max' => null, 'max_at' => null, 'humidity' => null], $m['outdoor']);
|
||||
}
|
||||
|
||||
public function testUnknownDeviceIdFallsBackToFirstStation(): void
|
||||
@@ -108,5 +127,6 @@ final class StationMapperTest extends TestCase
|
||||
self::assertSame([], $m['indoor']);
|
||||
self::assertNull($m['outdoor']['temp']);
|
||||
self::assertNull($m['rain_module_id']);
|
||||
self::assertSame(['current' => null, 'trend' => null], $m['pressure']);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user