Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
raspberry_trixie_come_datalogger [2026/06/21 00:01] – [Impostazione dei permessi di accesso] walterraspberry_trixie_come_datalogger [2026/06/21 00:46] (versione attuale) – [1.8.1 Impostazioni di "crontab"] walter
Linea 45: Linea 45:
  
 </code> </code>
- 
  
 ===== 1.6. Installazione e configurazione di 123Solar ===== ===== 1.6. Installazione e configurazione di 123Solar =====
Linea 136: Linea 135:
  
 </code> </code>
- 
  
 ==== 1.6.2. Configurazione di 123Solar ==== ==== 1.6.2. Configurazione di 123Solar ====
Linea 149: Linea 147:
  
 Torniamo sul raspberry e proseguiamo come segue: Torniamo sul raspberry e proseguiamo come segue:
- 
  
 ==== Impostazione dei permessi di accesso ==== ==== Impostazione dei permessi di accesso ====
  
 Configuriamo ora le directory di 123solae e MetrN sul webserver Configuriamo ora le directory di 123solae e MetrN sul webserver
- 
 <code> <code>
 +
 sudo -s sudo -s
 cd /etc/apache2/sites-enabled cd /etc/apache2/sites-enabled
Linea 218: Linea 215:
  
 </code> </code>
- 
  
 ==== Riprendiamo la configurazione ==== ==== Riprendiamo la configurazione ====
Linea 277: Linea 273:
 ==== 1.7.2. Impostare la velocità della porta USB ==== ==== 1.7.2. Impostare la velocità della porta USB ====
  
-Per far questo ci appoggiamo ad un servizio di sistema, “rc.local” che ad ogni avvio esegue il codice presente al suo interno, rispetto all'utilizzo di crontab, rc.local fa ripartire il monitoraggio a qualsiasi ora a seguito di un riavvio improvviso del sistema. (ricordarsi di attivare l' auto-pooling in 123solar admin) +Nelle versione moderne del SO non sarebbe più necessario impostare la velocità della seriale in quanto il sistema è ora in grado di auto adattarsi al device collegato.
-<code>+
  
-sudo -s+In alcuni casi con adattatori economici o poco gestiti potrebbe essere utile impostare manualmente questo parametro. 
 + 
 +In passato ci si appoggiava a rc.local che però nella distro Trixie è deprecato e non attivo (lo si potrebbe attivare ma meglio usare metodi alternativi) 
 + 
 +Per far questo ci appoggiamo crontab, veder ein seguito il capitolo dedicato. 
 + 
 +===== 1.8. Procedure di supporto ===== 
 + 
 +Le procedure descritte nel presente paragrafo non sono strettamente necessarie al funzionamento del sistema ma risultano utili in particolari situazioni 
 + 
 + 
 +==== 1.8.1 Impostazioni di "crontab" ==== 
 + 
 +crontab è 
 + <font inherit/inherit;;inherit;;#ffffff>lo strumento utilizzato per pianificare l'esecuzione automatica di script o comandi a intervalli specifici</font>  . 
 + 
 +Ogni u 
 + <font inherit/inherit;;inherit;;#ffffff>tente gestisce le pro</font>  prie pianificazioni privatamente, mentre l'amministratore (root) può configurare anche i job di sistema tramite ''/etc/crontab'' 
 + 
 +Dato che a noi interessa modificare o gestire job di sistema ci concentreremo sull'utente "root", per modificare il crontab di root esecuire i seguenti comandi: 
 + 
 +<code> 
 +sudo -e
 cd /.. cd /..
-cd etc +crontab -u root -e
-​nano rc.local+
  
 </code> </code>
  
-A questo punto modificare il contenuto del file in modo che sia come segue:+Si aprirà il file crontab in modifica con il contenuto già presente, noi dobbiamo aggiungere questi comandi:
  
-<box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: rc.local> \\ #!/bin/sh -e \\ # \\ # rc.local \\ # \\ # This script is executed at the end of each multiuser runlevel. \\ # Make sure that the script will "exit 0" on success or any other \\ # value on error. \\ # \\ # In order to enable or disable this script just change the execution \\ # bits. \\ # \\ # By default this script does nothing. \\ # Print the IP address \\ _IP=$(hostname -I) || true \\ if [ "$_IP" ]; then \\ printf "My IP address is %s\n" "$_IP" \\ fi \\ stty -F /dev/ttyUSB0 19200 <wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent># imposta la velocità della seriale a 19200</wrap></wrap></wrap></wrap></wrap></wrap></wrap></wrap></wrap></wrap></wrap></wrap> \\ exit 0 \\ </box | ctrl+O per salvare e ctrl+X per uscire>+<box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: crontab>\\ 
 +# 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
  
