Ciao ragazzi, ho la necessità di monitorare i consumi del garage (causa imminente arrivo dell'auto elettrica) e non potendo passare nuovi fili causa canaline piene, ho acquistato uno shelly em con le relative due pinze. Tuttora ho in uso 123 solar e metern che mi monitorano il fotovoltaico e i consumi in casa con contatore sdm120. Vorrei aggiungere quindi shelly em per monitorare i consumi del garage. Ho provato ad utilizzare lo script di Flane reqshelly.php, ma purtroppo metern mi restituisce errore nel test di lettura.
Premetto che ho già modificato all'interno del file "meters" con "emeters". Oltre a inserire il file reqshelly.php all'interno della cartella /var/www/comapps ,assegnati i relativi permessi e link simbolico in /usr/local/bin/ , aggiunto il nuovo id metern 6 come da foto seguente, vi è qualcos'altro da fare che mi sfugge?
Grazie
SHELLY EM
Re: SHELLY EM
Posta il contenuto dello script reqshelly che usi, e posta il risultato dei due comandi che hai messi in main ed in live eseguiti manualmente da terminale
Re: SHELLY EM
Grazie Flane
ho provato da terminale mi dava il seguente errore:
/usr/bin/php^M: interprete errato: File o directory non esistente
Ho risolto convertendo con notepad++ il file reqshelly.php in formato Unix
Grazie
ho provato da terminale mi dava il seguente errore:
/usr/bin/php^M: interprete errato: File o directory non esistente
Ho risolto convertendo con notepad++ il file reqshelly.php in formato Unix
Grazie
-
- Messaggi: 42
- Iscritto il: 10/11/2018, 1:10
Re: SHELLY EM
Ciao a tutti, una domanda per Flane:
Ho installato il tuo script reqshelly e funziona anche con ShellyPlug. Però ci sono dei problemi:
1) la misurazione dell'energia consumata indicata da shelly non è espressa in Wh ma in W/minuto, quindi penso andrebbe convertita. https://shelly-api-docs.shelly.cloud/#s ... ugs-status
2) Se va via la corrente (o se tolgo la presa dal muro) il misuratore di corrente consumata energy0 riparte da 0.... Non so se lo stesso problema si manifesta anche con shelly 2.5. Questo scombussola i csv dei consumi. Come si può risolvere?
Grazie per tutto il lavoro che fai/fate e per questo fantastico forum.....
Ho installato il tuo script reqshelly e funziona anche con ShellyPlug. Però ci sono dei problemi:
1) la misurazione dell'energia consumata indicata da shelly non è espressa in Wh ma in W/minuto, quindi penso andrebbe convertita. https://shelly-api-docs.shelly.cloud/#s ... ugs-status
2) Se va via la corrente (o se tolgo la presa dal muro) il misuratore di corrente consumata energy0 riparte da 0.... Non so se lo stesso problema si manifesta anche con shelly 2.5. Questo scombussola i csv dei consumi. Come si può risolvere?
Grazie per tutto il lavoro che fai/fate e per questo fantastico forum.....
-
- Messaggi: 42
- Iscritto il: 10/11/2018, 1:10
Re: SHELLY EM
Ciao a tutti, mi sono permesso di apportare delle modifiche a reqshelly. Ovviamente mi farebbe piacere un vostro parere in quanto NON SO PROGRAMMARE
Come scritto in precedenza reqshelly (almeno su shellyplug, ma penso anche con gli altri shelly) ha 2 problemi.
Il primo riguarda la rilevazione dei consumi che su shelly sono in W-minuto e non Wh, questo semplicemente si corregge dividendo per 60 il valore letto....
Il secondo è più problematico in quanto se va via la corrente a shelly il contatore parte da zero. Quindi ho modificato lo script prendendo spunto da poolerboiler che legge dal CSV l'ultima lettura rilevata e creando un file di appoggio con l'ultima lettura di shelly per effettuare dei confronti....
Le modifiche le ho inserite in un file "incluso" in reqshelly per mia comodità
Qui il file reqshelly da me modificato:
mentre il file shellymario.php contiene le istruzioni per "correggere" i problemi....
ho creato una cartella sotto metern per contenere i file di appoggio: /var/www/metern/data/shelly
Attendo un vs parere, intanto l'ho testato da qualche giorno e funziona correttamente.
Come scritto in precedenza reqshelly (almeno su shellyplug, ma penso anche con gli altri shelly) ha 2 problemi.
Il primo riguarda la rilevazione dei consumi che su shelly sono in W-minuto e non Wh, questo semplicemente si corregge dividendo per 60 il valore letto....
Il secondo è più problematico in quanto se va via la corrente a shelly il contatore parte da zero. Quindi ho modificato lo script prendendo spunto da poolerboiler che legge dal CSV l'ultima lettura rilevata e creando un file di appoggio con l'ultima lettura di shelly per effettuare dei confronti....
Le modifiche le ho inserite in un file "incluso" in reqshelly per mia comodità
Qui il file reqshelly da me modificato:
Codice: Seleziona tutto
#!/usr/bin/php
<?php
// This script will output a meterN compatible format for read Shelly 2.5 and Shelly 1PM device
//
// Script reqshelly.php v1.0 by Flanesi
//
// You'll need to setup correct permission chmod +x
// then ln -s /var/www/comapps/reqshelly.php /usr/local/bin/reqshelly
// Request command with 'reqshelly IP power0 IDmetern' or 'reqshelly IP energy0 IDmetern'
if (isset($_SERVER['REMOTE_ADDR'])) {
die('Direct access not permitted');
}
if (!isset($argv[1]) or !isset($argv[2]) or !isset($argv[3])) {
die("Abording: no valid argument given.\nUsage: reqshelly IP (power0|power1|energy0|energy1) IDmetern\n");
} elseif ($argv[2] == 'power0') {
$url = "http://"."$argv[1]"."/status";
$pagina = file_get_contents($url);
$json_output = json_decode($pagina, true);
$val = $json_output['meters'][0]['power'];
$outstr = "$argv[3]($val*W)";
} elseif ($argv[2] == 'power1') {
$url = "http://"."$argv[1]"."/status";
$pagina = file_get_contents($url);
$json_output = json_decode($pagina, true);
$val = $json_output['meters'][1]['power'];
$outstr = "$argv[3]($val*W)";
} elseif ($argv[2] == 'energy0') {
$url = "http://"."$argv[1]"."/status";
$pagina = file_get_contents($url);
$json_output = json_decode($pagina, true);
$val = $json_output['meters'][0]['total'];
include("/var/www/comapps/shellymario.php");
$outstr = "$argv[3]($val*W)";
} elseif ($argv[2] == 'energy1') {
$url = "http://"."$argv[1]"."/status";
$pagina = file_get_contents($url);
$json_output = json_decode($pagina, true);
$val = $json_output['meters'][1]['total'];
include("/var/www/comapps/shellymario.php");
$outstr = "$argv[3]($val*W)";
// and so on ....
} else {
die("Usage: reqshelly IP (power0|power1|energy0|energy1) IDmetern\n");
}
echo "$outstr";
?>
mentre il file shellymario.php contiene le istruzioni per "correggere" i problemi....
ho creato una cartella sotto metern per contenere i file di appoggio: /var/www/metern/data/shelly
Codice: Seleziona tutto
<?php
$pathtomn = '/var/www/metern';
$dirshelly = '/var/www/metern/data/shelly';
$metnum = $argv[3]; // Meter ID Consumi
$fileshelly="$dirshelly"."/shelly"."$metnum.txt";
define('checkaccess', TRUE);
include("$pathtomn/config/config_main.php");
include("$pathtomn/config/config_met$metnum.php");
$shelly_energy_prec = file_get_contents($fileshelly);
// acquisisce il valore precedente dal csv
$dir = '/var/www/metern/data/csv';
$output = array();
$output = glob($dir . '/*.csv');
sort($output);
$cnt = count($output);
if (file_exists($output[$cnt - 1])) {
$file = file($output[$cnt - 1]); // today
$contalines = count($file);
if ($contalines > 1) {
$prevarray = preg_split("/,/", $file[$contalines - 1]);
} elseif ($contalines == 1 && file_exists($output[$cnt - 2])) { // yesterday, only header
$file = file($output[$cnt - 2]);
$contalines = count($file);
$prevarray = preg_split("/,/", $file[$contalines - 1]);
}
$cons_val_first = trim($prevarray[$metnum]);
} else {
$cons_val_first = null;
}
$shelly_energy = round($val/60, ${'PRECI' . $metnum});
$shelly_energy_csv = $cons_val_first;
settype($lastval, 'float');
settype($prevcount, 'float');
settype($cons_val_first, 'float');
settype($shelly_energy, 'float');
settype($shelly_energy_csv, 'float');
settype($shelly_energy_prec, 'float');
if ($shelly_energy < $shelly_energy_prec) {
$val = $shelly_energy + $shelly_energy_csv;
file_put_contents("$dirshelly/shelly$metnum.txt", $shelly_energy);
} ELSE {
$val = $shelly_energy + $shelly_energy_csv - $shelly_energy_prec;
file_put_contents("$dirshelly/shelly$metnum.txt", $shelly_energy);
}
$val = round($val, ${'PRECI' . $metnum});
?>
Attendo un vs parere, intanto l'ho testato da qualche giorno e funziona correttamente.
Re: SHELLY EM
Ciao.
Ho utilizzato lo script reqshelly per leggere le temperature dell'addon di shelly 1 modificandolo così:
Dato i permessi:
chmod +x reqshelly.php
ln -s /var/www/comapps/reqshelly.php /usr/local/bin/reqshelly
Ho inserito i meter
Ora sul grafico vedo:
ma non si aggiorna il grafico.
Cosa manca?
Grazie.
Aggiornamento1:
Il grafico si aggiorna ma non riporta le letture delle Temp ma solo la differenza tra due letture consecutive.
Aggiornamento2:
Dopo un giorno ho dovuto eliminare i meter 7 e 8 perchè gli SDM di produzione e consumi hanno cominciato a leggere dati assurdi.
Non capisco come le letture via wifi dello Shelly importate in MeterN possano compromettere il bus degli SDM. Eliminati il 7 e 8, gli SDM hanno ricominciato a leggere perfettamente.
Ho utilizzato lo script reqshelly per leggere le temperature dell'addon di shelly 1 modificandolo così:
Codice: Seleziona tutto
#!/usr/bin/php
<?php
// This script will output a meterN compatible format for read Shelly 2.5 and S$
//
// Script reqshelly.php v1.0 by Flanesi
//
// You'll need to setup correct permission chmod +x
// then ln -s /var/www/comapps/reqshelly.php /usr/local/bin/reqshelly
// Request command with 'reqshelly IP power0 IDmetern' or 'reqshelly IP energy0$
if (isset($_SERVER['192.168.1.187'])) {
die('Direct access not permitted');
}
if (!isset($argv[1]) or !isset($argv[2]) or !isset($argv[3])) {
die("Abording: no valid argument given.\nUsage: reqshelly IP (T_ACS|T_PAV) I$
} elseif ($argv[2] == 'T_ACS') {
$url = "http://"."$argv[1]"."/status";
$pagina = file_get_contents($url);
$json_output = json_decode($pagina, true);
$val = $json_output['ext_temperature'][0]['tC'];
$outstr = "$argv[3]($val*°C)";
} elseif ($argv[2] == 'T_PAV') {
$url = "http://"."$argv[1]"."/status";
$pagina = file_get_contents($url);
$json_output = json_decode($pagina, true);
$val = $json_output['ext_temperature'][1]['tC'];
$outstr = "$argv[3]($val*°C)";
} else {
die("Usage: reqshelly IP (T_ACS|T_PAV) IDmetern\n");
}
echo "$outstr";
?>
Dato i permessi:
chmod +x reqshelly.php
ln -s /var/www/comapps/reqshelly.php /usr/local/bin/reqshelly
Ho inserito i meter
Ora sul grafico vedo:
ma non si aggiorna il grafico.
Cosa manca?
Grazie.
Aggiornamento1:
Il grafico si aggiorna ma non riporta le letture delle Temp ma solo la differenza tra due letture consecutive.
Aggiornamento2:
Dopo un giorno ho dovuto eliminare i meter 7 e 8 perchè gli SDM di produzione e consumi hanno cominciato a leggere dati assurdi.
Non capisco come le letture via wifi dello Shelly importate in MeterN possano compromettere il bus degli SDM. Eliminati il 7 e 8, gli SDM hanno ricominciato a leggere perfettamente.
Re: SHELLY EM
Ciao sto provando reqschelly, provando da riga di comando sa shell ssh , restituisce il seguente errore
-bash: /usr/local/bin/reqshelly: /usr/bin/php^M: bad interpreter: No such file or directory
ho verificato che il link sia apposto come i permessi
cosa devo verificare ?
-bash: /usr/local/bin/reqshelly: /usr/bin/php^M: bad interpreter: No such file or directory
ho verificato che il link sia apposto come i permessi
cosa devo verificare ?
Chi c’è in linea
Visitano il forum: Nessuno e 21 ospiti