Synchroniser automatiquement les photos de son smartphone sur son NAS

Suite à la décision « controversée » de google de rendre son mécanisme de sauvegarde des photos payants et suite à l’arrêt du développement côté plex du service camera upload, je me suis penché vers les alternatives existantes pour permettre de sauvegarder les photos vers mon NAS.

Il existe sûrement d’autres outils, mais voilà ceux que j’utilise pour moi ou pour ma famille.

PhotoSync est une application payante disponible sur à priori toutes les plateformes existantes. La solution est payante sur Android / iOS mais fonctionne bien, ne nécessite pas de grosse infrastructure derrière.

Inconvénient : c’est payant. Mais bon, pffft 2€ quoi. A vous de voir.

Photosync (Google Play) / Photosync (AppleStore)

NextCloud est une application serveur dont l’application sur smartphone permet entre autre de synchroniser les photos automatiquement prises sur les téléphones android

L’inconvénient majeur c’est la complexité du système à mettre en place. L’installation nécessite de nombreux paquets et de la configuration « manuelle » à exécuter (ligne de commande…). La documentation en ligne est bien faite et il vaut mieux éviter de regarder les sites tiers sur le sujet qui ne sont pas à jour et peuvent faire faire des erreurs. J’en sais quelque chose…

NextCloud(Google Play) / NextCloud (Apple Store)

Redémarrer proprement Android TV

Android tv c’est bien .. mais ça s’eteind pas facilement. En effet un appui sur le bouton power de la télécommande ne permet pas d’éteindre mais de mettre en veille. Or, si le menu est a moitié planté ou qu’une application système bugge il faut redémarrer.

  • Menu paramètres
  • Paramètres Android
  • A propos
  • Et enfin Redémarrer.

Et dire qu’il y en a qui ralaient sur le menu démarrer de Windows qui permettait d’arrêter….

Domotiser la charge d’une tablette ou téléphone Android

Dans ma salle de bain, j’ai intégré un petit téléphone Android pas cher et surtout, qui ne craint pas l’eau. Ce téléphone est utilisé pour plusieurs choses :

On ne juge pas!

Oui, mais voilà, utiliser un téléphone / tablette tous les matins et tous les soirs imposent la contrainte de … penser à le recharger.

Et plutôt que de le laisser brancher en permanence… j’ai souhaité domotiser sa charge.

Prérequis

  • 1 prise commandable via Jeedom : dans mon cas, il s’agit d’une Kasa TPLink (lien affiliée)

Une fois reçue, la prise doit être configurée avec l’application android Kasa. L’application existe également sous iOS : Kasa Smart

  • 1 téléphone / tablette sous Android. 
  • 1 Jeedom fonctionnel
  • 1 compte Telegram fonctionnel ou Pushbullet

Configuration de Jeedom

Côté Jeedom : installer les plugins nécessaires

  • 1 plugin Jeedom Telegram ou Pushbullet préalablement configuré.
  • 1 plugin Jeedom pour gérer votre prise (dans mon cas: kkasa )

Si vous souhaitez de l’aide pour installer le plugin Telegram, je vous conseille le tutoriel suivant : https://www.maison-et-domotique.com/70896-piloter-jeedom-avec-telegram/

Une fois le plugin installé sur votre jeedom, commencer par activer le plugin… Puis installer les dépendances.

N’oubliez pas de rentrer votre compte / mot de passe kasa.

Puis rendez vous dans la page de configuration : menu plugin, Objets Connectés, kKasa

Un clic sur synchroniser, puis appuyer sur F5… Magie, vos prises apparaissent dans périphériques

Votre seule activité consistera alors à régler vos prises en renommant le périphérique avec un nom explicite, unique.

Dans mon cas, j’ai nommé la prise en « Prise téléphone« , associé à la zone « salle de bain ». Retenez bien ce nom, ça sera utile pour la suite!

Configuration d’android

Il est nécessaire d’installer quelques applications sur le téléphone android :

Programmation de Tasker

Sur le téléphone Android, j’ai programmé Tasker ainsi :

J’ai créer une première tâche « Activation prise » consistant à envoyer une notifcation via l’application pushbullet/Telegram à destination de Jeedom le message « Prise téléphone on« 

J’ai ensuite créé une seconde tâche « Désactivation prise », envoyant sur le même principe « Prise téléphone off« 

Ensuite, j’ai créé deux profils « Prise on » et « Prise off« .

Prise On se déclenche sur les events suivants :

  • « Niveau de batterie de 10% à 10% » et
  • « Source AC » case « Inverser » à oui

Et son action consiste à démarrer la tâche « Activation prise« .

Prise off se déclenche sur les événements suivants :

  • Niveau de batterie de 100% à 100% et
  • « Source AC » case Inverser non coché

Et bien entendu l’action associée… consiste à démarrer la tâche « Prise off« .

En rédigeant cet article, je ne pouvais pas m’empêcher de penser à JourNuit de Pixar…

Et là normalement tout marche par la magie Jeedom! Enfin presque. Car si comme moi, vous avez désactiver les interactions automatiques… ben rien ne se passe.

Configuration de Jeedom

