Простыми словами вам нужно отправить post json запрос с временной зоной и массивом цветов разделенных на сумерки. Обратно вы получите json в котором будет поле Led c цветом переданным вами в массиве и текущих сумерок для вашей геопозиции. Геопозиция необязательный параметр. Если вы не передаете lat/lon то эти строки следует закоментировать, В этом случае геопозиция будет вычислена из временной зоны.
Описывать долго, лучше я покажу flow который можно импортировать в node-red.
СпойлерПоказать
Код: Выделить всё
[
{
"id": "18897fad.7434a8",
"type": "http request",
"z": "d9b3f5ab.f8ba28",
"name": "",
"method": "use",
"ret": "txt",
"paytoqs": false,
"url": "",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 525,
"y": 300,
"wires": [
[
"59b81427.a69454",
"29ad0bec.8b3514"
]
]
},
{
"id": "ab56a7be.363358",
"type": "debug",
"z": "d9b3f5ab.f8ba28",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"x": 845,
"y": 260,
"wires": []
},
{
"id": "29ad0bec.8b3514",
"type": "function",
"z": "d9b3f5ab.f8ba28",
"name": "Proc",
"func": "var m = JSON.parse(msg.payload);\nvar led = { payload: m.led };\nvar rgbw = { payload: HexToRGBW(m.led) };\nvar Ambilight = {payload: amlilight(m.led)};\n\nreturn [led, rgbw, Ambilight ]\n\nfunction HexToRGBW(led){\n var h = led.substring(1,7);\n var r = parseInt(h.substring(0, 2), 16);\n var g = parseInt(h.substring(2, 4), 16);\n var b = parseInt(h.substring(4, 6), 16);\n var rgbw = \"R\"+r+\",G\"+g+\",B\"+b+\",W180\";\n return rgbw;\n}\n\nfunction amlilight(led){\n var h = led.substring(1,7);\n return \"0x\"+h;\n}",
"outputs": 3,
"noerr": 0,
"x": 680,
"y": 330,
"wires": [
[
"86ee413a.72ece"
],
[
"1de63ee0.b9a839"
],
[
"bbbb1996.042248"
]
]
},
{
"id": "1b697345.2598d5",
"type": "comment",
"z": "d9b3f5ab.f8ba28",
"name": "Konbanwa ",
"info": "",
"x": 220,
"y": 260,
"wires": []
},
{
"id": "c61541eb.be937",
"type": "function",
"z": "d9b3f5ab.f8ba28",
"name": "f.twilight",
"func": "//var timezone = \"Europe/London\";\n//var latitude = \"51.50833\" \n//var longitude = \"-0.12527\"\n\n//var timezone = \"Asia/Tokyo\";\n//var latitude = \"35.65444\" \n//var longitude = \"139.74472\"\n\nvar timezone = \"Europe/Moscow\";\nvar latitude = \"55.75583\"\nvar longitude = \"37.61777\"\n\nvar dts={};\ndts.headers={};\ndts.headers['Content-type'] = 'application/json; charset=utf-8';\ndts.headers['UserAgent'] = 'nodered';\ndts.method = \"post\";\ndts.url = \"http://polmira.ru/konbanwa/json.php\";\n\ndts.payload = JSON.stringify({\n \"timezone\":timezone,\n \"location\": { \n \"latitude\": latitude, \n \"longitude\": longitude\n }, \n \"led\":{\n \"astronomical_twilight_begin\": \"#030303\", //астрономический рассвет\n \"nautical_twilight_begin\": \"#060400\", //навигационный рассвет\n \"civil_twilight_begin\": \"#090600\", //гражданский рассвет\n \"sunrise\": \"#000000\", //рассвет\n \"transit\": \"#000000\", //зенит\n \"sunset\": \"#FF743A\", //закат\n \"civil_twilight_end\": \"#151020\", //гражданский закат\n \"nautical_twilight_end\": \"#090915\", //навигационный закат\n \"astronomical_twilight_end\": \"#090713\", //астрономический закат\n }\n});\n\nreturn dts;\n",
"outputs": 1,
"noerr": 0,
"x": 370,
"y": 300,
"wires": [
[
"18897fad.7434a8"
]
]
},
{
"id": "b0397e3.c210b8",
"type": "inject",
"z": "d9b3f5ab.f8ba28",
"name": "",
"topic": "",
"payload": "s",
"payloadType": "str",
"repeat": "600",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 235,
"y": 300,
"wires": [
[
"c61541eb.be937"
]
]
},
{
"id": "59b81427.a69454",
"type": "json",
"z": "d9b3f5ab.f8ba28",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 695,
"y": 260,
"wires": [
[
"ab56a7be.363358"
]
]
},
{
"id": "86ee413a.72ece",
"type": "debug",
"z": "d9b3f5ab.f8ba28",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 845,
"y": 295,
"wires": []
},
{
"id": "1de63ee0.b9a839",
"type": "debug",
"z": "d9b3f5ab.f8ba28",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 845,
"y": 330,
"wires": []
},
{
"id": "bbbb1996.042248",
"type": "debug",
"z": "d9b3f5ab.f8ba28",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 845,
"y": 365,
"wires": []
}
]