Fonctionnement sur Bullseye

Bonjour à tous,

Suite à la migration de jeedom vers un autre controlleur et bullseye via un backup/restore, le plugin Pushbullet ne fonctionne plus. Le daemon ne démarre plus.

J’ai essayé d’appliquer la sollution décrite dans le poste:

[Erreur démon pushbullet en boucle - #38 par magifix]

Malheureusement cela ne fonctionne plus du fait que python 2.x n’est plus disponible sur bullseye, il y a seulement la version python3.9. Et même en utilisant le websocket de 3.9, ça ne donne rien.

Est-ce que quelqu’un a déjà tenté l’expérience avec succès?

Hello,
tous les plugins qui utilise du python 2.x seront non compatible pour Debian 11 et au delà, il faut que le développeur passe le plugin en python 3.x

la solution est sur du Debian 10

Cordialement

Merci pour la précision. Sauf erreur c’est ici que se trouvent les sources du module:

https://github.com/cazeaux/jeedom_pushbullet

Je ne suis pas développeur, mais je vais voir s’il y a moyen de faire quelque chose

1 « J'aime »

Le mieux c’est de refaire l’api je pense leur code de l’API date de 8 ans :slight_smile: d’après github

Le mieux c’est de le refaire en php, il y a un git aussi https://github.com/ivkos/Pushbullet-for-PHP, il date de pareil

D’après leur document https://docs.pushbullet.com/#pushbullet-api ils sont passé sur un OAuth2

Bonne chance ou de contacter le développer en MP

Ça à l’air d’être du job, ce sera plutôt pour les longues soirées d’hiver! Je vais voir si le développeur répond à mon message.

Bon aujourd’hui j’ai tenté la méthode « brute force ». J’ai utilisé le tool 2to3 pour convertir tous les scripts python en version 3. J’ai ensuite constaté qu’il y avait encore des problèmes avec la création du fichier pid. Il reste des commandes qui étaient « built-in » dans la version 2 de python et qui n’étaient pas converties, aini le fichier pid pour le démarrage du daemon n’était pas écrit. Il s’agissait du keyword file qui n’existe plus en version 3:

        pid = str(os.getpid())
        logger.debug("Writing PID " + pid + " to " + str(pidfile))
        #file(pidfile, 'w').write("%s\n" % pid)
        open(pidfile, 'w').write("%s\n" % pid)

file devient open

Mais j’ai toujours un problème, le script écrit « pid » dans le fichier au lieu du process id. Pourtant la synthaxe me parait correcte ( pid = str(os.getpid()) ).
Comme je ne suis pas spécialiste de python, je ne sais pas si quelqu’un voit le bug?

Arpès quelques corrections de syntaxe, j’ai pu quelque peu progresser, mais ça bloque sur le listener.py:

python /var/www/html/plugins/pushbullet/ressources/pushbullet_daemon/pushbullet.py « some_key »

DEBUG:pushbullet:Check PID file
DEBUG:pushbullet:PID file ‹ /var/www/html/plugins/pushbullet/ressources/pushbullet_daemon/…/…/…/…/tmp/pushbullet.« some_key ».pid ›
DEBUG:pushbullet:Write PID file
DEBUG:pushbullet:Start daemon
DEBUG:pushbullet:Writing PID 27271 to /var/www/html/plugins/pushbullet/ressources/pushbullet_daemon/…/…/…/…/tmp/pushbullet.« some_key ».pid
DEBUG:pushbullet.Listener:Listener open
DEBUG:pushbullet.Listener:Message received:{« type »:« nop »}
ERROR:root:‹ NoneType › object is not callable
Traceback (most recent call last):
File « /var/www/html/plugins/pushbullet/ressources/pushbullet_daemon/pushbullet/listener.py », line 73, in on_message
self.on_ping(json_message)
TypeError: ‹ NoneType › object is not callable
DEBUG:pushbullet.Listener:Message received:{« type »:« nop »}
ERROR:root:‹ NoneType › object is not callable
Traceback (most recent call last):
File « /var/www/html/plugins/pushbullet/ressources/pushbullet_daemon/pushbullet/listener.py », line 73, in on_message
self.on_ping(json_message)
TypeError: ‹ NoneType › object is not callable

Est-ce que quelqu’un sait si le contenu du répertoire /var/www/html/plugins/pushbullet/ressources/pushbullet_daemon/pushbullet est spécifique à jeedom, ou cela fait partie des sources de pushbullet?

Bonjour magifix,

Désolé de revenir sur le sujet, mais je viens seulement de passer sur « Bullseye » et je rencontre effectivement le même souci.

Depuis juillet 2023 vous avez pu avancer ou êtes passé à autre chose ?

A+

Hello
Moi je suis passé sur PUSHOVER qui fait pareil, et que j’ai intégré avec le plugin scripts pour lancer des wget sur leur API.
A+

Bonjour à tous,
Je viens de passer sur bullseye et évidemment j’ai le même problème…
Quelqu’un a-t-il une solution en restant sur pushbullet que j’utilise pour d’autres choses ?
Merci d’avance.
fabrice

Bonjour à tous,

Désolé, je n’ai pas avancé sur le sujet. J’ai aussi passé à Pushover. Avec Pushover, il me manque l’interraction qui était possible avec Pushbullet.
Malheureusement, je n’ai pas beaucoup de ressouces en ce moment. J’ai aussi essayer de contacter le développeur, mais il ne semble plus du tout atteignable.

Si quelque en sait plus, ça m’intéresse

Bonjour,
J’ai a mon tour migrer en debian11 et réussi a lancer le daemon du plugin.

  • installation du paquet python2.7 : apt install python2.7
  • modification de la ligne 744
    $cmd = 'nice -n 19 /usr/bin/python ' . $daemon_path . '/pushbullet.py '.$this->getConfiguration('token');
    par
    $cmd = 'nice -n 19 /usr/bin/python2.7 ' . $daemon_path . '/pushbullet.py '.$this->getConfiguration('token');
  • modification de la ligne 778
    $result = exec('cat /proc/' . $pid . '/cmdline | grep "pushbullet" | wc -l', $output, $retcode);
    par
    $result = exec('cat /proc/' . $pid . '/cmdline | grep -a "pushbullet" | wc -l', $output, $retcode);
  • en cas de problème supression des fichier /tmp/pushbullet*

En debian 10 la commande python est un lien vers python2.7 et il existe aussi une commande python3 qui est un lien vers python3.7
En debian 11 il n’y a de base que la commande python3 ( lien vers python 3.9 )
La modif de la ligne 744 fait appel explicite a python2.7

La modif de la ligne 778: rajout de l’option -a à la commande grep sinon grep répond grep: cmdline: binary file matches

  • Avec ces modifs de mon coté le daemon du plugin pushbullet ce lance :smile:
  • l’envoi de push par jeedom fonctionne
  • la réception par jeedom de push depuis un mobile ou depuis la page https://www.pushbullet.com fonctionne et lance bien les interractions jeedom

Je ne crois pas qu’il y ai besoin que le daemon tourne pour l’envoi de push par jeedom,
c’est directement le code php du module qui fait des curl.

Par contre ATTENTION lors de mes tests, la sauvegarde d’un equipement pushbullet dans jeedom ne fonction pas correctement !!
en mettant deb11push comme Nom du device Pushbullet ( pour ne pas mélanger avec la prod ) et en sauvegardant j’ai vu apparaître plus de 3 commandes deb11push dans jeedom et pareil dans la listes des équipement sur le site de pushbullet. Et dans les logs du module on voit bien des appels successifs générant de multiples devices deb11push

si cela peu aider…

1 « J'aime »