@Niklas-Schoen Mit Node-Red ist es doch sehr einfach.
Du liest über einen iobroker in Node Dein Objekt aus - baust über einen Change Node die URL und übergibst diesem einem HTTP-Request Node - der auch eine Basic Authentication übergibt.
Das sind 3-4 Nodes je nachdem wie Du das triggern möchtest.
Ich mach Dir mal ein Beispiel - ich lese als Datenpunkt den String z. Bsp "microsoft" und hänge dann ".com" und den Rest für die URL an und übergebe das dem HTTP-Request Node.
Basic Authentication habe ich nichts angegeben aber das ist selbsterklärend in dem HTTP-Request Node.
Hier der Flow zum Testen:
[
{
"id": "7c137d0b.bd8124",
"type": "http request",
"z": "dce8fa20.2e93c8",
"name": "",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 1350,
"y": 320,
"wires": [
[
"f9dc7268.16b3b"
]
]
},
{
"id": "6c167017.42f4e",
"type": "ioBroker get",
"z": "dce8fa20.2e93c8",
"name": "test",
"topic": "0_userdata.0.test",
"attrname": "payload",
"payloadType": "value",
"x": 960,
"y": 320,
"wires": [
[
"88c1b523.772e08"
]
]
},
{
"id": "bcdaa5e0.3c0fb8",
"type": "inject",
"z": "dce8fa20.2e93c8",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "trigger",
"payloadType": "str",
"x": 810,
"y": 320,
"wires": [
[
"6c167017.42f4e"
]
]
},
{
"id": "88c1b523.772e08",
"type": "change",
"z": "dce8fa20.2e93c8",
"name": "",
"rules": [
{
"t": "set",
"p": "url",
"pt": "msg",
"to": "\"http://\" & payload & \".com\"",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1130,
"y": 320,
"wires": [
[
"67c5e032.4345e",
"7c137d0b.bd8124"
]
]
},
{
"id": "67c5e032.4345e",
"type": "debug",
"z": "dce8fa20.2e93c8",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "url",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1350,
"y": 260,
"wires": []
},
{
"id": "f9dc7268.16b3b",
"type": "debug",
"z": "dce8fa20.2e93c8",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1550,
"y": 320,
"wires": []
}
]
Hier ein Screenshot - wie gesagt die Basic Authentisierung musst Du nur in der Request Node anhacken und Credentials eingeben.
[image: 1609894908931-screen.png]
Die Ausgabe des letzten Debug Nodes zeigt Dir dann den Output der HTML Page.
Wenn Du keinen externen/manuellen Trigger brauchst - setzt Du anstelle des iobroker get und inject nodes einfache eine iobroker in node - und der ruft Dir die Seite bei jeder Aktualisierung/änderung des Objektes im iobroker auf.
Das Analysieren der HTML Daten/Codes, die von der Webpage zurückgeliefert werden - das ist dann das Parsen - da bin ich raus.
Um das evtl. bisschen praxisnäher zu machen - habe ich mal die Webseite dieses Threads zusammengestellt.
Ausserdem gibt es html parser node - da musst dann die Dich interessierenden Sections angeben und werden Dir als Array zurückgegeben.
Hier siehst DU also als URL diesen Thread hier - wobei genau dieser als Object im iobroker abgelegt ist. "40556/"String & Wert Parsen"
[image: 1609896637783-screen.png]
[image: 1609896846722-screen.png]
Im HTML Parser habe ich angegeben, dass ich alle title Sections haben möchte und dann siehst im Debug wie das extrahiert wird - oben drüber siehst den HTML Output. Aber wie gesagt da müssen Dir dann Leute ggf. helfen die Web programmierung mehr beherrschen.
Hier noch der Flow:
[
{
"id": "7c137d0b.bd8124",
"type": "http request",
"z": "dce8fa20.2e93c8",
"name": "",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"x": 1410,
"y": 280,
"wires": [
[
"f9dc7268.16b3b",
"f3944e9.d49e5b"
]
]
},
{
"id": "6c167017.42f4e",
"type": "ioBroker get",
"z": "dce8fa20.2e93c8",
"name": "test",
"topic": "0_userdata.0.test",
"attrname": "payload",
"payloadType": "value",
"x": 1030,
"y": 280,
"wires": [
[
"88c1b523.772e08"
]
]
},
{
"id": "bcdaa5e0.3c0fb8",
"type": "inject",
"z": "dce8fa20.2e93c8",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "trigger",
"payloadType": "str",
"x": 910,
"y": 280,
"wires": [
[
"6c167017.42f4e"
]
]
},
{
"id": "88c1b523.772e08",
"type": "change",
"z": "dce8fa20.2e93c8",
"name": "",
"rules": [
{
"t": "set",
"p": "url",
"pt": "msg",
"to": "\"https://forum.iobroker.net/topic/\" & payload",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1190,
"y": 280,
"wires": [
[
"67c5e032.4345e",
"7c137d0b.bd8124"
]
]
},
{
"id": "67c5e032.4345e",
"type": "debug",
"z": "dce8fa20.2e93c8",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "url",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1400,
"y": 220,
"wires": []
},
{
"id": "f9dc7268.16b3b",
"type": "debug",
"z": "dce8fa20.2e93c8",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1610,
"y": 220,
"wires": []
},
{
"id": "f3944e9.d49e5b",
"type": "html",
"z": "dce8fa20.2e93c8",
"name": "",
"property": "payload",
"outproperty": "payload",
"tag": "title",
"ret": "html",
"as": "single",
"x": 1590,
"y": 280,
"wires": [
[
"8e34c445.0d1158"
]
]
},
{
"id": "8e34c445.0d1158",
"type": "debug",
"z": "dce8fa20.2e93c8",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1830,
"y": 220,
"wires": []
}
]