-Attenzione a non inserire spazi (barra spaziatrice) a fine riga o su righe vuote+# imposta un riavvio forzato alle 2:00 di notte\\ 
 +00 02 * * * sudo shutdoun -r now
  
-===== 1.8. Installazione di SMAspot =====+# imposta il backup dei dati su un server remoto alle 21:15 di ogni giorno\\ 
 +15 21 * * * /var/www/MyScripts/ftpbackup.sh
  
-<WRAP alert>Aattenzione questa procedura non è aggiornata da oltre un anno</WRAP>+# al reboot o riavvio del raspberry imposta la velocità della seriale\\ 
 +@reboot stty -F /dev/ttyUSB0 19200
  
-===== 1.9. Procedure di supporto =====+​</box | ctrl+O per salvare e ctrl+X per uscire>
  
-Le procedure descritte nel presente paragrafo non sono strettamente necessarie al funzionamento del sistema ma risultano utili in particolari situazioni 
  
-==== 1.9.1. Installazione servizio di invio mail da 123solar ====+==== 1.8.2. Installazione servizio di invio mail da 123solar ====
  
 (Procedura scritta con il supporto di “Borghese” che ringrazio) (Procedura scritta con il supporto di “Borghese” che ringrazio)
  
 Iniziamo con installare i programmi necessari: Iniziamo con installare i programmi necessari:
-<code> 
  
 +<code>
 sudo -s sudo -s
 cd /.. cd /..
Linea 328: Linea 368:
 <box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: msmtprc> <box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: msmtprc>
  
- \\ # Impostazioni account+\\ 
 +# Impostazioni account
  
-defaults \\ tls on \\ tls_starttls on \\ tls_trust_file /etc/ssl/certs/ca-certificates.crt+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 +account default\\ 
- <font inherit/inherit;;#0000FF;;inherit>youraccount@gmail.com</font>  \\+host smtp.gmail.com\\ 
 +port 587\\ 
 +auth on\\ 
 +user 
 + <font inherit/inherit;;#0000FF;;inherit>youraccount@gmail.com</font> \\
 password password
- <font inherit/inherit;;#0000FF;;inherit>password</font>  \\+ <font inherit/inherit;;#0000FF;;inherit>password</font> \\
 from from
- <font inherit/inherit;;#0000FF;;inherit>youraccount@gmail.com</font>  \\ + <font inherit/inherit;;#0000FF;;inherit>youraccount@gmail.com</font> \\ 
-#logfile /var/log/msmtp.log \\+#logfile /var/log/msmtp.log\\
 ​</box | ctrl+O per salvare e ctrl+X per uscire> ​</box | ctrl+O per salvare e ctrl+X per uscire>
  
Linea 432: Linea 480:
 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. 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.9.2. Installazione EZL70 su Raspberry ==== 
  
-<WRAP tip>Procedura scritta con il supporto di “Miki8989” che ringrazio</WRAP> +==== 1.8.3 Impostare un IP fisso sul raspberry ====
- +
-Per chi avesse la necessità di utilizzare la EZL70 o simili per leggere i dati dall'inverter al posto del convertitore RS485-USB descrivo di seguito la procedura di installazione: +
- +
-per prima cosa bisogna settare i parametri di configurazione della EZL, a questo scopo vi viene in aiuto la guida di **MizioB**  “EZL70”. +
-  * Connettere la EZL alla rete di casa +
-  * Aprite la pagina di configurazione del router e impostate, come fisso, l'IP su cui si è aggangiata la EZL +
-  * Sempre per l'IP assegnato alla EZL aprite la porta 1470 (la procedura per questa operazione dipende dal vs. router) troverete degli esempi da pag. 9 a pag.10 della guida “EZL70” +
-  * A questo punto dovete settare i parametri comiunicazione sulla EZL70, seguite la guida “EZL70” a pag. 6 e 7 +
-  * Terminata la configurazione passiamo a settare il Raspberry. +
- +
-installare socat +
-<code> +
- +
-sudo -s +
-cd /.. +
-apt-get install socat +
- +
-</code> +
- +
-preparare lo script di comunicazione +
- +
-<code> +
-cd /var/www +
-mkdir MyScripts (se avete già questa directory saltate la riga) +
-cd MyScripts +
-nano EZL.sh +
- +
-</code> +
- +
-si apre l'editor di testo, sul nuovo file inserire il seguente codice +
- +
-<box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: EZL.sh> +
- +
-#!/bin/bash \\ +
-# avvio servizio socat su convertitori EZL, CSW, ecc \\ +
-while true; do socat pty,link=/dev/ttyEZL0,raw,echo=0,waitslave tcp:192.168.x.x:1470; done & \\ +
-exit +
- +
-</box | ctrl+O per salvare e ctrl+X per uscire> +
- +
-sotituire 192.168.x.x con l'IP della EZL70 +
- +
-diamo ora i permessi necessari al file EZL.sh +
-<code> +
- +
-chmod +x EZL.sh +
- +
-</code> +
- +
-modifichiamo il file rc.local per avviare in automatico la comunicazione con la EZL70 +
- +
-<code> +
-sudo -s +
-cd /etc +
-nano rc.local +
- +
-</code> +
- +
-si apre il file rc-local e deve essere modificato in modo che sia come il seguente +
- +
-<box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: rc.local> +
- +
-#!/bin/sh -e \\ +
-# \\ +
-# rc.local \\ +
-# \\ +
-# This script is executed at the end of each multiuser runlevel. \\ +
-# Make sure that the script will "exit 0" on success or any other \\ +
-# value on error. \\ +
-# \\ +
-# In order to enable or disable this script just change the execution \\ +
-# bits. \\ +
-# \\ +
-# By default this script does nothing. +
- +
- \\ +
-# Print the IP address \\ +
-_IP=$(hostname -I) || true \\ +
-if [ "$_IP" ]; then \\ +
-printf "My IP address is %s\n" "$_IP" \\ +
-fi \\ +
-sudo /var/www/MyScripts/EZL.sh <wrap indent><wrap indent><wrap indent><wrap indent><wrap indent><wrap indent># avvia il device EZL</wrap></wrap></wrap></wrap></wrap></wrap> \\  \\ +
-exit 0 \\ +
-</box | ctrl+O per salvare e ctrl+X per uscire> +
- +
-riavviare il sistema +
-<code> +
- +
-shutdown -r now +
- +
-</code> +
- +
-al riavvio del sistema verifichiamo che il servizio funzioni +
- +
-<code> +
-sudo -s +
-cd /dev +
-ls +
- +
-</code> +
- +
-se tutto funziona dovrebbe apparire un device ttyEZL0 +
- +
-impostare la porta di comunicazione su 123solar +
- +
-Aprite un browser su un pc della stessa rete e digitate +
- +
-<WRAP centeralign><nowiki>http://192.168.x.xx/123solar/admin/</nowiki></WRAP> +
- +
-verrà chiesto il login a cui risponderete con admin e password (la stessa scelta in precedenza) e si aprirà il menù di configurazione di 123solar, selezionare “Configure your inverter(s)” . +
- +
-Sulla sezione protocol, come porta di comunicazione modificare da "/dev/ttyUSB0" a "/dev/ttyEZL0" +
- +
-==== 1.9.3 Impostare un IP fisso sul raspberry ====+
  
 Per chi non avesse la possibilità di far fare al router questo servizio o per altre necessità, per impostare un IP fisso si deve modificare il file “interfaces” Per chi non avesse la possibilità di far fare al router questo servizio o per altre necessità, per impostare un IP fisso si deve modificare il file “interfaces”
Linea 563: Linea 496:
 <box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: interfaces> <box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: interfaces>
  
-iface eth0 inet static \\ +iface eth0 inet static\\ 
-address 192.168.xx.xx <wrap indent>#(mettere i dati della propria rete)</wrap> \\ +address 192.168.xx.xx <wrap indent>#(mettere i dati della propria rete)</wrap>\\ 
-netmask 255.255.255.0 <wrap indent>#(mettere i dati della propria rete)</wrap> \\+netmask 255.255.255.0 <wrap indent>#(mettere i dati della propria rete)</wrap>\\
 gateway 192.168.xx.xx <wrap indent>#(mettere i dati della propria rete)</wrap> gateway 192.168.xx.xx <wrap indent>#(mettere i dati della propria rete)</wrap>
  
 </box | ctrl+O per salvare e ctrl+X per uscire> </box | ctrl+O per salvare e ctrl+X per uscire>
  
-==== 1.9.4. Clonazione della SD card ====+ 
 +==== 1.8.4. Clonazione della SD card ====
  
 Una cosa molto utile, una volta che il sistema è stabile, è fare una copia della SD per poi poterla ricaricare in caso di malfunzionamento o danneggiamento di quella in uso. Una cosa molto utile, una volta che il sistema è stabile, è fare una copia della SD per poi poterla ricaricare in caso di malfunzionamento o danneggiamento di quella in uso.
Linea 593: Linea 527:
 Continuare dal precedente punto 6. Continuare dal precedente punto 6.
  
-==== 1.9.4.1. Clonazione di sd con dimensioni diverse ====+ 
 +==== 1.8.4.1. Clonazione di sd con dimensioni diverse ====
  
 Maggiori informazioni al seguente [[:clonazione_sd|LINK]] Maggiori informazioni al seguente [[:clonazione_sd|LINK]]
  
-==== 1.9.5. Estrazione dei vecchi dati dal'inverter ====+ 
 +==== 1.8.5. Estrazione dei vecchi dati dal'inverter ====
  
 E' possibile interrogare l'inverter tramite una serie di comandi che potete trovare andando sul sito curtronix.com alla [[http://www.curtronics.com/Solar/screenshots/aurora-Help.html|pagina help in linea]] o interrogando la guida di Aurora con il seguente comando: E' possibile interrogare l'inverter tramite una serie di comandi che potete trovare andando sul sito curtronix.com alla [[http://www.curtronics.com/Solar/screenshots/aurora-Help.html|pagina help in linea]] o interrogando la guida di Aurora con il seguente comando:
Linea 633: Linea 569:
 <wrap indent><wrap indent>energyOld.txt <nowiki> ===></nowiki> energy2012.csv</wrap></wrap> <wrap indent><wrap indent>energyOld.txt <nowiki> ===></nowiki> energy2012.csv</wrap></wrap>
  
-20121008 1.118 kWh <nowiki>===></nowiki>20121008,11.18 \\+20121008 1.118 kWh <nowiki>===></nowiki>20121008,11.18\\
 20121007 0.992 kWh <nowiki>===></nowiki>20121007,9.92 20121007 0.992 kWh <nowiki>===></nowiki>20121007,9.92
  
 </box> </box>
  
-==== 1.9.6. Esecuzione di un backup giornaliero su uno spazio web ftp ====+ 
 +==== 1.8.6. 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” 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”
Linea 735: Linea 672:
 e modificare come segue: <box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: root> e modificare come segue: <box 100% round #ffff99 #d2d2d2 #d2d2d2 #ffff99 | file: root>
  
-SHELL=/bin/bash \\ +SHELL=/bin/bash\\ 
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \\  \\ +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\\ 
-# Edit this file to introduce tasks to be run by cron. \\ +\\ 
-# \\ +# 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 \\ +# Each task to run has to be defined through a single line\\ 
-# and what command to run for the task \\ +# 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), \\ +# To define the time you can provide concrete values for\\ 
-# and day of week (dow) or use '*' in these fields (for 'any'). \\ +# minute (m), hour (h), day of month (dom), month (mon),\\ 
-# Notice that tasks will be started based on the cron's system \\ +# and day of week (dow) or use '*' in these fields (for 'any').\\ 
-# daemon's notion of time and timezones. \\ +# 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). \\ +# 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: \\ +# For example, you can run a backup of all your user accounts\\ 
-# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ \\ +# at 5 a.m every week with:\\ 
-# # For more information see the manual pages of crontab(5) and cron(8) \\ +# 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 # m h dom mon dow command
  
-15 21 * * * /var/www/MyScripts/ftpbackup.sh \\+15 21 * * * /var/www/MyScripts/ftpbackup.sh\\
 </box | ctrl+O per salvare e ctrl+X per uscire> </box | ctrl+O per salvare e ctrl+X per uscire>
 +
  
 ====== 2. Connessioni interfaccia USB all'inverter ====== ====== 2. Connessioni interfaccia USB all'inverter ======
Linea 799: Linea 738:
 __//# Connessione del Raspberry alla rete//__  inizialmente avevo pensato di mettere il Raspberry e la seriale vicino al router, ma dopo aver constatato l'impossibilità di far passare uno spillo sui tubi dell'impianto elettrico ho desistito, ho lasciato tutto vicino all'inverter e ho fatto una connessione ethernet con una coppia di powerline via rete elettrica, facili da installare funzionano molto bene. __//# Connessione del Raspberry alla rete//__  inizialmente avevo pensato di mettere il Raspberry e la seriale vicino al router, ma dopo aver constatato l'impossibilità di far passare uno spillo sui tubi dell'impianto elettrico ho desistito, ho lasciato tutto vicino all'inverter e ho fatto una connessione ethernet con una coppia di powerline via rete elettrica, facili da installare funzionano molto bene.
  
-====== 4. Materiali ====== +====== 4. Licenza d'uso ======
- +
-{{page>rpy_datalogger_materiali}} +
- +
-====== 5. Licenza d'uso ======+
  
 <WRAP centeralign>Copyright © 2012 - 2016 by Walter62. All rights reserved </WRAP> <WRAP centeralign>Copyright © 2012 - 2016 by Walter62. All rights reserved </WRAP>