Fórum Root.cz
Hlavní témata => Server => Téma založeno: BigSandy 14. 12. 2017, 10:19:08
-
Zdravím Vás tu všechny.
https://github.com/rubberneck/php-serial
Jsem stah ten balik.
Web je na /var/www
Tam je můj PHP a nakopčíl jsem tam i ty 2 soubory (composer.json a php_serial.class.php)
Žandou chybu to nevyhazuje ale nefunguje to.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include php_serial.class.php;
$serial = new PhpSerial;
$serial->deviceSet("/dev/ttyAMA0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
$serial->sendMessage("hups");
$serial->deviceClose();
?>
Zkoušel jsem to přes python a lazarus a přes ně to chodí.
Kde muže byt problém?
-
$serial->deviceSet("/dev/ttyAMA0");
[...]
Zkoušel jsem to přes python a lazarus a přes ně to chodí.
Má uživatel, pod kterým běží PHP práva k /dev/ttyAMA0?
Když jste to zkoušel přes python a lazarus, bylo to pod stejným uživatelem, jako běží PHP?
-
http://www.raspi.cz/2013/02/propojujeme-raspberry-pi-arduino/
Naše sériové rozhraní má soubor umístěný v /dev/ttyACM0. Abychom s ním mohli komunikovat i bez práv roota, je nutné být ve skupině dialout.
pi@raspberrypi-test ~ $ sudo usermod -a -G dialout pi
sudo visudo
www-data ALL=(ALL:ALL) NOPASSWD: ALL
uživatel www-data teď bude mít stejná práva jako uživatel pi.
Piny jdou přes PHP normálně ovládat a i2c take takže asi ok.
-
Tak není to dobrý.
Jak přes python tak přes lazarus to musím spouštět přes sudo.
Jako pi to nejede.
Jak pi tak www-data jsou ve skupině dialout.
Kde pak je problem?
-
Tak není to dobrý.
Jak přes python tak přes lazarus to musím spouštět přes sudo.
Jako pi to nejede.
Jak pi tak www-data jsou ve skupině dialout.
Kde pak je problem?
Predpokladam, ze sudo vadi, ze nema k dispozici tty.
Pro spousteni pod userme zabbix pouzivam v sudoers tuto direktivu, ktera kontrolu tty disabluje:
Defaults:zabbix !requiretty
A predpokladam, ze sudo logu toto sudo primo pise.
Pak bych se este mrkl na selinux.
-
Dotaz.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include php_serial.class.php;
$serial = new PhpSerial;
$serial->deviceSet("/dev/ttyAMA0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
$serial->sendMessage("hups");
$serial->deviceClose();
?>Když to spustím přes terminal tak vyskočí chyba
PHP Parse error: syntax error, unexpected 'class' (T_CLASS) in /var/www/example.php on line 5
-
Proč se přidáváš do skupiny dialout, když jí ten soubor nepatří?
Proč šaškuješ s PHP, když ho ani trochu neumíš a máš jiné funkční řešení? Parametr pro include má být string.
-
include "php_serial.class.php";
PHP Fatal error: Uncaught Error: Class 'phpSerial' not found in /var/www/example.php:6
Stack trace:
#0 {main}
thrown in /var/www/example.php on line 6
Fatal error: Uncaught Error: Class 'phpSerial' not found in /var/www/example.php:6
Stack trace:
#0 {main}
thrown in /var/www/example.php on line 6
Line 6 $serial = new phpSerial;
-
include "php_serial.class.php";
PHP Fatal error: Uncaught Error: Class 'phpSerial' not found in /var/www/example.php:6
Stack trace:
#0 {main}
thrown in /var/www/example.php on line 6
Fatal error: Uncaught Error: Class 'phpSerial' not found in /var/www/example.php:6
Stack trace:
#0 {main}
thrown in /var/www/example.php on line 6
Line 6 $serial = new phpSerial;
Doporučuji nastudovat "namespace".
-
Asi bude rozumnější spouštět přes tu PHP stranku ten muj python skript.
Bude to sice prasarná ale asi jedine řešení.
Ja myslel že to bude jednoduché.
https://stackoverflow.com/questions/10373308/php-serial-communication-in-linux
http://www.ko4bb.com/getsimple/index.php?id=serial-port-access-from-php-with-raspberry-pi
-
Asi bude rozumnější spouštět přes tu PHP stranku ten muj python skript.
Bude to sice prasarná ale asi jedine řešení.
Ja myslel že to bude jednoduché.
...
require_once "php_serial.class.php";
use phpSerial;
$serial=new \phpSerial\phpSerial;
...
to mi přijde jednoduché dost :)
-
A je nejaky duvod ovladat seriovy port z PHP krome cireho masochismu?
Na web microservices je mnohem lepcejsi GO, naucit se da pres vikend.
Vysledek je lehka zkompilovana bimarka
-
A je nejaky duvod ovladat seriovy port z PHP krome cireho masochismu?
https://play.google.com/store/apps/details?id=com.idlegandalf.httprequestwidget&hl=cs
Ten widjet umí přes Get spustit php.
Už dlouho ho použivám pro ovladaní zařizení přes I2C sběrnicí a take pro ovladaní pinu na respi.
aní po upravě jak poradíl ByCzech to nejede :'(
-
Kdyby nahodou se tu našel někdo, kdo by věděl jak na to a byl by ochotný pomoct, byl bych tad.
Jinak stačí někam do skriptu při spouštění si natvrdo nastavít přenosovou rychlost.
sudo stty -F /dev/ttyAMA0 9600
A přes PHP odesilat jako systém přikazy
system ('echo test> /dev/ttyAMA0');
Odzkoušené a funkční. :P