Fungerande script-exempel för På-Av och Tidur
Posted: Fri Mar 17, 2023 9:45 am
Med fungerande i ämnesraden menar jag att det fungerar för mig på min Raspberry Pi som kör Raspbian fullt uppdaterad 2014-11-20.
Har suttit o pillat med den här koden hela dagen, hoppas någon mer än jag har glädje av den.
Vågar inte lova att jag kan/kommer svara på eventuella frågor, jag är själv nybörjare....
Hoppas att andra som har lite mer kunskap än mig kan hjälpa till.
Jag är duktig på klippa-o-klistra !!!
Har suttit o pillat med den här koden hela dagen, hoppas någon mer än jag har glädje av den.
Vågar inte lova att jag kan/kommer svara på eventuella frågor, jag är själv nybörjare....
Hoppas att andra som har lite mer kunskap än mig kan hjälpa till.
Jag är duktig på klippa-o-klistra !!!
Code: Select all
#!/bin/bash
#
# Ett hopplock av andras script plus eget, för att få det att fungera som jag vill.
#
# telldusd måste vara >1.2.1
#
# Välj ett bra namn på scriptet och lägg det i /usr/local/share/telldus/scripts/deviceevent
# Finns inte katalogerna så är det bara att tillverka egna.
#
# För att tidurs-delen av scriptet ska fungera måste at-allow/at-deny innehålla/inte innehålla den användare som
# telldusd körs under (nobody som standard). Jag känner inte till säkerhetsriskerna med att tillåta "nobody" att köra
# at, men det är så jag har gjort (tagit bort "nobody" från at-deny).
# Om du sätter tiduret till 1 minut så är den aktiva tiden <1 minut - kan bli 5 sekunder!
# Så vill du ha, låt säga en lampa, tänd en minut, sätt tiduret på 2 minuter. at är inget noggrant program.
#
# Det nummer som ska anges för sändare resp. mottagare är det id-nummer dessa har i tellstick.conf.
#
# OBS! En del av koden som jag stulit/lånat innehåller <<!! och lite senare !! flytta inte
# de sista utropstecknen för att "snygga till koden", då slutar saker fungera! Vet inte varför, men efter att kliat mig
# i skallen ett bra tag och kollat på internet så hittade jag hur det skulle se ut.
#
# Kom ihåg att köra "sudo service telldusd restart" när det finns nya script i katalogen.
#
# Längst ner i scriptet finns ett försök att uppdatera statusen i HomeAutomation som inte verkar fungera för mig.
# Tips för att få det att fungera tas tacksamt emot!!
#
################ Ver. 0.1 2014-11-22
#
# Konfiguration ##########################
emitter=6 #${emitter} Sändare (Tryckknapp, Ir-sensor, Dörrkontakt eller dylikt)
reciver=3 #${reciver} Mottagare (Det som ska påverkas)
mode=2 #${mode} 1=På/Av 2=Tidur 3=Tidur som går att slå av manuellt
logg=1 #${logg} 1=Viss loggning i /tmp/tdlog.log 2=Ingen loggning
minuter=1 #${minuter} Antal minuter tills tiduret ska slå ifrån
# Kod #####################################
if [ "${DEVICEID}" -eq "${emitter}" ]; then
case ${logg} in
1)
echo "--------------------------------------" >> /tmp/tdlog.log
date +"%d %b %T" >> /tmp/tdlog.log
echo "Device: ${DEVICEID}" >> /tmp/tdlog.log
echo "Method: ${METHOD}" >> /tmp/tdlog.log
echo "Emitter: ${emitter}" >> /tmp/tdlog.log
echo "Mode: ${mode}" >> /tmp/tdlog.log
echo "Reciver: ${reciver}" >> /tmp/tdlog.log
echo "Minuter: ${minuter}" >> /tmp/tdlog.log
;;
2)
;;
esac
case ${METHOD} in
1)
status=1
onoff="on"
;;
2)
status=0
onoff="off"
;;
esac
case ${logg} in
1)
echo "Status: ${status}" >> /tmp/tdlog.log
echo "OnOff: ${onoff}" >> /tmp/tdlog.log
;;
2)
;;
esac
case ${mode} in
1)
tdtool --${onoff} ${reciver}
;;
2)
if [ "${METHOD}" -eq 1 ]; then
tdtool --on ${reciver}
at now + ${minuter} minutes << !! >> /dev/null 2>&1
tdtool --off ${reciver} >> /dev/null
!!
fi
;;
3)
if [ "${METHOD}" -eq 1 ]; then
tdtool --on ${reciver}
at now + ${minuter} minutes << !! >> /dev/null 2>&1
tdtool --off ${reciver} >> /dev/null
!!
else
tdtool --off ${reciver} >> /dev/null
fi
;;
esac
fi
#url1="http://<my_HA_url>/api.php?do=devices/updateStatus&status=${status}&systempluginname=tdtool&systemdeviceid=${emitter}"
#wget -qO- "${url1}" &> /dev/null
#url2="http://<my_HA_url>/api.php?do=devices/updateStatus&status=${status}&systempluginname=tdtool&systemdeviceid=${reciver}"
#wget -qO- "${url2}" &> /dev/null