Rest_command erreur

Mon problème

Hello à tous

Depuis trois jours j’ai un problème avec mon switch Old Radio, j’essaye en vain de comprendre l’erreur car tout fonctionnait bien avant et je n’ai absolument rien changé à part avoir update HA en core 2024.3.0

Voici l’erreur

pour le switch.yaml et rest_command.yaml je suis sur c’est ok cela fonctionnait avant l’erreur :grinning:

J’ai testé la commande. : http://192.168.0.28/plugins/max2play_settings/controller/Basic.php?action=shutdown dans un navigateur et cela fonctionne
J’ai aussi testé le switch GAME-TOWER qui inclus un rest_command lui aussi et il fonctionne

Avec l’Outils de développement il s’avère que c’est le rest_command qui est en défaut.
Mais ce qui est vraiment bizarre c’est que la commande passe étant donné que mon raspberry pi s’éteint. (en tout cas le système Max2Play reçoit bien la commande pour s’éteindre).

Je fait un test pour le switch aussi pas de message d’erreur mais il ne s’éteint pas

je suis totalement perdu et je ne serais pas du tout comment régler le problème :zipper_mouth_face:

Merci d’avance pour vos retour

Ma configuration


[center]## System Information

version core-2024.3.0
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.6.16-haos
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4451
Installed Version 1.34.0
Stage running
Available Repositories 1402
Downloaded Repositories 34
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.0
update_channel stable
supervisor_version supervisor-2024.02.1
agent_version 1.6.0
docker_version 24.0.7
disk_total 30.8 GB
disk_used 10.7 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.9.0), File editor (5.8.0), RPC Shutdown (2.4), Zigbee2MQTT (1.36.0-1), Mosquitto broker (6.4.0), Node-RED (17.0.7), Spotify Connect (0.13.0), CEC Scanner (3.0), Home Assistant Google Drive Backup (0.112.1)
Dashboards
dashboards 1
resources 23
views 5
mode storage
Recorder
oldest_recorder_run 26 février 2024 à 18:20
current_recorder_run 10 mars 2024 à 12:10
estimated_db_size 161.45 MiB
database_engine sqlite
database_version 3.44.2
Spotify
api_endpoint_reachable ok
/center]

Bonjour, je vois que dans ton template « ON/OFF OLD RADIO » ton switche « old_radio_macro » à pour target entity switch.on_off_old_radio que ce soit pour le service turn_on et turn_off.
Seulement je ne vois pas ce switch dans ta config.
Est ce que tu ne l’as pas mis dans tes captures d’ecrans ou as tu oublier de le creer ?
A quoi correspond-t-il ?

Hello merci de ta réponse

le switch existe bel bien sur MQTT ( prise zigbee )


okay okay ^^
Alors effectivement c’est étrange si ta commande fonctionne en l’entrant directement depuis un navigateur c’est qu’elle est bonne, et bien reçu par le périphérique.
C’est peut être tout bête mais je vois dans la doc qu’il y a des " " pour l’URL. Est ce que tu peux faire un test en encadrant ton url par les guillemets ? J’ai des shell_commande dans ma config et parfois entre les ’ ’ et " " c’est une tané d’entré une commande dans une commande ^^

j’ai fait le test avec ’ ’ et " " j’ai le même problème malheuresement.
Ce qui est bizarre c’est que le switch avec le rest command de mon PC « GAME-TOWER » fonctionne lui sans soucis

oui vraiment bizarre :confused:
Hum autre chose a essayer, est ce que tu peux rajouter deux espaces devant chacune des lignes appeler par turn_off. Pour rendre de la sorte

  turn_off:
    - service: rest_command....
    - delay: ....
    - service: rest_command....

Je ne suis pas sur, mais j’imagine que « peut etre » ça peut jouer ^^’

Si ca ne fonctionnne toujours pas, est ce que tu as d’autres informations qui pourraient nous etre utile dans les journaux? Vide les, appel ton service pour avoir l’erreur « an error occured while requesting the resource » et verifie a nouveau tes journaux. Tu devrais avoir des infos supplémentaires

le noob que je suis ne sais pas vider les appels et vérifier les journaux…

pour voir les journaux c’est dans
Paramètres → système → journaux
Tout en bas tu as un bouton « nettoyer » pour vider tout. Ensuite tu active ton switch pour provoquer l’erreur et tu reviens sur les journaux et si rien n’est affiché tu cliques sur la flèche circulaire en haut a droite

Merci pour le tuyau

Désolé les journaux sont énormes même après nettoyage, j’éspère ne pas m’être trompé

voici les journaux :

pour la première erreur :

Enregistreur: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:239
intégration: Home Assistant WebSocket API (documentation, problèmes)
S’est produit pour la première fois: 15:17:21 (1 occurrences)
Dernier enregistrement: 15:17:21

[140019313345856] Client error occurred when calling resource ‹ http://192.168.0.28/plugins/max2play_settings/controller/Basic.php?action=shutdown ›
Traceback (most recent call last):
File « /usr/src/homeassistant/homeassistant/components/rest_command/init.py », line 142, in async_service_handler
async with getattr(websession, method)(
File « /usr/local/lib/python3.12/site-packages/aiohttp/client.py », line 1194, in aenter
self._resp = await self._coro
^^^^^^^^^^^^^^^^
File « /usr/local/lib/python3.12/site-packages/aiohttp/client.py », line 605, in _request
await resp.start(conn)
File « /usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py », line 966, in start
message, payload = await protocol.read() # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^
File « /usr/local/lib/python3.12/site-packages/aiohttp/streams.py », line 622, in read
await self._waiter
aiohttp.client_exceptions.ServerDisconnectedError: Server disconnected

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File « /usr/src/homeassistant/homeassistant/components/websocket_api/commands.py », line 239, in handle_call_service
response = await hass.services.async_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/core.py », line 2319, in async_call
response_data = await coro
^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/core.py », line 2356, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/helpers/service.py », line 905, in entity_service_call
single_response = await _handle_entity_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/helpers/service.py », line 975, in _handle_entity_call
result = await task
^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/components/template/switch.py », line 168, in async_turn_off
await self.async_run_script(self._off_script, context=self._context)
File « /usr/src/homeassistant/homeassistant/components/template/template_entity.py », line 562, in async_run_script
await script.async_run(
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 1600, in async_run
return await asyncio.shield(run.async_run())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 435, in async_run
await self._async_step(log_exceptions=False)
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 487, in _async_step
self._handle_exception(
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 512, in _handle_exception
raise exception
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 485, in _async_step
await getattr(self, handler)()
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 723, in _async_call_service_step
response_data = await self._async_run_long_action(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 685, in _async_run_long_action
return long_task.result()
^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/core.py », line 2319, in async_call
response_data = await coro
^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/core.py », line 2356, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/components/rest_command/init.py », line 198, in async_service_handler
raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: Client error occurred when calling resource ‹ http://192.168.0.28/plugins/max2play_settings/controller/Basic.php?action=shutdown ›

Pour la deuxième :

Enregistreur: homeassistant.helpers.script.old_radio_macro
Source: helpers/script.py:1805
S’est produit pour la première fois: 15:17:21 (1 occurrences)
Dernier enregistrement: 15:17:21

old_radio_macro: Error executing script. Error for call_service at pos 1: Client error occurred when calling resource ‹ http://192.168.0.28/plugins/max2play_settings/controller/Basic.php?action=shutdown ›

Voir section Restful :wink:

Merci Krull

j’avais vu ce truc de « continue_on_error » mais tu connais mon niveau basique, je ne serais même pas ou l’intégrer et à quelle ligne … :smirk:

Dans un script ou une automation :thinking: Du coup je ne sais pas ^^’
@Krull56 peux-tu nous dire? Est-il possible de le mettre directement dans la config du switch ?

Aucune idée malheureusement.
Faut tester :wink:

Je l’ajouterai bien après turn on et turn off avant la ligne service :

Ou sinon tu revois le code de ton esp radio pour qu’il utilise le bon protocole web :grin:

J’avais déjà regardé de ce côté, mais impossible, le software n’est plus mis à jour depuis plus de quatre ans malheureusement.
C’est une base Linux installé sur un Pi0 pour du Multi Room, tu sais la fameuse old radio :joy:

Oh que oui que je m’en souviens :rofl:

Fais des essais avec le continue on error.

Surtout n’oublie pas de lancer une vérif de la configuration avant de redémarrer :wink:

je galère chaque ligne est en erreur sur la verif de configuration :upside_down_face:

# ON/OFF OLD RADIO
  - platform: template
    switches:
      old_radio_macro:
        unique_id: old_radio_macro
        turn_on:
          service: switch.turn_on
          target:
            entity_id: switch.on_off_old_radio
        turn_off:
        - service:  rest_command.turn_off_http_old_radio
        - delay: '00:03:00'
        - service: switch.turn_off
          target:
            entity_id: switch.on_off_old_radio

je viens de faire un test en ajoutant le continue on error sur un switch fictif et pas d’erreur de validation ( mais je ne sais pas si ça fonctionne :wink: )

switch:
  - platform: template
    switches:
      testswitch:
        turn_on:
          continue_on_error: true
          service: switch.turn_on
          target:
            entity_id: switch.inter_bibli
        turn_off:
          continue_on_error: true
          service: switch.turn_off
          target:
            entity_id: switch.inter_bibli

je dois être un gros poissard moi :sweat_smile: