Rilasciato MeterN ver. 0.8.4

Discussioni relative al software di monitoraggio energetico METERN
Avatar utente
Flane
Messaggi: 2463
Iscritto il: 16/01/2016, 15:02

Rilasciato MeterN ver. 0.8.4

Messaggioda Flane » 04/09/2017, 11:36

Jean Marc ha rilasciato una nuova versione di MeterN.
Come sempre un grandissimo lavoro fatto da Jean Marc. :D

Le novità sono:
- Remove daily report
- Config version with check, you'll need to save the configuration for each of your meters
- Complete rewrite of notification
- Added rpinotify notification
- Update is now fully automatic with backup and in one click !
- Bug start/stop daemon (beware to update com_daemon if you use it from comapps_examples)
- Bug bootmn
- Others clean up and bug fixes


In particolare potete notare l'integrazione del nuovo sistema di notifica tutto italiano RPINotify che utilizza Telegram per le notifiche.
Una proposta di integrazione che avevo lanciato a JM e che ha prontamente accettato.

Ho testato questa versione e devo evidenziare che per poterla utilizzare non basta eseguire solo l'aggiornamento semiautomatico previsto, ma risulta necessario intervenire manualmente anche su alcuni file.

1) bootmn.php

Causa un bug presente nell'aggiornamento, la variabile $pid presente nel file pool123s.php ora diventa $PID
E' quindi necessario modificare la variabile $pid in $PID anche nel file /var/www/metern/scripts/bootmn.php che quindi diventa:

Codice: Seleziona tutto

<?php
if ($_SERVER['SERVER_ADDR'] != '127.0.0.1' && $_SERVER['SERVER_ADDR'] != '::1') {
    die('Direct access not permitted');
}

define('checkaccess', TRUE);
include('../config/config_main.php');
date_default_timezone_set($DTZ);
$SCRDIR = dirname(__FILE__);
$PID    = null;
$now    = date($DATEFORMAT . ' H:i:s');

if (file_exists('metern.pid')) {
    exec('pkill -f metern.php> /dev/null 2>&1 &'); //make sure there is only one instance
    usleep(500000);
    unlink('metern.pid');
}

if ($DEBUG) {
    $command = 'php metern.php' . ' >> ../data/metern.err 2>&1 & echo $!; ';
    $PID     = exec($command);
    file_put_contents('metern.pid', $PID);
    $stringData = "$now\tStarting meterN on boot debug ($PID)\n\n";
    $myFile     = dirname($SCRDIR) . '/data/metern.err';
    file_put_contents($myFile, $stringData, FILE_APPEND);
} else {
    $command    = 'php metern.php' . ' > /dev/null 2>&1 & echo $!;';
    $PID        = exec($command);
    file_put_contents('metern.pid', $PID);
    $stringData = "$now\tStarting meterN on boot ($PID)\n\n";
}
include('../config/config_daemon.php');

$DATADIR = dirname($SCRDIR) . '/data';
$stringData .= file_get_contents($DATADIR . '/events.txt');
file_put_contents($DATADIR . '/events.txt', $stringData);
?>


2) pool123s.php
Per il bug indicato sopra è necessario utilizzare il nuovo pool123s.php.
Ho quindi provveduto a modificare ed integrare il file pool123s.php fornito da JM con quanto necessario per il corretto funzionamento con l'immagine Solajessie. Il file /var/www/comapps/pool123s.php diventa quindi:

Codice: Seleziona tutto

#!/usr/bin/php
<?php
if (isset($_SERVER['REMOTE_ADDR'])) {
    die('Direct access not permitted');
}
// This script will output a 123solar counter into a meterN compatible format
// Configure, then ln -s /var/www/comapps/pool123s.php /usr/bin/pool123s
// Request Main command with 'pool123s energy' and live command 'pool123s power'
// Mod:.............Flanesi
// Date:............10/09/2017

// 123solar config
$pathto123s = '/var/www/123solar';
$invtnum    = 1; //123solar inverter number

// meterN config
$pathtomn   = '/var/www/metern';
$METERID    = '1';
$INVTmetnum = 1; // meter number
$KWHTC      = 0; // Contatore iniziale in caso di azzeramento o sostituzione inverter (si somma al valore letto)

