Une 2eme plateforme SMS à base de téléphone Android puis évolution vers le pilotage SMS de Domoticz

C’est le deuxième article sur le sujet des SMS et de Domoticz.

Il est le copié/collé (pas tout à fait quand même) d’un article précédent https://easydomoticz.com/une-plateforme-sms-a-laide-dun-vieux-telephone-android-pour-domoticz/ , la seule différence est le changement de l’appli du téléphone Android.

Ce changement permet de pouvoir réutiliser un script Lua réalisé par Vil1driver sur le forum , référence ici https://easydomoticz.com/forum/viewtopic.php?f=17&t=596 permettant le pilotage de Domoticz VIA l’envoi de SMS (oui, oui c’est possible)

Vil1driver c’est basé sur une appli Android (SMS Gateway Ultimate) et moi sur une autre SMS Gateway (tout court)).

Je vais donc détailler ici l’utilisation d’une autre gateway SMS pour Android puis nous verrons comment utiliser le script Lua au sein de Domoticz afin de donner des ordres via SMS dans un autre article.

Repartons donc à la découverte de l’envoi de SMS depuis Domoticz.

Introduction

Une question récurrente des utilisateurs Domoticz est l’envoi de SMS depuis notre système favori, voyons ici les possibilités qui nous sont offertes, leurs avantages et leurs inconvénients.

  • Free permet à ses utilisateurs l’envoi gratuit de SMS vers leur propre numéro, mais on est donc limité à un seul numéro (c.f cet article). L’inconvénient est d’avoir un forfait téléphonique Free et on doit utiliser l’api http:// de Free dépendante d’une connexion Internet.
  • On peut aussi utiliser la plateforme SMS Clickatell, surtout depuis son inclusion native dans Domoticz, ou d’autres (OVH) mais radins comme nous sommes, le coût nous freine rapidement.

Partant de ce constat j’ai cherché une autre solution.

Le postulat de base est :

  • le moins cher possible avec des coûts prévisibles et planifiables (un forfait fixe),
  • pas de trucs dans le cloud (je ne veux pas dépendre de ma connexion internet pour cela).

Sachant que j’ai un vieux téléphone Android dans un placard, qu’un forfait à 2 euros chez Free ne me parait pas prohibitif, l’idée vient rapidement d’utiliser le téléphone pour envoyer nos SMS. Il nous faut donc un logiciel sur le téléphone capable d’envoyer des SMS et d’être piloté depuis l’extérieur (Raspberry/Domoticz).

Quelques recherches sur le Google Play nous amènent vers le logiciel SMS gatewaySMS Gateway Ultimate qui possède une interface qui écoute sur http pour envoyer les SMS.

D’autres fonctions sympathiques existent dans cette appli (SMS vers Http que nous utiliserons plus tard, mail vers SMS, SMS vers mail…)

L’appli SMS GATEWAY Ultimate SMSGUltimate

Après installation depuis le Google Play , le lancement de l’appli donne cela:

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

RFLINK et Arduino Mega : ça bouge.

L’été à été constructif concernant RFLINK puisque plusieurs mises à jour ont été apportées dans le développement de cette plate forme aussi bien en nouveaux matériels supportés qu’en facilité de chargement des programmes vers l’Arduino Mega.

Pour rappel RFLINK est un module en 433 Mhz permettant de  remplacer de nombreux capteurs du commerce en émulant leur protocole ce qui permet à Domoticz de les reconnaitre nativement.

RFLINK à fait l’objet  d’articles concernant la partie matérielle ici et la pour le software.

rfl_rxtx

Voici la liste des matériels supportés :

Prises et interupteurs RF

  • Klik Aan Klik Uit (Code Wheel) (Send + Receive)
  • Princeton PT2262 / MOSDESIGN M3EB / Domia Lite / Klik-Aan-Klik-Uit / Intertechno)
  • CoCo Technologies / Cogex / D-IO (Chacon) / Nexa / Düwi Terminal
  • Klik Aan Klik Uit (Automatic Code Learning) (Send + Receive)
  • Home Easy (Code Wheel) (Send + Receive)
  • Flamingo FA500R/S/DSS/WD (Automatic Code Learning) (Send + Receive)
  • SilverCrest 91210/60494 RCS AAA3680
  • Mumbi M-FS300
  • Unitec 48110 EIM 826 / 48111 EIM 821
  • Elro Home Comfort AB600 (Send + Receive)
  • Intertek Eurodomest 972080(Automatic Code Learning) (Send + Receive)
  • Blyss (Send + Receive)
  • Conrad RSL2 (Receive only)
  • Kambrook RF3399/RF3405/RF3672/RF3689/RF4471R (Receive only)
  • X10 RF switches (Send + Receive)

Capteurs Meteo :

  • Alecto V1:
  • Alecto WS3500, SilverCrest, Otio SHT-10, Otio SHT-20
  • Auriol H13726, Ventus WS155, Hama EWS 1500, Meteoscan W155/W160
  • Alecto WS4500, Ventus W044, Balance RF-WS105
  • Alecto V2: (868 Mhz! A donc besoin d’un )
  • ACH2010, DKW2012
  • Alecto V3:
  • WS1100, WS1200
  • Cresta/Hideki:
  • Hideki, TFA Nexus, Mebus, Irox, Irox-Pro X, Honeywell, Cresta TE923, TE923W, TE821W,
  • WXR810, DV928, Ventus W906, HomeWizard Rain meter
  • Mebus:
  • Mebus Outdoor Sensor
  • Stacja Pogody WS-9941-M
  • UPM/Esic:
  • UPM, Esic, Emos, DVM, Clas Ohlson, Dickson
  • WT260,WT260H,WT440H,WT450,WT450H,WDS500,RG700
  • LaCrosse:
  • Lacrosse TX3-TH Thermo/Humidity, Lacrosse TX4
  • WS7000-15: Anemometer, WS7000-16: Rain precipitation, WS2500-19: Brightness Luxmeter,
  • WS7000-20: Thermo/Humidity/Barometer
  • Auriol:
  • Z31743, Z31055A, Rubicson
  • Oregon V1/2/3:
  • THC238, THC268, THN132N, THWR288A, THRN122N, THN122N, AW129, AW131, THGR268, THGR122X,
  • THGN122N, THGN123N, THGR122NX, THGR228N, THGR238, WTGR800, THGR918, THGRN228NX, THGN500,
  • THGR810, RTGR328N, THGR328N, Huger BTHR918, BTHR918N, BTHR968, RGR126, RGR682, RGR918, PCR122
  • THWR800, THR128, THR138, THC138, OWL CM119, cent-a-meter, OWL CM113, Electrisave
  • UVN128, UV138, UVN800, Huger-STR918, WGR918, WGR800, PCR800, WGTR800, BTHG968

Commande de Volets / Store

  • Kaku ASUN650

Detecteurs de mouvement et d’ouverture de porte :

  • Low Budget Chinese PIR
  • Ajax Chub Varel PIR

Dectecteur Incendie:

  • Mertik G6R H4T1 / Dru

Detecteurs de fumée:

  • KD101 (Send + Receive)
  • Flamingo FA20RF (Send + Receive)

et les nouveaux ajouts

– New Device: Conrad 9771 Pool Thermometer
– New Device: SilverCrest Z31370-TX Doorbell
– New Device: Smartwares remote controls (among others: SH5-TDR-K 10.037.17)
– New Device: Chuango Alarm devices Motion/Door/Window etc. (among others: CG-105S)
– New Device: Oregon Scientific NR868 PIR/night light
– New Device: Oregon Scientific MSR939 PIR
– New Device: Imagintronix Temperature/Soil humidity sensor
– New Device: Ikea Koppla
– New Device: Chacon (TR-502MSV, NR.RC402) – Fixed: Arc protocol send
– Fixed: Impuls. Note: pair devices with the KAKU protocol, the remote is recognized separately
– Changed: Plugin 3 send method, combined routines
– Changed: HomeConfort was recognized as Impuls, now using GDR2 name
– Changed: HomeEasy remotes can deliver various signals, now skipping KAKU compatible signals and just reporting the HomeEasy code when both codes are transmitted
– Fixed: HomeEasy group on/off command was reversed for HE8xx devices, now correctly detects differences between HE3xx and HE8xx
– Fixed: HomeEasy was not able to control HE87x switches, changed the entire transmit routine
– Changed: stretched Xiron timing checks
– Changed: Various timing modifications (NewKaku/AC, Blyss) due to the new timing introduced at version R26
– Changed: Plugin 61, Chinese Alarm devices, reversed bits as it seemed to correspond better to bit settings, increased address range
– Fixed: Flamingo Smokedetector packet detection tightened up to prevent false positives
– Fixed: Corrected Conrad RSL command interpretation
– Added: Extended Nodo Slave support to support separate and combined sensors
– Added: Extended Nodo Slave support to support pulse meters

 

Vous retrouverez le fichier zip à télécharger et à intégrer dans l’Arduino Méga à cette adresse http://sourceforge.net/projects/rflink/files/RFLink_v1.1_r30.zip/download.

