update states scritp and add refresh status every 5 mins
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
<?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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user