Aller au contenu
satryany

Envoi De Photos - Dropbox - Synology - Passerelle Pushover - Smsgateway

Recommended Posts

Version 2 -  : version web,version windows - passerelle pushover et smsgateway, api http, gestion synology surveillance station  

 

 
Besoin :
 
Avoir la possibilité d’envoyer un mail avec plusieurs photos prisent simultanément à  plusieurs destinataires. Avoir une gestion multi rooms et multi users, upload des photos sur votre dropbox et gestion des cameras sur synology surveillance station, enregistrement, activation et désactivation. Tout cela avec une api pour pour être compatible avec  HC2 et HCL avec un simple GET.

Avoir une passerelle pour une utilisation plus simple des différents services de notifications comme smsGateway ou pushover (d'autres arriverons). L'idée est, coté hc2/hcl de ne pas avoir à  gérer de numéros de tel ou de token pushover, device name etc ... juste des prénoms :)

 
Etant développeur java et pour changer un peu du php :) l’outils est en java. Pour ceux que ça intéresse j'utilise les technos suivantes : Spring-boot - thymeleaf - bootstrap - jquery - maven 
 
Pour l’installation je vais me baser sur un synology DS713+ (processeur intel), sur lequel il est possible d’installer une machine virtuelle java en passant par le centre de paquets. Pour les syno non intel rendez vous ici (http://www.nas-forum.com/forum/topic/24712-java-sur-synology/).
 
L'installation sur un raspberry pi avec la distribution Rapsbian sera également expliquée.
 
Vous pouvez également faire tourner l’outils sur un pc / mac / unix avec java d’installé.
 

cameras



user


email


synoConf


dropbox


synocam


Api

 

 

Utilisation sous windows

 

1) Installation de java

 

https://www.java.com/fr/download/

 

2) télécharger et lancer l'application photo-sender.exe

 

https://www.dropbox.com/s/iit77xp4tia3axz/photo-sender.exe?dl=0

double clicker, votre navigateur web se lancera

 

Installation sur Synology DS713+ (intel)
 
1) Installation de java

  • Rendez dans le center de paquets, chercher «  Java ».
  • Installez l’application «java manager»

       

java manager

  • Lancez l’application java manager et clicker sur « installer java ».
  • Suivez la procédure d’installation

install java


     

java installed

  • Pour vérifier la bonne installation, connectez en ssh à  votre syno, (sur mac / unix avec un terminal, sous windows avec putty par exemple) et tapez : 
java -version
 
  • vous devriez avoir ceci :
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)
 

 

2) Installation de l'application sur le synology
 
L’application sur présente sous la forme d’un jar exécutable, qui démarre un serveur web qui expose un site ainsi qu'une api.

  • photo-sender.jar : l'application​
  • photo-sender.log : fichier de log
  • sender.sh : script de démarage

Se connecter en ssh sur le syno

  • Créer un répertoire "photo-sender" 
cd /volume1/web && mkdir photo-sender
 
  • Déplacer le fichier sender.sh dans /usr/local/etc/rc.d
mv /volume1/web/photo-sender/sender.sh /usr/local/etc/rc.d/sender.sh
 
  • le rendre éxécutable
chmod a+x /usr/local/etc/rc.d/sender.sh 
 
  • modifier la variable "path" avec le chemin vers lequel pointe l'application et où sera créer le fichier de config, et "port" port sur lequel va démarrer le serveur.

#!/bin/sh

#uncomment if syno
readonly javahome="/var/packages/JavaManager/target/Java/jre/bin/"
#uncomment if Rpi
#readonly javahome="/usr/lib/jvm/jdk-7-oracle-armhf/bin/"

readonly path="YOUR_PATH"
readonly port="YOUR_PORT"

start(){

echo `date +"%d-%m-%y %H:%M:%S"` "starting photo-sender..."
nohup ${javahome}java -jar ${path}photo-sender.jar --config.path=${path} --server.port=${port} 2>&1 >> ${path}photo-sender.log &
echo `date +"%d-%m-%y %H:%M:%S"` "photo-sender started"
}

