import dati da meterN in domoticz con mqtt

Configurazione ed uso di DOMOTICZ, versatile software free per la gestione domotica.
megamarco83
Messaggi: 246
Iscritto il: 22/08/2016, 14:13

import dati da meterN in domoticz con mqtt

Messaggioda megamarco83 » 18/10/2021, 10:28

Ciao, se volete è possibile con questa comapps importare in domoticz i dati di meterN
https://github.com/megamarco833/mqtt-meterN
dovete ovviamente cambiare gli indirizzi degli idx (esempio):

Codice: Seleziona tutto

$ID_prod   = 4;
$ID_prel   = 5;
$ID_autoc  = 6;
$ID_f1     = 7;
$ID_f23    = 8;
$ID_imm    = 9;
$ID_cons   = 10;
$ID_boiler = 130;


ed ovviamente adattare la configurazione:

Codice: Seleziona tutto

while (true) {
   
    if (file_exists('/dev/shm/mN_LIVEMEMORY.json') && file_exists('/dev/shm/mN_ILIVEMEMORY.json') && file_exists('/dev/shm/mN_MEMORY.json')) {
       
        $data_mN_LIVEM      = file_get_contents('/dev/shm/mN_LIVEMEMORY.json');
        $data_mN_ILIVEM = file_get_contents('/dev/shm/mN_ILIVEMEMORY.json');
        $data_mN_MEMORY     = file_get_contents('/dev/shm/mN_MEMORY.json');
        $memarray_mN_LIVEM  = json_decode($data_mN_LIVEM, true);
        $memarray_mN_ILIVEM = json_decode($data_mN_ILIVEM, true);
        $memarray_mN_MEMORY = json_decode($data_mN_MEMORY, true);
       
        $prod_KWH   = $memarray_mN_MEMORY["Last2"]; //Last2 = Produzione Wh
        $cons_KWH   = $memarray_mN_MEMORY["Last1"]; //Last1  = Consumi Wh
        $consumiW   = $memarray_mN_LIVEM["Consumi1"]; //Consumi1 = consumi W
        $prodW      = $memarray_mN_LIVEM["Produzione2"]; //Produzinoe2 = produzione W
        $prel_KWH   = $memarray_mN_MEMORY["Last3"]; //Last3 = Prelievi Wh
        $prelW      = $memarray_mN_LIVEM["Prelievi3"]; //Prelievi2 = prelievi W
        $imm_KWH    = $memarray_mN_MEMORY["Last4"];
        $immW       = $memarray_mN_LIVEM["Immissioni4"];
        $auto_KWH   = $memarray_mN_MEMORY["Last5"];
        $autoW      = $memarray_mN_LIVEM["Autoconsumo5"];
        $f1_KWH     = $memarray_mN_MEMORY["Last8"];
        $f1W        = $memarray_mN_LIVEM["PrelieviF18"];
        $f23_KWH    = $memarray_mN_MEMORY["Last9"];
        $f23W       = $memarray_mN_LIVEM["PrelieviF239"];
        $boiler_KWH = $memarray_mN_MEMORY["Last12"];
        $boilerW    = $memarray_mN_LIVEM["Boiler12"];
        $temp       = $memarray_mN_LIVEM["temperatura6"];
        $humi       = $memarray_mN_LIVEM["Umidità7"];
      $V   = $memarray_mN_ILIVEM["Voltage1"]; //Voltage1 = Volt
        $A   = $memarray_mN_ILIVEM["Corrente2"]; //Corrente2 = Ampere
        $h2o = $memarray_mN_ILIVEM["ACQUA7"] * 1000; //ACQUA7 = acqua in m3



modificare la linea17 mettendo il proprio indirizzo IP del broker mqtt:

Codice: Seleziona tutto

$CMD = "timeout --kill-after=15s 10s mosquitto_pub -d -h '192.168.0.105' -t 'domoticz/in' -m '$msg'";

nel mio caso 192.168.0.105


ultimo passaggio creare con systemd il servizio per eseguirlo ogni X secondi:
un esempio funzionante è questo:

Codice: Seleziona tutto

sudo nano /etc/systemd/system/mqtt_energy.service


Codice: Seleziona tutto

[Unit]
Description=mqtt_energy
Requires=network.target
After=network.target nginx.service php-fpm.service

[Service]
Type=oneshot
ExecStart=/usr/bin/php /var/www/comapps/mqtt_energy.php
#ExecStartPre=/bin/sleep 30

[Install]
WantedBy=default.target



Codice: Seleziona tutto

sudo systemctl enable mqtt_energy.service


Codice: Seleziona tutto

sudo systemctl start mqtt_energy.service
Ultima modifica di megamarco83 il 28/10/2021, 10:12, modificato 1 volta in totale.


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

Re: import dati da meterN in domoticz con mqtt

Messaggioda s_p » 27/10/2021, 13:29

Ciao Marco

vorrei utilizzare la tua comapp per importare i dati in Home Assistant invece di domoticz
credo di aver individuato il punto dove fare le modifiche

Codice: Seleziona tutto

$CMD = "timeout --kill-after=15s 10s mosquitto_pub -d -h '192.168.0.105' -t 'domoticz/in' -m '$msg'";


ma non mi è chiaro come fare.
Nella fattispecie, vorrei che il topis pubblicato fosse del tipo

Codice: Seleziona tutto

casa/metern/produzione


in modo da poterlo importare in HA

Codice: Seleziona tutto

- platform: mqtt
  name: "Produzione"
  device_class: power
  unit_of_measurement: 'W'
  state_topic: "casa/metern/produzione"


come lo dovrei modificare?
nel caso invece lasciassi tutto com'è, qual è il messaggio che viene pubblicato? in questo modo modificherei solo lo state_topic che deve leggere HA.

Ultima cosa il parametro -h '192.168.0.105' nel caso tutto girasse sullo stesso dispositivo si può eliminare vero?

megamarco83
Messaggi: 246
Iscritto il: 22/08/2016, 14:13

Re: import dati da meterN in domoticz con mqtt

Messaggioda megamarco83 » 28/10/2021, 10:10

s_p ha scritto:Ciao Marco

vorrei utilizzare la tua comapp per importare i dati in Home Assistant invece di domoticz
credo di aver individuato il punto dove fare le modifiche

Codice: Seleziona tutto

$CMD = "timeout --kill-after=15s 10s mosquitto_pub -d -h '192.168.0.105' -t 'domoticz/in' -m '$msg'";


ma non mi è chiaro come fare.
Nella fattispecie, vorrei che il topis pubblicato fosse del tipo

Codice: Seleziona tutto

casa/metern/produzione


ciao!
no, in realtà non è adattabile a home assistant perchè la mia comappps serve a mandare i dati mqtt in formato DOMOTICZ...quindi del tipo:

Codice: Seleziona tutto

domoticz/in {"idx": 196, "nvalue": 0, "svalue":"1200.3;1" }


dove il topic = domoticz/in
lo puoi cambiare facilmente
ma il payload che passa è:
{"idx": 196, "nvalue": 0, "svalue":"1200.3;1" }
che non c'entra nulla con HA.
dovresti modificare tutto il corpo del php perchè è stato scritto per mandare i dati in quel formato.
credo sia più facile fare un php da zero in modo da coprire le esigenze che hai, oppure usare monitor il programma di garluk che pubblica i dati su mqtt proprio come serve a te
monitor lo devi sostituire al sdm120c scritto da gainfrdp

s_p ha scritto:in modo da poterlo importare in HA

Codice: Seleziona tutto

- platform: mqtt
  name: "Produzione"
  device_class: power
  unit_of_measurement: 'W'
  state_topic: "casa/metern/produzione"


come lo dovrei modificare?
nel caso invece lasciassi tutto com'è, qual è il messaggio che viene pubblicato? in questo modo modificherei solo lo state_topic che deve leggere HA.

Ultima cosa il parametro -h '192.168.0.105' nel caso tutto girasse sullo stesso dispositivo si può eliminare vero?


hai ragione il 192.168.0.105 non va eliminato, va corretto mettendo l'IP del dispositivo che ospita il broker mqtt
per il messaggio che viene pubblicato, vedi il mio esempio in questo messaggio, se ti basta cambiare il topic e poi riesco con HA ad interpretare il paylod leggendolo con HA ok, ma la vedo dura....

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

Re: import dati da meterN in domoticz con mqtt

Messaggioda s_p » 28/10/2021, 15:07

intanto grazie per la risposta, ma ho risolto diversamente grazie all'aiuto di un collaboratore di Indomus.

In realtà non c'è bisogno di pubblicare niente altro sul broker, Domoticz di suo pubblica sul broker in un unico topic tutto il contenuto dei dispositivi, con un messaggio che inizia

Codice: Seleziona tutto

domoticz/out


ed è continuo, unico ma identificabile perché suddiviso in sezioni che contengono l'idx

per poter importare in Home Assistant, ho creato un sensore

Codice: Seleziona tutto

- platform: mqtt
    name: "Produzione Live"
    device_class: power
    state_topic: "domoticz/out"
    unit_of_measurement: "W"
    value_template: >
      {% if value_json.idx == 44 %}
        {{ value_json.svalue1 }}
      {% else %}
        {{ states('sensor.produzione_live') }}
      {% endif %}


dove il 44 indica l'idx di domoticz e produzione_live è come ho deciso di chiamare il sensore.

è importante rispettare gli spazi.

megamarco83
Messaggi: 246
Iscritto il: 22/08/2016, 14:13

Re: import dati da meterN in domoticz con mqtt

Messaggioda megamarco83 » 28/10/2021, 16:01

s_p ha scritto:intanto grazie per la risposta, ma ho risolto diversamente grazie all'aiuto di un collaboratore di Indomus.

In realtà non c'è bisogno di pubblicare niente altro sul broker, Domoticz di suo pubblica sul broker in un unico topic tutto il contenuto dei dispositivi, con un messaggio che inizia

Codice: Seleziona tutto

domoticz/out


ed è continuo, unico ma identificabile perché suddiviso in sezioni che contengono l'idx

per poter importare in Home Assistant, ho creato un sensore

Codice: Seleziona tutto

- platform: mqtt
    name: "Produzione Live"
    device_class: power
    state_topic: "domoticz/out"
    unit_of_measurement: "W"
    value_template: >
      {% if value_json.idx == 44 %}
        {{ value_json.svalue1 }}
      {% else %}
        {{ states('sensor.produzione_live') }}
      {% endif %}


dove il 44 indica l'idx di domoticz e produzione_live è come ho deciso di chiamare il sensore.

è importante rispettare gli spazi.

ma scusami, non mi è chiaro, tu hai sia domoticz che HA ?!
perchè?
io pensavo che volessi importare i dati su HA invece che in domoticz

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

Re: import dati da meterN in domoticz con mqtt

Messaggioda s_p » 28/10/2021, 19:51

Si si, li ho entrambi.
Uso l'immagine di Flane, e si sono sia Domoticz che HA. Li uso entrambi per semplice sfizio..


Torna a “Domoticz”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite