As I had a very well working node-red script from FireWizard 5 years ago I had to renew it to a new Domoticz version (not compatible)
See this forum
The script what is still working in old node-red gives me errors in new node-red version (latest):
'The workspace contains some nodes that are not properly configured.
Its all about hum_stat and bar_for;
Cannot find name 'hum_stat'.(2304)
See attachements old and new node-red versions
What the difference and the solution to let it function proper again ?
Code: Select all
// This function sorts the comfort level for Domoticz based on the humidity.
function comfortlevel(hum) {
switch (true) {
case hum > 70: { hum_stat = 3 } break;
case hum < 30: { hum_stat = 2 } break;
case hum >= 30 && hum <= 45: { hum_stat = 0 } break;
case hum > 45 && hum <= 70: { hum_stat = 1 } break;
default: { hum_stat = 0 } break;
}
return hum_stat;
}
// This function sorts the prediction (barometer forecast) for Domoticz based on the barometer pressure.
function bar_forecast(pres) {
switch (true) {
case pres > 1030: { bar_for = 1 } break;
case pres > 1010 && pres <= 1030: { bar_for = 2 } break;
case pres > 990 && pres <= 1010: { bar_for = 3 } break;
case pres > 970 && pres <= 990: { bar_for = 4 } break;
default: { bar_for = 0 } break;
}
return bar_for;
}
// This function sorts the wind direction in abbreviated text for Domoticz based on the average bearing.
function winddir(avgb) {
switch (true) {
case avgb >= 0 && avgb <= 11.25: { dir = "N" } break;
case avgb >= 11.26 && avgb <= 33.75: { dir = "NNE" } break;
case avgb >= 33.76 && avgb <= 56.25: { dir = "NE" } break;
case avgb >= 56.26 && avgb <= 78.75: { dir = "ENE" } break;
case avgb >= 78.76 && avgb <= 101.25: { dir = "E" } break;
case avgb >= 101.26 && avgb <= 123.75: { dir = "ESE" } break;
case avgb >= 123.76 && avgb <= 146.25: { dir = "SE" } break;
case avgb >= 146.26 && avgb <= 168.75: { dir = "SSE" } break;
case avgb >= 168.76 && avgb <= 191.25: { dir = "S" } break;
case avgb >= 191.26 && avgb <= 213.75: { dir = "SSW" } break;
case avgb >= 213.76 && avgb <= 236.25: { dir = "SW" } break;
case avgb >= 236.26 && avgb <= 258.75: { dir = "WSW" } break;
case avgb >= 258.76 && avgb <= 281.25: { dir = "W" } break;
case avgb >= 281.26 && avgb <= 303.75: { dir = "WNW" } break;
case avgb >= 303.76 && avgb <= 326.25: { dir = "NW" } break;
case avgb >= 326.26 && avgb <= 348.75: { dir = "NNW" } break;
case avgb >= 348.76 && avgb <= 359.99: { dir = "N" } break;
default: { dir = "?" } break;
}
return dir;
}
var ba = msg.payload.press.toString(); //barometer pressure
var pr = bar_forecast(ba).toString(); // prediction (barometer forecast)
var tm = msg.payload.temp.toString(); // temperature
var hu = msg.payload.hum.toString(); // humidity
var lv = comfortlevel(hu).toString(); // comfort level
var rt = msg.payload.rrate.toString(); // rain rate
var fl = msg.payload.rfall.toString(); // rain fall
var sr = msg.payload.SolarRad.toString(); // solar radiation
var uv = msg.payload.UV.toString(); // UV radiation
var an = msg.payload.bearing.toString(); // wind bearing
var sp = (msg.payload.wspeed * 10).toString(); // wind speed in 0.1 m/s
var gu = (msg.payload.wgust * 10).toString(); // wind gust in 0.1 m/s
var ch = msg.payload.wchill.toString(); // chill temperature
var avgbr = msg.payload.avgbearing; // average bearing
var dr = winddir(avgbr); // wind direction in abbreviated text
var txt = msg.payload.forecast; // weather forecast
var dp = msg.payload.dew.toString(); // dew point
var msg1 = {};
var msg2 = {};
var msg3 = {};
var msg4 = {};
var msg5 = {};
var msg6 = {};
var msg7 = {};
var msg8 = {};
var msg9 = {};
var msg10 = {};
var msg11 = {};
var msg12 = {};
var msg13 = {};
msg1.payload = {"command":"udevice", "idx":30, "svalue":tm};
msg2.payload = {"command":"udevice", "idx":31, "nvalue":parseInt(hu), "svalue":lv};
msg3.payload = {"command":"udevice", "idx":32, "svalue":ba + ";" + pr};
msg4.payload = {"command":"udevice", "idx":33, "svalue":tm + ";" + hu + ";" + lv};
msg5.payload = {"command":"udevice", "idx":34, "svalue":tm + ";" + hu + ";" + lv + ";" + ba + ";" + pr};
msg6.payload = {"command":"udevice", "idx":35, "svalue":tm + ";" + ba + ";" + pr};
msg7.payload = {"command":"udevice", "idx":36, "svalue":rt + ";" + fl};
msg8.payload = {"command":"udevice", "idx":37, "svalue":an + ";" + dr + ";" + sp + ";" + gu + ";" + tm + ";" + ch};
msg9.payload = {"command":"udevice", "idx":38, "svalue":an + ";" + dr + ";" + sp + ";" + gu + ";" + tm + ";" + ch};
msg10.payload = {"command":"udevice", "idx":39, "svalue":uv + ";" + "0"};
msg11.payload = {"command":"udevice", "idx":40, "svalue":sr};
msg12.payload = {"command":"udevice", "idx":41, "svalue":txt};
msg13.payload = {"command":"udevice", "idx":42, "svalue":dp};
return [[msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10,msg11,msg12,msg13]];
Thanks in advance !
Ed