Api home assistant?

Bonjour.

est il possible d acceder à une valeur d un sensor via une url ?
En gros, j ai un routeur photovoltaique perso.
Jusque là j utilisais jeedom. Donc j avais code le routeur pour qu il aille lire la valeur d une variable sur mon jeedom.

Est ce possible de faire la meme chise avec Home assistant ?
si oui comment ?

Salut

Oui, en lisant la documentation : REST API | Home Assistant Developer Docs

Avec Get /api/states/<entity_id>

2 « J'aime »

Merci.

J’essaye mais je n’y arrive pas.
Déjà j’essaye en curl depuis windows

curl -k -X GET -H « Authorization: Bearer montoken » -H « Content-Type: application/json » http://192.168.1.5:8123/api/states/puissance_grid

réponse : {« message »:« Entity not found. »}

Evidemment j’ai mis mon token …

Salut,
tu a activer l’api ?

Quand j’avais fais des tests, j’utiliser c’est commande.

curl -X GET -H "Authorization: Bearer Token" http://192.168.1.xx:8123/api/states/sensor.atc_67c6_temperature

Edit:
il manque le nom complet de l’entité sensor.puissance_grid

curl -k -X GET -H « Authorization: Bearer montoken » -H « Content-Type: application/json » http://192.168.1.5:8123/api/states/sensor.puissance_grid

oui, en fait je ne mettais pas sensor. mais deirectement le nom du sensor !!!
Maintenant ça fonctionne.

En revanche sous arduino avec un http … Ca me retourne un 401 non authorisé !

http.addHeader("Authorization:", "Bearer xxxx");
http.addHeader("Content-Type", "application/json");
 http.begin("http://192.168.1.5:8123/api/states/sensor.puissance_grid");

  httpcode=http.GET();
  delay(500);
  tempor = http.getString();
  Serial.println("httpcode : "+String(httpcode));

Un test qui avait fonctionner, mais j’ai lâcher l’affaire avec Arduino et suis passer sur ESPHome.

const char* serverAddress = "192.168.1.xx";  // Replace with your Home Assistant IP address
const int serverPort = 8123;
const char* apiToken = "Token";  // Replace with your Home Assistant API token
const char* deviceEntityId = "sensor.atc_67c6_temperature";

  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    String url = "http://" + String(serverAddress) + ":" + String(serverPort) + "/api/states/" + String(deviceEntityId);
    http.begin(url);
    http.addHeader("Authorization", "Bearer " + String(apiToken));
    http.addHeader("Content-Type", "application/json");
    int httpResponseCode = http.GET();
    if (httpResponseCode==200) {
      String response = http.getString();
      StaticJsonDocument<1000> doc;
      deserializeJson(doc, response);
      String sensorState = doc["state"].as<String>();
      Serial.print("Sensor State: ");
      Serial.println(sensorState);
      lcd->setCursor(5, 80);
      lcd->setTextColor(WHITE);  
      lcd->print("Frigo Temp: ");
      lcd->setCursor(5, 99);
      lcd->print("    ");
      lcd->setCursor(5, 99);
      lcd->setTextColor(GREEN);        
      lcd->print(sensorState);
      lcd->println(" C");

effectivement sans les « : » après authorization ça fonctionne impeccablement !

1 « J'aime »

J’avais même pas fait attention :upside_down_face: