Rest_command Client error occurred when calling resource

Bonjour,
depuis quelques jours j’ai des problèmes avec mes command rest. Lorsque je clic dessus, j’ai le message : An error occurred while requesting the resource qui apparait.

Dans le journal de log j’ai cette erreur :

Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:240
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 10:31:46 (1 occurrences)
Last logged: 10:31:46

[547109836736] Client error occurred when calling resource 'http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10'
Traceback (most recent call last):
  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
  File "/usr/local/lib/python3.12/site-packages/aiohttp/client_proto.py", line 224, in data_received
    messages, upgraded, tail = self._parser.feed_data(data)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "aiohttp/_http_parser.pyx", line 557, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
  Expected HTTP/:

    b'OK'
      ^

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

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 143, 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 968, in start
    raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 400, message="Expected HTTP/:\n\n  b'OK'\n    ^", url=URL('http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10')

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 240, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2279, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2316, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 199, in async_service_handler
    raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: Client error occurred when calling resource 'http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10'

Voici comment je les lance. J’ai un switch qui e lance la commande :

- platform: template
  switches:
    volet_cuisine:
      turn_on:
         service: rest_command.volet_cuisine_on
      turn_off:
         service: rest_command.volet_cuisine_off
rest_command:
# Volet Cuisine ON
  volet_cuisine_on:
    url: 'http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10'
# Volet Cuisine OFF
  volet_cuisine_off:
     url: 'http://192.168.1.30/cgi-bin/domo.cgi?cmd=OFF%20A1%20P10'

Quelqu’un aurait il une idée ?

Salut

Le problème vient de ton volet. Le web server de ton volet renvoie une erreur.
Essaie de couper le courant du volet et de le remettre (pour faire un « reboot »).

Salut,
mon volet n’a pas de serveur web. En fait la commande est envoyé à une vieille zibase qui est en mode bridge pour faire fonctionner mes vieux capteur delta dore. C’est à elle que j’envoie les commandes.
J’ai coupé son alim, mais pareil …

Slt…
Essaie la cde dans page web direct

http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10
ou
http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON A1 P10

Salut, ça ça fonctionne

Il y a une réponse au message ?
Essai sans guillemet dans ta cde Rest :point_down:
Suite message de retour de ta cde Rest

aiohttp.client_exceptions.ClientResponseError: 400, message=« Expected HTTP/:\n\n b’OK’\n ^ », url=URL(‹ http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10 ›)
rest_command:
# Volet Cuisine ON
  volet_cuisine_on:
    url: http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10
# Volet Cuisine OFF
  volet_cuisine_off:
     url: http://192.168.1.30/cgi-bin/domo.cgi?cmd=OFF%20A1%20P10

Mets le log en mode formaté du type !

Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:240
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 10:31:46 (1 occurrences)
Last logged: 10:31:46

[547109836736] Client error occurred when calling resource ‹ http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10 ›
Traceback (most recent call last):
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
File « /usr/local/lib/python3.12/site-packages/aiohttp/client_proto.py », line 224, in data_received
messages, upgraded, tail = self._parser.feed_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « aiohttp/_http_parser.pyx », line 557, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadHttpMessage: 400, message:
Expected HTTP/:

b'OK'
  ^
The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File « /usr/src/homeassistant/homeassistant/components/rest_command/init.py », line 143, 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 968, in start
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 400, message=« Expected HTTP/:\n\n b’OK’\n ^ », url=URL(‹ http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10 ›)

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 240, in handle_call_service
response = await hass.services.async_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/core.py », line 2279, in async_call
response_data = await coro
^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/core.py », line 2316, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/src/homeassistant/homeassistant/components/rest_command/init.py », line 199, in async_service_handler
raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: Client error occurred when calling resource ‹ http://192.168.1.30/cgi-bin/domo.cgi?cmd=ON%20A1%20P10 ›

je vais regarder si j’ai un message dans le navigateur web.

Par contre avec ou sans guillemets, c’est du pareil au même

Alors non j’ai pas de message d’erreur. Certaines commandes passent, d’autres non.
Les switch volets passent même avec l’erreur.
Les switch éclairage passent à l’état ON, mais pas en OFF…

Bonjour,

bon bin je bloque toujours, j’ai lu les forums et autres, mais impossible pour moi de résoudre cette erreur…

Le problème ne vient pas de HA, mais il vient de ton serveur hébergé sur l’IP : 192.168.1.30.
Il faut connaitre les commandes possibles à envoyer en paramètres.

Et bien mon serveur est une zibase 1 qui fonctionne en mode bridge depuis 7ans sans aucun soucis…sauf depuis la dernière mise à jour :unamused:

hello @g4seb

as-tu trouvé une solution car depuis trois jours je suis confronté au même problème que toi :

Salut, non toujours pas trouvé de solution

J’ai trouvé, grace à l’aide de @Krull56 et @Frosh , il faut rajouter une ligne : « continue_on_error: true »
voici mon script et cela fonctionne :grinning:

# 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
          continue_on_error: true
          data: {}
        - delay: '00:03:00'
        - service: switch.turn_off
          target:
            entity_id: switch.on_off_old_radio
1 « J'aime »

Super, ça fonctionne effectivement. Par contre j’ai toujours le message d’erreur mais la commande passe :thinking:

Bizarre, cette commande est justement censée ignorer le message d’erreur et passer la commande quoi qu’il advienne L’essentiel est effectivement que cela fonctionne pour toi :+1:
Mais je reste persuadé qu’il doit y avoir un « hide » ou quelque chose de similaire pour cacher le message d’erreur

Le truc étrange c’est que sur les modules éclairage chacon dio, plus de message.
Sur les delta dore, toujours le message mais la commande passe :thinking:

Elle te renvoie quoi ces commandes normalement ?
Le code de réponse HTTP c’est du 200 ?

Bonjour,
explication dans la doc sur continue_on_error:

Continuer sur erreur

Par défaut, une séquence d’actions sera interrompue lorsqu’une des actions de cette séquence rencontrera une erreur. L’automatisation ou le script sera arrêté, une erreur est enregistrée et l’automatisation ou l’exécution du script est marquée comme erronée.

Parfois, ces erreurs sont attendues, par exemple parce que vous savez que le service que vous appelez peut parfois poser problème, et peu importe s’il échoue. Vous pouvez définir continue_on_error ces cas sur une telle action.

Le continue_on_error est disponible sur toutes les actions et est défini sur false . Vous pouvez le définir true si vous souhaitez continuer la séquence d’actions, que cette action rencontre ou non une erreur.