Merge pull request #35084 from dotlambda/home-assistant
nixos/home-assistant: test MQTT configuration
This commit is contained in:
commit
6e1c714c99
@ -2,17 +2,27 @@ import ./make-test.nix ({ pkgs, ... }:
|
||||
|
||||
let
|
||||
configDir = "/var/lib/foobar";
|
||||
apiPassword = "secret";
|
||||
|
||||
in {
|
||||
name = "home-assistant";
|
||||
meta = with pkgs.stdenv.lib; {
|
||||
maintainers = with maintainers; [ dotlambda ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
hass =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
mosquitto
|
||||
];
|
||||
services.home-assistant = {
|
||||
inherit configDir;
|
||||
enable = true;
|
||||
package = pkgs.home-assistant.override {
|
||||
extraPackages = ps: with ps; [ hbmqtt ];
|
||||
};
|
||||
config = {
|
||||
homeassistant = {
|
||||
name = "Home";
|
||||
@ -22,7 +32,16 @@ in {
|
||||
elevation = 0;
|
||||
};
|
||||
frontend = { };
|
||||
http = { };
|
||||
http.api_password = apiPassword;
|
||||
mqtt = { }; # Use hbmqtt as broker
|
||||
binary_sensor = [
|
||||
{
|
||||
platform = "mqtt";
|
||||
state_topic = "home-assistant/test";
|
||||
payload_on = "let_there_be_light";
|
||||
payload_off = "off";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -31,7 +50,7 @@ in {
|
||||
testScript = ''
|
||||
startAll;
|
||||
$hass->waitForUnit("home-assistant.service");
|
||||
|
||||
|
||||
# Since config is specified using a Nix attribute set,
|
||||
# configuration.yaml is a link to the Nix store
|
||||
$hass->succeed("test -L ${configDir}/configuration.yaml");
|
||||
@ -39,8 +58,19 @@ in {
|
||||
# Check that Home Assistant's web interface and API can be reached
|
||||
$hass->waitForOpenPort(8123);
|
||||
$hass->succeed("curl --fail http://localhost:8123/states");
|
||||
$hass->succeed("curl --fail http://localhost:8123/api/ | grep 'API running'");
|
||||
$hass->succeed("curl --fail -H 'x-ha-access: ${apiPassword}' http://localhost:8123/api/ | grep -qF 'API running'");
|
||||
|
||||
# Toggle a binary sensor using MQTT
|
||||
$hass->succeed("curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}' | grep -qF '\"state\": \"off\"'");
|
||||
$hass->waitUntilSucceeds("mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${apiPassword}' -m let_there_be_light");
|
||||
$hass->succeed("curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}' | grep -qF '\"state\": \"on\"'");
|
||||
|
||||
# Check that no errors were logged
|
||||
$hass->fail("cat ${configDir}/home-assistant.log | grep -qF ERROR");
|
||||
|
||||
# Print log to ease debugging
|
||||
my $log = $hass->succeed("cat ${configDir}/home-assistant.log");
|
||||
print "\n### home-assistant.log ###\n";
|
||||
print "$log\n";
|
||||
'';
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user