Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install Error #1

Open
flimo44 opened this issue Nov 2, 2017 · 105 comments
Open

Install Error #1

flimo44 opened this issue Nov 2, 2017 · 105 comments
Assignees

Comments

@flimo44
Copy link

flimo44 commented Nov 2, 2017

pi@Pi2:~/freebox-caller-id $ sudo node caller_id.js init
/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:50
class Freebox extends EventEmitter {
^^^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:20:19)
at Object. (/home/pi/freebox-caller-id/caller_id.js:1:77)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)

@jystervinou
Copy link
Owner

Hello,

Quelle version de Node ? le module node-freeboxos nécessite une version 6 minimum je crois.

@flimo44
Copy link
Author

flimo44 commented Nov 2, 2017

Bonjour

Node est en version 5.
Je vais voir pour passer en 6.

Cdlt
Philippe

@flimo44 flimo44 closed this as completed Nov 2, 2017
@flimo44 flimo44 reopened this Nov 2, 2017
@jystervinou
Copy link
Owner

Visiblement, quelqu'un d'autre me signale que ce n'est pas simple voir pas possible d'upgrader node sur les raspberry avec un armv6...

@flimo44
Copy link
Author

flimo44 commented Nov 2, 2017

Bonjour ,
Update effectué en version 6 . Le problème semble resolu.

Pour faire l'update en node 6 sur RP2 et RPI3 ( RPI1 je n'ai pas testé )

Ajouter le repository nodesource :
sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Cette commande va aussi mettre à jour le catalogue.

NB. Adafuit mets aussi node à disposition sur un repository similaire. Avec nodesource, on a une version plus à jour.
NB. Quand la version 8 de NodeJS sera disponible, l'url ci-dessus devra être adaptée. Voir https://github.com/nodejs/LTS/.

Installer nodejs :
sudo apt-get install nodejs
NB. npm (le gestionnaire de package de node) est installé automatiquement avec nodejs.

Vérification :
pi@raspberrypi:~ $ nodejs -v
v6.2.1
pi@raspberrypi:~ $ npm -v
3.9.3

@flimo44
Copy link
Author

flimo44 commented Nov 2, 2017

Bonjour ,
Voici l'erreur que j'ai au lancement du script principale :

pi@Pi2:~/freebox-caller-id $ sudo node caller_id.js
fs.js:642
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^

Error: ENOENT: no such file or directory, open '/tmp/callerid/freebox.json'
at Error (native)
at Object.fs.openSync (fs.js:642:18)
at Object.fs.readFileSync (fs.js:510:33)
at new Freebox (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:65:22)
at getCalls (/home/pi/freebox-caller-id/caller_id.js:96:17)
at run (/home/pi/freebox-caller-id/caller_id.js:57:3)
at Object. (/home/pi/freebox-caller-id/caller_id.js:54:26)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)

Ps : J'avais pas vu l'erreur avant lors de l'init d'ou l'erreur ci-dessus.
J'ai pourtant bien validé sur l'écran de la freebox "Oui" :(

pi@Pi2:~/freebox-caller-id $ sudo node caller_id.js init
error= null app= { app_id: 'callerid',
app_name: 'Caller ID',
app_version: '0.0.1',
device_name: 'Server',
app_token: 'xxxxxxxxxxxxxxxxxxxxxxxxfCgR1QRd5rzIoXIf8POngnpSY49ij/YPYY8t/dE',
track_id: 3,
logged_in: false,
challenge: 'YeJCnECFUU7hqLOCIhtyj/Wr4EhbmUxX',
password: null,
status: 'granted' }
fs.js:81
throw new TypeError('Expected options to be either an object or a string, ' +
^

TypeError: Expected options to be either an object or a string, but got function instead
at throwOptionsError (fs.js:81:9)
at Object.fs.writeFileSync (fs.js:1341:5)
at Freebox._saveJSON (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:132:6)
at P (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:121:31)
at P (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:1569:3)
at Freebox.saveJSON (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:121:10)
at freebox.waitApplicationGranted (/home/pi/freebox-caller-id/caller_id.js:30:13)
at _getAuthorizeStatus (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:487:12)
at Request.request [as _callback] (/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:386:4)
at Request.self.callback (/home/pi/freebox-caller-id/node_modules/request/request.js:186:22)

@jystervinou
Copy link
Owner

Normalement c'est l'appel à init qui stocke dans le fichier /tmp/callerid/freebox.json les token d'authorisation de se connecter à la box.

Le fichier n'est pas créé lors de l'appel à init ? (on peut refaire un init plusieurs fois)

@jystervinou
Copy link
Owner

jystervinou commented Nov 2, 2017

Corrigé par un autre :

Résolu en remplaçant la ligne 134 ' fs.writeFileSync(path, json, callback); ' par ' fs.writeFileSync(path, json, null, null, null, callback); '

il faut que je fasse la modif de mon côté.

@alexisrgd
Copy link

alexisrgd commented Nov 2, 2017

Bonjour,

J'obtiens ce message au lancement du RPI :
Une idée?

nov. 02 20:48:38 servtest systemd[1]: Started FreeboxCallerID.
nov. 02 20:48:39 servtest node[1368]: fs.js:663
nov. 02 20:48:39 servtest node[1368]: return binding.open(pathModule.toNamespacedPath(path),
nov. 02 20:48:39 servtest node[1368]: ^
nov. 02 20:48:39 servtest node[1368]: Error: ENOENT: no such file or directory, open '/tmp/callerid/freebox.json'
nov. 02 20:48:39 servtest node[1368]: at Object.fs.openSync (fs.js:663:18)
nov. 02 20:48:39 servtest node[1368]: at Object.fs.readFileSync (fs.js:568:33)
nov. 02 20:48:39 servtest node[1368]: at new Freebox (/opt/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js:65:22)
nov. 02 20:48:39 servtest node[1368]: at getCalls (/opt/freebox-caller-id/caller_id.js:96:17)
nov. 02 20:48:39 servtest node[1368]: at run (/opt/freebox-caller-id/caller_id.js:57:3)
nov. 02 20:48:39 servtest node[1368]: at Object. (/opt/freebox-caller-id/caller_id.js:54:26)
nov. 02 20:48:39 servtest node[1368]: at Module._compile (module.js:641:30)
nov. 02 20:48:39 servtest node[1368]: at Object.Module._extensions..js (module.js:652:10)
nov. 02 20:48:39 servtest node[1368]: at Module.load (module.js:560:32)
nov. 02 20:48:39 servtest node[1368]: at tryModuleLoad (module.js:503:12)
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Main process exited, code=exited, status=1/FAILURE
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Unit entered failed state.
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Failed with result 'exit-code'.
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Service hold-off time over, scheduling restart.
nov. 02 20:48:39 servtest systemd[1]: Stopped FreeboxCallerID.
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Start request repeated too quickly.
nov. 02 20:48:39 servtest systemd[1]: Failed to start FreeboxCallerID.
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Unit entered failed state.
nov. 02 20:48:39 servtest systemd[1]: freebox-caller-id.service: Failed with result 'exit-code'.

@jystervinou
Copy link
Owner

Bonjour,

oui voir la modif ligne 134 juste au dessus.

merci de me dire si ok. (il faudra refaire init)

@alexisrgd
Copy link

Le fonctionnement est bon, seulement au reboot du serveur même message. Un paramètre à ajouter dans le systemd créé peut-être?
Est-il possible de raccourcir le délai de l'envoi du sms? Je le reçois environ 1 minute après la fin de l'appel.

@jystervinou
Copy link
Owner

Est-ce que par hasard, après le reboot, /tmp aurait été purgé??

l'envoi du sms, c'est juste un appel à l'url https://sms-api.free-mobile.fr/..... donc ça c'est quelques ms. ensuite le temps d'acheminement du sms de chez Free vers le téléphone je suppose que ça doit être variable... moi c'est quasi instantané pour le moment :-/

@jystervinou
Copy link
Owner

Tu peux essayer de changer dans le script le chemin du fichier où sont sauvegardé les paramètres de connexion à la box, et mettre un endroit autre que /tmp (remplacer '/tmp/callerid/freebox.json' par un autre endroit, que le script aura le droit de créer.)

@aumgeo
Copy link

aumgeo commented Nov 2, 2017

bonjour
excuser moi, question tres bete, mais dans quel fichier il faut modifier la ligne 134 ?
(j'ai l'erreur apres node caller_id.js init)
merci

@jystervinou
Copy link
Owner

ça doit être dans le module node-freeboxos. je regarde ça tout de suite, je vais faire une nouvelle release. (j'utilise un fork de node-freeboxos, car j'ai du modifier des choses dedans pour le faire marcher)

@jystervinou
Copy link
Owner

jystervinou commented Nov 2, 2017

ça y est, tu peux faire un "npm update" à la racine du répertoire du projet.

relancer init, qui doit maintenant créer le fichier /tmp/callerid/freebox.json

@flimo44
Copy link
Author

flimo44 commented Nov 2, 2017

le fichier à modifier est :
/home/pi/freebox-caller-id/node_modules/node-freeboxos/lib/freebox.js

Ligne 132 il me semble.

Sinon ça fonctionne bien pour moi et je reçois le SMS dès la première sonnerie. Donc très réactif :D

@aumgeo
Copy link

aumgeo commented Nov 3, 2017

merci !
je fais un test ce soir apres le boulo, et je vous fait un retour.
je vais pas faire sonner le téléphone maintenant : tout le monde dors ;o))

@alexisrgd
Copy link

Effectivement après reboot, les dossiers sont bien présents, mais vides. Je vais modifier le dossier de destination (autre que '/tmp') et vous faire un retour 👍

@jystervinou
Copy link
Owner

Peut-être vaut-il mieux que je stocke ça dans le répertoire de l'appli ?

@flimo44
Copy link
Author

flimo44 commented Nov 3, 2017

Effectivement je pense que ce serait mieux que le /tmp.

Certains utilisent le /tmp en tmpfs. Donc à chaque reboot le dossier est purgé.

De plus ces données ne devrait pas être temporaire.

Il serait bien de prévoir aussi d'installer "node caller_id.js" comme service.

@alexisrgd
Copy link

Je pense comme flimo44 que ce serait préférable de tout stocker dans le même répertoire. Le répertoire /tmp est utilisé par beaucoup de programmes pour leur fichiers "temporaires".

@jystervinou
Copy link
Owner

OK.

Vous êtes obligés de les rebooter souvent vos Pi ?

@flimo44
Copy link
Author

flimo44 commented Nov 3, 2017

Je reboot rarement mes PI .

ça varie entre 1 mois et 4 mois en moyenne. Principalement après des mises à jours OS ou firmware

@alexisrgd
Copy link

Maintenant j'ai ce message après un reboot :

systemd[1]: Started FreeboxCallerID.
node[681]: { Error: Session failed !
node[681]: at Request.request [as _callback] (/opt/freebox-caller-id/node_modules/node-fre
eboxos/lib/freebox.js:671:13)
node[681]: at Request.self.callback (/opt/freebox-caller-id/node_modules/request/request.js:186:22)
node[681]: at emitTwo (events.js:135:13)
node[681]: at Request.emit (events.js:224:7)
node[681]: at Request. (/opt/freebox-caller-id/node_modules/request/request.js:1163:10)
node[681]: at emitOne (events.js:125:13)
node[681]: at Request.emit (events.js:221:7)
node[681]: at IncomingMessage. (/opt/freebox-caller-id/node_modules/request/request.js:1085:12)
node[681]: at Object.onceWrapper (events.js:322:30)
node[681]: at emitNone (events.js:120:20)
node[681]: serverErrorCode: 'invalid_token',
node[681]: response:
node[681]: { uid: '90a140346837c1245b68b8723f196019',
node[681]: success: false,
node[681]: msg: 'Erreur d'authentification de l'application',
node[681]: result:
node[681]: { password_salt: 's80Tqs0TXc43odlnVkBlYfiqm2+P6rmh',
node[681]: challenge: 'Hgrj4oGb1xTUzylxbnGQvsfBauPOlOLE' },
node[681]: error_code: 'invalid_token' },
node[681]: statusCode: 403,
node[681]: canRetry: true }

Peu-être parce que je désactive l'option "Permettre les nouvelles demandes d'association" une fois la première effectuée sur freebox OS?

@jystervinou
Copy link
Owner

Ensuite, si tu fais un appel de test, ça marche ou pas ?

Lorsque le token de session n'est plus valable, node-freeeboxos en redemande un automatiquement. Donc même si invalid_token s'affiche, normalement ça continue de fonctionner..

@alexisrgd
Copy link

Effectivement même avec le message "invalid_token", le script fonctionne! Merci :)

