Worx : landroid et la nouvelle application

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Hober Mallow
Messages : 7
Enregistré le : 02 oct. 2016, 21:54

Re: Worx : landroid et la nouvelle application

Message par Hober Mallow »

Bonsoir

Je vous propose quelques évolutions sur le script :
- Variable au début du script (login/mdp/idx/serial...)
- Ajout pourcentage charge de la batterie
- Utilisation de Devices type Alerte pour le statut et les erreures, j'ai arbitrarement classifié les alertes
- j'ai détaillé les dummy que je propose
- mise à jour du statut ou des erreures uniquement si ils change (facilita la lecutre des log)

Code : Tout sélectionner

#!/bin/sh
##########################################################################
### Script de mise a jour des statuts Tondeuse Landroide dans Domoticz ###
### 2020 05 25                                                         ###
##########################################################################
###
### Mettre les bonnes informations ci-dessous
###
##########################################################################
### Compte WORX - Format Mail
LOGIN_WORX=xxxxxxx@xxxxxxx
##########################################################################
### MdP WORX
MDP_WORX=xxxxxxxx
##########################################################################
### Numero de serie de la tondeuse
SERIAL_LANDROID=xxxxxxxxxxxxxxxxxxxxxxxxxx
##########################################################################
### Adresse ip Domoticz
ADRESSE_IP=xxx.xxx.xxx.xxx
##########################################################################
### Adresse port Domoticz
ADRESSE_PORT=xxxx
##########################################################################
### ID Device Domoticz - Distance parcouru - Type Dummy, Custom Sensor, Echelle Km
ID_DISTANCE=xxxx
##########################################################################
### ID Device Domoticz - Temps de Fonctionnement - Type Dummy, Custom Sensor, Echelle Heures
ID_TEMPS_TRAVAIL=xxxx
##########################################################################
### ID Device Domoticz - Temps de Lame - Type Dummy, Custom Sensor, Echelle Heures
ID_TEMPS_LAME=xxxx
##########################################################################
### ID Device Domoticz - Nombre Cycle Batterie - Type Dummy, Compteur
ID_N_BATTERIE=xxxx
##########################################################################
### ID Device Domoticz - Tension de la Batterie - Type Dummy, Tension
ID_V_BATTERIE=xxxx
##########################################################################
### ID Device Domoticz - Temperature de la Batterie - Dummy Custom sensor, Temperature
ID_TEMP_BATTERIE=xxxx
##########################################################################
### ID Device Domoticz - Pourcentage charge de la Batterie - Dummy Custom sensor, pourcentage
ID_POURCENTAGE_BATTERIE=xxxx
##########################################################################
### ID Device Domoticz - Statut Tondeuse - Dummy Custom sensor, Alert
ID_STATUT=xxxx
##########################################################################
### ID Device Domoticz - Erreur Tondeuse - Dummy Custom sensor, Alert
ID_ERREUR=xxxx
##########################################################################


PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

TOKEN=$(curl -v -X POST -d "{\"client_id\": 1, \"grant_type\": \"password\", \"scope\": \"*\", \"client_secret\": \"nCH3A0WvMYn66vGorjSrnGZ2YtjQWDiCvjg7jNxK\", \"username\": \"$LOGIN_WORX\", \"password\":\"$MDP_WORX\"}" -H 'Content-Type: application/json' https://api.worxlandroid.com/api/v2/oauth/token | jq -r '.access_token')

curl -X GET -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" "https://api.worxlandroid.com/api/v2/product-items/${SERIAL_LANDROID}/status" > /home/pi/domoticz/scripts/shell/worx_curl2.json
curl -X GET -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" https://api.worxlandroid.com/api/v2/product-items > /home/pi/domoticz/scripts/shell/worx_curl1.json

## Distance parcouru - Type Dummy, Custom Sensor, Echelle Km
DISTANCE_COVERED=`cat /home/pi/domoticz/scripts/shell/worx_curl1.json | jq '.[]|.distance_covered'/1000`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_DISTANCE}&svalue=${DISTANCE_COVERED}"
echo $exec
curl $exec

