Page 1 of 1
Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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:
Off:
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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?
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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:
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ä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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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?
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by aryan
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
Re: Custom command
Posted: Fri Mar 17, 2023 9:45 am
by Daniel
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