@titithebad
Copy link

Bonjour,

Je suis avec un RPi 1 et donc un node v4.0.0 qui fonctionne avec l'arm.

Est-ce la bonne version ou je peux l'upgrader ?

Lorsque je lance le script node caller_id.js init, ma Freebox me demande bien le Non/Oui avec les flêches mais j'ai beau changer le DELAY dans le script ou le timeout de la commande init, voilà l'erreur que j'ai à chaque fois :

error= null app= { app_id: 'callerid',
app_name: 'Caller ID',
app_version: '0.0.1',
device_name: 'Server',
app_token: 'ygPOXsYlI9o2xaxOBBTv1sGcnM8mOFH8HVXnySzVicTJmHns5I5osuxU0fcISzN/',
track_id: 6,
logged_in: false,
challenge: 'k3Ge0rrp4HgT5ryCnejUnrxFniAQWhJF',
password: null,
status: 'granted' }

Pourquoi ?

Merci

@jystervinou
Copy link
Owner

@titithebad hello, ce n'est pas une erreur en fait, c'est le message renvoyé par Freebox OS pour dire que l'autorisation a été accordée (status: 'granted'). 👍

@jystervinou
Copy link
Owner

@titithebad j'ai déjà utilisé ça : https://github.com/winstonjs/winston