## Temps de Fonctionnement - Type Dummy, Custom Sensor, Echelle Heures
MOWER_WORKED=`cat /home/pi/domoticz/scripts/shell/worx_curl1.json | jq '.[]|.mower_work_time'/60`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_TEMPS_TRAVAIL}&svalue=${MOWER_WORKED}"
echo $exec
curl $exec

## Temps de Lame - Type Dummy, Custom Sensor, Echelle Heures
BLADE_WORKED=`cat /home/pi/domoticz/scripts/shell/worx_curl1.json | jq '.[]|.blade_work_time'/60`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_TEMPS_LAME}&svalue=${BLADE_WORKED}"
echo $exec
curl $exec

## Temperature de la Batterie - Dummy Custom sensor, Temperature
TEMP_BAT=`cat /home/pi/domoticz/scripts/shell/worx_curl2.json | jq .dat.bt."t"`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_TEMP_BATTERIE}&svalue=${TEMP_BAT}"
echo $exec
curl $exec

## Nombre Cycle Batterie - Type Dummy, Compteur
NB_CHARGE=`cat /home/pi/domoticz/scripts/shell/worx_curl2.json | jq .dat.bt."nr"`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_N_BATTERIE}&svalue=${NB_CHARGE}"
echo $exec
curl $exec

## Tension batterie, Dummy Custom sensor, Tension
TENSION_BAT=`cat /home/pi/domoticz/scripts/shell/worx_curl2.json | jq .dat.bt."v"`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_V_BATTERIE}&svalue=${TENSION_BAT}"
echo $exec
curl $exec

## Pourcentage batterie, Dummy Custom sensor, pourcentage
POURCENTAGE_BAT=`cat /home/pi/domoticz/scripts/shell/worx_curl2.json | jq .dat.bt."p"`
echo "EXEC"
exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_POURCENTAGE_BATTERIE}&svalue=${POURCENTAGE_BAT}"
echo $exec
curl $exec

## Statuts Tondeuse - Dummy Custom sensor, Alert
STATE_STATE=`cat /home/pi/domoticz/scripts/shell/worx_curl2.json | jq '.dat.ls'`

case $STATE_STATE in
0) ALERT=0;TEXT_STATE=Inactif;;
1) ALERT=1;TEXT_STATE=Maison;;
2) ALERT=1;TEXT_STATE=Démarrage;;
3) ALERT=1;TEXT_STATE=Départ%20maison;;
4) ALERT=1;TEXT_STATE=Suit%20le%20câble;;
5) ALERT=2;TEXT_STATE=Recherche%20la%20base;;
6) ALERT=2;TEXT_STATE=Recherche%20le%20câble;;
7) ALERT=1;TEXT_STATE=Tonte;;
8) ALERT=4;TEXT_STATE=Soulevée;;
9) ALERT=4;TEXT_STATE=Bloquée;;
10) ALERT=4;TEXT_STATE=Lames%20bloquées;;
11) ALERT=3;TEXT_STATE=Debug;;
12) ALERT=3;TEXT_STATE=Remote%20control;;
30) ALERT=1;TEXT_STATE=Retour%20maison;;
31) ALERT=1;TEXT_STATE=Création%20zones%20tonte;;
32) ALERT=1;TEXT_STATE=Coupe%20la%20bordure;;
* ) ALERT=0;TEXT_STATE=Inconnu;;
esac

ACTUAL_TEXT_STATE=$(curl -s "http://$ADRESSE_IP:$ADRESSE_PORT/json.htm?type=devices&rid=$ID_STATUT" | grep 'Data'| cut -d'"' -f 4 | sed 's/ /%20/g' | sed 's/\\u00e9/é/' | sed 's/\\u00e2/â/')

