Information sur niveau de charge de la batterie Bosch Indego

Bonjour, est-il possible de récupérer l’info du pourcentage de batterie restant ?
Il apparait sous forme de picto sur l’appli Android.

Hello

Désolé pour le detterrage mais, en cherchant une toute autre valeur, je me suis aperçu que des infos sur la batterie était récupérable en faisant un /operatingData :

{
  "runtime": {
    "total": {
      "operate": 124040,
      "charge": 49174
    },
    "session": {
      "operate": 12,
      "charge": 0
    }
  },
  "battery": {
    "voltage": 3.4,
    "cycles": 0,
    "discharge": -0.1,
    "ambient_temp": 23,
    "battery_temp": 23,
    "percent": 34
  },
  "garden": {
    "id": 255,
    "name": 0,
    "signal_id": 0,
    "size": 193,
    "inner_bounds": 0,
    "cuts": 0,
    "runtime": 124040,
    "charge": 49174,
    "bumps": 2227,
    "stops": 47,
    "last_mow": 6,
    "map_cell_size": 0
  },
  "hmiKeys": 735
}

Je n’ai pas encore vérifié sur plusieurs jours / sessions de tonte si ces valeurs restent cohérentes…
jpty : Tu as un avis dessus ?

J’obtiens cela:

{
  "runtime" : { 
    "total" : { 
      "operate" : 83875,
      "charge" : 36639
    },
    "session" : {
      "operate" : 0,
      "charge" : 0
    }
  },
  "battery" : {
    "voltage" : 7.8,
    "cycles" : 0,
    "discharge" : -0.1,
    "ambient_temp" : 21,
    "battery_temp" : 21,
    "percent" : 78
  },
  "garden" : {
    "id" : 1,
    "name" : 1,
    "signal_id" : 4,
    "size" : 168,
    "inner_bounds" : 0,
    "cuts" : 0,
    "runtime" : 83875,
    "charge" : 36639,
    "bumps" : 3199,
    "stops" : 66,
    "last_mow" : 6,
    "map_cell_size" : 0 
  },
  "hmiKeys" : 3508
}

Le voltage de la batterie est bizarre. La batterie est 18V.
La tondeuse gère seule la charge de la batterie. A la fin de la dernière tonte, elle s’est chargée à 78%. Ce qui est optimum pour une batterie Li-ion. La prochaine tonte est lundi prochain 11h ( mode predictive activé ) Je vais surveiller lundi 10h30 voir si elle se charge à + de 80% avant de tondre.

Attention, elle est sensible au soleil/UV. Après 3 saisons de tonte, la 4ème s’est vite interrompue.
Retour au SAV. 375€

  • Alim de la station de charge HS. Le tour du voyant partait en poussière et n’était plus étanche. Messages de perte de signal du fil périphérique lors de la dernière tonte. Puis la tondeuse ne s’est plus allumée.
  • Les touches du panneau de commande brulées par le soleil devenaient compliquées à utiliser.

Capot de protection ou abri à prévoir impérativement

1 « J'aime »

Hello
Des tests que j’ai pu faire, le voltage = percent / 10.
Il y a une règle de calcul en fonction des modèles selon jm-73 :

MOWER_MODEL_VOLTAGE = {
    "3600HA2300": ModelVoltage(min=285, max=369),   # Indego 1000
    "3600HA2301": ModelVoltage(min=285, max=369),   # Indego 1200
    "3600HA2302": ModelVoltage(min=285, max=369),   # Indego 1100
    "3600HA2303": ModelVoltage(min=285, max=369),   # Indego 13C
    "3600HA2304": ModelVoltage(min=285, max=369),   # Indego 10C
    "3600HB0100": ModelVoltage(min=0, max=100),     # Indego 350
    "3600HB0101": ModelVoltage(min=0, max=100),     # Indego 400
    "3600HB0102": ModelVoltage(min=0, max=100),     # Indego S+ 350 1gen
    "3600HB0103": ModelVoltage(min=0, max=100),     # Indego S+ 400 1gen
    "3600HB0105": ModelVoltage(min=0, max=100),     # Indego S+ 350 2gen
    "3600HB0106": ModelVoltage(min=0, max=100),     # Indego S+ 400 2gen
    "3600HB0302": ModelVoltage(min=0, max=100),     # Indego S+ 500
    "3600HB0301": ModelVoltage(min=0, max=100),     # Indego M+ 700 1gen
    "3600HB0303": ModelVoltage(min=0, max=100),     # Indego M+ 700 gen2
}

Le mien a toujours eu sa niche et n’ai pas encore dans les même état mais ce n’est que sa 3e saison :scream:

Bonjour,
moi aussi j’avais réussi à récupérer l’info de la batterie, avec le code python et il est assez cohérent. Mais je suis pas arrivé à l’intégrer à ton plugin. Je suis pas encore assez calé en programmation.

