46 lines
1.9 KiB
PHP
46 lines
1.9 KiB
PHP
<?php
|
|
require_once dirname(__FILE__) . "/hassapi.class.php";
|
|
|
|
// --- Configuration (Identique à votre setup actuel) ---
|
|
$SUPERVISOR_TOKEN = @getenv("SUPERVISOR_TOKEN");
|
|
$HASS_HOST = @getenv("HASS_HOST");
|
|
$HASS_TOKEN = @getenv("HASS_TOKEN");
|
|
|
|
// ... [Logique de construction de $api identique à celle de votre script principal] ...
|
|
|
|
if ($api->isAuthorized()) {
|
|
// On récupère la liste des entités que Home Assistant connaît
|
|
// Cela nous sert de "liste de courses" pour savoir ce qu'on doit mettre à jour.
|
|
$all_entities = $api->loadStates();
|
|
|
|
foreach ($all_entities as $entity_data) {
|
|
$id = $entity_data['entity_id'];
|
|
$details = $api->getState($id); // Récupère le type (temp, humidity, etc.) et l'état actuel.
|
|
|
|
if ($details) {
|
|
/**
|
|
* ÉTAPE CRUCIALE : Ici, au lieu d'attendre un événement AirSend,
|
|
* vous devez appeler une fonction qui interroge directement
|
|
* votre service AirSendWebService pour obtenir la valeur physique.
|
|
*
|
|
* Si vous avez une méthode ou un endpoint dans AirSend pour "récupérer tout",
|
|
* utilisez-le ici pour remplir $current_physical_value.
|
|
*/
|
|
$current_physical_value = $details['state']; // Par défaut, on garde l'ancienne si pas de changement
|
|
|
|
// Exemple logique si vous interrogez le service AirSend directement :
|
|
// $raw_airsend = \AirSendService::fetchStatus($entity_data['some_id']);
|
|
// if ($raw_airsend) { $current_physical_value = $raw_airsend; }
|
|
|
|
// On force la mise à jour vers Home Assistant
|
|
$api->setState(
|
|
$id,
|
|
$details['type'] ?? 'state',
|
|
$current_physical_value,
|
|
time() * 1000, // Timestamp actuel pour forcer le "last_updated" dans HA
|
|
$entity_data['attributes']['channel'] ?? null
|
|
);
|
|
}
|
|
}
|
|
}
|