Ciao,
ho provato a metter mano al file da te indicato
Codice: Seleziona tutto
<?php
/**
* /srv/http/123solar/scripts/protocols/sdm120c.php
*
* @package default
*/
if (!defined('checkaccess')) {
die('Direct access not permitted');
}
// sdm120c is a command line program for reading the parameters out of EASTRON SDM120C ModBus Smart meter.
// http://github.com/gianfrdp/SDM120C
// Ask sdm120c:
// - Voltage (-v)
// - Power (-p)
// - Current (-c)
// - Frequency (-f)
// - Imported energy (-i)
$CMD_RETURN = '';
//$CMD_POOLING = "sdm120c -a ${'ADR'.$invt_num} ${'COMOPTION'.$invt_num} -vpcfi -q ${'PORT'.$invt_num}";
$CMD_POOLING = "/home/pi/./monitor";
if ($DEBUG) {
$CMD_RETURN = exec("$CMD_POOLING 2>&1");
} else {
$CMD_RETURN = exec($CMD_POOLING);
}
$dataarray = array();
//$dataarray = preg_split('/[[:space:]]+/', $CMD_RETURN);
$dataarray = preg_split('/[[:space:]]+/', /home/pi/metern2.txt);
if (isset($dataarray[5])) {
$G1V = (float) $dataarray[0];
$G1A = (float) $dataarray[1];
$G1P = (float) $dataarray[2];
$FRQ = (float) $dataarray[3];
$EFF = (float) 0.0;
$INVT = null;
$BOOT = null;
$KWHT = (float) $dataarray[4];
$KWHT = $KWHT / 1000;
$RET = 'OK';
} else {
$RET = 'NOK';
}
?>
nello specifico ho modificato le due seguenti variabili poiché:
- monitor è eseguibile ed è situato nella mia home
- il file output di monitor si chiama metern2.txt e anche lui si trova nella home
- ho eliminato le variabili da $CMD_POOLING poichè il programma monitor fa riferimento ad un suo file config (correttamente funzionante)
Codice: Seleziona tutto
$CMD_POOLING = "/home/pi/./monitor";
$dataarray = preg_split('/[[:space:]]+/', /home/pi/metern2.txt);
Nelle impostazioni di 123Solar come protocollo seleziono quindi sdm120c ma nel momento di "test comunicazione" mi restituisce ancora errore.
Codice: Seleziona tutto
sdm120c -a 1 -vpcfi -q /dev/ttyUSB0 return :
error : /
Nell'allegato ci sono le mie impostazioni
