[Tuto] Suivi du temps de jeu de la PS4 dans domoticz
Publié : 26 avr. 2020, 22:58
Je cherchais à suivre le temps de jeu de mes enfants sur la PS4, et je suis tombé sur ce post :
https://www.domoticz.com/forum/viewtopic.php?t=29873
Pour commencer, il est nécessaire d'installer "PS4-waker" https://github.com/dhleong/ps4-waker
Pour cela, si vous avez Node 6, faire :Pour Node 7, faire :
Installer la librairie python PS4 "pyps4"
Il faut débloquer l'accès au port 987 de la playstation sur votre fournisseur d'accès.
Sur la freebox, allez sur les paramètres via mafreebox.freebox.fr puis "paramètres de la freebox > gestion des ports
là, cochez "activez la DMZ" et sélectionnez l'IP de votre playstation 4 dans "IP DMZ".
Après il faut associer le raspberry (via ps4-waker) avec la playstation 4. Pour ce faire, il est nécessaire d'avoir déjà associé un smartphone ou une tablette avec la playstation en double écran. Installer l'appli "PS App" sur votre smartphone. Sur la playstation, faire "menu > Paramètres de connection de l'application mobile > Ajouter un périphérique" puis, sur le smartphone, indiquer le code à 8 chiffres (sans espace) indiqué sur la playstation.
Redemandez à associer un périphérique sur la PS4 et noter le code à 8 chiffres proposé.
Une fois cela fait, sur l'appli "PS App", appuyer sur l'icône playstation et choisissez "double écran".
Sur le raspberry, taper
Attention à bien laisser les " et de ne pas mettre d'espace dans le code proposé par la PS4.
Là vous aurez un message disant de vous connecter sur PS App de votre smartphone. Sur l'écran de votre smartphone, vous devriez voir apparître "PS4-waker" dans "Second écran". Cliquez dessus pour vous y connecter.
Et voilà, le raspberry est à présent lié à la PS4.
Maintenant, revenons sur Domoticz :
Créer un interrupteur "PS4" de type sélecteur avec les positions "Off / Veille / Marche / Jeu" qui permettra de visualiser simplement l'état de fonctionnement de la playstation.
Pour les niveaux d'action 0 et 10, taper "script://stopps4.sh"
Pour les niveaux 20 et 30, taper "script://startps4.sh"
Créer un compteur "PS4 duree de jeu en cours" de type incrémental qui comptabiliser le temps de jeu en cours
Créer un compteur "PS4 duree de jeu journee" qui additionnera les temps de jeu sur la journée.
Modifier les deux compteurs en mettant "Custom" dans "Type", "Temps" dans "nom de l'axe" puis "min" dans "Unité"
Créer le script dZVents "PS4.lua" à stocker dans /home/pi/domoticz/scripts/dzVents/scripts :
Pensez à indiquer l'adresse IP de votre playstation (ici "192.168.1.999").
Ensuite, dans /home/pi/domoticz/scripts, créer 2 scripts shell :
"startps4.sh" avec
et "stopps4.sh" avec
Sur le raspberry, faire :
Et voilà ! vous avez maintenant un suivi du temps de jeu et vous pouvez voir l'état de fonctionnement de la PS4.
https://www.domoticz.com/forum/viewtopic.php?t=29873
Pour commencer, il est nécessaire d'installer "PS4-waker" https://github.com/dhleong/ps4-waker
Pour cela, si vous avez Node 6, faire :
Code : Tout sélectionner
sudo npm i ps4-waker -gCode : Tout sélectionner
npx ps4-wakerCode : Tout sélectionner
sudo pip install pyps4Sur la freebox, allez sur les paramètres via mafreebox.freebox.fr puis "paramètres de la freebox > gestion des ports
là, cochez "activez la DMZ" et sélectionnez l'IP de votre playstation 4 dans "IP DMZ".
Après il faut associer le raspberry (via ps4-waker) avec la playstation 4. Pour ce faire, il est nécessaire d'avoir déjà associé un smartphone ou une tablette avec la playstation en double écran. Installer l'appli "PS App" sur votre smartphone. Sur la playstation, faire "menu > Paramètres de connection de l'application mobile > Ajouter un périphérique" puis, sur le smartphone, indiquer le code à 8 chiffres (sans espace) indiqué sur la playstation.
Redemandez à associer un périphérique sur la PS4 et noter le code à 8 chiffres proposé.
Une fois cela fait, sur l'appli "PS App", appuyer sur l'icône playstation et choisissez "double écran".
Sur le raspberry, taper
Code : Tout sélectionner
sudo ps4-waker -c .ps4-wake.credentials.json --pin "code indiqué sur la PS4" -d "IP de la playstation"Là vous aurez un message disant de vous connecter sur PS App de votre smartphone. Sur l'écran de votre smartphone, vous devriez voir apparître "PS4-waker" dans "Second écran". Cliquez dessus pour vous y connecter.
Et voilà, le raspberry est à présent lié à la PS4.
Maintenant, revenons sur Domoticz :
Créer un interrupteur "PS4" de type sélecteur avec les positions "Off / Veille / Marche / Jeu" qui permettra de visualiser simplement l'état de fonctionnement de la playstation.
Pour les niveaux d'action 0 et 10, taper "script://stopps4.sh"
Pour les niveaux 20 et 30, taper "script://startps4.sh"
Créer un compteur "PS4 duree de jeu en cours" de type incrémental qui comptabiliser le temps de jeu en cours
Créer un compteur "PS4 duree de jeu journee" qui additionnera les temps de jeu sur la journée.
Modifier les deux compteurs en mettant "Custom" dans "Type", "Temps" dans "nom de l'axe" puis "min" dans "Unité"
Créer le script dZVents "PS4.lua" à stocker dans /home/pi/domoticz/scripts/dzVents/scripts :
Pensez à indiquer l'adresse IP de votre playstation (ici "192.168.1.999").
Code : Tout sélectionner
local TimerSetting = "every minute" local n=1
-- local TimerSetting = "every 10 minutes" local n=10
return {
on = {timer = {TimerSetting}},
logging = { level = domoticz.LOG_INFO
,marker = "PS4"},
execute = function(domoticz, trigger)
local PS4Switch = domoticz.devices("PS4") -- Pour voir l'état et changer l'état
local GameTime = domoticz.devices("PS4 duree de jeu en cours") -- Type compteur incremental
local GameTimeToday = domoticz.devices("PS4 duree de jeu journee") -- Type compteur
local PS4StatusOld = PS4Switch.state
local json = require "JSON"
local level = 0
local handle2 = assert(io.popen("ping -c 1 192.168.1.999 | grep -q 'Destination Host Unreachable' && echo 'Off Line'"))
local PS4status = handle2:read("*all")
handle2:close()
if string.sub(PS4status,1,8) == "Off Line" then
if PS4Switch.level ~= level then PS4Switch.switchSelector(0).silent() end
if GameTime.counter ~= 0 then GameTime.updateCounter(0) end
else -- Playstation should be reachable. Time to use ps4-waker
local handle = assert(io.popen("ps4-waker check"))
local PS4status = string.gsub(handle:read("*all"), "-", "") -- remove the "-"
handle:close()
jsonPS4status = json:decode(PS4status) -- Turn JSON into LUA table
if jsonPS4status.status == "Standby" then
print("Veille")
level = 10
if PS4Switch.level ~= level then PS4Switch.switchSelector(level).silent() end-- Set selector to Standby
if GameTime.counter ~= 0 then GameTime.updateCounter(0) end
elseif jsonPS4status.runningappname then
level = 30
if PS4Switch.level ~= level then PS4Switch.switchSelector(level).silent() end
GameTime.incrementCounter(n)
GameTimeToday.updateCounter(GameTime.counterToday)
local Game = jsonPS4status.runningappname
else -- jsonPS4status.status == "OK" then
level = 20
if PS4Switch.level ~= level then PS4Switch.switchSelector(level).silent() end
GameTime.incrementCounter(n)
GameTimeToday.updateCounter(GameTime.counterToday)
end
end
end
}
"startps4.sh" avec
Code : Tout sélectionner
#!/bin/sh
ps4-waker --skip-login &Code : Tout sélectionner
#!/bin/bash
ps4-waker standby &Code : Tout sélectionner
cd /home/pi/domoticz/scripts
sudo chmod +x startps4.sh
sudo chmod +x stopps4.sh