if [ "$ACTUAL_TEXT_STATE" != "$TEXT_STATE" ]
then
  exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_STATUT}&nvalue=${ALERT}&svalue=${TEXT_STATE}"
  echo $exec
  curl $exec
fi

## Erreur Tondeuse - Dummy Custom sensor, Alert
LANDROID_ERROR=`cat /home/pi/domoticz/scripts/shell/worx_curl2.json | jq '.dat.le'`

case $LANDROID_ERROR in
0) ALERT=1;TEXT_ERROR=RAS;;
1) ALERT=4;TEXT_ERROR=Bloquée;;
2) ALERT=4;TEXT_ERROR=Soulevée;;
3) ALERT=4;TEXT_ERROR=Câble%20non%20trouvé;;
4) ALERT=4;TEXT_ERROR=En%20dehors%20des%20limites;;
5) ALERT=2;TEXT_ERROR=Délai%20pluie;;
6) ALERT=3;TEXT_ERROR=Fermer%20capot%20pour%20tondre;;
7) ALERT=3;TEXT_ERROR=Fermer%20capot%20pour%20retour%20maison;;
8) ALERT=4;TEXT_ERROR=Moteur%20lames%20bloqué;;
9) ALERT=4;TEXT_ERROR=Moteur%20roues%20bloqué;;
10) ALERT=4;TEXT_ERROR=Timeout%20après%20blocage;;
11) ALERT=4;TEXT_ERROR=Renversée;;
12) ALERT=3;TEXT_ERROR=Batterie%20faible;;
13) ALERT=4;TEXT_ERROR=Câble%20inversé;;
14) ALERT=4;TEXT_ERROR=Erreur%20charge%20batterie;;
15) ALERT=4;TEXT_ERROR=Delai%20recherche%20station%20dépassé;;
* ) ALERT=0;TEXT_ERROR=Inconnu;;
esac

ACTUAL_TEXT_ERROR=$(curl -s "http://$ADRESSE_IP:$ADRESSE_PORT/json.htm?type=devices&rid=$ID_ERREUR" | grep 'Data'| cut -d'"' -f 4 | sed 's/ /%20/g'| sed 's/\\u00e9/é/' | sed 's/\\u00e2/â/')

if [ "$ACTUAL_TEXT_ERROR" != "$TEXT_ERROR" ]
then
  exec="http://${ADRESSE_IP}:${ADRESSE_PORT}/json.htm?type=command&param=udevice&idx=${ID_ERREUR}&nvalue=${ALERT}&svalue=${TEXT_ERROR}"
  echo $exec
  curl $exec
fi

Bonne soirée
Modifié en dernier par Hober Mallow le 26 mai 2020, 16:52, modifié 1 fois.

macben
Messages : 47
Enregistré le : 18 mars 2015, 09:41

Re: Worx : landroid et la nouvelle application

Message par macben »

Merci pour cet enrichissement.

da_Peda
Messages : 6
Enregistré le : 14 août 2019, 23:17

Re: Worx : landroid et la nouvelle application

Message par da_Peda »

Bonjour,

Grâce à vos instructions, j'ai pu intégrer mon Worx dans Domoticz. Mais maintenant, je suis passé de Raspberry PI à Ubuntu. Domoticz fonctionne bien, le script ci-dessus fonctionne bien, il récupère les données et les affiche dans Domoticz.

Le seul problème est que les données une fois récupérées resteront les mêmes lorsqu'elles seront récupérées à nouveau. Ce n'est que lorsque je mets à jour les données avec le Worx APP sur mon téléphone portable et que j'exécute le script sous Ubuntu, que les données seront à jour dans Domoticz. J'ai alors supposé que les données étaient mises en cache quelque part sous Ubuntu. J'ai donc ajouté ce qui suit à l'URL : ...product-items?$(date +%s).
Malheureusement, cela n'a pas apporté d'amélioration.

Avez-vous une idée de la raison de cette situation ?

Traduit avec www.DeepL.com/Translator (version gratuite)

Merci beaucoup pour votre soutien !
Peter

Hober Mallow
Messages : 7
Enregistré le : 02 oct. 2016, 21:54

Re: Worx : landroid et la nouvelle application

Message par Hober Mallow »

Bonjour ;

Il faut comprendre que le script n'interroge pas directement la tondeuse.
Les données sont récupéré dans le Cloud.

J'ai rencontré un problème similaire après un bug de ma connexion internet.
L'application smartphone était bien fonctionnel avec la tondeuse,
Mais les données dans domoticz n'était à jours que après un rafraichissement via smartphone.

J'ai juste redémarrer la tondeuse.
Cela ne s'est pas reproduit depuis, je n'ai pas donc cherché plus loin.

A essayer

da_Peda
Messages : 6
Enregistré le : 14 août 2019, 23:17

Re: Worx : landroid et la nouvelle application

Message par da_Peda »

Bonjour et merci pour la réponse.

oui, il est clair que le script récupère les données du nuage AWS.

J'ai également testé l'application de bureau, qui est disponible ici :
https://drive.google.com/drive/folders/ ... jdUUHNCWWc

Ici aussi, il est vrai que les données du script ne sont à jour que lorsque je les ai mises à jour avec l'application.

En outre, j'ai ajouté le paramètre CURL -H "Cache-Control : no-cache" au script. Cela devrait fonctionner, car le résultat du scénario dit ceci :
< pragma: no-cache
< cache-control: no-store, private< contrôle des caches : sans magasin, privé
Puis j'ai redémarré le PC Ubuntu et aussi la tondeuse Landroid.
Malheureusement, tout cela n'a pas apporté d'amélioration.

Je vous remercie pour toute contribution supplémentaire.

Merci beaucoup !
Peter

da_Peda
Messages : 6
Enregistré le : 14 août 2019, 23:17

Re: Worx : landroid et la nouvelle application

Message par da_Peda »

Bonjour,

Je voulais juste vous annoncer que cela fonctionne à nouveau. J'ai installé Ubuntu en partant de zéro. Aucune idée de pourquoi ça marche maintenant...

Merci,
Peter

cocof
Messages : 25
Enregistré le : 15 sept. 2017, 18:17

Re: Worx : landroid et la nouvelle application

Message par cocof »

Bonjour j ai un wr141e et je vais me lancer dans le pilotage via dimoticz.
Mais je suis un peu débutant...
De ce que je comprends, sur mon razberry je dois installer masquito ( j'ai trouvé un tuto :jhttps://www.sigmdel.ca/michel/ha/domo/domo_03_fr.html), puis installer jq ( y a un tuto sous easydomoticz), puis je crée les dumy qui vont bien, et je colle le script shell complété de mes infos sous domoticz ( dans le répertoire script), puis je fais un chmod pour le rendre exécutable. C est tout? Ou j ai oublié quelques chose?

Hober Mallow
Messages : 7
Enregistré le : 02 oct. 2016, 21:54

Re: Worx : landroid et la nouvelle application

Message par Hober Mallow »

Il faut aussi exécuter le script en crontab (5 min c'est bien, 2 min ca passe aussi)

cocof
Messages : 25
Enregistré le : 15 sept. 2017, 18:17

Re: Worx : landroid et la nouvelle application

Message par cocof »

Bonjour, super j ai réussi a intégrer sous domoticz. Seul les états d erreur et de statut ne se mettent pas a jour... Les codes d erreur remonte tout seul ou dans domoticz il faut faire qq choses pour faire correspondre les code avec leur signification ?.
Me reste plus qu a intégrer des commandes. Comment faire sous domoticz ?

Hober Mallow
Messages : 7
Enregistré le : 02 oct. 2016, 21:54

Re: Worx : landroid et la nouvelle application

Message par Hober Mallow »

Status et erreur sont des dummy de type Alerte, c'est important
Sinon execute le script avec "bash -x " devant et regarde ce qui se passe.
Tu peux m'envoyer le résultat je regarderai

Répondre