Hello
Je surveille les valeurs depuis l’autre jour, via une petite modif du BoschIndego.class.php et le bouton debug du plugin (une merveille cela dit en passant, merci jpty :wink:) :
3 sessions prédictive et 1 session manuelle, 3 à 4 relevé par session : le pourcentage me parait aussi cohérent même si l’application ne nous permet de voir la valeur exacte mais seulement des buchettes…

Cool moi aussi, j’y suis arrivé avec le bouton debug.
Vous pensez que c’est possible du coup de l’avoir sur le widget ??

Bonjour.

Oui, c’est possible de le mettre en commande et donc sur le dashboard.
Le pb est la mise à jour de la valeur qui réveille la tondeuse qui met longtemps à s’éteindre. Sur sa station de charge sans autre activité que l’interrogation chaque heure, la tondeuse fait 3 cycles de charge/décharge sur 24h. Partie 1er mai du graphique ci-dessous.
image
Le 2 mai elle a tondu à partir de 11h
Le 3 mai essai avec maj toutes les 5 minutes le matin. Le reste de la journée, je suis passé en relève toutes les 6 heures.

La maj du niveau de batterie ne pourrait être appelée que lors de la tonte soit 2h par semaine pour mon cas et serait fausse le reste du temps.
J’avais essayé la maj pendant la dernière tonte le 5 mais je n’ai pas eu de résultat. Le site Bosch ne permettait pas le login ce jour là. Je regarde à la prochaine tonte.
De plus la tondeuse n’a pas démarré seule. A l’heure programmée de la tonte, elle a commencé par se charger et n’a pas enchainé avec la tonte. ( Niveau de batterie trop bas à l’heure de la tonte ? )

Pas certain de l’intérêt de cette information que la tondeuse gère totalement.

ok merci pour l’info.
En fait j’aurais besoin de la valeur seulement quand je dois tondre la zone sans station. Du coup je vais faire sans c’est pas grave.
Sinon pour ma culture tu pourrais partager la manip/code que tu as fais pour remonter l’info dans une info virtuelle.
A plus

Pendant mes essais, lorsque la tondeuse était sur la station de charge, la charge n’est pas descendue en dessous de 60%. Voir si cela ne suffit pour tondre votre zone sans station.

Tout se passe dans le fichier plugins/BoschIndego/core/class/BoschIndego.class.php

J’ai remonté l’info dans une commande du plugin.
Pour cela, j’ai créé la commande batteryPercent dans la fonction postSave:

      $cmdLogicalId = 'batteryPercent'; $order++;
      $cmd = $this->getCmd('info', $cmdLogicalId);
      if (!is_object($cmd)) {
        $cmd = $this->creationCmd($logicId,$cmdLogicalId,'Charge batterie');
        $cmd->setTemplate("dashboard",'line' );
        $cmd->setOrder($order);
        $cmd->setSubType('numeric');
        $cmd->setIsVisible('1');
        $cmd->setUnite('%');
        $cmd->save();
      }

Il faut alors sauver l’équipement pour que la commande se crée.

Puis j’ai créé une fonction qui fait l’interrogation du cloud Bosch:

  public function getOperatingData($params) {
    $retVal = $this->checkAuthentication($params);
    if($retVal['httpCode'] != 200)
      throw new Exception(__('Erreur d\'authentification. Impossible d\'exécuter '.__FUNCTION__, __FILE__));
    $retVal = $this->getJsonData($params,"/operatingData");
    $curlHttpCode = $retVal['httpCode'];
    $result = $retVal['data'];
    if ( $curlHttpCode == 200 ) {
      // $this->writeData(__DIR__ ."/indego_data-getOperatingData-" .$params['almSn'] .".json",$result);
      $dataJson = json_decode($result);
      $percent =  $dataJson->battery->percent;
      $this->checkAndUpdateCmd('batteryPercent',$percent);
    }
  }

J’ai ensuite appelé cette fonction

  • dans le cronHourly
        $eqLogic->getInformation($params);
        $eqLogic->getOperatingData($params); // battery percent
        $eqLogic->refreshWidget();
  • dans le cron qui est actif lors de la tonte
      $eqLogic->getInformation($params);
      $eqLogic->getOperatingData($params); // battery percent
      $eqLogic->refreshWidget();
  • dans l’action refresh de la fonction execute ce qui permet d’avoir l’état de la batterie en cliquant sur image de l’équipement (et de réveiller la tondeuse et perdre 4% de charge le temps que la tondeuse retourne en veille )
      case "refresh":
        $retVal = $eqLogic->getOperatingData($params); // LIGNE ajoutée
        $retVal = $eqLogic->getInformation($params);
        if($retVal['httpCode'] == 200) {

Merci beaucoup pour le partage, j’aurais pas trouvé tout seul.
Je teste ça ce weekend.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.