Procedura per l'installazione di 123Solar su Raspbian Stretch
La presente guida riguarda l'installazione e la configurazione di 123Solar su sistema operativo Raspbian Stretch con lettura diretta dei dati tramite bus RS485 da Inverter tipo ABB (PowerOne)
E' quindi necessario che abbiate installato sul vostro Raspberry il sistema operativo Raspbian Stretch come descritto nella apposita guida sul wiki
1.5. Installare Aurora 1.9.3
Nel caso vogliate utilizzare anche dei contatori Modbus, collegati sullo stesso bus dell'inverter ABB/Power-ONE, è necessario applicare al software Aurora una patch per gestire le code sul bus in modo compatibile con il software sdm120c. L'ultima versione rilasciata per tale patch è relativa alla versione 1.9.0 di Aurora. In tal caso sarà necessario installare questa precedente versione e non l'ultima release come indicato in questa GUIDA
Acquisire i diritti di amministratore
sudo -s
Portarsi sulla home
cd /home/pi
scaricare il programma Aurora 1.9.3 (verificare che sia l'ultima versione)
wget http://www.curtronics.com/Solar/ftp/aurora-1.9.3.tar.gz
Scompattiamo l'archivio
tar -xzvf aurora-1.9.3.tar.gz rm -v aurora-1.9.3.tar.gz
Installiamo portandoci sulla dir aurora- 1.9.3
cd aurora-1.9.3 make make install cd /..
1.6. Installazione e configurazione di 123Solar
1.6.1. Installazione di 123Solar
Portarsi sulla directory www del web server
sudo -s cd /var/www
Scaricare il programma 123solar 1.7.0 e il file per avviare il servizio (per entrambi verificare che sia l'ultima versione e modificare se necessario)
wget http://www.123solar.org/downloads/123solar/123solar1.7.0.tar.gz
Scompattiamo l'archivio
tar -xzvf 123solar*.tar.gz
eliminiamo il file tar
rm -v 123solar*.tar.gz
Assegniamo il corretto gruppo e proprietario:
chown -R www-data:www-data 123solar
installiamo il servizio per l'avvio automatico di 123solar
cd /etc/systemd/system wget http://www.123solar.org/downloads/123solar/123solar.service nano 123solar.service
file: 123solar.service
[Unit]
Description=123Solar
Requires=network.target
After=network.target apache2.service php-fpm.service
[Service]
Type=oneshot
ExecStart=/bin/sleep 10
ExecStart=/usr/bin/curl http://localhost/123solar/scripts/boot123s.php
[Install]
WantedBy=default.target
ctrl+O per salvare e ctrl+X per uscire
Abilitiamo il servizio
systemctl enable 123solar.service
abilitare la USB per l'user www-data
cd /.. usermod -a -G uucp www-data
verificare che sia stato impostato correttamente digitando “groups www-data” che deve restituire come minimo “www-data:www-data uucp”
Impostare i permessi per Aurora, per prima cosa verificare il percorso del programma:
find / -name aurora
restituisce il percorso in cui si trova aurora che dovrebbe essere /usr/local/bin/aurora se non lo fosse adeguare di conseguenza il percorso sul comando seguente
chmod a+x /usr/local/bin/aurora
1.6.2. Configurazione di 123Solar
Aprite un browser su un pc della stessa rete e digitate
verrà chiesto il login a cui risponderete con admin e password che potete scegliere a piacimento e si aprirà il menù di configurazione di 123solar.
A questo punto per risolvere un problema di autenticazione al secondo accesso abbandoniamo la procedura di configurazione cliccando sul pulsante “Back” e chiudere il browser.
Torniamo sul raspberry e proseguiamo come segue:
Impostazione dei permessi di accesso
Configuriamo ora le directory di 123solae e MetrN sul webserver
sudo -s cd /etc/apache2/sites-enabled cp -v 000-default.conf 000-default.bak nano 000-default.conf
Il file deve essere come il seguente (correggere dove serve)
Attenzione a digitare manualmente il testo da aggiungere. Per una diversa formattazione del testo con il wiki, le virgolette “ non vengono copiate correttamente.
file=000-default
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName 127.0.0.1
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/123solar/admin>
AllowOverride None
AuthType basic
AuthName “123solar Password Protected Area”
AuthBasicProvider file
AuthUserFile /var/www/123solar/config/.htpasswd
require valid-user
</Directory>
<Directory /var/www/metern/admin>
AllowOverride None
AuthType basic
AuthName “meterN Password Protected Area”
AuthBasicProvider file
AuthUserFile /var/www/metern/config/.htpasswd
require valid-user
</Directory>
# Available loglevels: trace8, …, trace1, debug, info, notic$
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For exa$
# following line enables the CGI configuration for this host o$
# after it has been globally disabled with “a2disconf”.
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
ctrl+O per salvare e ctrl+X per uscire
riavviamo apache
service apache2 restart
Riprendiamo la configurazione
Aprite un browser su un pc della stessa rete e digitate
si aprirà il menù di configurazione di 123solar.
Selezionare “Main configuration”
compilati i campi salvare”Save main cfg.” e quindi cliccare su “Back” per tornare al menu.
Selezionare ora “Configure your inverter(s)”
PS.: fra le opzioni notate una voce = Y3 e l3 modificatela in Y5 e l5 se avete problemi di instabilita ̀ del monitoraggio, altrimenti lasciatela pure i valori standard.
Compilati i campi salvare cliccando ”Save inverter cfg.” e quindi cliccare su “Back”tornare al menu.
Se si vuole inviare i dati si Pvoutput selezionare ora “Pvoutput configuration”
compilati i campi salvare”Save inverter cfg.” e quindi cliccare su “Back”tornare al menu
concluse le impostazioni cliccare sul pulsante evidenziato che che passa da “OFF” ad “ON” avviando 123solar.
Chiudere il browser
1.7. Procedure di supporto
Le procedure descritte nel presente paragrafo non sono strettamente necessarie al funzionamento del sistema ma risultano utili in particolari situazioni
1.7.1. Installazione servizio di invio mail da 123solar
(Procedura scritta con il supporto di “Borghese” che ringrazio)
Iniziamo con installare i programmi necessari:
sudo -s cd /.. apt-get update apt-get upgrade apt-get install msmtp msmtp-mta ca-certificates
editare il file di configurazione
cd /etc nano msmtprc
all'interno scrivere quanto segue, modificare la parte in blu:
file: msmtprc
# Impostazioni account
defaults
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account default
host smtp.gmail.com
port 587
auth on
user youraccount@gmail.com
password password
from youraccount@gmail.com
#logfile /var/log/msmtp.log
ctrl+O per salvare e ctrl+X per uscire
L'ultima riga serve a verificare eventuali errori di comunicazione, se l'invio di mail non funziona regolarmente togliete il “#” e inviate una mail sul file msmtp.log troverete i messaggi di sistema con gli eventuali errori.
Verificare e modificare i permessi e il proprietario di /etc/msmtprc devono essere esattamente settati a -rw——- 1 www-data root
sudo -s cd /etc ls -l msmtprc
Se serve modificarli, editarequanto segue:
chmod -v 0644 msmtprc chown -v www-data:root msmtprc ls -l msmtprc
verificare se ora è esattamente uguale a -rw——- 1 www-data root
Modificare ora i files php.ini
cd /etc/php5/apache2 nano php.ini
Cercare la riga sendmail_path option in php.ini e modificarla come segue:
file: php.ini
sendmail_path = ”/usr/bin/msmtp -C /etc/msmtprc -t“
ctrl+O per salvare e ctrl+X per uscire
se necessario togliere il “;” davanti alla riga e salvare
cd /etc/php5/cli nano php.ini
Cercare la riga sendmail_path option in php.ini e modificarla come segue:
file: php.ini
sendmail_path = ”/usr/bin/msmtp -C /etc/msmtprc -t“
ctrl+O per salvare e ctrl+X per uscire
se necessario togliere il “;” davanti alla riga e salvare
Attenzione si presume che il raspberry sia connesso al router via rete lan e non wi-fi
Riavviare il raspberry
shutdown -r now
impostare 123solar admin e testare la mail
FAQ
Come testare la mail da riga di comando:
Se volete testare la mail da riga di comando digitare quanto segue:
cd /.. echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" | msmtp --from=default -t username@gmail.com
(il secondo comando deve essere scritto tutto su una riga)
Dove verificare eventuali errori di trasmissione delle mail:
I file di log si trovano in “/var/log/” vedere il contenuto dei seguenti file:
mail.err – mail.info – mail.log – mail.warn – msmtp.log
La mail continua a non arrivare:
Gmail considera alcuni indirizzi come spam, verificate la cartella spam e se il messaggio è li apritelo e mettete l'indirizzo mail tra i vostri contatti, questo istruirà Gmail che non si tratta di spam.
1.7.2. Esecuzione di un backup giornaliero su uno spazio web ftp
Nelle guide precedenti veniva eseguito un backup giornaliero e memorizzato in sequenza sul server ftp, questo sistema spreca spazio sul server, è sufficente tenere il backup di qualche giorno. Ho pensato quindi fare un procedura che salvi x giorni e poi scarta il più vecchio con il principio “FIFO”
Installate, per prima cosa, il pacchetto lftp.
sudo -s cd /.. apt-get install lftp
Create una directory dove posizionare gli script personali e creare uno script nome “ftpbackup”
sudo -s cd /var/www mkdir MyScripts chmod -v 777 MyScripts cd MyScripts nano ftpbackup.sh
editare il seguente file:
ftpbackup.sh
#! /bin/sh ### BEGIN INIT INFO # Short-Description: backup giornaliero # Description: Questo file è usato per eseguire una copia giornaliera # dei dati del datalogger 123solar di x giorni con metodo fifo # # posizionare il file in /var/www/MyScripts # # Author: Walter Borin # ## END INIT INFO # Do NOT "set -e" TODAY=$(date +"%d-%b-%Y") # Today's date like DD-MMM-YYYY RMDATE=$(date +"%d-%b-%Y" -d '6 days ago') # TODAY minus X days ago - too old files FTPUSER=<UserId> # User (inserire il vostro UserId) FTPPW=<Password> # Password (inserire la password per l'ftp) FTPSERVER= <IPserver> # IP server ftp (indirizzo IP del server) LFTP=/usr/bin/lftp # Path to binary DATADIR=/var/www/123solar/data # Your data archives are here TMPDIR=/var/www/MyScripts # Your temp backup file are here FTPDIR=/<backupdir> # Your backup dir in ftp dir tar -cpzf backupsolar_$TODAY.tar.gz $DATADIR $LFTP <<EOF open $FTPUSER:$FTPPW@$FTPSERVER set ftp:ssl-allow no #Used for Altervista put -O $FTPDIR backupsolar_$TODAY.tar.gz wait cd $FTPDIR rm -rf backupsolar_$RMDATE.tar.gz wait close exit EOF cd $TMPDIR rm -rf backupsolar_$TODAY.tar.gz #echo "Backup del: $TODAY salvato in FTP" #
modificare la parte <UserId>, <Password> e <IPserver> con user, password e indirizzo IP del vostro sito ftp
ATTENZIONE: sul sito ftp dovete creare la directory <backupdir> sulla radice principale a vostro piacimento (es. “backupsolar”)
abilitare l'esecuzione dello script come programma
sudo -s cd /var/www/MyScripts chmod -v 755 ftpbackup.sh
a questo punto creiamo un crontab personalizzato per root e inseriamo l'esecuzione automatica all'ora desiderata
sudo -s cd /.. crontab -u root -e
e modificare come segue:
file: root
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# # For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
15 21 * * * /var/www/MyScripts/ftpbackup.sh
ctrl+O per salvare e ctrl+X per uscire