Custom command

http://karpero.mine.nu/ha

Moderators: tom_rosenback, Daniel, Telldus

Post Reply
aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Eftersom det inte längre handlar om GPIO öppnar jag en egen tråd för detta.

Jag får inte device System: "custom command" att funka med ett enkelt python script test.py som jag la i rawcommands och ser ut så här:

Code: Select all

#!/usr/bin/python
import sys
file = open("/var/www/HomeAutomation/logs/anewfile.txt", "w")
file.write("hello world in the new file\n")
file.write(sys.argv[1] + "\n") # get everything after the script name
file.write("and another line\n")
file.close()
:

Under Raw commands har jag i
On:

Code: Select all

python rawcommands/test.py 5
Off:

Code: Select all

python rawcommands/test.py 10
om jag slår på och av enheten skapas/ändras tyvärr inte anewfile.txt

Fär att kolla om scriptet funkar och att webbservern / php kan anropa python scriptet gjorde jag ett litet test med en enkel test.php fil i HomeAutomation med följande innehåll:
CODE: SELECT ALL
<?php
$command = 'python rawcommands/test.py 55';
exec($command);
?>

När jag kör HomeAutomation/test.php i webblskapas genereras anewfile.txt i logs med korrekt innehåll:

Code: Select all

hello world in the new file
55
and another line
så jag vet nu säkert att python scriptet funkar och kan anropas av en phpsida men av någon anledning funkar det alltså inte med custom command i HA.

/Aryan

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

Skumt. customcommand-pluginet gör mer eller mindre exakt samma sak (dvs ett anrop till exec()). Kan du testa att slå på debugloggning och se vad som dyker upp i loggen?

/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Hej Daniel,

Tack för dit svar. Jaa skumt är det, jag ser att följande rad dyker upp i a apache2/error.log när jag ändrar nått i min Device som ska använda System custom command:

Code: Select all

PHP Warning:  fopen(./rawcommands/21_on.tdtool): failed to open stream: Permission denied in /var/www/HomeAutomation/system/functions.php on line 324, referer: http://aspodroid.korridor.se/HomeAutomation/?page=conf-devices&action=edit&device=21
Mitt raw command i device 21 är just nu
Off:
python /home/pi/www/HomeAutomation/rawcommands/test.py 300
On:
python /home/pi/www/HomeAutomation/rawcommands/test.py 301

Det förvånar mig att det står fopen(./rawcommands/21_on.tdtool), borde det inte vara fopen(./rawcommands/test.py)?

Filer, rättigheter och ägare i rawcommands

Code: Select all

ls -al www/HomeAutomation/rawcommands/
totalt 72
drwxr-xr-x  2 pi       pi 4096 jan 17 22:00 .
drwxr-xr-x 14 www-data pi 4096 jan 19 21:26 ..
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-1053-learn.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-1053-off.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-1053-on.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3067-learn.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3067-off.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3067-on.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3434-learn.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3434-off.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3434-on.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3635-learn.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3635-off.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-3635-on.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-701-learn.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-701-off.tdtool
-rwxr-xr-x  1 www-data pi   36 sep 25  2014 gao-701-on.tdtool
-rwxr-xr-x  1 www-data pi  310 jan 17 22:00 test.py


Testade nu med text.py direkt i HomeAutomation/ i stället för att se om varningen försvinner men det hjälper inte, får fortfarande samma fel i loggen:

Code: Select all

[Sun Jan 22 12:08:38.839213 2017] [:error] [pid 18249] [client 217.215.252.238:50065] PHP Warning:  fopen(./rawcommands/21_on.tdtool): failed to open stream: Permission denied in /var/www/HomeAutomation/system/functions.php on line 324, referer: http://aspodroid.korridor.se/HomeAutomation/?page=conf-devices&action=edit&device=21
/Aryan

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

Ja, jag tycker det verkar allmänt märkligt. Men alltså, om du slår på debuggen i själva HA (under inställningarna), får du inget vettigt i log-mappen under homeautomation då?

