Notifications push

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
FullMetalKnet
Messages : 18
Enregistré le : dim. 19 juil. 2015 17:27
Localisation : Poitiers (86)

Notifications push

Message par FullMetalKnet » ven. 21 août 2015 13:47

Bonjour à toutes et à tous!
N'ayant pas eu de réponse dans l'onglet alarme videosurveillance, je déplace le post! merci
Ayant un peu de domotique delta dore chez moi, je souhaiterais améliorer mon système grâce a notre joujou préféré le rapsberry!

J'ai acheté récement le tydom 1.0 de chez delta dore qui permet de prendre le contrôle de la maison simplement depuis le smartphone, (très bon produit mais la n'est pas le sujet).
Mon soucis c'est que j'ai un module impulsionnel sur le moteur de la porte du garage, et par la logique des choses aucuns retour sur la position du porte.

Avec le raspberry j'avais pensé a combler ce manque avec les notifications push:http://videos.cctvcamerapros.com/digita ... ry-pi.html

Ca fonctionne super bien, mais je souhaiterais aller plus loin, étant novice en codage python j'ai tenté quelques codes mais n'aboutissant pas.

j'aurais voulu une notification aussi pour m'informé que le portail est bien fermé!

voici le code:

Code : Tout sélectionner

#!usr/bin/env python

import pycurl, json
from StringIO import StringIO
import RPi.GPIO as GPIO

#setup GPIO using Broadcom SOC channel numbering
GPIO.setmode(GPIO.BCM)

# set to pull-up (normally closed position)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#setup InstaPush variables
# add your Instapush Application ID
appID = "55c84f85a4c48a613fc9a5df"

# add your Instapush Application Secret
appSecret = "2f354146a123f3312c60b71a87358e8f"
pushEvent = "Alerte"
pushMessage = "Porte garage!"

# use this to capture the response from our push API call
buffer = StringIO()

# use Curl to post to the Instapush API
c = pycurl.Curl()

# set API URL
c.setopt(c.URL, 'https://api.instapush.im/v1/post')

#setup custom headers for authentication variables and content type
c.setopt(c.HTTPHEADER, ['x-instapush-appid: ' + appID,
			'x-instapush-appsecret: ' + appSecret,
			'Content-Type: application/json'])


# create a dict structure for the JSON data to post
json_fields = {}

# setup JSON values
json_fields['event']=pushEvent
json_fields['trackers'] = {}
json_fields['trackers']['message']=pushMessage
#print(json_fields)
postfields = json.dumps(json_fields)

# make sure to send the JSON with post
c.setopt(c.POSTFIELDS, postfields)

# set this so we can capture the resposne in our buffer
c.setopt(c.WRITEFUNCTION, buffer.write)

# uncomment to see the post sent
#c.setopt(c.VERBOSE, True)


# setup an indefinite loop that looks for the door to be opened / closed
while True:

	GPIO.wait_for_edge(23, GPIO.RISING)
	print("Porte ouverte!\n")

	# in the door is opened, send the push request
	c.perform()

	# capture the response from the server
	body= buffer.getvalue()

	# print the response
	print(body)

	# reset the buffer
	buffer.truncate(0)
	buffer.seek(0)
	
	# print when the door in closed
	GPIO.wait_for_edge(23, GPIO.FALLING)
	print("Porte fermee!\n")
	

# cleanup
c.close()
GPIO.cleanup()

j'avis tenté ce code après:

Code : Tout sélectionner

# print when the door in closed
	GPIO.wait_for_edge(23, GPIO.FALLING)
	print("Porte fermee!\n")

	# in the door is closed, send the push request
	c.perform()

	# capture the response from the server
	body= buffer.getvalue()

	# print the response
	print(body)

	# reset the buffer
	buffer.truncate(0)
	buffer.seek(0)

je souhaiterais rajouter plus tard d'autres notifications, es ce possible?

merci d'avance

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Notifications push

Message par Manfraid » sam. 22 août 2015 08:44

Salut,

pourquoi ne pas utiliser l'excellente librairy "requests" plutôt qu'urllib ?

sinon avec ton code cela risque d'être un poil compliquer, l'idéal serai de faire une fonction d'envoi d'un message (qui sera un paramètre), comme cela tu pourra envoyer autant de notification différente que tu veux.
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

FullMetalKnet
Messages : 18
Enregistré le : dim. 19 juil. 2015 17:27
Localisation : Poitiers (86)

Re: Notifications push

Message par FullMetalKnet » sam. 22 août 2015 09:07

:shock:

Merci pour ta réponse.

Cela dis, je vais prendre quelques cours de python, car je suis novice en programmation, (j’ai quelques connaissances en vb) :?

Quels sites me conseil tu pour apprendre les bases? :roll:

EVOTk

Re: Notifications push

Message par EVOTk » sam. 22 août 2015 10:51

Salut,
Tu n'as pas un abonnement free mobile par hasard ? Car avec Free il est tres facile de s'envoyer des sms sur son portable.

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Notifications push

Message par domi » sam. 22 août 2015 11:39

Bonjour,
FullMetalKnet a écrit :Quels sites me conseil tu pour apprendre les bases? :roll:
Très complet, tu as déjà le site OpenClassRooms.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

FullMetalKnet
Messages : 18
Enregistré le : dim. 19 juil. 2015 17:27
Localisation : Poitiers (86)

Re: Notifications push

Message par FullMetalKnet » lun. 24 août 2015 13:19

EVOTk a écrit :Salut,
Tu n'as pas un abonnement free mobile par hasard ? Car avec Free il est tres facile de s'envoyer des sms sur son portable.
Je suis bien chez free mais c'est pas moi qui a le forfait mobile (c'est madame).

domi a écrit :Bonjour,
FullMetalKnet a écrit :Quels sites me conseil tu pour apprendre les bases? :roll:
Très complet, tu as déjà le site OpenClassRooms.
Merci j’ai commencé le cours, c'est plutôt bien expliqué. J'en ai profité pour m'acheter le livre de François sur le raspberry pi 2

Répondre

Retourner vers « Python »