Освещение в зависимости от времени суток.

json API для nodered

Ответить
RootShell
Рядовой
Сообщения: 77
Зарегистрирован: 27.06.2020{, 04:22}
Репутация: 18
Откуда: World
Имя: Agat
Контактная информация:

Освещение в зависимости от времени суток.

#1

Сообщение RootShell » 05.07.2020{, 23:55}

Если нужно управлять освещением, самым простым решением будет фотоприемник реагирующий на освещение. Другой вариант это часы реального времени с переключением освещения по времени. Оба способа хорошо работают, но имеют свои недостатки о которых не сейчас. Если для управления своими устройствами вы используете node-red, то этот облачный сервис вам подойдет.

Простыми словами вам нужно отправить 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": []
    }
]
Надеюсь у вас все получится. Сервис использую больше года. Вроде работает.

Ответить

Вернуться в «Облачные сервисы»