Aangezien analoge radio via Ziggo gaat verdwijnen en nog een Raspberry had liggen een internet radio gemaakt voor in de schuur.
Nu alles werkt moest ik nog iets verzinnen om de raspberry ook uit te zetten als deze niet gebruikt wordt.
Zonde om deze 24/7 aan te laten ook al is het in slaapmode zeer beperkt. Nadeel is ook dat het LCD scherm aanblijft.
Steeds stekker eruit is geen optie. Nu zijn er stroomonderbrekers maar de kosten daarvan zijn vrij hoog (15-20 euro) dus gaat ver.
Kortom Xiaomi ronde schakelaar icm powerplug werkt natuurlijk ook prima en heb dit inmiddels werkend.
Maar om de radio eerst netjes te stoppen en daarna de raspberry netjes af te sluiten moeten er wachttijden ingebouwd worden.
De schakelaar moet bij meerdere keren in drukken niet reageren maar pas na de ingestelde tijd weer een actie mogen uitvoeren. Anders gaat de rasp aan - uit - aan en dat is niet bevorderlijk voor het systeem en ook niet voor jezelf.
Onderstaande opstelling werkt zoals het moet.
Nadeel is dat ik nu steeds een melding krijg dat het LUA script langer dan 10 seconden draait, logische ivm SLEEP regels.
p.s 1tijd is een tijdelijk virtuele switch.Xiaomi ronde schakelaar moeten nog geleverd worden en wordt dus later veranderd.
p.p.s Ik gebruik een bash script die het bash script uitvoert als Pi user ipv root.
Mogelijk heeft iemand tips/trucs om dit alles eenvoudiger te maken waardoor alles in 1 script past en de LUA foutmelding mogelijk ook wordt afgevangen.
Opstelling zoals het nu werkt.
Een variabele aangemaakt in Domoticz met de naam:
switch_state_draadloze_schakelaar_radio_schuur
LUA script (helaas nog geen ervaring met dzvents)
script_device_Draadloze schakelaar_radio_schuur.lua
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| function sleep(n)
os.execute("sleep " .. tonumber(n))
end
commandArray = {}
if (devicechanged['1tijd'] == 'On' and otherdevices['Internet Radio'] == 'Off' and uservariables['switch_state_draadloze_schakelaar_radio_schuur'] == 'Off') then
print('<font color="blue">Internet Radio wordt aangezet!!</font>')
os.execute ("/home/pi/domoticz/scripts/bash/radio.sh start")
print('<font color="blue">30 seconden wachten!!</font>')
sleep (30)
commandArray['Variable:switch_state_draadloze_schakelaar_radio_schuur']= 'On'
print('<font color="blue">Internet Radio Schuur is Aan!!</font>')
end
if (devicechanged['1tijd'] == 'Off' and otherdevices['Internet Radio'] == 'On' and uservariables['switch_state_draadloze_schakelaar_radio_schuur'] == 'On') then
print('<font color="blue">Internet Radio wordt afgesloten!!</font>')
os.execute ("/home/pi/domoticz/scripts/bash/radio.sh stop")
print('<font color="blue">30 seconden wachten!!</font>')
sleep (30)
commandArray['Variable:switch_state_draadloze_schakelaar_radio_schuur']= 'Off'
commandArray['Internet Radio']='Off'
print('<font color="blue">Internet Radio Schuur is Uit!!</font>')
end
if (devicechanged['1tijd'] == 'On' and otherdevices['Internet Radio'] == 'On' and uservariables['switch_state_draadloze_schakelaar_radio_schuur'] == 'Off') then
print('<font color="blue">Internet Radio Schuur gaat niet Aan, te snel gedrukt!!</font>')
end
if (devicechanged['1tijd'] == 'Off' and otherdevices['Internet Radio'] == 'Off' and uservariables['switch_state_draadloze_schakelaar_radio_schuur'] == 'On') then
print('<font color="blue">Internet Radio Schuur gaat niet uit, te snel gedrukt!!</font>')
end
return commandArray |
BASH script:
radio.sh
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| #!/bin/sh
# make sure we're running as the user
RUN_AS="pi" # Enter username here
if [ "$USER" != "$RUN_AS" ]
then
echo ""
echo " This script must run as $RUN_AS, trying to change user..."
exec sudo -u $RUN_AS $0 $1
fi
echo $1
case $1 in
start)
echo "Internet Radio is aan!!"
curl 'http://192.168.0.20:8090/json.htm?type=command¶m=switchlight&idx=4743&switchcmd=On'
exit 0
;;
stop)
echo "Internet Radio wordt afgesloten en uitgezet"
ssh -t -t pi@192.168.0.23 sudo service radiod stop
sleep 10
ssh -t -t pi@192.168.0.23 sudo shutdown -h now
sleep 15
curl 'http://192.168.0.20:8090/json.htm?type=command¶m=switchlight&idx=4743&switchcmd=Off'
echo "Internet Radio is uit!!"
exit 0
;;
*)
exit 1
;;
esac |