stop(){
echo `date +"%d-%m-%y %H:%M:%S"` "stopping photo-sender..."
kill -9 $(cat ${path}photo-sender.pid)
rm ${path}photo-sender.pid
echo `date +"%d-%m-%y %H:%M:%S"` "photo-sender stopped"
}

case $1 in
    start)
        
        start
    ;;
    stop)
       
       stop
    ;;
    restart)


stop
start
    ;;
esac
exit 0
 
 
  • Redémarrer votre syno ou taper :  
/usr/local/etc/rc.d/sender.sh start
 
  • vous devriez voir des lignes de log dans le fichier photo-sender.log
  • Pour stopper l'application :
/usr/local/etc/rc.d/sender.sh stop
 

Installation sur Raspberry Pi (Raspbian)
 
Sur la dernière version de raspbian une jre java est installée par défaut, vérifier avec :



java -version
 

vous devriez avoir :
 

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode)
 
  • sinon :
sudo apt-get install oracle-java7-jdk
 
  • copier le zip de l'application dans /home/pi répertoire, avec une commande scp et en sftp avec fileZilla par example. 
unzip /home/pi/photo-sender/photo-sender.zip
 
  • Vous aurez l'arborescence suivante /home/pi/photo-sender/
  • Déplacer le fichier sender.sh dans /etc/init.d
mv /home/pi/photo-sender/sender.sh /etc/init.d/sender.sh
 
  • le rendre éxécutable
chmod a+x /etc/init.d/sender.sh
 
  •  editer le fichier /etc/rc.local
nano /etc/rc.local
 
  • et ajouter la ligne suivante : (Attention ne pas la rajouter après un exit 0
sh /etc/init.d/sender.sh start
 
  • enregistrer
 Ctrl O
 
  • quiter 
Ctrl X
 
  • Redémarrer votre raspberry ou taper :  
/etc/init.d/sender.sh start
 
  • vous devriez voir des lignes de log dans le fichier photo-sender.log
  • Pour stopper l'application :
/etc/init.d/sender.sh stop 
 

3) Dropbox
 
Pour des raisons de confidentialité de vos photos, je n'ai pas crée une application dropbox que vous devez connecter à  votre compte, c'est à  vous de créer une application dropbox dans laquelle photo-sender viendra uploader vos photos.
 
Pré requis : avoir un compte dropbox
 
1) aller sur https://www.dropbox.com/developers/apps
2) clicker sur Create app
3) choisissez dropbox API app
4) choisissez files and datastores
5) choisissez my app only needs access to files it created
6) choisissez un nom :)
7) create app
8) votre app est créée clicker sur generated access token
9) le renseigner dans l'application dans l'onglet dropbox
 
Les photos uploadées sont dans votre dropbox dans le dossier applications/votre app
 
4) Utilisation
 
Rendez vous dans l'onglet "api" tout est expliquée.
 
 L'application a été testée avec des caméras foscam et axis, si vous rencontrez des problèmes avec d'autres modèles n'hésitez pas à  me le remonter.
Si vous avec des idées d'améliorations me le remonter aussi :)
 
Change log
 
Version 1.1

  • -Validation des adresses mails
  • -Validation des urls des caméras
  • -Publication des sources 

Version 1.2

  • Possibilité ajouter du texte dans le corps du mail

Version 1.2.1

  • bug fixing - encodage du mail

Version 1.2.2

  • ajout de log

Version 1.3.0

  • changement de logger
  • sujet du mail dynamique 
  • upload dropbox

Version 1.3.1

  • bug fixing - encodage du mail
  • rechargement du fichier de configuration à  chaud 
  • mise en place d'un timeout pour la prise de photo afin de ne pas trop retarder l'envoie des photos en cas de caméras injoignable, par défaut 3 sec 

Version 1.4.0

  • Activation / désactivation des caméras sur surveillance station 

Version 2

  • Version web pour faciliter la configuration
  • Gestion synology surveillance station
  • Compatible HCL

Version 2.0.1

  • Bug fixing : création du fichier pid sur unix / mac dans le même répertoire que celui de l'application, ne pas le créer sous windows
  •  Ajout d'un bouton pour éteindre le serveur
  • Création d'une version packagée pour windows - photo-sender.exe