En dehors des nouveaux périphériques ajoutés, ce fichier zip contient un outil pour Windows facilitant le téléchargement vers l’Arduino Mega.

Mon camarade Deenno nous à fait de jolis slides détaillant l’utilisation de cet outil, en voici le lien https://drive.google.com/file/d/0BwZyGxESbZNpMktucENVWDRXWUU/view.

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

une plateforme SMS à l’aide d’un vieux téléphone Android pour Domoticz

Une question récurrente des utilisateurs Domoticz est l’envoi de SMS depuis notre système favori, voyons ici les possibilités qui nous sont offertes, leurs avantages et leurs inconvénients.

  • Free permet à ses utilisateurs l’envoi gratuit de SMS vers leur propre numéro, mais on est donc limité à un seul numéro (c.f cet article). L’inconvénient est d’avoir un forfait téléphonique Free et on doit utiliser l’api http:// de Free dépendante d’une connexion Internet.
  • On peut aussi utiliser la plateforme SMS Clickatell, surtout depuis son inclusion native dans Domoticz, ou d’autres (OVH) mais radins comme nous sommes, le coût nous freine rapidement.

Partant de ce constat j’ai cherché une autre solution.

Le postulat de base est :

  • le moins cher possible avec des coûts prévisibles et planifiables (un forfait fixe),
  • pas de trucs dans le cloud (je ne veux pas dépendre de ma connexion internet pour cela).

Sachant que j’ai un vieux téléphone Android dans un placard, qu’un forfait à 2 euros chez Free ne me parait pas prohibitif, l’idée vient rapidement d’utiliser le téléphone pour envoyer nos SMS. Il nous faut donc un logiciel sur le téléphone capable d’envoyer des SMS et d’être piloté depuis l’extérieur (Raspberry/Domoticz).

Quelques recherches sur le Google Play nous amènent vers le logiciel SMS gateway, qui possède une interface qui écoute sur http pour envoyer les SMS. D’autres fonctions sympathiques existent dans cette appli (mail vers SMS, SMS vers mail…)

Attention : un autre article concernant les SMS est disponible ici avec une autre appli Android, cette appli permettra de faire plus de choses comme du pilotage de Domoticz par envoi de SMS , veuillez plutôt vous référer à ce lien https://easydomoticz.com/une-plateforme-sms-a-laide-dun-vieux-telephone-android-pour-domoticz-2/

L’appli SMS GATEWAY

Après installation depuis le Google Play , le lancement de l’appli donne cela:

sms_gateway_1

Utilisons le bouton settings pour effectuer la configuration.

sms_gateway_2.

Il nous faut cocher « Listen for Http send SMS command », le « Enable logging on SDCARD » est pas mal lors des tests.

Une fois que tout marchera bien il faut cocher le « Prevent CPU sleep mode » et le « Start Gateway…. » pour lancer tout cela automatiquement et décocher « Enable loggin on SDCARD ».

Puis utilisons le bouton « Http Settings » de ce même écran.

sms_gateway_3

On trouve ici le port Http sur lequel écoutera l’appli SMS Gateway et un mot de passe pour protéger l’envoi de requêtes SMS.

On voit plus bas la requête http qu’il faudra appeler vers cette appli pour lancer des SMS, elle est du type http://adresseipdutelephone:port/sendsms?phone=numero_de_telephone&text=message_du_sms&password=le_password_configuré_dans_l’appli

Remarquez sur la copie d’écran que sur mon téléphone l’adresse IP est de la forme fe80::50cc… .

Bien que cela ressemble à une adresse IPV6, je n’ai pas pu l’utiliser par la suite, j’ai donc utilisé l’adresse IPV4 fournie à ce téléphone par ma box, et j’ai également passé le téléphone en ip fixe pour éviter tout changement intempestif au cours du temps. (Passer un téléphone Android en ip fixe c.f. ici http://www.androidpit.fr/comment-configurer-adresse-ip-statique-android)

Il ne nous reste plus qu’a activer la passerelle SMS en appuyant sur « Start »

sms_gateway_4

Le dialogue avec la passerelle SMS.

On a vu qu’il suffit d’une simple requête http pour piloter l’appli. N’importe quel langage sachant faire http pourra donc utiliser cette appli.

J’ai crée un script python afin d’envoyer un SMS à plusieurs téléphones et d’avoir des messages passés en paramètres.

Exemple : si j’appelle ce script smsgateway.py et que depuis Domoticz dans un action on /action off j’appelle script:///home/pi/domoticz/scripts/smsgateway.py ALERTE, le SMS que je recevrai sera « ALERTE ».

Si on n’indique pas de message, il y a un message par défaut dans le script que vous pouvez changer (Message de Domoticz).

action_sms_gateway

On configure dans le script les numéros de téléphone entre ‘ et séparés par des , puis les ip, port et mot de passe de l’appli SMSGATEWAY.

N.B : Si vous n’avez pas mis de mot de passe dans SMSGATEWAY, laissez vide password_sms_gateway comme cela

password_sms_gateway=''
Ce script nécessite la présence de la bibliothèque requests : sudo pip install requests pour l’installer.

Si vous avez du python 3 installé sur votre machine, remplacez la première ligne par

#!/usr/bin/python3

sinon :

#!/usr/bin/python
# -*- coding: utf-8 -*-

# il faut le module requests
# sudo pip install requests

import requests
import os
import sys


#~~~~~~~~~~Numeros de telephone a contacter~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
phones=['06511121314','0612131415']

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#~~~~~~~~~~ Parametres SMS Gateway  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ip_sms_gateway='192.168.1.66'
port_sms_gateway='9090'
password_sms_gateway='toto'

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


if len(sys.argv)==1:
	message='message de Domoticz'
else:
	message = sys.argv[1]


def send_sms (tel,message,password):
    requetesms='http://'+ip_sms_gateway+':'+port_sms_gateway+'/sendsms'
    payload = {'phone':tel, 'text': message, 'password':password_sms_gateway}
    r = requests.get(requetesms, params=payload)
#    print (r.url)


for tel in phones:
    #print (tel)
    send_sms(tel,message,password)

Voila quelques semaines que je surveille congélateurs, températures extérieures, vitesse du vent  par ce moyen et cela fonctionne rapidement et sans anicroches.

Utilisation avec les notifications http de Domoticz.

Un utilisateur émérite du forum (Vil1driver) à attiré mon attention sur le fait que l’on peut gérer l’envoi par les notifications http internes à Domoticz. Merci à lui.

Voyons la mise en place de cela.

Tout d’abord dans la partie paramétrage des notifications nous allons faire appel  à notre script en lui passant comme paramètre #MESSAGE

Le champ « Url » contient donc script:///home/pi/domoticz/scripts/smsgateway.py « #MESSAGE »

(il y a bien 3 / après script:)

notification http Domoticz

notification http Domoticz

Puis ensuite depuis le dashboard principal Domoticz et dans chaque matériel, utilisons les Notifications comme suit :

En cliquant sur « Notification, on peut introduire une règle qui nous alerrtera.

On choisit l’état (On/Off) pour un interrupeteur pour lequel on veut être alerté ou la température audessus/audessous de laquelle on veut des SMS (bien entendu on peut mettre plusieurs condition par le bouton ajouter) , il y aura plusieurs SMS envoyés.

On laisse juste coché Notifications Http, on indique le message a recevoir dans le champ « Message personnalisé » et c’est gagné.

Ici un exemple d’alerte sur e basculement d’un switch.

notif_http2

Ici la gestion d’une alerte de température trop basse ou le message envoyé par SMS est temperature_basse

notif_http_temp

Avantages/Inconvénients.

Avantages : le recyclage d’un vieux matériel, le prix de la config, son évolutivité.

Inconvénient : il faut garder le téléphone allumé 24/24 et 7/7

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

La maison de demain, ou d’après demain

Pour une reprise en douceur , je vous fait partager une vidéo d’un vrai geek et la video des Tech Days Microsoft sur la maison connectée de Sébastien.

 

 

Son site http://sebastien.warin.fr/

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Les batteries en Z-Wave

La version de Domoticz v2152 généralise la récupération par Domoticz de l’état des batteries des périphériques Z-Wave.

Certains de nos équipements étant relativement inaccessibles,

Voyons comment récupérer le % de batteries restant et se faire avertir en dessous d’un seuil, histoire d’avoir le temps de changer les piles.

Ce pourcentage est visible depuis le menu de configuration des dispositifs.

Batt_levelC’est celui ci que nous récupérerons grâce à un script python qui alimente un widget « Pourcentage » auquel nous pourrons associer des notifications.

N.B les versions récentes de Domoticz (>2563 de Juin 2015) incluent nativement ce contrôle automatique, utilisez cet article pour en savoir plus.

 I – Domoticz

Commençons par créer un virtual sensor Pourcentage

Comme d’habitude dans « Matériel » et « Create virtual sensor » créons un capteur « Pourcentage »

virtual sensorPuis dans l’onglet des dispositifs, utiliser la flèche verte pour le nommer et le « pousser » dans l’onglet. Noter son Idx (38 ici)

idx_domoticz

Récupérons l ‘IDX du périphérique Z-wave pour lequel l’etat des batteries m’intéresse , ici 105.2014-12-11 13_11_55

2 – Prérequis

L’idée est d’interroger Domoticz pour récupérer l’information sur la batterie de ce composant z-wave.

On utilise l’API Json de Domoticz qui renvoie l’état d’un périphérique et comme depuis la version 2152 on a le % de batterie on peut traiter cela facilement.

L’url interrogée est celle ci : avec IDX qui est la valeur du périphérique Z-Wave

Donc si dans votre navigateur vous lancez un

http://ip:port/json.htm?type=devices&rid=IDX_ZWave_quivabien

Vous obtenez cela :

On voit que c’est le terme « BatteryLevel » qui contient le niveau des batteries et qu’il y a un guillemet,espace,deux point avant la valeur.

Bien,

3 – Le script de récupération

Le script python nécessite la bibliothèque requests  un sudo pip install requests fera l’affaire. Si le module pip n’est pas présent : sudo apt-get install python-pip

Dans le script on peut placer debug=1 pour voir ce que l’on reçoit de Domoticz.

On y définit :

  • l’adresse et le port Domoticz, l’Idx du Z-wave a interroger,
  • l’idx du virtual sensor, le terme a rechercher dans la chaine envoyée par Domoticz (BatteryLevel) attention aux majuscules/minuscules.
  • N.B ce script doit pouvoir extraire n’importe quoi de n’importe quelle url JSON Domoticz dans le bloc JSON ‘result’.
#!/usr/bin/python
# -*- coding: utf-8 -*-


# la 2eme version du script python pour les batteries
# utilise le dict JSON que renvoie Domoticz
# Domoticz renvoie 2 pavés de données ,1 pave concernant les géneralités (long/lat, status ...)
# on peut aller chercher ces données par un r[terme] si les données sont dans la partie haute (avant le result[
# 1 autre pavé qui content les datas spécifiques au capteur en question , ces valeurs sont dans la liste result
# on utilise alors r['result'][0][terme] pour aller chercher dans le dict de la liste result

# il faut le module requests
# sudo pip install requests

import time
import requests
from requests.auth import HTTPBasicAuth

############# Parametres #################################


#debug = 1 on affiche les chaines de caracteres recues
debug=1


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

domoticz_ip='192.168.1.81'
domoticz_port='8080'
user=''
password=''

# l'idx du peripherique ZWave a interroger pour batterie (cf Idx Domoticz)
periph_zwave_idx='105'


#terme a rechercher
terme='BatteryLevel'

# ici l'idx Domoticz du widget a alimenter avec la valeur lue
# un widget pourcentage est adatpté pour les capacité des batteries
idx_widget_pourcent='28'

# fin du parametrage #


###############  fin des parametres #############################
###############  ce qui suit est repute fonctionner ############

def maj_widget(valeur_batterie):
    requete='http://'+domoticz_ip+':'+domoticz_port+json_url_text1+idx_widget_pourcent+json_url_text2+valeur_batterie
    r=requests.get(requete,auth=HTTPBasicAuth(user,password))
# l URL Domoticz a interroger pour recuperer les infos est type=devices&rid=XXX

json_url1='/json.htm?type=devices&rid='
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_zwave_idx


# l URL Domoticz pour le widget virtuel
json_url_text1='/json.htm?type=command&param=udevice&idx='
json_url_text2='&nvalue=0&svalue='
#http://IP:PORT/json.htm?type=command&param=udevice&idx=mon_idx&nvalue=0svalue=POURCENTAGE

##### main ##

result={}
r=requests.get (requete).json()
valeur_batterie=str(r['result'][0][terme])

if debug==1:
    print r
    print valeur_batterie

maj_widget(valeur_batterie)

adaptez ce qui est nécessaire, puis un chmod +x sur le script pour le rendre exécutable.

Utilisez l’option debug=1 pour consulter les messages envoyés par Domoticz et ce que le script décode.

N.B : En  python 3 pensez à parenthèser les print en bas et à modifier la ligne

r=requests.get (requete).json()

en

r=requests.get (requete).json

 4 – Les notifications

Il suffit maintenant d’établir une notification sur ce composant pour être averti à bon escient.

Dupliquez et adaptez ce script pour chaque capteur dont vous voulez suivre la consommation.

5 – Déclenchement régulier

Utiliser crontab -e pour déclencher votre script une fois par jour.

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/