Nettigo NAM połączenie z Domoticz/*inne

przekazywanie danych do innego systemu IoT

Dzień dobry wszystkim,

po przeniesieniu czujnika SDS011 z własnej konstrukcji na platformę NAM
(likwidacja połączeń jumperami na rzecz lutowania) natknąłem się na problem
przekazywania pomiarów do domowego systemu IoT z Domoticzem i HomeBridge.

pomiary odczytuję z pliku http://nam_IP/data.json
po starcie NAM wygląda on tak:

{“software_version”: “NAMF-2020-37”, “age”:“4294568”, “measurements”:“0”, “sensordatavalues”:[]}

do czasu pierwszego pomiaru nie mamy dostępu do listy czujników i pomiarów (niestety…)

Oparłem się na platformie Node-RED - flow wygląda tak:
NAM1

node “HTTP Request” to odpytanie “http://192.168.0.***/data.json”

sprawdzam czy jest odpowiedź, czy mesasurements <> 0

wtedy dostajemy wyniki (lista zależna od konfiguracji)
{“software_version”: “NAMF-2020-xx”, “age”:“10”, “measurements”:“1”,

  • “sensordatavalues”:*
  • [{“value_type”:“SDS_P1”,“value”:“21.55”},{“value_type”:“SDS_P2”,“value”:“19.35”},*
  • {“value_type”:“BME280_temperature”,“value”:“12.32”},{“value_type”:“BME280_humidity”,“value”:“63.37”}, {“value_type”:“BME280_pressure”,“value”:“98795.36”},*
    {“value_type”:“HECA_temperature”,“value”:“12.94”},{“value_type”:“HECA_humidity”,“value”:“59.54”}

    ]}

node “pobierz wartości NAM” wygląda tak

msg.BME_T = msg.payload.sensordatavalues[2].value;
msg.BME_H = msg.payload.sensordatavalues[3].value;

var p = msg.payload.sensordatavalues[4].value/100;
p = p.toFixed(1);
p = p.toString();
msg.BME_P = p;

msg.HECA_T = msg.payload.sensordatavalues[5].value;
msg.HECA_H = msg.payload.sensordatavalues[6].value;

msg.PM25 = msg.payload.sensordatavalues[1].value;
msg.PM10 = msg.payload.sensordatavalues[0].value;

return msg;

z kolei node NAMxx przygotowuje wywołanie API Domoticza

//msg.url = "http://domoticz_IP:8080/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT;BAR;BAR_FOR
msg.url = “http://domoticz_IP/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=” + msg.BME_T + “;” + msg.BME_H + “;0;” + msg.BME_P + “;0” ;
return msg;

i wywołuje je z delikatnym opóźnieniem dla kolejnych czujników …