Version 2.0.2

  • Possibilité de choisir pour chaque camera un taille d'image qui sera utilisée lors de l'envois du mail et l'upload dropbox, l'idée est de donner à  ceux qui ont une petite connexion la possibilité d'avoir des envois rapides.
  • Dans les vus cameras je renvois des thumbnails à  la place des images en taille réelle.
  • Possibilité de déclencher un enregistrement dans surveillance station en précisant une durée, voir l'api pour plus de détails.

Version 2.1

  • Ajout d'une passerelle pour utiliser très simplement différents services de notifications, pour l'instant Pushover et smsGateway. Pour smsGateway renseigner les numéros de téléphones dans la partie "User" et configurer le service. Pour Pushover renseigner pour chaque destinataire son device-name et configurer le service. Pour l'instant je gère l'envois possible à  un groupe. A venir la gestion de plusieurs groupes et des sons de notifications. 
  • Technique : Mise à  jour du framework spring-boot, passage en tomcat 8.

 

L'application pour se trouve ici
 
Windows : https://www.dropbox.com/s/iit77xp4tia3axz/photo-sender.exe?dl=0

Unix / Mac : https://www.dropbox.com/s/s8mlavsdbs9u7zg/photo-sender.zip?dl=0
 
satryany.
   

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour l'avoir vu tourner je peux vous dire que c'est vraiment efficace. J'avais créer des scènes pour envoyer des mails en bloc. J'avais 12 sec d'écart entre la 1ère et la 3ème avec le même déclencheur. Ici c'est vraiment instantané pour les 3 et en plus dans le même mail!

C'est vraiment un super boulot

Partager ce message


Lien à poster
Partager sur d’autres sites

Version 1.1

 

 

-Validation des adresses mails

-Validation des urls des caméras

-Publication des sources 

 

à  venir tuto d'installation sur raspberry pi

Partager ce message


Lien à poster
Partager sur d’autres sites

Version 1.2


  • Possibilité ajouter du texte dans le corps du mail

tcpSocket = Net.FTcpSocket("192.168.0.110", 8000)

--photos de la pièce "salon" et "cuisine" envoyé àtout le monde avec < Mouvement détecté sur détecteur de mouvement salon > dans le corps du mail
--il est possible de mettre du html dans le corps du mail
bytes, errorCode = tcpSocket:write("salon,cuisine;all;Mouvement détecté sur détecteur de mouvement salon")
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Version 1.2.1

  • bug fixing - encodage du mail

 

tuto mis à  jour pour les syno sans ipkg d'installé.

Partager ce message


Lien à poster
Partager sur d’autres sites

Mise à  jour du tuto sur synology + ajout tuto pour raspberry.

 

Version 1.2.2

  • ajout de log

Partager ce message


Lien à poster
Partager sur d’autres sites

super! ça marche imper! (je n'utilise que la fonction mail pour ma part, sur un raspberry)

 

Par contre en 1.3.0 ça ne marche plus j'ai l'erreur suivante:

24-08-14 18:24:57 starting photo-sender...
/etc/init.d/sender.sh: 13: /etc/init.d/sender.sh: /var/packages/JavaManager/target/Java/jre/bin/java: not found
/etc/init.d/sender.sh: 14: /etc/init.d/sender.sh: cannot create /volume1/web/photo-sender/photo-sender.pid: Directory nonexistent
24-08-14 18:24:57 photo-sender started

Dommage de devoir insérer le code dans un module virtuel, car cela n'est pas très maléable dans les scénarios, c'est parce que Fibaro bloque l'utilisation du socket dans les scènes tu confirmes?

 

Merci pour ce module en tous cas!

Partager ce message


Lien à poster
Partager sur d’autres sites

sur un raspberry le path de la jvm java est normalement celui-ci : javahome="/usr/lib/jvm/jdk-7-oracle-armhf/bin/", dé-commente cette ligne dans le fichier de conf et commente celle ci readonly javahome="/var/packages/JavaManager/target/Java/jre/bin/"

/etc/init.d/sender.sh: 14: /etc/init.d/sender.sh: cannot create /volume1/web/photo-sender/photo-sender.pid: Directory nonexistent

Pour cette erreur remplace : "/volume1/web/photo-sender/" par le chemin de ton choix :)

 

Et oui pour l'utilisation dans un module virtuel, il n'est possible est faire des appels tcp / http dans une scène.

 

Par curiosité tu peux me donner la marque / modèle de tes cameras pour mettre à  jour la liste de compatibilité :) ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le tuyau, je ferai la manip quand je serai devant le Pc.

Sinon j'ai une foscam fi8904, ça marche impec, et la caméra du Karotz sous open karotz, ça marche impec aussi en laissant les champs user et mdp du json vides.

Partager ce message


Lien à poster
Partager sur d’autres sites

satryany bon travail.

 

Je vais testé mais aurais tu sorti un module virtuel pour y voir la forme.

 

qqes questions : faut il remplir l'ip et port du module virtuel. quel est l'adresse ip,,, celui du serveur java je suppose (syno). pourquoi 8000, (étant utiliser)?

 

Moi, c'est un volume2 que j'ai, pas de 1. j'ai modifié,,, je pense que ça doit passer? 

 

J'ai du Trendnet, as tu des retours.

 

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai une erreur type : Start...

28/08/2014 12:38:47.516 - [iNFO] - Reading config...
28/08/2014 12:38:47.516 - [iNFO] - Default Charset=UTF-8
28/08/2014 12:38:48.347 - [iNFO] - Reading config ok
28/08/2014 12:38:48.347 - [iNFO] - Checking config...
28/08/2014 12:38:48.371 - [iNFO] - Mail adress of contact :  is invalid
28/08/2014 12:38:48.379 - [iNFO] - Config error, exit

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

il doit y avoir une erreur dans ton fichier de conf, il ne trouve pas le nom du contact et il doit y avoir une erreur dans le mail.

essai de voir si déjà  il est valide d'un point de vu structure ici http://jsonformatter.curiousconcept.com/

 

reviens vers moi si ça ne passe pas.

Partager ce message


Lien à poster
Partager sur d’autres sites

: faut il remplir l'ip et port du module virtuel. quel est l'adresse ip

  • L'ip est celle de la machine sur laquelle tourne photo-sender

 pourquoi 8000, (étant utiliser)?

  • tu peux changer si tu veux, fait juste attention qu'il ne s'agisse pas d'un port déjà  utilisé

Partager ce message


Lien à poster
Partager sur d’autres sites

attends, je mis remets ce soir,,,

 

aprés modif :  Ouverture du Port sur le syno (8000). impec.

 

sauf l'image,,,pas d'image, seulement un fichier que je ne peux pas ouvrir.

Partager ce message


Lien à poster
Partager sur d’autres sites

au point de vue cam, j'ai trendnet et une panasonic pour mon test.

 

Je reçois des fichiers mais ne peut pas l'ouvrir par mail, ni sur drop.
Paint me dit : format pas pris en charge. c'est du jpeg!
 
 
panasonic ou trendnet : absence d'image

Partager ce message


Lien à poster
Partager sur d’autres sites

OK merci.

J'avais smtp free avec un mail, gmail , lol

Mais toujours pas de photo en image,,

 

[iNFO] - Uploading dropbox ok
31/08/2014 10:22:21.559 - [iNFO] - Waiting connection...
31/08/2014 10:22:21.562 - [iNFO] - receive : all;all;;;dropbox
31/08/2014 10:22:21.562 - [iNFO] - Asking photo for Porte AV...
31/08/2014 10:22:21.562 - [iNFO] - Asking photo for EntreeAV...
31/08/2014 10:22:21.563 - [iNFO] - Asking photo for Cam Jardin 1...
31/08/2014 10:22:21.563 - [iNFO] - Asking photo for Cam Jardin 2...
31/08/2014 10:22:21.649 - [iNFO] - Photo ok
31/08/2014 10:22:21.650 - [iNFO] - Sending mail...
31/08/2014 10:22:23.154 - [iNFO] - Sending mail ok
31/08/2014 10:22:23.154 - [iNFO] - Uploading dropbox...
31/08/2014 10:22:24.359 - [iNFO] - Uploaded: File("/31-08-2014_10-22-23-0154/Cam Jardin 1.jpg", iconName="page_white_picture", mightHaveThumbnail=true, numBytes=457, humanSize="457 bytes", lastModified="2014/08/31 09:22:23 UTC", clientMtime="2014/08/31 09:22:23 UTC", rev="b629....a3")
31/08/2014 10:22:24.901 - [iNFO] - Uploaded: File("/31-08-2014_10-22-23-0154/Cam Jardin 2.jpg", iconName="page_white_picture", mightHaveThumbnail=true, numBytes=457, humanSize="457 bytes", lastModified="2014/08/31 09:22:24 UTC", clientMtime="2014/08/31 09:22:24 UTC", rev="b829....a3")
31/08/2014 10:22:25.495 - [iNFO] - Uploaded: File("/31-08-2014_10-22-23-0154/EntreeAV.jpg", iconName="page_white_picture", mightHaveThumbnail=true, numBytes=457, humanSize="457 bytes", lastModified="2014/08/31 09:22:25 UTC", clientMtime="2014/08/31 09:22:25 UTC", rev="b929.....a3")
31/08/2014 10:22:26.392 - [iNFO] - Uploaded: File("/31-08-2014_10-22-23-0154/Porte AV.jpg", iconName="page_white_picture", mightHaveThumbnail=true, numBytes=457, humanSize="457 bytes", lastModified="2014/08/31 09:22:25 UTC", clientMtime="2014/08/31 09:22:26 UTC", rev="ba29.....a3")
31/08/2014 10:22:26.393 - [iNFO] - Uploading dropbox ok
 
Je constate aussi une erreur d'heure,,,, une heure de moins,,,10h22 alors que c'est 11h22 ,,,ou prend t il l'heure,, sur les cams ou sur le syno?

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour l'heure il y a un souci avec le syno en particulier il doit avoir un soucis dans ça gestion du Timezone, change le fuseau horaire à  GMT+1 Amsterdam / Berlin.

Pour les images, je n'ai pas de caméra trendnet / panasonic pour tester. As tu la possibilité de me donner un accès temporaire à  ta caméra et changeant les accès pour que je teste ?  (en MP)

Partager ce message


Lien à poster
Partager sur d’autres sites

Sur le syno mon fuseau est bon (+1berline) et synchro avec la freebox aussi,,, et sur les cams fuseau du syno. 

 

Pour l'acces (en MP).

 

J'avais une autre question,, comment puis je faire pour séparer par exemple, de jardin avant et jardin arriere.

( 2 scénes de declenchements av/ar, qui tape sur le Module virtuel, avantdropbox ou arrieredropbox, mais au niveau de ton script,,,,fichiers config?

 

comment le séparés ! deux fichiers config ? ou créer deux ports différents pour deux fichiers config diff?)

 

tu as du y pensée! ;)

 

encore une petite chose, faut il protèger le fichier avec un fichier htaccess ? (non le port ouvert n'est pas redirectionner de l’extérieur, donc aucun risque de l’extérieur)?? ton avis!

:rolleyes: lol

Partager ce message


Lien à poster
Partager sur d’autres sites

Sur mon syno la timezone par défaut est ( cat /etc/sysconfig/clock )

 

DS713> cat /etc/sysconfig/clock

ZONE=Timezone/Brussels
UTC=false
ARC=false
 
et j'ai un décalage de 1 heure
 
Quand je passe en amsterdam :
 
ZONE=Timezone/Amsterdam
UTC=true
ARC=false
 
Je n'est plus de problème. 
Après un changement de timezone il faut rebooter.
 
Chose bizarre, il n'y a que sur le synology que je constate ce problème.
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Version 1.3.1

  • bug fixing - encodage du mail
  • rechargement du fichier de configuration à  chaud 
  • mise en place d'un timeout pour la prise de photo afin de ne pas trop retarder l'envoie des photos en cas de caméras injoignable, par défaut 3 sec 

 

Pour recharger le fichier de configuration :

tcpSocket = Net.FTcpSocket("192.168.0.110", 8000)
bytes, errorCode = tcpSocket:write("reload")

A venir : Upload google drive

Partager ce message


Lien à poster
Partager sur d’autres sites

×