Aggiunta contatore per consumi parziali

Discussioni relative al software di monitoraggio energetico METERN
novembre62
Messaggi: 31
Iscritto il: 19/04/2018, 16:56

Aggiunta contatore per consumi parziali

Messaggioda novembre62 » 06/11/2022, 15:49

salve
ho da poco inserito un POW R3 con firmware Tasmota per monitorare un carico domestico specifico.
Estraggo il dato che mi serve con comandi JSON ma devo selezionare come tipo di metern " sensor" per avere dati attendibili.
ma in questo modo nel menu "Letture", non è previsto che vengano visualizzati i valori giornalieri, mensili ecc.,.

Selezionando tipo di meter - elect-other o solo other, ottengo si le letture, ma i valori e il grafico sono completamente sballati.
Il dato che mi serve è solo per totalizzare il consumo rilevato da Pow R3....non deve sommarsi o fare la differenza con niente.

qualcuno mi può aiutare

grazie


novembre62
Messaggi: 31
Iscritto il: 19/04/2018, 16:56

Re: Aggiunta contatore per consumi parziali

Messaggioda novembre62 » 16/11/2022, 13:52

Ho letto questa discussione
viewtopic.php?f=4&t=1949&hilit=aggiunta
in cui viene indicato di creare un nuovo poolerconsumi
e di modificare il file /var/www/metern/config/config_daemon.php

ma questo riguarda i contatori modbus per quello che ho capito
mentre il mio contatore non lo è.

nessuno mi aiuta

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

Re: Aggiunta contatore per consumi parziali

Messaggioda Flane » 17/11/2022, 9:11

Ti crei uno script per la lettura del tuo POW e lo fai avviare e fermare con config_daemon.php.
Lo script deve creare un file meternXX.txt con le letture nello formato previsto e nella cartella temporanea /dev/shm e poi con polerconsumi lo fai leggere come comando main e live in metern

novembre62
Messaggi: 31
Iscritto il: 19/04/2018, 16:56

Re: Aggiunta contatore per consumi parziali

Messaggioda novembre62 » 17/11/2022, 16:54

lo script per la lettura del POW è questo

Codice: Seleziona tutto

#!/usr/bin/php
<?php
// This script will output a meterN compatible format for the main or live command
// You'll need to setup correct permission chmod +x
// then ln -s /var/www/comapps/reqtasmota.php /usr/local/bin/reqtasmota
// Request command with 'reqtasmota power'

if (isset($_SERVER['REMOTE_ADDR'])) {
    die('Direct access not permitted');
}
if (!isset($argv[1])) {
   die("Abording: no valid argument given.\n");
      } elseif ($argv[1] == 'power') {
   $url = 'http://192.168.1.42/cm?cmnd=Status%2010';
   $pagina = file_get_contents($url);
   $json_output = json_decode($pagina, true);
   $val = $json_output['StatusSNS']['ENERGY']['Power'];
   $outstr = ("10($val*w)\n");
       // and so on ....
   } else {
    die("Usage: reqtasmota (power)\n");
   }
echo "$outstr";
?>



in config_daemon.php

ho inserito nella sessione Start

Codice: Seleziona tutto

exec("reqtasmota > /dev/null 2>/dev/null &");

mentre nella sessione Stop

Codice: Seleziona tutto

exec("pkill -f reqtasmota > /dev/null 2>&1 &");


..ora sono fermo a questo...ammesso che sia corretto... perchè non ho le conoscenze per far creare allo script un file meternXX.txt con le letture nello formato previsto e nella cartella temporanea /dev/shm e poi con polerconsumi far leggere come comando main e live in metern

...chiedo quindi cortesemente un ulteriore aiuto

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

Re: Aggiunta contatore per consumi parziali

Messaggioda Flane » 18/11/2022, 18:38

Quello che tu estrai è solo la potenza istantanea. Per avere i grafici ti serve l'energia.
La cosa è un pò più complessa di quello che pensi.
Io non ho nemmeno idea di cosa restituisca il POW .... oltre a non avere proprio il tempo di aiutarti

novembre62
Messaggi: 31
Iscritto il: 19/04/2018, 16:56

Re: Aggiunta contatore per consumi parziali

Messaggioda novembre62 » 18/11/2022, 18:50

grazie intanto per la risposta

il Pow restituisce oltre al resto
potenza attiva in watt
energia di oggi in Kwh
energia di ieri in Kwh
energia totale in Kwh

{"StatusSNS":{"Time":"2022-11-18T18:42:26","ENERGY":{"TotalStartTime":"2022-11-16T17:20:31","Total":1.640,"Yesterday":0.854,"Today":0.512,"Power":110,"ApparentPower":242,"ReactivePower":216,"Factor":0.46,"Voltage":226,"Current":1.071}}}

novembre62
Messaggi: 31
Iscritto il: 19/04/2018, 16:56

Re: Aggiunta contatore per consumi parziali

Messaggioda novembre62 » 24/11/2022, 16:34

ho modificato lo script per ottenere anche il dato energia totale dal POWR3 e ottengo il file metern10.txt nel percorso indicato e nel formato corretto, digitando su terminale
reqtasmota power

Codice: Seleziona tutto

#!/usr/bin/php
<?php

// This script will output a meterN compatible format for the main or live command
// You'll need to setup correct permission chmod +x
// then ln -s /var/www/MyScripts/reqtasmota.php /usr/bin/reqtasmota
// Request command with 'reqtasmota power'

if (isset($_SERVER['REMOTE_ADDR'])) {
    die('Direct access not permitted');
}
if (!isset($argv[1])) {
   die("Abording: no valid argument given.\n");
  } elseif ($argv[1] == 'power') {
   $url = 'http://192.168.1.42/cm?cmnd=Status%2010';
   $pagina = file_get_contents($url);
   $json_output = json_decode($pagina, true);
   $val = $json_output['StatusSNS']['ENERGY']['Power'];
   $val1 = $json_output['StatusSNS']['ENERGY']['Total'];
   $val2 = $val1 * 1000;
   $outstr = ("10($val*W)\n10($val2*Wh)\n");
           // and so on ....
   } else {
    die("Usage: reqtasmota (power)\n");
   }
echo "$outstr" ;
file_put_contents("/dev/shm/metern10.txt", $outstr);

?>


Codice: Seleziona tutto

JARVIS: MyScripts --> reqtasmota power
10(8*W)
10(3048*Wh)


allora ho creato un file bash

Codice: Seleziona tutto

#!/bin/bash

reqtasmota power


che ho chiamato aggiornapowr3.sh

poi in crontab ho aggiunto

Codice: Seleziona tutto

# Runing script.sh every 1 minuto
* * * * *  root  /var/www/MyScripts/aggiornapowr3.sh


il file viene avviato ogni minuto....puo andar bene lo stesso..... ed aggiorna il file metern10.txt che mi serve

in Metern ho selezionato
Elect Other
main poolerconsumi 10 energy
live poolerconsumi 10 power

per adesso sembra funzionare correttamente, certo ho fatto una cosa piuttosto grezza...ma di meglio non so fare

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

Re: Aggiunta contatore per consumi parziali

Messaggioda Flane » 28/11/2022, 8:35

Per migliorare puoi inserire un ciclo infinito "while [ true ]; do" nel tuo script che legge i valori, con uno sleep finale di X secondi in base alla frequenza che vuoi dare alla lettura (copia la cosa dallo script pooler485.sh presente in comapps che si usa per i contatori modbus).

Poi metti l'avvio e lo stop in /var/www/metern/config/config_daemoon.php in modo l'avvio e lo stop delle letture sia sincronizzato con l'avvio e lo stop di metern.

In quiesto modo non serve lo script esterno di avvio e non serve crontab, e lo script di lettura funziona solo quando è attivo metern.

novembre62
Messaggi: 31
Iscritto il: 19/04/2018, 16:56

Re: Aggiunta contatore per consumi parziali

Messaggioda novembre62 » 29/11/2022, 17:51

intanto grazie per l'aiuto

..ho modificato lo script, ma con "while [ true ]; do" non funzionava....forse perchè lo script pooler485.sh... non è php (non so)

quindi leggendo in rete ho fatto cosi

Codice: Seleziona tutto

#!/usr/bin/php
//<?php

// This script will output a meterN compatible format for the main or live command
// You'll need to setup correct permission chmod +x
// then ln -s /var/www/MyScripts/reqtasmota.php /usr/bin/reqtasmota
// Request command with 'reqtasmota power'

if (isset($_SERVER['REMOTE_ADDR'])) {
    die('Direct access not permitted');
   }
 
while (true) {
         
           if (!isset($argv[1])) {
           die("Abording: no valid argument given.\n");
           } elseif ($argv[1] == 'power') {
           $url = 'http://192.168.1.42/cm?cmnd=Status%2010';
           $pagina = file_get_contents($url);
           $json_output = json_decode($pagina, true);
           $val = $json_output['StatusSNS']['ENERGY']['Power'];
           $val1 = $json_output['StatusSNS']['ENERGY']['Total'];
           $val2 = $val1 * 1000;
           $outstr = ("10($val*W)\n10($val2*Wh)\n");
           // and so on ....
           } else {
           die("Usage: reqtasmota (power)\n");
           }
           echo "$outstr";
           file_put_contents("/dev/shm/metern10.txt", $outstr);
           
           sleep(2);

}
?>


poi in config_daemon.php

start

Codice: Seleziona tutto

exec("reqtasmota power > /dev/null 2>/dev/null &");


stop

Codice: Seleziona tutto

exec("pkill -f reqtasmota power > /dev/null 2>&1 &");


ora il file metern10.txt viene creato e aggiornato ogni 2 secondi come da ( sleep) all'avvio di Metern, ma fermando Metern il file continua ad aggiornarsi ..cioè non c'è lo stop delle letture.
Diciamo che non è un problema visto che Metern è sempre attivo...ma giusto per capire
Ovviamente ho eliminato lo script esterno e il comando in crontab

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

Re: Aggiunta contatore per consumi parziali

Messaggioda Flane » 01/12/2022, 18:16

Vero, devi usare la sintassi di php per fare un ciclo infinito sempre con while come hai fatto.

Per chiudere lo script il comando corretto dovrebbe essere:

Codice: Seleziona tutto

exec("pkill -f reqtasmota > /dev/null 2>&1 &");

non devi mettere anche i comandi, ma solo il nome dello script da killare.


Torna a “MeterN”

Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti