Http request in Redmatic und Doorbird D2101V

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
tloeffel
Beiträge: 448
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Http request in Redmatic und Doorbird D2101V

Beitrag von tloeffel » 21.07.2019, 02:06

Hallo Zusammen,

ich habe eine Doorbird D2101V erworben. Nun habe ich es geschafft die Doorbird über Http - call (denke so heißt das) eine Systemvariable in der CCU über die xmlapi zu setzen. Dieses funktioniert mit "Klingeln" und "Bewegung".

Nun möchte ich aber dieses direkt in der Redmatic machen, ohne den Umweg durch die xmlapi.
Geht das? Leider sind meine Kenntnisse auf dem Gebiet der Http-requests zu schlecht. Habt Ihr eine Idee?

Lieben Gruß Thomas
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von Hypnos » 21.07.2019, 11:45

Es gibt eine fertige Node node-red-contrib-doorbird.
Kann dazu nix sagen, da ich diese nicht im Einsatz habe.

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von hobbyquaker » 21.07.2019, 19:44

Nicht genau das was Du brauchst - aber ich denke dennoch hilfreich um die Funktion der http Nodes zu verstehen: https://github.com/rdmtc/RedMatic/wiki/Flow-HTTP-Server
Anstatt einen Wert zurückzuliefern müsstest Du anstelle des mittleren Nodes eben einen Flow ansetzen der bei Aufruf einer bestimmten URL eine bestimmte Aktion durchführt.

tloeffel
Beiträge: 448
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von tloeffel » 26.07.2019, 16:07

Hallo Zusammen,

@hypnos: Die Node kann ich nicht installieren, sie muß kompiliert werden.
@Hobbyquaker: Leider komme ich nicht weiter.

derzeit verwende ich einen Aufruf aus der Doorbird.
http://<IP_CCU>/addons/xmlapi/statechange.cgi?ise_id=5317&new_value=true

Hiermit wird eine Variable auf "true" gesetzt sobald ein Event eintritt (Klingel in diesem Fall). Ich setze dann in der CCU wieder auf "false" nach der Auswertung. Wie mache ich das mit einer "node" ohne den Umweg der Variable? Nachteil bei meiner funktionierenden Auswertung ist die Wartezeit bis die Variable aktualisiert wird. Leider finde ich auch kein Event um das Polling anzustoßen.

Habt Ihr eine Idee?

Gruß Thomas
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

lxuser
Beiträge: 487
Registriert: 11.01.2015, 21:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 28 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von lxuser » 26.07.2019, 16:24

https://github.com/rdmtc/RedMatic/wiki/ ... chleunigen

Das nutze ich aktuell als Übergangslösung, in einem Programm in der Web-UI reagiere ich auf Änderung ausgewählter Sytemvariablen und löse damit einen Kanal der virtuellen Fernbedienung aus. Dieses Event kommt direkt in node-red an und triggert dann das Pollen der Systemvariablen.

tloeffel
Beiträge: 448
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von tloeffel » 27.07.2019, 02:19

Hallo lxuser,

Dein Tip klappt super. Danke Dir!!!
Brauche nur noch eine Lösung ohne den Weg über die CCU.

Gruß Thomas
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

HenningK
Beiträge: 210
Registriert: 22.09.2012, 20:56
Hat sich bedankt: 5 Mal
Danksagung erhalten: 11 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von HenningK » 27.07.2019, 09:45

Hier ist ein einfaches Beispiel. Es verwendet die globale Variable "testboolean" und die NodeRed IP = CCU IP ist bei mir 192.168.178.25.
Gegebenenfalls musst Du den Port noch anpassen.

Du kannst mit den http request:

Code: Alles auswählen

http://192.168.178.25:80/addons/red//test/set/false
beziehungsweise

Code: Alles auswählen

http://192.168.178.25:80/addons/red//test/set/true
den Wert ändern und gleichzeitig - da wo die debug node hängt - deinen Flow dranhängen.

Hier ist der flow - einmal als Bild und dann zum import als txt.
flow api set global variable.jpg

Code: Alles auswählen

[
    {
        "id": "fdd26dc0.e6647",
        "type": "tab",
        "label": "Test",
        "disabled": false,
        "info": ""
    },
    {
        "id": "b7df62a1.7033c",
        "type": "ui_text",
        "z": "fdd26dc0.e6647",
        "group": "7fc9cb2b.303464",
        "order": 0,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "test",
        "format": "{{msg.payload}}",
        "layout": "row-spread",
        "x": 110,
        "y": 60,
        "wires": []
    },
    {
        "id": "dc613125.df4ce",
        "type": "http in",
        "z": "fdd26dc0.e6647",
        "name": "api set variable true",
        "url": "/test/set/true",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 130,
        "y": 320,
        "wires": [
            [
                "cbff4d1c.aa744"
            ]
        ]
    },
    {
        "id": "bd981d7e.bb199",
        "type": "comment",
        "z": "fdd26dc0.e6647",
        "name": "http://192.168.178.25:80/addons/red//test/set/<value>",
        "info": "",
        "x": 240,
        "y": 280,
        "wires": []
    },
    {
        "id": "9c9afbf1.0e3e88",
        "type": "http response",
        "z": "fdd26dc0.e6647",
        "name": "response",
        "statusCode": "200",
        "headers": {},
        "x": 840,
        "y": 340,
        "wires": []
    },
    {
        "id": "5360655e.ce73ec",
        "type": "http in",
        "z": "fdd26dc0.e6647",
        "name": "api set variable false",
        "url": "/test/set/false",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 130,
        "y": 380,
        "wires": [
            [
                "e010e083.39f4b"
            ]
        ]
    },
    {
        "id": "4011cc6b.36b1c4",
        "type": "change",
        "z": "fdd26dc0.e6647",
        "name": "change variable testboolean",
        "rules": [
            {
                "t": "set",
                "p": "testboolean",
                "pt": "global",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 561,
        "y": 348,
        "wires": [
            [
                "d9c1d12b.440f8",
                "f89df7ea.bdf188"
            ]
        ]
    },
    {
        "id": "cbff4d1c.aa744",
        "type": "change",
        "z": "fdd26dc0.e6647",
        "name": "true",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 330,
        "y": 320,
        "wires": [
            [
                "4011cc6b.36b1c4"
            ]
        ]
    },
    {
        "id": "e010e083.39f4b",
        "type": "change",
        "z": "fdd26dc0.e6647",
        "name": "false",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 330,
        "y": 380,
        "wires": [
            [
                "4011cc6b.36b1c4"
            ]
        ]
    },
    {
        "id": "d9c1d12b.440f8",
        "type": "change",
        "z": "fdd26dc0.e6647",
        "name": "response OK",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "OK",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 830,
        "y": 300,
        "wires": [
            [
                "9c9afbf1.0e3e88"
            ]
        ]
    },
    {
        "id": "f89df7ea.bdf188",
        "type": "debug",
        "z": "fdd26dc0.e6647",
        "name": "trigger deinen Flow",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "x": 850,
        "y": 405,
        "wires": []
    },
    {
        "id": "7fc9cb2b.303464",
        "type": "ui_group",
        "z": "",
        "name": "Test",
        "tab": "3701e325.c32a8c",
        "order": 1,
        "disp": true,
        "width": "6",
        "collapse": false
    },
    {
        "id": "3701e325.c32a8c",
        "type": "ui_tab",
        "z": "",
        "name": "Test",
        "icon": "",
        "order": 9,
        "disabled": false,
        "hidden": false
    }
]

tloeffel
Beiträge: 448
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von tloeffel » 27.07.2019, 14:48

Hallo Zusammen,

nun habe ich es geschnallt. Naja stand ja so auch in der Beschreibung von Hobbyquaker. Also Danke HenningK :-)!!!!
Hat soweit alles geklappt.

Mal eine Frage: Der Pfad "/test/set/true" ist relative, oder? Kann genannt werden wie ich es möchte, oder?
Wieder viel gelernt, einen großen Dank an alle :-).

Gruß Thomas

PS. Kann man das vereinfachen?
190727_Doorbird_!.PNG
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

HenningK
Beiträge: 210
Registriert: 22.09.2012, 20:56
Hat sich bedankt: 5 Mal
Danksagung erhalten: 11 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von HenningK » 27.07.2019, 15:37

Hallo Thomas,
"...stand ja so auch in der Beschreibung von Hobbyquaker":
Ja, das ist das Grundprinzip.
"....Der Pfad "/test/set/true" ist relative":
Ja, ist relativ (laut Node Hilfe). Kannst du ändern.

Du kannst ihn auf /api verkürzen und ein ? am Ende einfügen mit Parameterdaten. Also zum Beispiel:

Code: Alles auswählen

/api?SetRelais1ToTrue

oder eine andere Syntax. Wichtig ist, dass Du URL encoding beachtest.

Du hättest dann nur eine http Node, danach ein function node (die das Kommo interpretiert und umsetzt) und als Abschluss das http OK.
Eine globale Varialble in einer function node setzt Du mit

Code: Alles auswählen

global.set(<name>,<wert>);
Das wäre "Vereinfachen" im Sinne von weniger Nodes aber das Interpretieren ist etwas aufwändiger.
Ansonsten google nach RESTful API Design z. B. hier: https://medium.com/hashmapinc/rest-good ... 1439796dc9

Gruß, Henning

tloeffel
Beiträge: 448
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Http request in Redmatic und Doorbird D2101V

Beitrag von tloeffel » 28.07.2019, 10:19

Hallo HenningK,

danke werde mich mal daran versuchen :-).

Cool ist auch das man sehen kann wer das gesendet hat. Somit kann ich überprüfen ob es wirklich die Doorbird war.
190728_Doorbird.PNG
190728_Doorbird.PNG (6.98 KiB) 6710 mal betrachtet
Lieben Gruß Thomas
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

Antworten

Zurück zu „RedMatic“