@titithebad
Copy link

Mouai... J'aurais préféré fait dans l'application en elle même... Non ?

@jystervinou
Copy link
Owner

jystervinou commented Nov 17, 2017

oui oui, ça s'utilise dans l'appli pour loguer, tu as ensuite le choix de l'endroit où ça logue, je suppose que je pourrai, en plus du mode par défaut, laisser configurer via le fichier de conf. (dans quel fichier, ou syslog etc..)

@titithebad
Copy link

Bon je vais voir ce que ca donne car caller_id plante on dirait dans le temps....

@jystervinou
Copy link
Owner

jystervinou commented Nov 17, 2017

c'est le script qui plante et quitte, ou juste il ne marche plus (pas d'envoi de SMS) ? Parfois il ne trouve plus ma freebox (injoignable, je ne sais pas pourquoi ??), il faut que je vérifie si il continue à fonctionner normalement dans ces cas-là (je pense que oui, car je reçois toujours des SMS)

@titithebad
Copy link

Je ne vois plus le process tourner en fait via ps -edf. Je vais laisser mon putty dessus pour surveiller les messages et essayer de te filer le message d'erreur.

@titithebad
Copy link

J'essaie de faire node caller_id > sms.log

@jipere
Copy link

jipere commented Nov 28, 2017

Bonjour, je viens de terminer l'installation sur un raspberry armv6, raspbian strecht-lite et node v8.9.0. ca marche. pour installer node v8:

wget https://nodejs.org/download/release/v8.9.0/node-v8.9.0-linux-armv6l.tar.gz
tar -xzf node-v8.9.0-linux-armv6l.tar.gz
cd node-v8.9.0-linux-armv6l/
sudo cp -R * /usr/local/
export PATH=$PATH:/usr/local/bin
pour verifier:
node -v
npm -v

@titithebad
Copy link

Il faut que je change de version de node suite à tes dernières modifs ?

@jystervinou
Copy link
Owner

Aucune idée, mais je dirais que si ça tournait avec node_freeboxos, ça devrait toujours le faire.

Pour le script qui s'arrête seul, je pense que c'est peut-être qu'il est tué lorsqu'il n'est plus rattaché au terminal d'où tu l'as lancé ?

Il faudrait trouver la façon la plus simple de le lancer (directement, et au boot)

@titithebad
Copy link

Bon je vais essayer avec une version plus récente de node alors.

Oui tu as sans doute raison. Je le lance avec le & à la fin.

C'est une tâche cron qui le lance (cron.daily).

@jystervinou
Copy link
Owner

C'est ce que je fais aussi pour le moment, et effectivement, il disparait au bout d'un moment ;-/

@titithebad
Copy link

C'est un plantage tu crois ou bien un service qui n'est pas lancé ?

@jystervinou
Copy link
Owner

Je dirais pas tant un plantage qu'un arrêt suite à la disparition du processus qui l'a lancé ?

@titithebad
Copy link

node qui s'arrête ?

Tu log tout cela dans ton appli ?

@titithebad
Copy link

Je viens de réinstaller node.

La config fonctionne mais quand j'appelle chez moi, voilà le message d'erreur :

pi@bureau:~ $ events.js:183
throw er; // Unhandled 'error' event
^