/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Ja om jag har på debuggen i själva HA (under inställningarna) och försöker att slå på device med rawcommand och sedan kollar i www/HomeAutomation/logs/debug_2017-01-24.txt ser jag iaf inget konstigt

Code: Select all

24.1.2017	23:18	aryan	127.0.0.1	Autoloading class: 'dbParamType'
24.1.2017	23:18	aryan	127.0.0.1	Autoloading class: 'Scenarios'
24.1.2017	23:18	aryan	127.0.0.1	Autoloading class: 'Sensors'
24.1.2017	23:18	aryan	127.0.0.1	Autoloading class: 'Schedules'
24.1.2017	23:18	aryan	127.0.0.1	Autoloading class: 'Events'
24.1.2017	23:20			Autoloading class: 'SystemPlugins'
24.1.2017	23:20			Autoloading class: 'dbParam'
24.1.2017	23:20			Autoloading class: 'dbParamType'
24.1.2017	23:20			Autoloading class: 'Sensors'
24.1.2017	23:20			Autoloading class: 'Schedules'
Jag kollade i databas tabellen devices och raden med mitt custom command ser ut så här:

Code: Select all

INSERT INTO `devices` (`id`, `systempluginname`, `systemdeviceid`, `description`, `active`, `type`, `rawdevice`, `rawlearncmd`, `rawoffcmd`, `rawoncmd`, `consumption`, `date_added`, `last_state`, `last_dimlevel`, `last_updated`, `sort`)
VALUES
	(21, 'customcommand', '-1', 'Pythontest', 1, 1, 1, '', 'python /home/pi/www/HomeAutomation/test.py 200', 'python /home/pi/www/HomeAutomation/test.py 201', 0, '2017-01-17 22:10:56', 0, NULL, '2017-01-24 23:29:57', 0);
Är det nått annat jag kan testa?

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

Det konstiga jag ser i debugloggen är att jag inte ser det jag borde se... Samtidigt som customcommand-pluginet kör kommandot så ska skriver det även dit en rad i debugloggen. Så med andra ord kommer det aldrig dit över huvud taget. Känns nästan som att vi skulle behöva skriva till loggen på fler ställen för att komma fram till var det går fel.

Vad jag funderar på är om inställningen med dina valda kommandon sparats som den ska. Vad ger följande sql-fråga för output?

Code: Select all

select * from systempluginsettings where pluginname = 'customcommand';
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Hej Daniel,

Tack för dit svar. Du verkar vara på rätt spår för

Code: Select all

select * from systempluginsettings where pluginname = 'customcommand';
hittar inget!

Mvh Aryan

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

Men om du går in på inställningarna för det systempluginet så är det värden ifyllt i rutorna där alltså? Får inte riktigt ihop det...

/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Tack för dit svar. Ja men jag ser att de finns i tabellen devices:

Code: Select all

SELECT * FROM devices WHERE `systempluginname` = 'customcommand';
hittar mina två test devices

Code: Select all

id	systempluginname	systemdeviceid	description	active	type	rawdevice	rawlearncmd	rawoffcmd	rawoncmd	consumption	date_added	last_state	last_dimlevel	last_updated	sort
20	customcommand	-1	GPIO BCM 18 PWM0	1	1	1		python /var/www/HomeAutomation/rawcommands/test.py %status%	python /var/www/HomeAutomation/rawcommands/test.py %status%	0	2017-01-14 23:44:21	1	1	2017-01-26 06:00:07	0
21	customcommand	-1	Pythontest	1	1	1		python /home/pi/www/HomeAutomation/test.py 300	python /home/pi/www/HomeAutomation/test.py 301	0	2017-01-17 22:10:56	0	NULL	2017-01-24 23:29:57	0
-1 för systemdeviceid ser avvikande ut.


Borde det även finnas en rad för customcommand i tabellen devicetypes? Det har jag inte heller:

Code: Select all

SELECT * FROM `devicetypes`;
ger:

Code: Select all

