V1.1 wifi et reboot
This commit is contained in:
@@ -8,6 +8,8 @@ https://matdomotique.wordpress.com/2018/03/25/plugin-freebox-pour-domoticz/
|
|||||||
* Création d'un dispositif par partition de disque dur connecté à la Freebox (disques internes et externes)
|
* Création d'un dispositif par partition de disque dur connecté à la Freebox (disques internes et externes)
|
||||||
* Création de 3 dispositifs pour suivre les températures de la Freebox
|
* Création de 3 dispositifs pour suivre les températures de la Freebox
|
||||||
* Création d'un dispositif switch par adresse mac pour laquelle vérifier la présence ou non à proximité de la Freebox.
|
* Création d'un dispositif switch par adresse mac pour laquelle vérifier la présence ou non à proximité de la Freebox.
|
||||||
|
* Création d'un dispositif switch de suivi et modification de l'état du wifi (Actif/Inactif)
|
||||||
|
* Création d'un dispositif switch de reboot de la Freebox serveur
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -40,7 +42,7 @@ Laissez les valeur par defaut sur un réseau local, ou configurez votre adresse
|
|||||||
Ajoutez le Matériel et rendez vous dans les log.
|
Ajoutez le Matériel et rendez vous dans les log.
|
||||||
Lors de la première utilisation, laissez le token vide.
|
Lors de la première utilisation, laissez le token vide.
|
||||||
|
|
||||||
Au démarrage, si le token n'est pas défini, le plugin en demander un à la Freebox, il vous faut alors vous déplacer jusqu'à l'écran de la Freebox pourrépondre oui, puis revenir sur votre Domoticz pour copier coller le token qui s'affiche dans la fenetre de log, dans la partie Token de confirguration du plugin.
|
Au démarrage, si le token n'est pas défini, le plugin en demander un à la Freebox, il vous faut alors vous déplacer jusqu'à l'écran de la Freebox pour répondre oui, puis revenir sur votre Domoticz pour copier coller le token qui s'affiche dans la fenetre de log, dans la partie Token de configuration du plugin.
|
||||||
|
|
||||||
Desactivez le plugin, autoriser l'ajout de nouveau dispositif pendant 5 minutes, puis réacivez le plugin pour le faire redemarrer.
|
Desactivez le plugin, autoriser l'ajout de nouveau dispositif pendant 5 minutes, puis réacivez le plugin pour le faire redemarrer.
|
||||||
Les dispositifs vont se créer.
|
Les dispositifs vont se créer.
|
||||||
@@ -52,6 +54,8 @@ Vous pouvez supprimer ceux qui ne vous interresse pas et inclure ceux qui vous i
|
|||||||
| Système | Températures de la Freebox et du switch interne |
|
| Système | Températures de la Freebox et du switch interne |
|
||||||
| Disque | Pourcentage d'espace utilisé de chaque partition connectées à la Freebox au moment du démarrage du Plugin avec autorisation d'ajout de dispositifs |
|
| Disque | Pourcentage d'espace utilisé de chaque partition connectées à la Freebox au moment du démarrage du Plugin avec autorisation d'ajout de dispositifs |
|
||||||
| Présence | Pour chaque adresse mac renseignée, si elle est trouvée enregistrée sur la Freebox, un dispositif switch est créé, indiquant la presence (on) ou l'absence (off) du matériel à proximité de la box. Cela permet de tester la presence d'une personne au domicile en vérifiant la presence de sont smartphone par exemple. Cela fonctionne, même avec les Iphones |
|
| Présence | Pour chaque adresse mac renseignée, si elle est trouvée enregistrée sur la Freebox, un dispositif switch est créé, indiquant la presence (on) ou l'absence (off) du matériel à proximité de la box. Cela permet de tester la presence d'une personne au domicile en vérifiant la presence de sont smartphone par exemple. Cela fonctionne, même avec les Iphones |
|
||||||
|
| On/Off Wifi | Switch permettant de voir l'état du wifi (actif/Desactivé) et de le modifier |
|
||||||
|
| Reboot | Switch permettant de rebooter la Freebox |
|
||||||
|
|
||||||
Note : Un fichier ```devicemapping.json``` est créé pour garder l'association des infos de la Freebox avec le bon device créé au moment du démarrage du Plugin.
|
Note : Un fichier ```devicemapping.json``` est créé pour garder l'association des infos de la Freebox avec le bon device créé au moment du démarrage du Plugin.
|
||||||
|
|
||||||
|
|||||||
199
freebox.py
199
freebox.py
@@ -1,7 +1,8 @@
|
|||||||
#Code adapté de http://www.manatlan.com/blog/freeboxv6_api_v3_avec_python
|
#Code adapté de http://www.manatlan.com/blog/freeboxv6_api_v3_avec_python
|
||||||
|
|
||||||
import urllib.request,hmac,json,hashlib,time
|
import urllib.request,hmac,json,hashlib,time,Domoticz
|
||||||
from urllib.request import urlopen,Request
|
from urllib.request import urlopen,Request
|
||||||
|
from socket import timeout
|
||||||
|
|
||||||
class FbxCnx:
|
class FbxCnx:
|
||||||
def __init__(self,host="mafreebox.free.fr"):
|
def __init__(self,host="mafreebox.free.fr"):
|
||||||
@@ -37,7 +38,35 @@ class FbxCnx:
|
|||||||
request = Request(url,headers=headers)
|
request = Request(url,headers=headers)
|
||||||
else:
|
else:
|
||||||
request = Request(url)
|
request = Request(url)
|
||||||
res = urlopen(request).read()
|
res = urlopen(request,timeout=2).read()
|
||||||
|
return json.loads(res.decode())
|
||||||
|
|
||||||
|
def _put(self,method,data=None,headers=None):
|
||||||
|
url = self.host+"/api/v4/"+method
|
||||||
|
if data:
|
||||||
|
data = json.dumps(data) #On transforme en string le dict
|
||||||
|
data = data.encode() #On transforme en tableau de byte le string pour Request
|
||||||
|
if headers:
|
||||||
|
request = Request(url,data=data,headers=headers)
|
||||||
|
else:
|
||||||
|
request = Request(url, data=data)
|
||||||
|
request.get_method = lambda:"PUT"
|
||||||
|
else:
|
||||||
|
if headers:
|
||||||
|
request = Request(url,headers=headers)
|
||||||
|
else:
|
||||||
|
request = Request(url)
|
||||||
|
res = urlopen(request,timeout=2).read()
|
||||||
|
return json.loads(res.decode())
|
||||||
|
|
||||||
|
def _get(self,method,data=None,headers=None):
|
||||||
|
url = self.host+"/api/v4/"+method
|
||||||
|
if headers:
|
||||||
|
request = Request(url,headers=headers)
|
||||||
|
else:
|
||||||
|
request = Request(url)
|
||||||
|
request.get_method = lambda:"GET"
|
||||||
|
res = urlopen(request,timeout=2).read()
|
||||||
return json.loads(res.decode())
|
return json.loads(res.decode())
|
||||||
|
|
||||||
def _mksession(self):
|
def _mksession(self):
|
||||||
@@ -49,9 +78,10 @@ class FbxCnx:
|
|||||||
return self._com("login/session/",data)["result"]["session_token"]
|
return self._com("login/session/",data)["result"]["session_token"]
|
||||||
|
|
||||||
# def _disconnect(self):
|
# def _disconnect(self):
|
||||||
# result = self._com("/login/logout",None,{"X-Fbx-App-Auth": self.session})
|
# # result = self._com("/login/logout",None,{'Content-Type': 'application/json','X-Fbx-App-Auth': self.session})
|
||||||
# print (result)
|
# result = self._com("/login/logout")
|
||||||
# return
|
# print (result)
|
||||||
|
# # return
|
||||||
|
|
||||||
class FbxApp(FbxCnx):
|
class FbxApp(FbxCnx):
|
||||||
def __init__(self,appid,token,session=None,host="mafreebox.free.fr"):
|
def __init__(self,appid,token,session=None,host="mafreebox.free.fr"):
|
||||||
@@ -60,60 +90,147 @@ class FbxApp(FbxCnx):
|
|||||||
self.session=session if session else self._mksession()
|
self.session=session if session else self._mksession()
|
||||||
|
|
||||||
# def __del__(self):
|
# def __del__(self):
|
||||||
# self._disconnect()
|
# self._disconnect()
|
||||||
# print ('died')
|
# print ('died')
|
||||||
|
|
||||||
def com(self,method,data=None):
|
def com(self,method,data=None):
|
||||||
return self._com(method,data,{"X-Fbx-App-Auth": self.session})
|
return self._com(method,data,{"X-Fbx-App-Auth": self.session})
|
||||||
|
|
||||||
|
def put(self,method,data=None):
|
||||||
|
return self._put(method,data,{"X-Fbx-App-Auth": self.session})
|
||||||
|
|
||||||
|
def get(self,method,data=None):
|
||||||
|
return self._get(method,data,{"X-Fbx-App-Auth": self.session})
|
||||||
|
|
||||||
def diskinfo(self):
|
def diskinfo(self):
|
||||||
listDisk = self.com( "storage/disk/")
|
|
||||||
retour = {}
|
retour = {}
|
||||||
for disk in listDisk["result"]:
|
try:
|
||||||
for partition in disk["partitions"]:
|
listDisk = self.com( "storage/disk/")
|
||||||
label = partition["label"]
|
for disk in listDisk["result"]:
|
||||||
used =partition["used_bytes"]
|
for partition in disk["partitions"]:
|
||||||
total=partition["total_bytes"]
|
label = partition["label"]
|
||||||
percent = used/total*100
|
used =partition["used_bytes"]
|
||||||
# print(str(label)+"=>"+str(round(percent,2))+"%")
|
total=partition["total_bytes"]
|
||||||
retour.update({str(label):str(round(percent,2))})
|
percent = used/total*100
|
||||||
|
# print(str(label)+"=>"+str(round(percent,2))+"%")
|
||||||
|
retour.update({str(label):str(round(percent,2))})
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('La Freebox semble indisponible : '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
1 #on ne fait rien, on retourne une liste vide
|
||||||
return retour
|
return retour
|
||||||
|
|
||||||
def getNameByMacAdresse(self,p_macAdresse):
|
def getNameByMacAdresse(self,p_macAdresse):
|
||||||
listePeriph = self.com( "lan/browser/pub/")
|
try:
|
||||||
for periph in listePeriph["result"]:
|
listePeriph = self.com( "lan/browser/pub/")
|
||||||
macAdresse = periph["id"]
|
for periph in listePeriph["result"]:
|
||||||
if(("ether-"+p_macAdresse) == macAdresse):
|
macAdresse = periph["id"]
|
||||||
return periph["primary_name"]
|
if(("ether-"+p_macAdresse) == macAdresse):
|
||||||
|
return periph["primary_name"]
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('La Freebox semble indisponible : '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
return ""
|
||||||
|
|
||||||
def isPresenceByMacAdresse(self,p_macAdresse):
|
def isPresenceByMacAdresse(self,p_macAdresse):
|
||||||
listePeriph = self.com( "lan/browser/pub/")
|
try:
|
||||||
for periph in listePeriph["result"]:
|
listePeriph = self.com( "lan/browser/pub/")
|
||||||
macAdresse = periph["id"]
|
for periph in listePeriph["result"]:
|
||||||
if(("ether-"+p_macAdresse) == macAdresse):
|
macAdresse = periph["id"]
|
||||||
reachable = periph["reachable"]
|
if(("ether-"+p_macAdresse) == macAdresse):
|
||||||
active = periph["active"]
|
reachable = periph["reachable"]
|
||||||
if reachable and active:
|
active = periph["active"]
|
||||||
return True
|
if reachable and active:
|
||||||
|
return True
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('La Freebox semble indisponible : '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
1 #on ne fait rien, on retourne faux
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def lanPeripherique(self):
|
def lanPeripherique(self):
|
||||||
listePeriph = self.com( "lan/browser/pub/")
|
|
||||||
retour = {}
|
retour = {}
|
||||||
for periph in listePeriph["result"]:
|
try:
|
||||||
name = periph["primary_name"]
|
listePeriph = self.com( "lan/browser/pub/")
|
||||||
reachable = periph["reachable"]
|
for periph in listePeriph["result"]:
|
||||||
active = periph["active"]
|
name = periph["primary_name"]
|
||||||
macAdresse = periph["id"]
|
reachable = periph["reachable"]
|
||||||
if reachable and active:
|
active = periph["active"]
|
||||||
retour.update({macAdresse:name})
|
macAdresse = periph["id"]
|
||||||
|
if reachable and active:
|
||||||
|
retour.update({macAdresse:name})
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('La Freebox semble indisponible : '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
1 #on ne fait rien, on retourne une liste vide
|
||||||
return retour
|
return retour
|
||||||
|
|
||||||
def sysinfo(self):
|
def sysinfo(self):
|
||||||
sys = self.com( "system/")
|
|
||||||
retour = {}
|
retour = {}
|
||||||
retour.update({str('temp_cpub'):str(round(sys["result"]["temp_cpub"],2))})
|
try:
|
||||||
retour.update({str('temp_sw'):str(round(sys["result"]["temp_sw"],2))})
|
sys = self.com( "system/")
|
||||||
retour.update({str('temp_cpum'):str(round(sys["result"]["temp_cpum"],2))})
|
retour.update({str('temp_cpub'):str(round(sys["result"]["temp_cpub"],2))})
|
||||||
|
retour.update({str('temp_sw'):str(round(sys["result"]["temp_sw"],2))})
|
||||||
|
retour.update({str('temp_cpum'):str(round(sys["result"]["temp_cpum"],2))})
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('La Freebox semble indisponible : '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
1 #on ne fait rien, on retourne une liste vide
|
||||||
return retour
|
return retour
|
||||||
|
|
||||||
|
def isOnWIFI(self):
|
||||||
|
try:
|
||||||
|
v_result = self.get("wifi/config/")
|
||||||
|
if(v_result["result"]["enabled"]):
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('La Freebox semble indisponible : '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def setOnOFFWifi(self, p_isPutOn):
|
||||||
|
isOn = None
|
||||||
|
if p_isPutOn:
|
||||||
|
# data = {'ap_params': {'enabled': True}}
|
||||||
|
data = {'enabled': True}
|
||||||
|
else:
|
||||||
|
# data = {'ap_params': {'enabled': False}}
|
||||||
|
data = {'enabled': False}
|
||||||
|
try:
|
||||||
|
v_result = self.put( "wifi/config/",data)
|
||||||
|
isOn = False
|
||||||
|
if True == v_result['success']:
|
||||||
|
if v_result['result']['ap_params']['enabled']:
|
||||||
|
Domoticz.Log( "Wifi is now ON")
|
||||||
|
isOn = True
|
||||||
|
else:
|
||||||
|
Domoticz.Log("Wifi is now OFF")
|
||||||
|
except (urllib.error.HTTPError, urllib.error.URLError) as error:
|
||||||
|
Domoticz.Log('setOnOFFWifi Erreur '+ error.msg)
|
||||||
|
except timeout:
|
||||||
|
if not p_isPutOn:
|
||||||
|
# If we are connected using wifi, disabling wifi will close connection
|
||||||
|
# thus PUT response will never be received: a timeout is expected
|
||||||
|
Domoticz.Log("Wifi désactivé")
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
# Forward timeout exception as should not occur
|
||||||
|
raise timeout
|
||||||
|
# Response received
|
||||||
|
# ensure status_code is 200, else raise exception
|
||||||
|
# if requests.codes.ok != r.status_code:
|
||||||
|
# raise FbxOSException("Put error: %s" % r.text)
|
||||||
|
# rc is 200 but did we really succeed?
|
||||||
|
|
||||||
|
# else:
|
||||||
|
# raise FbxOSException("Challenge failure: %s" % resp)
|
||||||
|
# self._logout()
|
||||||
|
return isOn
|
||||||
|
|
||||||
|
def reboot(self):
|
||||||
|
v_result = self.com( "system/reboot")
|
||||||
|
if not v_result['success']:
|
||||||
|
Domoticz.Log("Erreur lors du Reboot")
|
||||||
|
Domoticz.Log("Freebox Server en cours de reboot.")
|
||||||
79
plugin.py
79
plugin.py
@@ -1,9 +1,10 @@
|
|||||||
# Freebox Python Plugin
|
# Freebox Python Plugin
|
||||||
#
|
#
|
||||||
# Author: https://matdomotique.wordpress.com/
|
# Author: https://matdomotique.wordpress.com/
|
||||||
|
# https://matdomotique.wordpress.com/2018/03/25/plugin-freebox-pour-domoticz/
|
||||||
#
|
#
|
||||||
"""
|
"""
|
||||||
<plugin key="Freebox" name="Freebox Python Plugin" author="supermat" version="1.0.0" wikilink="http://www.domoticz.com/wiki/plugins/plugin.html" externallink="https://matdomotique.wordpress.com/">
|
<plugin key="Freebox" name="Freebox Python Plugin" author="supermat" version="1.1.0" wikilink="http://www.domoticz.com/wiki/plugins/plugin.html" externallink="https://matdomotique.wordpress.com/2018/03/25/plugin-freebox-pour-domoticz">
|
||||||
<params>
|
<params>
|
||||||
<param field="Address" label="URL de la Box avec http devant" width="400px" required="true" default="http://mafreebox.free.fr"/>
|
<param field="Address" label="URL de la Box avec http devant" width="400px" required="true" default="http://mafreebox.free.fr"/>
|
||||||
<param field="Port" label="Port" width="100px" required="true" default="80"/>
|
<param field="Port" label="Port" width="100px" required="true" default="80"/>
|
||||||
@@ -18,7 +19,7 @@
|
|||||||
</params>
|
</params>
|
||||||
</plugin>
|
</plugin>
|
||||||
"""
|
"""
|
||||||
import Domoticz,freebox,json,os,datetime
|
import Domoticz,freebox,json,os,datetime,time
|
||||||
# from data import * #Pour le debug local sinon à mettre en commentaire
|
# from data import * #Pour le debug local sinon à mettre en commentaire
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
@@ -27,10 +28,8 @@ class FreeboxPlugin:
|
|||||||
deviceTypeDisk = 'DiskDevice'
|
deviceTypeDisk = 'DiskDevice'
|
||||||
deviceSystemInfo = 'SystemInfoDevice'
|
deviceSystemInfo = 'SystemInfoDevice'
|
||||||
devicePresence = 'PresenceDevice'
|
devicePresence = 'PresenceDevice'
|
||||||
|
deviceCommande = 'Commande'
|
||||||
_fileNameDeviceMapping = 'devicemapping.json'
|
_fileNameDeviceMapping = 'devicemapping.json'
|
||||||
# _deviceTypeDisk = 'DiskDevice'
|
|
||||||
# _deviceSystemInfo = 'SystemInfoDevice'
|
|
||||||
# _devicePresence = 'PresenceDevice'
|
|
||||||
enabled = False
|
enabled = False
|
||||||
token = ""
|
token = ""
|
||||||
freeboxURL = "http://mafreebox.free.fr"
|
freeboxURL = "http://mafreebox.free.fr"
|
||||||
@@ -148,17 +147,36 @@ class FreeboxPlugin:
|
|||||||
|
|
||||||
#Creation des device presence de la Freebox
|
#Creation des device presence de la Freebox
|
||||||
listeMacString = Parameters["Mode2"]
|
listeMacString = Parameters["Mode2"]
|
||||||
listeMac = listeMacString.split(";")
|
if(listeMacString != ""):
|
||||||
for macAdresse in listeMac:
|
listeMac = listeMacString.split(";")
|
||||||
name = f.getNameByMacAdresse(macAdresse)
|
for macAdresse in listeMac:
|
||||||
if (name != None):
|
name = f.getNameByMacAdresse(macAdresse)
|
||||||
keyunit = self.getOrCreateUnitIdForDevice(self.DeviceType.devicePresence,macAdresse)
|
if (name != None):
|
||||||
if (keyunit not in Devices):
|
keyunit = self.getOrCreateUnitIdForDevice(self.DeviceType.devicePresence,macAdresse)
|
||||||
v_dev = Domoticz.Device(Unit=keyunit, Name="Presence "+name, TypeName="Switch")
|
if (keyunit not in Devices):
|
||||||
v_dev.Create()
|
v_dev = Domoticz.Device(Unit=keyunit, Name="Presence "+name, TypeName="Switch")
|
||||||
Domoticz.Log("Création du dispositif "+"Presence "+name)
|
v_dev.Create()
|
||||||
else:
|
Domoticz.Log("Création du dispositif "+"Presence "+name)
|
||||||
Domoticz.Log("La mac adresse "+macAdresse+" est inconnu de la freebox, on ne crée aucun dispositif.")
|
else:
|
||||||
|
Domoticz.Log("La mac adresse "+macAdresse+" est inconnu de la freebox, on ne crée aucun dispositif.")
|
||||||
|
|
||||||
|
#Creation du device d'activation/désactivation du WIFI
|
||||||
|
v_etatWIFI = f.isOnWIFI()
|
||||||
|
Domoticz.Log("Etat WIFI : "+ str(v_etatWIFI))
|
||||||
|
keyunit = self.getOrCreateUnitIdForDevice(self.DeviceType.deviceCommande,"WIFI")
|
||||||
|
if (keyunit not in Devices):
|
||||||
|
v_dev = Domoticz.Device(Unit=keyunit, Name="WIFI On/Off", TypeName="Switch")
|
||||||
|
v_dev.Create()
|
||||||
|
Domoticz.Log("Création du dispositif "+"WIFI On/Off")
|
||||||
|
self.updateDeviceIfExist(self.DeviceType.deviceCommande,"WIFI",v_etatWIFI, str(v_etatWIFI))
|
||||||
|
#Creation du device de reboot du Freebox server
|
||||||
|
#f.reboot()
|
||||||
|
keyunit = self.getOrCreateUnitIdForDevice(self.DeviceType.deviceCommande,"REBOOT")
|
||||||
|
if (keyunit not in Devices):
|
||||||
|
v_dev = Domoticz.Device(Unit=keyunit, Name="Reboot Server", TypeName="Switch")
|
||||||
|
v_dev.Create()
|
||||||
|
Domoticz.Log("Création du dispositif "+"Reboot Server")
|
||||||
|
|
||||||
DumpConfigToLog()
|
DumpConfigToLog()
|
||||||
|
|
||||||
def onStop(self):
|
def onStop(self):
|
||||||
@@ -172,6 +190,28 @@ class FreeboxPlugin:
|
|||||||
|
|
||||||
def onCommand(self, Unit, Command, Level, Hue):
|
def onCommand(self, Unit, Command, Level, Hue):
|
||||||
Domoticz.Log("onCommand called for Unit " + str(Unit) + ": Parameter '" + str(Command) + "', Level: " + str(Level))
|
Domoticz.Log("onCommand called for Unit " + str(Unit) + ": Parameter '" + str(Command) + "', Level: " + str(Level))
|
||||||
|
# 2018-04-02 20:26:01.192 User: Admin initiated a switch command (17/Freebox - Presence iPhonedMatthieu/On)
|
||||||
|
# 2018-04-02 20:26:01.209 (Freebox) onCommand called for Unit 5: Parameter 'On', Level: 0
|
||||||
|
# 2018-04-02 20:27:50.550 User: Admin initiated a switch command (17/Freebox - Presence iPhonedMatthieu/Off)
|
||||||
|
# 2018-04-02 20:27:50.552 (Freebox) onCommand called for Unit 5: Parameter 'Off', Level: 0
|
||||||
|
# 2018-04-02 20:28:44.350 User: Admin initiated a switch command (18/Freebox - Presence iPhonedTiphaine/On)
|
||||||
|
# 2018-04-02 20:28:44.380 (Freebox) onCommand called for Unit 6: Parameter 'On', Level: 0
|
||||||
|
keyunit = self.getOrCreateUnitIdForDevice(self.DeviceType.deviceCommande,"WIFI")
|
||||||
|
if (keyunit == Unit):
|
||||||
|
f=freebox.FbxApp("idPluginDomoticz",self.token,host=self.freeboxURL)
|
||||||
|
if(str(Command) == "On"):
|
||||||
|
f.setOnOFFWifi(1)
|
||||||
|
else:
|
||||||
|
f.setOnOFFWifi(0)
|
||||||
|
time.sleep(1)
|
||||||
|
#On remet à jour l'état du wifi suite à la modification
|
||||||
|
v_etatWIFI = f.isOnWIFI()
|
||||||
|
self.updateDeviceIfExist(self.DeviceType.deviceCommande,"WIFI",v_etatWIFI, str(v_etatWIFI))
|
||||||
|
|
||||||
|
keyunit = self.getOrCreateUnitIdForDevice(self.DeviceType.deviceCommande,"REBOOT")
|
||||||
|
if (keyunit == Unit):
|
||||||
|
f=freebox.FbxApp("idPluginDomoticz",self.token,host=self.freeboxURL)
|
||||||
|
f.reboot()
|
||||||
|
|
||||||
def onNotification(self, Name, Subject, Text, Status, Priority, Sound, ImageFile):
|
def onNotification(self, Name, Subject, Text, Status, Priority, Sound, ImageFile):
|
||||||
Domoticz.Log("Notification: " + Name + "," + Subject + "," + Text + "," + Status + "," + str(Priority) + "," + Sound + "," + ImageFile)
|
Domoticz.Log("Notification: " + Name + "," + Subject + "," + Text + "," + Status + "," + str(Priority) + "," + Sound + "," + ImageFile)
|
||||||
@@ -211,11 +251,18 @@ class FreeboxPlugin:
|
|||||||
for periph in lanPeriph:
|
for periph in lanPeriph:
|
||||||
Domoticz.Debug(lanPeriph[periph]+" ("+periph+") présent")
|
Domoticz.Debug(lanPeriph[periph]+" ("+periph+") présent")
|
||||||
|
|
||||||
|
v_etatWIFI = f.isOnWIFI()
|
||||||
|
self.updateDeviceIfExist(self.DeviceType.deviceCommande,"WIFI",v_etatWIFI, str(v_etatWIFI))
|
||||||
|
|
||||||
global _plugin
|
global _plugin
|
||||||
_plugin = FreeboxPlugin()
|
_plugin = FreeboxPlugin()
|
||||||
|
|
||||||
def onStart():
|
def onStart():
|
||||||
global _plugin
|
global _plugin
|
||||||
|
# on fait une pause de 10 secondes au démarrage pour attendre la Freebox si besoin
|
||||||
|
# correction apporté par Gells qui avait des erreur au démarrage
|
||||||
|
#https://easydomoticz.com/forum/viewtopic.php?f=10&t=6222&p=55468#p55442
|
||||||
|
time.sleep(5)
|
||||||
_plugin.onStart()
|
_plugin.onStart()
|
||||||
|
|
||||||
def onStop():
|
def onStop():
|
||||||
|
|||||||
Reference in New Issue
Block a user