Node-Red + Unifi tips (programmeer uw Unifi controller)

neon admin

UniFier
11 mei 2022
93
52
18
Ik dacht, misschien is het leuk om mensen ideeën te geven.

Zo kun je met Node-red je unifi-controller besturen.

Het installeren van Node-red gaat veel te ver voor een tips-topic. Zoek op internet op hoe dat gaat. Ik geef er de voorkeur aan om het op een Raspberry pi te draaien.

In Node-red moet je in elk geval de 'unifi-contrib' installeren. Je moet die ook configureren, dat wijst zich vanzelf.

En dan kun je bijvoorbeeld een bedtijd-flow maken.
De tijden stel je in de roze 'bedtijd' node in.
De adressen die op tijd geblokkeerd moeten worden komen in de groene 'mac adres' nodes; één per device.

Dit werkt op basis van het block-commando. De devices hebben dus totaal geen netwerkverbinding, ook niet lokaal.
Als ze ge-unblocked worden kan het een paar minuten duren voor ze dat doorhebben.


nodeRedUnifi-bedtime.png

Hier staat de code. Copy die, en in Node Red zit een knopje 'import'. Daar paste je de code en je hebt het bovenstaande.
Dan moet je de unifi-node instellen op je eigen unifi-controller, en de macadressen van je eigen apparatuur invoeren.