id	type	text	dateadded
1	light	lampa	2013-03-13 17:59:59
2	dimmer	dimmer	2013-03-13 17:59:59
3	sauna	bastu	2013-03-13 17:59:59
4	absdimmer	dimmer (abs)	2013-03-13 17:59:59
5	engineheater	motorv&auml;rmare	2013-03-13 17:59:59
6	bell	klocka	2015-12-13 20:42:14
7	dummy	dummy	2015-12-13 20:42:14id	type	text	dateadded
systempluginsettings har inte heller någon rad för pluginname customcommand däremot finns den med i systemplugins:

Code: Select all

id	pluginname	version	dateinstalled	lastupdated
4	customcommand	0.1	2017-01-14 23:24:42	NULL

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

Nej, men alltså, om du går in under konfiguration->systemplugin och så klickar på "Editera inställningar" på pluginet custom command så kommer du till inställningarna för det pluginet, där anger du vilka kommandon som ska köras. Har du angett någonting i de rutorna?

/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Om jag går in under konfiguration->systemplugin så finns inga "Editera inställningar” (Edit settings) för plugin "custom command" och “dummy”

Där ser tabellen ur så här:

Code: Select all

custom command	Daniel Malmgren	0.1 (14.1.2017)		Uninstall	XML
dummy	Tom Rosenback	0.0 (13.12.2015)		Uninstall	XML
Send mail	Daniel Malmgren	0.4 (13.12.2015)	Edit settings	Uninstall	XML
Telldus tdtool	Tom Rosenback	1.4.2 (23.1.2017)	Edit settings	Uninstall	XML
OWFS Relay Controller	Tom Rosenback	-	Install (1.0)	Remove	
Arduino HomeAutomation	Tom Rosenback	-	Install (1.0)	Remove	
Boxcar	Jesper Lindberg	-	Install (0.1)	Remove	
pushover.net	Daniel Malmgren	-	Install (0.1)	Remove	
OpenZWave	Daniel Malmgren	-	Install (0.1)	Remove	 

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Aha! Jag exporterade pluginet custom commands nu, avinstallerade det och installerade det fråm exporterade xml filen och nu dök det upp en “Edit settings” för custom command där jag kunde skriva in ett anrop som ser ut att fungera!

Men vad är då syftet med fältet “raw command” under device inställningen? Jag trodde att man kunde skriva ett on och ett off command per device? Annars går det bara anropa ett (python) skript för alla devices som använder custom command plug-in eller har jag missat nått?

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

aryan wrote:Men vad är då syftet med fältet “raw command” under device inställningen? Jag trodde att man kunde skriva ett on och ett off command per device? Annars går det bara anropa ett (python) skript för alla devices som använder custom command plug-in eller har jag missat nått?
Ja, sorry. Det är lite förvirrande det där. RAW-enheter är egentligen tänkta för någonting helt annat (för Tellstickenheter som man vill skicka råa kommandon till), det fältet har ingen funktion alls här. Tanken är att det där ska göras om helt, förhoppningsvis till nästa version. Men som du säger, nu kan man bara köra ett och samma (eller ett för av och ett för på) script för alla enheter. Man kan ju dock anropa ett script som t ex med hjälp av argumentet %deviceid% i sin tur anropar olika script beroende på vilket device det gäller. Meckigt men möjligt...

/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

aryan
Posts: 88
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by aryan » Thu Jan 18, 2018 11:08 am

Ok jag tror att jag nu förstår hur det funkar, jag skulle väll även kunna anropa en phpscript i stället för pythonscript med custom command.

En grej som jag såg att ikonen “lampan” i mina custom command devices inte tänds när man slår på devicen, det kanske är en bug?

/Aryan

Daniel
Posts: 315
Joined: Thu Jan 18, 2018 11:08 am

Re: Custom command

Post by Daniel » Thu Jan 18, 2018 11:08 am

aryan wrote:En grej som jag såg att ikonen “lampan” i mina custom command devices inte tänds när man slår på devicen, det kanske är en bug?
Hmmm, det kan det vara. Tror det är så att systempluginet måste ge feedback till HA om att enheten är på, har nog inte riktigt tänkt på den biten.

/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha

Post Reply