// No edit is needed below
if (isset($argv[1])) {
    define('checkaccess', TRUE);
    include("$pathto123s/config/config_main.php");
    include("$pathto123s/config/config_invt$invtnum.php");
    include("$pathto123s/config/memory.php");
    date_default_timezone_set($DTZ);
   
    $KWHT = null;
    if (file_exists($LIVEMEMORY)) {
        $data     = file_get_contents($LIVEMEMORY);
        $memarray = json_decode($data, true);
        $nowUTC   = strtotime(date("Ymd H:i:s"));
        if ($argv[1] == 'power') {
            if ($nowUTC - $memarray["SDTE$invtnum"] < 30) {
                $GP = $memarray["G1P$invtnum"] + $memarray["G2P$invtnum"] + $memarray["G3P$invtnum"];
                $GP = round($GP, 0);
            } else { // Too old
                $GP = 0;
            }
            echo "$METERID($GP*W)\n";
        } elseif ($argv[1] == 'energy') {
            if ($nowUTC - $memarray["SDTE$invtnum"] < 86400) {  // (valore standard 600 - modificato a 86400)
                $KWHT = round($memarray["KWHT$invtnum"] * 1000); // Wh
            } else {
                die("Abording: Too late value\n");
            }
         if (empty($KWHT) || $KWHT == 0) { // 123s ain't running at night retrieve the value in csv
            $dir    = $pathto123s . '/data/invt' . $invtnum . '/csv';
            $output = glob($dir . '/*.csv');
            sort($output);
            $xdays = count($output);
            if ($xdays > 0) {
               $lastlog    = $output[$xdays - 1];
               $lines      = file($lastlog);
               $contalines = count($lines);
               $array_last = preg_split('/,/', $lines[$contalines - 1]);
               $KWHT       = round(($array_last[27] * ${'CORRECTFACTOR' . $invtnum} * 1000), 0); //in Wh
            } else {
               $KWHT = null;
            }
         }            
         $KWHT += $KWHTC;
         if (!empty($KWHT)) {
            file_put_contents("/dev/shm/produzione$METERID.txt", "$METERID($KWHT*Wh)\n");
            echo "$METERID($KWHT*Wh)\n";
            }
        } else {
            die("Abording: no valid argument given\n");
        }
    } else { // 123s ain't running
        die("Abording: Empty SHM\n");
    }
} else {
    die("Usage: pool123s { power | energy }\n");
}
?>


3) config_daemon.php
In questa nuova versione è prevista una diversa sinstassi dei comandi in config_daemon.php, oltre al problema del bug della variabile $PID
Il file /var/www/metern/config/config_daemon.php diventa quindi:

Codice: Seleziona tutto

<?php
if(!defined('checkaccess')){die('Direct access not permitted');}
// Manage com. apps daemon as 'http' user if needed

if (is_null($PID)) { // Stop Daemon
   exec("pkill -f pooler485 > /dev/null 2>&1 &");
} else { //Start
   exec("pooler485 2 9600 /dev/ttyUSB0 > /dev/null 2>/dev/null &");
}
?>

Ovviamente dovrete modificare la riga di avvio del pooler485 in base all'indirizzo e numero dei vostri contatori da leggere, porta e velocità da utilizzare. :)

Provvedo al allegare anche i tre file da modificare.
Nel caso andiate a sostituirli invece che modificarle, fate attenzione che siano mantenuti permessi e proprietari dei file.
Allegati
modifiche_metern0.8.4.zip
(3.35 KiB) Scaricato 195 volte


lacchini
Messaggi: 19
Iscritto il: 14/12/2016, 14:48

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda lacchini » 04/09/2017, 12:05

sei possato ad houseenergy o sei ancora su eflow ?
io non ho ancora avuto il tempo di spostare l'sdm :(
mi riprometto di farlo a breve

Leo

Avatar utente
Flane
Messaggi: 2463
Iscritto il: 16/01/2016, 15:02

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda Flane » 04/09/2017, 13:01

No. Uso ancora eflow e non ho intenzione di cambiare per il momento.

Come vedi i problemi per aggiornare non erano di eflow, ma tutt'altro.

miki8989
Messaggi: 299
Iscritto il: 22/01/2016, 6:39

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda miki8989 » 05/09/2017, 13:19

Acccc e la fretta...
Ieri sera, ultrastanco, ho voluto aggiornare... Ma... Ho cancellato la cartella www del raspberry...
Fortunatamente avevo un backup...
Comunque funziona alla perfezione.... Grazie

ma in questa versione non si può eliminare il grafico a barre sui 15 giorni???

Inviato dal mio SM-N9005 utilizzando Tapatalk

Avatar utente
Flane
Messaggi: 2463
Iscritto il: 16/01/2016, 15:02

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda Flane » 14/09/2017, 18:18

:!: :!: ATTENZIONE :!: :!:

Oggi ho modificato l'allegato nel primo post per via di una correzione nel file pool123s.php in quanto in caso di ritardata accensione dell'inverter
pool123s non restituiva la lettura della produzione e questo creava dei picchi imprevisti con eflow.
Ora funziona regolarmente. :)

Nel primo post ho corretto sia il file pool123s.php riportato nel testo che nell'allegato. ;)

miki8989
Messaggi: 299
Iscritto il: 22/01/2016, 6:39

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda miki8989 » 15/09/2017, 10:37

grazie Flavio
ho fatto le modifiche e sembra funzionare ma... ho un dubbio...

da quando ho aggiornato, se riavvio il raspberry il successivo monitoraggio (energia immessa) inizia a contarla in negativo.
il problema sembra proprio nella lettura dell'energia prodotta (il riavvio lo faccio di notte)
debbo provare a riavviare di giorno (con produzione) per vedere se dà lo stesso errore..

grazie

Avatar utente
Flane
Messaggi: 2463
Iscritto il: 16/01/2016, 15:02

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda Flane » 15/09/2017, 11:53

La correzione fatta a pool123s è proprio per non lasciare "buchi" della produzione nel file csv che poi crea dei problemi con eflow.

Infatti mi sono accorto che c'è un bug nel protocollo Aurora di 123Solar e se riavvii di notte (senza produzione) il file 123_LIVEMEMORY da dove pool123s recupera il dato della produzione non contiene il contatore della prodotta (KWHT) fino anche non si riavvia 123Solar al mattino.
Oltre ad un'altro problemino che si aveva in caso di "5' Missing data" per avvio ritardato dell'inverter al mattino.

Il mio raspi si è riavviato senza problemi anche questa notte alle 00:07 :)

Controlla nei file csv se ci sono dei dati relativi al contatore della produzione mancanti.

miki8989
Messaggi: 299
Iscritto il: 22/01/2016, 6:39

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda miki8989 » 15/09/2017, 22:25

no flane....

purtroppo a mè se riavvio con 123solar in produione va tutto bene
se riavvio con 123solar fermo (no produzione) il valore dell'energia autoconsumata diventa negativa

ora provo a fare un riavvio a mezzanotte..
------------------------------------------------------
trovato qualcosa di strano....
il valore [Totalcounter1] => 27941344 in Memory (/dev/shm/mN_MEMORY.json)
è diverso da quello che trovo nel csv del giorno 22:10,28309366
sono andato indietro nei csv dei giorni ed ho trovato che un giorno (4 settembre) si è impazzito ed è passato da 27791160 a 28172940
ora ho lasciato il valore 27941344 nel csv ed aspetto un paio di giorni per vedere se si riallinea

---------------aggiornamento del 16/09

stamattina quando è ripartito il fotovoltaico il valore dell'energia prodotta in metern è passata
da - 27941344 a - 28309366

il [KWHT1] di 123 solar da 28309366
il [Totalcounter1] di metern da 28309366
il totale dell'energia prodotta di 123solar (informazioni - produzione totale) da 27941344
se interrogo l'inverte mi da 28309366
i csv di metern e 123solar sono allineati...

l'unica differenza che vedo è la produzione totale...

andando indietro con le dete dei csv (metern e 123solar) vedo che i valori della produzione si allineano da 4 settembre, prima i valori di metern sono di 368,022 kw meno...
forse inserendolo come valore meno qui $KWHTC = 0; // Contatore iniziale in caso di azzeramento

ma questo lo debbo fare a mezzanotte...

grazie

miki8989
Messaggi: 299
Iscritto il: 22/01/2016, 6:39

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda miki8989 » 30/09/2017, 12:28

questa è la deduzione di jeanmarc

csv metern have Production value ! 22:55,28114879
don't use use latest pool123s ? :roll: It must be empty and return "KWHT not defined"

ciao

s_p
Messaggi: 283
Iscritto il: 06/04/2017, 20:49

Re: Rilasciato MeterN ver. 0.8.4

Messaggioda s_p » 09/10/2017, 18:09

ragazzi, dopo la modifica, la lettura della produzione è zero

il test dei comandi restituisce

Codice: Seleziona tutto

pool123s energy

null is not valid, the correct format is 1(1234.5*Wh)


Torna a “MeterN”

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti