Erreur last Beta plugin-hyundaibluelink

Hello,

Alors j’ai mis la beta du jour … mais pas mieux dans un premier temp !

En effet, je suis retourné sur mon mobile, pour re-changer le mot de passe sous hyundai et remettre l’ancien … test connexion avec ancien compte Bluelink : confirmation urgrade OK (comme déjà je l’avais les jours précédent)

Puis reconnexion, avec le compte Hyundai mobile : OK, sous Jeedom, remis nouveau mot de passe … et là oh miracle, le démon tient au vert :wink:

Bref à rien n’y comprendre (comme si ma migration n’avais pas passé complètement du premier coup …). En tout cas, merci pour votre aide et votre suivi de ce bug que j’ai été confronté.

Mon graphe de suivi, maison (sous zimeteo), va être content de ne plus être vide :wink:

encore merci.

@+

2 « J'aime »

Hello,

@NeoPixl : juste pour info, quelques erreurs PHP relevés dans les logs cron_execution (undefined)

PHP Notice:  Undefined index: batteryChargeHV in /var/www/html/plugins/hyundaibluelink/core/class/hyundaibluelink.class.php on line 286
PHP Notice:  Undefined index: estimatedFastChargeDuration in /var/www/html/plugins/hyundaibluelink/core/class/hyundaibluelink.class.php on line 293
PHP Notice:  Undefined index: estimatedPortableChargeDuration in /var/www/html/plugins/hyundaibluelink/core/class/hyundaibluelink.class.php on line 294
PHP Notice:  Undefined index: estimatedStationChargeDuration in /var/www/html/plugins/hyundaibluelink/core/class/hyundaibluelink.class.php on line 295
PHP Notice:  Undefined index: backLeft in /var/www/html/plugins/hyundaibluelink/core/class/hyundaibluelink.class.php on line 320
PHP Notice:  Undefined index: backRight in /var/www/html/plugins/hyundaibluelink/core/class/hyundaibluelink.class.php on line 321

@+

Hello,
Utilisateur de la quasi première heure du plugin, j’en suis très satisfait.
Merci @NeoPixl pour le travail accompli et le support à toute la communauté.

Je ne sais pas si le sujet a déjà été abordé, mais une fonction qui pourraient être super intéressante serait de pouvoir régler le niveau de charge maximum en fonction du type de borne. Ayant à la maison une borne VE et bientôt des panneaux solaires, je compte piloter la charge de ma voiture finement pour récupérer au maximum la production solaire.
Je vais devoir adapter cette valeur pour notamment les chargements de nuit versus chargement de jour avec panneaux solaires.

Bonne semaine à tous

Hello,

Cette fonctionnalité sera bientôt disponible dans le plugin Jeedom. J’ai il y a peut de temps fais ce qu’il faut pour que ce soit disponible dans le composant d’interconnexion Jeedom<-> Bluelink (https://github.com/Hacksore/bluelinky#supported-features).

Dès la sortie de la nouvelle version, le plugin sera mis à jour pour intégrer cette option.

Bonjour,

@NeoPixl, pourquoi y a t’il une tâche de configuration uniquement pour l’odomètre ?

N’y a t’il pas moyen de récupérer les kilomètres depuis Bluelink (via la tâche Fréquence de mise à jour depuis Bluelink) ?

Cdlt,

Malheureusement non, dans l’api Bluelink, les deux appels sont malheureusement séparés. Et comme le nombre d’appel par jour est limité (200 par véhicule), j’ai choisi de ne pas regrouper ces informations de mon coté non plus.

Bonjour
J’ai changé d’hébergement de ma Jeedom en passant d’une VM sur Freebox Delta à une JeedUP. J’ai réinstallé avec succès tous mes plugin, sauf le plugin Hyndai
Le démon ne se lance pas (voir ci dessous le log)
J’ai un compte sur Hyundai et je n’en ai jamais eu sur Bluelink
Pouvez vous m’aider SVP
Merci

message: 'Deamon hyundaibluelink_node is starting',
level: 'info',
timestamp: '2021-05-01T20:32:27.535Z'
}
{
message: 'Checking the pin code validity',
level: 'debug',
timestamp: '2021-05-01T20:32:30.404Z'
}
{
message: 'Deamon hyundaibluelink_node started',
level: 'info',
timestamp: '2021-05-01T20:32:30.569Z'
}
events.js:291
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::8090
at Server.setupListenHandle [as _listen2] (net.js:1316:16)
at listenInCluster (net.js:1364:12)
at Server.listen (net.js:1450:7)
at Function.listen (/var/www/html/plugins/hyundaibluelink/node/node_modules/express/lib/application.js:618:24)
at ge (/var/www/html/plugins/hyundaibluelink/node/main.js:1:10932)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1343:8)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 8090
}
{
saisir ou coller le code ici

Bonjour @pme999,

Le type d’erreur EADDRINUSE est lié au fait que le port (le mécanisme technique qui permet a jeedom de communiquer avec le démon est déjà utilisé par une autre application).

Si le message Deamon hyundaibluelink_node started s’affiche c’est que l’authentification c’est déroulée correctement, il est donc probable que ce soit purement un problème lié au port.

Je vais donc déployer une version beta qui permet de configurer le port en question.

Une fois la beta installée:

  • Mettre à jours les dépendances (il y a du nouveau sur l’authentification aussi)
  • Changer le port dans la configuration du plugin (8090 par défaut), le remplacer par un autre nombre
    • :warning: seul un port disponible fera l’affaire, ça va de 1000 à 65 535 donc on devrais finir par en trouver un de libre
  • Redémarrer le démon

Une version stable est en cours de réalisation pour intégrer définitivement cet aspect.

Salut @pme999,
tu peux avoir la liste de tous les ports en écoute avec cette commande :

netstat -paunt |grep LISTEN

dessous tu vois mon port 80 ouvert par l’apache (HTTP)

Avec cette commande tu vas trouver le processus qui utilise le port 8090 (surement un serveur web) et tu pourras modifier le port dans la conf du processus…

Salut @NeoPixl,
dans mon plugin, j’ai fait une mise à jour forcé en cas de mouvement de la voiture.
Par défaut j’ai mis un cron sur 15min et si la voiture est en mouvement je passe à 3min tant qu’elle roule.
Je l’ai paramétré avec mon utilisation 40min maximum par jour.
Donc si la voiture ne roule pas, j’ai 72 interrogations par jour.
Si tu roule pendant 1 heure ca fait 180 interrogations !

Hello @cstan77,

Effectivement le nombre d’action envoyés au véhicule est limité par jour. La limite est a 200 chez Kia, mais j’imagine que chez Hyundai c’est pareil. (API Rate Limits · Hacksore/bluelinky Wiki · GitHub)

L’actualisation dite forcée (depuis le véhicule) compte pour 1, le GPS aussi, et l’odomètre aussi. Dans le plugin, l’utilisateur peu configurer le rythme d’actualisation, et je propose des valeurs plutôt lente par défaut pour limiter ce risque.

Pour gérer ça au mieux, j’ai ajouté un mode live (Plugin Kia UVO | jeedom-kiauvo-documentation) qui suite au déclenchement d’une action utilisateur accélère la récupération des information. En ce qui me concerne j’utilise Automate sur Android pour détecter la connexion/deconnexion du Bluetooth pour activer/désactiver ce mode.

Donc hors live, => récupération lente.
En live => récupération toutes les deux minutes (configurable ça aussi) (GPS + Status) soit ~60 requêtes par heure de route.

Salut,
Peux-tu me dire à quoi correspondent ces boutons, je ne les avais jamais remarqués ?

Cool, un grand merci… J’attends donc la beta . Faut il ouvrir le port en question sur le routeur ?
Merci aussi @cstan77 pour ton aide. Je viens de lancer la commande sur ma Jeedup. Voici le résultat :
Il y a bien le port 8090
root@jeedup:/home/jeedup# netstat -paunt |grep LISTEN
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 534/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 523/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1056/exim4
tcp 0 0 127.0.0.1:9050 0.0.0.0:* LISTEN 624/tor
tcp 0 0 127.0.0.1:55070 0.0.0.0:* LISTEN 1427/python3
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 652/mysqld
tcp6 0 0 :::21 :::* LISTEN 980/proftpd: (accep
tcp6 0 0 :::53 :::* LISTEN 534/dnsmasq
tcp6 0 0 :::22 :::* LISTEN 523/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1056/exim4
tcp6 0 0 :::8090 :::* LISTEN 655/apache2
tcp6 0 0 :::443 :::* LISTEN 655/apache2
tcp6 0 0 :::3456 :::* LISTEN 1400/nodejs
tcp6 0 0 :::80 :::* LISTEN 655/apache2

Rebonjour @NeoPixl
Je viens de charger la beta et j’ai mis un nouveau port (9046). J’ai relancé les dépendances et le démon est passé au vert… mais lorsque je vais sur le plugin, j’ai un bandeau rouge : La connexion au démon Bluelink à échoué, assurez vous qu’il est démarré. Details : http://127.0.0.1:9046/cars?key=****** Curl error : Failed to connect to 127.0.0.1 port 9046: Connection refused

Si cela peut aider, j’ai aussi le log http avec ces erreurs…
sh: 1: cannot create /var/www/html/core/class/…/…/log/cron_execution: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/cron_execution: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/cron_execution: Permission denied
sh: 1: kill: Operation not permitted
sh: 1: kill: Operation not permitted
sh: 1: kill: Operation not permitted
sh: 1: kill: Operation not permitted
kill: (11257): No such process
kill: (11259): No such process
sh: 1: cannot create /var/www/html/core/class/…/…/log/hyundaibluelink_node: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/cron_execution: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/cron_execution: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/hyundaibluelink_node: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/hyundaibluelink_node: Permission denied
sh: 1: cannot create /var/www/html/core/class/…/…/log/hyundaibluelink_node: Permission denied

Désolé mais je ne suis pas très familier de ces sujets… encore merci pour ton aide
Patrice

Bon, je donne tout ce que je trouve…
Un nouveau log vient d’apparaitre sur le Bluelink-node :

[2021-05-02 18:56:09] e[31merrore[39m: @EuropeController.login: sign in with EuropeanBrandAuthStrategy failed with error RequestError: socket hang up
{
source: GotError [HTTPError]: Response code 400 (Bad Request)
at EventEmitter.<anonymous> (/var/www/html/plugins/hyundaibluelink/node/node_modules/got/source/as-promise.js:74:19)
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
host: 'prd.eu-ccapi.hyundai.com:8080',
hostname: 'prd.eu-ccapi.hyundai.com',
method: 'POST',
path: '/api/v1/user/signin',
socketPath: undefined,
protocol: 'https:',
url: 'https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/signin',
gotOptions: {
path: '/api/v1/user/signin',
protocol: 'https:',
slashes: true,
auth: null,
host: 'prd.eu-ccapi.hyundai.com:8080',
port: '8080',
hostname: 'prd.eu-ccapi.hyundai.com',
hash: null,
search: null,
query: null,
pathname: '/api/v1/user/signin',
href: 'https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/signin',
retry: {
retries: [Function],
methods: Set { 'GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE' },
statusCodes: Set { 408, 413, 429, 500, 502, 503, 504 },
errorCodes: Set {
'ETIMEDOUT',
'ECONNRESET',
'EADDRINUSE',
'ECONNREFUSED',
'EPIPE',
'ENOTFOUND',
'ENETUNREACH',
'EAI_AGAIN'
}
},
headers: {
'user-agent': 'got/9.6.0 (https://github.com/sindresorhus/got)',
accept: 'application/json',
'accept-encoding': 'gzip, deflate',
'content-type': 'application/json',
'content-length': 61,
cookie: 'account=NzI5ZWViNWYtMDk4Ni00YmNiLWIwMjAtZTlhOTk3ZTdlNjc3.5d6cf40e967de8af0c89c05ded8c3b818ebe5a14; TS0154565f=01cbaa6f70999b490ca37067a4a9ad9ce2000f10dfc14d67c146b52b4d4e3c475a0a2a7d70037144789e3a8d6de4fefedf032b51953c6cdb10e890482ae1f7e3e9cf1c4eb6'
},
hooks: {
beforeRequest: [],
beforeRedirect: [],
beforeRetry: [],
afterResponse: [],
beforeError: [],
init: []
},
decompress: true,
throwHttpErrors: true,
followRedirect: true,
stream: false,
form: false,
json: true,
cache: false,
useElectronNet: false,
method: 'POST',
body: '{"email"XXXXXXXX"","password":"XXXXXXXX?"}',
cookieJar: CookieJar {
rejectPublicSuffixes: true,
enableLooseMode: false,
allowSpecialUseDomain: false,
store: { idx: {
'prd.eu-ccapi.hyundai.com': {
'/': {
account: Cookie="account=NzI5ZWViNWYtMDk4Ni00YmNiLWIwMjAtZTlhOTk3ZTdlNjc3.5d6cf40e967de8af0c89c05ded8c3b818ebe5a14; Expires=Sun, 02 May 2021 17:56:09 GMT; Max-Age=3600; Path=/; HttpOnly; hostOnly=true; aAge=151ms; cAge=383ms",
TS0154565f: Cookie="TS0154565f=01cbaa6f70999b490ca37067a4a9ad9ce2000f10dfc14d67c146b52b4d4e3c475a0a2a7d70037144789e3a8d6de4fefedf032b51953c6cdb10e890482ae1f7e3e9cf1c4eb6; Path=/; hostOnly=true; aAge=152ms; cAge=384ms"
}
}
} },
prefixSecurity: 'silent',
_cloneSync: [Function],
_importCookiesSync: [Function],
getCookiesSync: [Function],
getCookieStringSync: [Function],
getSetCookieStringsSync: [Function],
removeAllCookiesSync: [Function],
setCookieSync: [Function],
serializeSync: [Function]
}
},
statusCode: 400,
statusMessage: 'Bad Request',
headers: {
'ccsp-request-id': '2e7321ff-aa0a-4705-ab9a-5ce4534cea28',
'ccsp-span-id': '4',
'content-length': '133',
'content-type': 'application/json',
date: 'Sun, 02 May 2021 16:56:10 GMT',
vary: 'Origin',
'x-ratelimit-limit': '0',
'x-ratelimit-remaining': '0',
'x-ratelimit-reset': '0',
connection: 'close'
},
body: {
errId: '2e7321ff-aa0a-4705-ab9a-5ce4534cea28',
errCode: '4003',
errMsg: 'Invalid values',
errBody: { userId: '', remainTime: 300 }
}
},
name: 'ManagedBluelinkyError',
level: 'error',
message: '@EuropeController.login: [400] Bad Request on [POST] https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/signin - {"errId":"2e7321ff-aa0a-4705-ab9a-5ce4534cea28","errCode":"4003","errMsg":"Invalid values","errBody":{"userId":"","remainTime":300}}',
stack: 'ManagedBluelinkyError: @EuropeController.login: [400] Bad Request on [POST] https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/signin - {"errId":"2e7321ff-aa0a-4705-ab9a-5ce4534cea28","errCode":"4003","errMsg":"Invalid values","errBody":{"userId":"","remainTime":300}}\n' +
'    at d (/var/www/html/plugins/hyundaibluelink/node/node_modules/bluelinky/dist/index.js:17:144947)\n' +
'    at Y.<anonymous> (/var/www/html/plugins/hyundaibluelink/node/node_modules/bluelinky/dist/index.js:17:169022)\n' +
'    at Generator.throw (<anonymous>)\n' +
'    at P (/var/www/html/plugins/hyundaibluelink/node/node_modules/bluelinky/dist/index.js:17:136)\n' +
'    at processTicksAndRejections (internal/process/task_queues.js:97:5)',
timestamp: '2021-05-02T16:56:10.189Z'
}
{
message: 'Deamon hyundaibluelink_node is starting',
level: 'info',
timestamp: '2021-05-02T16:57:05.277Z'
}

Effectivement il semble que le port 8090 soit déjà utilisé sur votre machine. Ce port ne fais pas lié a un protocole particulier (TCP/UDP Ports -> Port 8090) mais on a effectivement un conflit ici.

tcp6 0 0 :::8090 :::* LISTEN 655/apache2

Le changer était donc effectivement nécessaire.

Pour la suite des erreurs, il s’agit vraisemblablement de la tentative de redémarrage du démon. Ca ressemble a un problème d’autorisation system sur la machine. C’est habituellement Jeedom qui gère cette partie, donc c’est étonnant.

Visiblement se service finis par se lancer et tenter de se connecter.
Cette ligne sign in with EuropeanBrandAuthStrategy failed with error RequestError: socket hang up que le plugin a essayer de se connecter avec le nouveau système d’authentification et a échoué.
Il essai ensuite de se connecter avec l’ancien système mais échoue aussi.

Pour avoir plus de détails sur ce qui se passe, pouvez vous mettre les niveau de logs du plugin en mode debug. Les logs seront beaucoup plus riches et nous aiderons peut-être a mieux comprendre le problème.

Bonjour,
Il s’agit des boutons permettant d’activer et de désactiver le mode live que j’évoquais plus tôt avec @cstan77 Erreur last Beta plugin-hyundaibluelink - #31 par NeoPixl.

Une documentation est disponible ici: Plugin Hyundai Bluelink | jeedom-hyundaibluelink-documentation

Merci, a priori ça ne sert pas à grand chose.

C’est utile pour ceux qui cherchent a avoir des stats plus régulières sur leurs véhicule quand ils sont sur la route. C’est notamment le cas avec les propriétaires de voiture électrique qui utilisent ABRP pour leurs itinéraires et qui cherchent a optimiser leurs parcours et leurs pauses charge en fonction du niveau de batterie, leur consommation moyenne…

Comme la bêta n’a pas l’air de fonctionner chez toi, tu peux modifier le port 8090 dans ton fichier de configuration apache/http.
Il est dans /etc/apache2/ normalement tout dépend de la version et du noyau de ton Linux.
3 ports http c’est rare par défaut.
Ensuite du redémarre le service pour prendre en compte la modification