JSON:
[
    {
        "id": "08970203024d22d1",
        "type": "group",
        "z": "26e3101e.d5bb6",
        "name": "Bedtime on a Unifi controller",
        "style": {
            "label": true,
            "fill": "#bfdbef",
            "stroke": "#0070c0",
            "label-position": "n",
            "color": "#0070c0"
        },
        "nodes": [
            "cfd8ed7cc524b6e3",
            "3a190fe0182416a7",
            "4f6fcc7cc7db12e0",
            "0dd39ce68371840d",
            "798b175760e25376",
            "72b013e072d6cb8d",
            "8c6f26db88d8689c",
            "33beb9cd53e3379d",
            "2a2a6f4ddacbc1e4"
        ],
        "x": 174,
        "y": 599,
        "w": 912,
        "h": 342
    },
    {
        "id": "cfd8ed7cc524b6e3",
        "type": "Unifi",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "unifi",
        "server": "c95efa04fa274429",
        "command": "20",
        "x": 890,
        "y": 680,
        "wires": [
            [
                "3a190fe0182416a7"
            ]
        ]
    },
    {
        "id": "3a190fe0182416a7",
        "type": "debug",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "BlockUnblock debug",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 940,
        "y": 760,
        "wires": []
    },
    {
        "id": "4f6fcc7cc7db12e0",
        "type": "comment",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "Copy-paste for each device",
        "info": "ff",
        "x": 550,
        "y": 640,
        "wires": []
    },
    {
        "id": "0dd39ce68371840d",
        "type": "light-scheduler",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "settings": "2bef03f5.565e5c",
        "events": "[{\"start\":{\"dow\":6,\"mod\":600},\"end\":{\"dow\":6,\"mod\":1200}},{\"start\":{\"dow\":0,\"mod\":600},\"end\":{\"dow\":0,\"mod\":1140}},{\"start\":{\"dow\":5,\"mod\":655},\"end\":{\"dow\":5,\"mod\":1200}},{\"start\":{\"dow\":4,\"mod\":660},\"end\":{\"dow\":4,\"mod\":1140}},{\"start\":{\"dow\":3,\"mod\":900},\"end\":{\"dow\":3,\"mod\":1140}},{\"start\":{\"dow\":1,\"mod\":900},\"end\":{\"dow\":1,\"mod\":1140}},{\"start\":{\"dow\":2,\"mod\":815},\"end\":{\"dow\":2,\"mod\":1165}}]",
        "topic": "",
        "name": "Bedtijd",
        "onPayload": "{\"command\":\"unblockClient\"}",
        "onPayloadType": "json",
        "offPayload": "{\"command\":\"blockClient\"}",
        "offPayloadType": "json",
        "onlyWhenDark": false,
        "scheduleRndMax": 0,
        "sunElevationThreshold": 6,
        "sunShowElevationInStatus": false,
        "outputfreq": "output.statechange.startup",
        "x": 250,
        "y": 680,
        "wires": [
            [
                "798b175760e25376",
                "72b013e072d6cb8d"
            ]
        ],
        "outputLabels": [
            "Unify command, must add payload.mac=<mac address> "
        ]
    },
    {
        "id": "798b175760e25376",
        "type": "change",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "Mac adres telefoon 1",
        "rules": [
            {
                "t": "set",
                "p": "payload.mac",
                "pt": "msg",
                "to": "12:34:56:1a:1b:1c",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 540,
        "y": 680,
        "wires": [
            [
                "cfd8ed7cc524b6e3",
                "3a190fe0182416a7"
            ]
        ]
    },
    {
        "id": "72b013e072d6cb8d",
        "type": "change",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "Mac adres telefoon 2",
        "rules": [
            {
                "t": "set",
                "p": "payload.mac",
                "pt": "msg",
                "to": "1a:2a:3a:4a:5a:6a",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 540,
        "y": 720,
        "wires": [
            [
                "cfd8ed7cc524b6e3"
            ]
        ]
    },
    {
        "id": "8c6f26db88d8689c",
        "type": "inject",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "block",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"command\": \"blockClient\"}",
        "payloadType": "json",
        "x": 270,
        "y": 860,
        "wires": [
            [
                "798b175760e25376",
                "72b013e072d6cb8d"
            ]
        ]
    },
    {
        "id": "33beb9cd53e3379d",
        "type": "inject",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "unblockClient",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"command\": \"unblock\"}",
        "payloadType": "json",
        "x": 290,
        "y": 900,
        "wires": [
            [
                "798b175760e25376",
                "72b013e072d6cb8d"
            ]
        ]
    },
    {
        "id": "2a2a6f4ddacbc1e4",
        "type": "comment",
        "z": "26e3101e.d5bb6",
        "g": "08970203024d22d1",
        "name": "Manual control",
        "info": "",
        "x": 280,
        "y": 820,
        "wires": []
    },
    {
        "id": "c95efa04fa274429",
        "type": "unificonfig",
        "name": "unifiController",
        "ip": "yourunifi-controller-address",
        "port": "8443",
        "site": "default",
        "unifios": false,
        "ssl": false
    },
    {
        "id": "2bef03f5.565e5c",
        "type": "light-scheduler-settings",
        "name": "Arnhem",
        "latitude": "51.979729",
        "longitude": "5.912400"
    }
]
 

Bijlagen

  • nodeRedUnifi-bedtime.png
    nodeRedUnifi-bedtime.png
    72,6 KB · Weergaven: 8
Geweldige tool. Voor de mensen die al Home Assistant gebruiken wordt het helemaal gemakkelijk gemaakt. Daar is Node Red als Add-On beschikbaar en Unifi Network & Protect als integraties. Op die manier houd je alles mooi bij elkaar. Ik moet eerlijk zeggen dat ik Node Red altijd gebruik voor Home Automations (slimme lampen, stekkers, temperatuur, beweging) maar nog niet echt in combinatie met Unifi. Wel al eens mee zitten testen (Protect) maar nog geen echte toepassing gevonden.

Een Node die ik regelmatig gebruik is die van Pushover, dat is een centraal notificatie progsel met API token die je in die die Node zet. Op deze manier kun je alle notificaties beheren met escalatie nivo`s waardoor indien gewenst zelfs de trilfunctie van een telefoon overruled wordt door een zeer irritant geluid.

1673359503056.png
 
  • Leuk
Waarderingen: m4v3r1ck
Node Red moet ik nog steeds een keer proberen icm home assistant, maar momenteel werken me lampen / stekkers / motion sensors etc al 2 jaar prima met de standaard automation opties in HA. Plus ik ben veels te lui momenteel om dat allemaal weer opnieuw op te moeten gaan zetten :eek:
 
  • Leuk
Waarderingen: m4v3r1ck
Node Red moet ik nog steeds een keer proberen icm home assistant, maar momenteel werken me lampen / stekkers / motion sensors etc al 2 jaar prima met de standaard automation opties in HA. Plus ik ben veels te lui momenteel om dat allemaal weer opnieuw op te moeten gaan zetten :eek:
Ik had 1 automation die op temperatuur EN tijd moest reageren. Ik kwam er maar niet uit met de standaard HA automations. Zelfs in Node Red was het even puzzelen maar die heeft een debug functie. Elke Node moet je gewoon even leren begrijpen en Google helpt altijd. Absolute aanrader.
 
  • Leuk
Waarderingen: m4v3r1ck en rgarretsen
Ik heb precies hetzelfde als rgarretsen. Ik heb node red al een tijdje geïnstalleerd als add on in HA, maar nog niet de moeite genomen om het te leren. Dat komt ook omdat ik al mijn automatiseringen op dit moment voor elkaar krijg in HA.
 
  • Leuk
Waarderingen: m4v3r1ck
Leuk topic @neon admin en dank voor je uitleg m.b.t. UniFi! Een slaap RED-automation om mezelf naar bed te manen, kan ik zeker wel gebruiken ;)

Nu ik mijn EDD (Energie Distribution Dashboard) klaar heb, wordt het tijd voor het gebruikmaken van de overige - zeer vele - mogelijkheden van Home Assistant. Dit is een leuke opstart.
 
Activiteit
Er wordt op dit moment (nog) geen nieuwe reactie gepost.
  Topic Status: Hallo . Er is al meer dan 14 dagen geen nieuwe reactie meer geplaatst.
  De inhoud is mogelijk niet langer relevant.
  Misschien is het beter om in plaats daarvan een nieuw onderwerp te starten..