Dans le menu configuration, Interactions, pensez à activer les interactions automatiques.

Pour conclure : pensez aux économies

Cet article m’a été inspiré en partie de l’article de Sarakha63 sur son centre de contrôle. Je le remercie grandement 🙂

Le fait de ne pas avoir à penser a la recharge du téléphone c’est pratique… mais vu que je vous ai fait installer Tasker, profitez-en pour régler finement vos paramètres d’énergie avec des modes agressifs pendant les périodes d’absences : par exemple pas de réseau, pas de GPS, puissance minimale etc. L’électricité qu’on ne dépense pas, c’est toujours de l’électricité qu’on ne paie pas !

Piloter une TV Philips ambilight récente par ligne de commande

Les TV Philips récentes sous Android TV (> 2016) utilisent une API basée sur JointSpace

C’est beau tout de même!

MAIS, pour faire simple, Philips a décidé de masquer cet API via d’une part un changement de port, l’utilisation du https au lieu du http… et en prime, cela nécessite un appairage, intégré aux applications philips… Mais pas accessible ailleurs.

Heureusement, il existe sur github un script permettant de réaliser « facilement » cet appairage. Enfin, facilement…

https://github.com/suborb/philips_android_tv

Je vais décrire le process pour installer ce script.

Prérequis

  • Avoir un pc / serveur (linux de préférence) avec python d’installé.
  • Avoir git d’installé : rappel sur ubuntu
sudo apt-get install git

  • Connaître l’adresse IP de votre télé philips. Si vous ne la connaissez pas, elle est indiquée dans le menu android!

Installation du script et appairage

Sur votre PC/Serveur, dans le dossier de votre choix, on commence par récupérer le script :

git clone https://github.com/suborb/philips_android_tv.git <votre_dossier>
cd <votre dossier>

ensuite, on installe les pré-requis du scripts :

sudo pip install -r requirements.txt

Il faut ensuite démarrer votre téléviseur puis lancer l’appairage de votre TV via le script

python philips.py --host <adresse IP Philips TV> pair

Le script vous demande un code affiché à l’écran, puis il va vous fournir un utilisateur et un mot de passe. Ces deux éléments sont essentiels et à conserver absolument. Rassurer vous, on peut toujours relancer l’appairage si on les oublie…

Utilisation du script

On peut utiliser le script pour récupérer des infos … mais surtout réaliser quelques actions (limitées… très limitées…)

Pour cela on exécute le script ainsi :

python philips.py --host <adresse IP TV> --user <VOTRE USER> --pass <VOTRE PASS> <command>

Avec <command> ayant pour valeur possible : get_volume, get ou standby

Bon, le script est pas super complet… Donc, j’ai réalisé quelques modifications pour avoir quelques commandes supplémentaires.

Sur demande, je peux fournir un patch… en attendant, faute de mieux, remplacer les lignes > 99

if args.command.startswith("get"):
if args.command == "get_ambilight_cached":
config['path'] = "6/ambilight/cached"
elif args.command == "get_ambilight":
config['path'] = "6/ambilight/currentconfiguration"
elif args.command == "get_ambilight_mode":
config['path'] = "6/ambilight/mode"
elif args.command == "get_ambilight_topology":
config['path'] = "6/ambilight/topology"
elif args.command == "get_applications":
config['path'] = "6/applications"
elif args.command == "get_channeldb_tv":
config['path'] = "6/channeldb/tv"
elif args.command == "get_channeldb_channellists":
config['path'] = "6/channeldb/tv/channelLists/all"
elif args.command == "get_menuitems_settings":
config['path'] = "6/menuitems/settings/structure"
elif args.command == "get_powerstate":
config['path'] = "6/powerstate"
elif args.command == "get_recordings":
config['path'] = "6/recordings/list"
elif args.command == "get_system":
config['path'] = "6/system"
elif args.command == "get_system_epgsource":
config['path'] = "6/system/epgsource"
elif args.command == "get_system_storage":
config['path'] = "6/system/storage"
elif args.command == "get_system_timestamp":
config['path'] = "6/system/timestamp"
elif args.command == "get_volume":
config['path'] = "6/audio/volume"
else:
print("Invalid get command (see source for details)")
return
get_command(config)
if args.command.startswith("post"):
if args.command == "post_standby":
config['path'] = "6/input/key"
config['body'] = { "key" : "Standby" }
elif args.command == "post_home":
config['path'] = "6/input/key"
config['body'] = { "key" : "Home" }
elif args.command == "post_mute":
config['path'] = "6/input/key"
config['body'] = { "key" : "Mute" }
else:
print("Invalid post command")
return
post_command(config)
main()

Cela me permet d’avoir des commandes intéressantes du point de vue domotique

  • post_standy => arrêt / mise en route de la télé
  • post_home => mise en route du menu home
  • post_mute => mute …
  • get_powerstate => status de la télé (allumée, eteinte)

Bon, après tout ça, c’est TOUJOURS pas user friendly, mais ça permet d’interroger la télévision, de lui demander de s’allumer, de s’éteindre…

Mais ensuite, il reste à intégrer tout ça dans Jeedom, et cela fera partie d’un deuxième article.