Error: spawn /usr/bin/pico2wave ENOENT
at _errnoException (util.js:1024:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)

En effet dans /usr/bin, pico2wave n'existe pas sur mon RPI. Je suis avec une distribution 8.0.

@jystervinou
Copy link
Owner

Tu l'as installé à quel endroit ?

Tu peux spécifier le chemin dans la conf.

@jystervinou
Copy link
Owner

sudo apt-get install libttspico-utils

which pico2wave
whereis pico2wave

@titithebad
Copy link

Il est installé de base sur la 9.0 de Debian ou il a fallu que tu le rajoutes ?

@jystervinou
Copy link
Owner

j'ai une 8 car j'ai installé retropie en fait.

et oui il a fallu que je l'installe avec la commande ci-dessus.

@titithebad
Copy link

Sinon ca fonctionne mais j'ai cette erreur/warning :
events.js:183
throw er; // Unhandled 'error' event
^

Error: spawn /usr/bin/sox ENOENT
at _errnoException (util.js:1024:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)

@jystervinou
Copy link
Owner

sudo apt-get install sox

?

@jystervinou
Copy link
Owner

jystervinou commented Nov 30, 2017

La doc est à jour avec tous les utilitaires à installer.

Enfin normalement :)

@titithebad
Copy link

Oui c'est bon ! j'utilise pas le speaker de Fbx.

Comment s'appelle les log ?

J'ai 2 fichiers log de taille 0.

Sinon j'ai un fichier package-lock.json, c'est quoi ?

Enfin, j'ai regardé : l'application ne fonctionne pas mais le process tourne quand meme quand je regarde via ps -edf. Une idée du soucis ?

@Laurent-84
Copy link

Laurent-84 commented Feb 10, 2018

Bonjour,
Erreur à l'installation (a noter: Effectué sur PI3 avec Jeedom):


sudo cp ffmpeg-3.4-armhf-32bit-static/ff* /usr/local/bin/
cp: impossible d'▒valuer 'ffmpeg-3.4-armhf-32bit-static/ff*': Aucun fichier ou dossier de ce type



node caller_id.js init
/home/pi/freebox-caller-id/node_modules/config/lib/config.js:946
throw new Error("Cannot parse config file: '" + fullFilename + "': " + e3);
^

Error: Cannot parse config file: '/home/pi/freebox-caller-id/config/local.json': SyntaxError: Unexpected token : in JSON at position 16
at Config.util.parseFile (/home/pi/freebox-caller-id/node_modules/config/lib/config.js:946:11)
at /home/pi/freebox-caller-id/node_modules/config/lib/config.js:715:28
at Array.forEach (native)
at /home/pi/freebox-caller-id/node_modules/config/lib/config.js:711:14
at Array.forEach (native)
at Config.util.loadFileConfigs (/home/pi/freebox-caller-id/node_modules/config/lib/config.js:710:13)
at new Config (/home/pi/freebox-caller-id/node_modules/config/lib/config.js:135:27)
at Object. (/home/pi/freebox-caller-id/node_modules/config/lib/config.js:1780:31)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)


Merci.

@jystervinou
Copy link
Owner

jystervinou commented Feb 10, 2018 via email

@Laurent-84
Copy link

Laurent-84 commented Feb 10, 2018

Bonjour Jean-Yves,

Voici ce que donne les commandes:

pi@raspberrypi:~ $ pwd
/home/pi

pi@raspberrypi:~ $ ls
ffmpeg-3.4.1-armhf-32bit-static
ffmpeg-release-armhf-32bit-static.tar.xz
ffmpeg-release-armhf-32bit-static.tar.xz.1
ffmpeg-release-armhf-32bit-static.tar.xz.2
freebox-caller-id

@jystervinou
Copy link
Owner

OK, la version de ffmpeg est passée en 3.4.1 au lieu de 3.4 dans ma doc.

Peux-tu réessayer en rajoutant le .1 quand il y a ffmpeg-3.4 ?

@Laurent-84
Copy link

Bonjour,
sudo cp ffmpeg-3.4.1-armhf-32bit-static/ff* /usr/local/bin/ ==> OK

Par contre: "node caller_id.js init" toujours erreur:
Edit: Manquait '{' au debut de mon local.json

Cela fonctionne maintenant;
Merci.

@jystervinou
Copy link
Owner

Merci pour le retour. Il faut que je mette la doc à jour pour ffmpeg-3.4.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants