Installare 123solar su Arch Linux (simile a
PogoPlug) con USB / EZL70 / USR-TCP232-300 RS232 RS485 to Ethernet
Hardware necessario:
- un convertitore TCP/RS485 o USB/RS485
- collegamento ethernet tra macchina virtuale e convertitore
- un pc su cui far girare la macchian virtuale.
Software necessario:
Ho deciso di installare 123solar per monitorare il mio inverter Aurora
PowerOne pvi-6000-outd, e tra le varie possibilità ho scelto di usare una
macchina virtuale (VirtualBox) su cui installare ArchLinux.
Scelte hardware:
- La mia scelata per il convertitore è ricaduta su USR-TCP232-300 RS232 RS485 (
http://www.ebay.com/itm/281570690355, 34$ con
trasforamtore e cavi), per il basso prezzo, il fatto che fosse dentro un case, e
per la presenza del trasformatore. Arrivata in 18 giorni direttamente dalla
cina, e configurata e collegata in 20 minuti.
- Se nelle vicinanze dell'inverter non è possibile far arrivare un cavo
ethernet, una soluzione può essere usare un adattatore PowerLine per fare
passare il segnale sulla rete ellettrica. Io ho utilizzato Netgear
XAVB5221-100PES
http://www.amazon.it/gp/product/B00P7GSGV2?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00 24€
- Il pc da me utilizzato è un Pentium 4 2.4Ghz con 2Gb di ram, SO lubuntu 12.04
e virtual box headless installato. Si può usare direttamente un pc fisico,
oppure un raspberry o simile. Nel caso del raspberry saltare la parte di
configurazione del sistema operativo. La successiva parte dovrebbe essere
sostanzialmente identica.
Hardware:
- Configurazione del convertitore RS485/TCP(se utilizzato): Indipendentemente
dal modello, va impostato per funzionare i modalità tcp server, su un indirizzo
(nella maggior parte dei casi) del tipo 192.168.x.yyy, dove x dipende dalla rete
a cui appartiene il pc da cui effettuare i monitoraggi (spesso x=1), e yy si può
scegliere a caso tra gli indirizzi IP non utilizzati e non assegnati dal dhcp
(200 potrebbe andar bene). nella mia esperienza, l'unica velocità di
trasferimento funzionante è 19200 baud.
- Collegamenti: per collegare i cavi all'inverter (RS485) io ho aspettato il
tramonto, spento inverter e disconnesso l'inverter da rete, aperto il pannello
frontale e inserito i cavetti nell'apposita morsettiera a pressione. ho usato un
banale doppino di rame non twisted lungo circa 1.5m facendolo passare in un foro
praticato con il trapano in uno dei "tappi" di plastica. Per collegamenti più
lunghi meglio usare cavi schermati e twisted con 3 fili (schermatura collegata a
terra, e RTN convertitore collegato a RTN inverter ). Nel mio convertitore i due
morsetti si chiamavano A e B, collegati rispettivamente a T+ e T- dell'inverter,
e RTN esternamente non era presente (sulla scheda nel box c'è un morsetto)
Software:
Installazione sistema operativo: Ho seguito passo passo la guida
http://www.linuxveda.com/2015/04/20/arch-linux-tutorial-manual/
evitando di installare l'ambiente grafico, così a regime il sistema gira
occupando circa 30mb di memoria (più 100 di cache) e impostando un indirizzo ip
fisso (no dhcp). Potrebbe girare con 128mb di ram, io ne ho assegnati 256. 7GB
di disco +1GB di swap.
Alla fine ci si ritrova con un sistema operativo quasi identico a quello del
PogoPlug, spesso usato per fare questo genre di monitoraggi. Quindi è possibile
seguire una guida come questa
http://www.energeticambiente.it/tecnica-componentistica-e-installazione/14747948-pogoplug-e02-come-datalogger-107.html#post119478263
Riassunta qui di seguito:
- impostazioni preliminari
Loggarsi via SSH (precedentemente installato) sul server e digitare i
seguenti comandi
timedatectl set-timezone Europe/Rome
timedatectl set-time "2015-07-26 10:17:16" (usare ora giusta)
- Installazione pacchetti richiesti:
pacman -Sy rrdtool python python2 php php-cgi make gcc
base-devel lighttpd
pacman -Sy wget
- configurare php.ini
nano /etc/php/php.ini
togliere il ; davanti alle righe
extension=calendar.so
extension=shmop.so
per salvare e uscire
ctrl+o
ctrl+x
- scaricare aurora,compilarlo e metterlo nella cartella http (crearla se non
c'è)
cd /home
wget ;http://www.curtronics.com/Solar/ftp/aurora-1.8.8.tar.gz
tar -xzvf aurora-1.8.8.tar.gz
cd aurora-1.8.8
make
make install
cp aurora /srv/http
- scaricare 123solar e metterlo in /srv/http
cd /srv
wget http://123solar.org/downloads/123solar/123solar1.5.5.tar.gz
tar -xzvf 123solar1.5.5.tar.gz
cd 123solar
mv *.* /srv/http
mv * /srv/http
- scaricare e configurare il servizio 123solar
cd /etc/systemd/system
wget http://123solar.googlecode.com/files/123solar.service
systemctl enable 123solar
- configurare server web
nano /etc/lighttpd/lighttpd.conf
sostituire il contenuto con il seguente:
# test with lighttpd -t -f /etc/lighttpd/lighttpd.conf
### Load server modules
server.modules = (
"mod_alias",
"mod_access",
"mod_status",
"mod_proxy",
"mod_compress",
"mod_accesslog"
)
server.port = 80
server.username = "http"
server.groupname = "http"
server.document-root = "/srv/http"
server.errorlog = "/var/log/lighttpd/error.log"
dir-listing.activate = "enable"
status.status-url = "/status"
#tunning
server.max-connections = 128
server.max-keep-alive-idle = 5
server.max-keep-alive-requests = 16
server.max-read-idle = 60
server.max-write-idle = 360
## PHP
include "fastcgi.conf"
## Compressing
compress.cache-dir = "/tmp/lighttpd/"
compress.filetype = ("text/plain","text/css","text/xml","text/javascript")
index-file.names = ( "index.php","index.html" )
# mimetype mapping
mimetype.assign = (
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".pac" => "application/x-ns-proxy-autoconfig",
".dat" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tgz" => "application/x-tgz",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".asc" => "text/plain",
".c" => "text/plain",
".h" => "text/plain",
".cc" => "text/plain",
".cpp" => "text/plain",
".hh" => "text/plain",
".hpp" => "text/plain",
".conf" => "text/plain",
".log" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".diff" => "text/plain",
".patch" => "text/plain",
".ebuild" => "text/plain",
".eclass" => "text/plain",
".rtf" => "application/rtf",
".bmp" => "image/bmp",
".tif" => "image/tiff",
".tiff" => "image/tiff",
".ico" => "image/x-icon",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar",
".tar.gz" => "application/x-tgz",
".bz2" => "application/x-bzip",
".gz" => "application/x-gzip",
".tar" => "application/x-tar",
".zip" => "application/zip",
".jpeg" => "image/jpeg",
".jpg" => "image/jpeg",
".png" => "image/png",
".gif" => "image/gif",
".xhtml" => "text/html",
".html" => "text/html",
".htm" => "text/html",
".dtd" => "text/xml",
".xml" => "text/xml",
".css" => "text/css",
".js" => "text/javascript",
".deb" => "application/x-deb",
".php" => "application/x-httpd-php",
"" => "text/plain",
)
ctrl+o per salvare
ctrl+x per uscire
nano /etc/lighttpd/fastcgi.conf
incollare il seguente testo:
#####################################################################
server.modules += ( "mod_fastcgi" )
#index-file.names += ( "index.php" )
fastcgi.server = ( ".php" =>
( "php-local" =>
(
"socket" => "/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi",
"max-procs" => 2,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "64"
),
"bin-copy-environment" => ( "PATH", "SHELL", "USER" ),
"broken-scriptfilename" => "enable"
)
)
)
#######################################################################
- Abilitare ed eseguire il servizio
systemctl enable lighttpd
systemctl start lighttpd
e verificare che sia in esecuzione:
systemctl status lighttpd.service
- entrare nel sito web
digitare:
123solar admin
accedere a
http://192.168.x.yyyy/123solar/config/index.php
usare la password generata da "
123solar admin " per entrare nel sito
http://192.168.x.yyy/config/index.php
- mappare una finta seriale a
uno stream tcp usando socat (da fare SOLO se si usa un
convertitore RS485/TCP)
pacman -Sy socat
nano /srv/http/scripts/EZL.sh
incollare
#!/bin/bash
# avvio servizio socat su convertitori EZL, CSW, ecc
while true; do socat pty,link=/dev/ttyEZL0 tcp:192.168.x.yyy:zzz; done
exit
ctrl+o
ctrl+x
- impostare permessi esecuzione per lo script
cd /srv/http/scripts/
chmod +x EZL.sh
nano /etc/systemd/system/123solar.service
nella sezione
[service] inserire la riga:
ExecStart=/srv/http/scripts/EZL.sh
ctrl+o
ctrl+x
NB (192.168.x.yyy:zzz è l''indirizzo:porta del convertitore) il fatto di NON
avere un convertitore Ezl70 ma un usr-tcp232-300 o altro non comporta nessun
problema. L'importante è che sia impostato come TCP server, e velocità 19200
baud e con indirizzo sulla stessa rete del pc con il software di monitoraggio,
ad es 192.168.x.kkk.
NB
Se si usa il convertitore, nella pagina web di configurazione di 123solar si
dovrà usare come device /dev/ttyEZL0 invece di /dev/ttyUSB0
- Finite prove,verifiche, e configurazione via web di 123solar, attivare
l'avvio automatico del servizio:
systemctl enable 123solar.service
systemctl start 123solar.service
Note
- Messaggio di warning eseguendo "make" del codice aurora; make
produceva un warning, e l'eseguibile generato (aurora) non funzionava
correttamente, dando spesso errori di "Segmentation Fault". Se dovesse capitare,
la soluzione è la seguente:
editare il file comm.c estratto dal pacchetto aurora.1.x.y.z.tar.gz
1) cambiare la signature della funzione
static float
*szCvrtFloat(char *Buffer); in
static float szCvrtFloat(char *Buffer);
2) cambiare tutte le chiamate a
*szCvrtFloat(..) in
szCvrtFloat(..)
3) modificare la funzione
static float szCvrtFloat(char
*Buffer) come segue:
float szCvrtFloat(char *Buffer)
{
unsigned char cValue[4];
float *value;
if (! bSwapEndian) {
cValue[0] = Buffer[aParam4];
cValue[1] = Buffer[aParam3];
cValue[2] = Buffer[aParam2];
cValue[3] = Buffer[aParam1];
} else {
cValue[0] = Buffer[aParam1];
cValue[1] = Buffer[aParam2];
cValue[2] = Buffer[aParam3];
cValue[3] = Buffer[aParam4];
}
value = (float *)cValue;
if (bVerbose) fprintf(stderr, "szCvrtFloat %12.6f
0x%02x%02x%02x%02x\n",*value,cValue[3],cValue[2],cValue[1],cValue[0]);
float valF = *value;
return(valF);
}
4) salavare e ricompilare, e ricopiare aurora in http.(vedi passi
dettagliati nella guida qui sopra)
- configurando pvoutput, avevo dei porblemi nel salvataggio delle
impostazioni; questo ha risolto
sudo chmod 666
/srv/http/123solar/config/config_pvoutput.php
- per aggiungere la potrnza massima istantanea alla mail giornaliera di
report, modificare il file 123solar.php aggiungendo/modificando la zona dove
viene comparata la produzione corrente a quella di picco (linea circa 150)
$maxDate=date('H:i', $nowUTC);
$stringVal= $GP2[$invt_num] . '@'. $maxDate;
$maxFile=$DATADIR . '/max.txt';
file_put_contents($maxFile, $stringVal);
e la zona dove viene mandato il report giornaliero (linea circa 244)
$maxFile = $DATADIR . '/max.txt';
$maxVal = file_get_contents($maxFile);
$msg = "$date1\t$production kWh ($kwhkc kWh/kWp)\r\n Max
$maxVal \r\n";