Wijzigingen op NSLU2

Via het voice respond systeem (Asterisk) kan er op afstand commando’s gegeven worden aan de NSLU2. De asterisk daemon draait onder user asterisk en group asterisk. Default zijn er geen rechten om een shell te starten. Dit moet aangepast worden in /etc/passwd, /bin/false moet vervangen worden door /bin/sh. Het ziet er dan als volgt uit:

asterisk:x :43:64003:Linux User,,,:/var/run/asterisk:/bin/sh

Het fs20 terminal programma om de fs20daemon te kunnen besturen, heb ik verbouwd zodat er via de command line ook commando’s gegeven kunnen worden. Het fs20 programma wordt aangeroepen vanuit het extensions.conf asterisk script met het Asterisk “System” comando. Het Asterisk “System” commando start intern een “sh -c ”. Deze shell heeft dan als user en group ook “asterisk”. Het fs20 kan default al geexecuteerd worden door other users, maar de communicatie tussen fs20 en fs20daemon is een named pipe. Deze 2 pipes (read en write) worden aangemaakt in fs20daemon, maar alleen beschrijfbaar voor user root. Dit kan opgelost worden door het umask te zetten, voordat fs20daemon wordt gestart:

umask 000
/usr/bin/fs20daemon &

Nu ligt het pad open om vanuit Asterisk commando’s te geven aan fs20. Overigens draait fs20daemon onder root rechten en kan allerlei root commando’s executeren.

Commando’s

Op dit moment is het mogelijk om:

  • De verwarming aan te schakelen (20 graden) (Menu 2-5)
  • De verwarming uit te schakelen (16 graden) (Menu 3-5)

Handig zou zijn om status en temperatuur vanuit buitenland uit te lezen, zoals:

  • De verwarming op laag te zetten (12 graden) voor tijdens wintervakantie
  • Huidige temperatuur woonkamer
  • Huidige temperatuur keuken
  • Huidige sturing status verwarming (aan/uit)
  • Minimale temperatuur afgelopen 24 uur
  • Maximale temperatuur afgelopen 24 uur
  • Aantal draaiuren gisteren
  • Aantal draaiuren vandaag
  • Aantal draaiuren afgelopen week
  • Aantal draaiuren afgelopen maand
  • Zend status mail

De exit code’s van het uitgevoerde linux commando met het Asterisk “TrySystem” commando, wordt afgevangen en er wordt melding gegeven als dit commando met succes is uitgevoerd. Zoniet, dan wordt een fout melding gegeven.