NEWS
JSON an tr-069 command übergeben
-
Hi,
ich würde gerne den 5GHz WLAN Channel der FritzBox abfragen und ändern falls dieser nicht den gewünschten Wert hat. Im Moment scheitert es daran, Werte an die FritzBox über den tr-069 Adapter per JSON Command aus Red-Node zu senden. Red-Node übergibt zwar den command, dieser wird aber scheinbar nicht an die FritzBox übermittelt.
Wenn ich dann manuell in das command Feld gehe und Wert setzen ausführe, bekomme über commandResult das Ergebnis.Habe ich da was vergessen?
So setze ich den Wert:
{ "id": "3054ca10.a7b9e6", "type": "tab", "label": "Flow 1", "disabled": false, "info": "" }, { "id": "955c676a.93fea8", "type": "ioBroker out", "z": "3054ca10.a7b9e6", "name": "Request channel info", "topic": "tr-064.1.states.command", "ack": "true", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 700, "y": 360, "wires": [] }, { "id": "c04328ca.d76ae8", "type": "inject", "z": "3054ca10.a7b9e6", "name": "GetChannelInfo", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"service\":\"urn:dslforum-org:service:WLANConfiguration:2\",\"action\":\"GetChannelInfo\",\"params\":{}}", "payloadType": "json", "x": 280, "y": 340, "wires": [ [ "bac9031c.48509" ] ] }, { "id": "bac9031c.48509", "type": "json", "z": "3054ca10.a7b9e6", "name": "", "property": "payload", "action": "str", "pretty": true, "x": 490, "y": 260, "wires": [ [ "955c676a.93fea8" ] ] }, { "id": "85163997.242b48", "type": "inject", "z": "3054ca10.a7b9e6", "name": "SetChannel", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"service\":\"urn:dslforum-org:service:WLANConfiguration:2\",\"action\":\"SetChannel\",\"params\":{\"NewChannel\":\"48\"}}", "payloadType": "json", "x": 370, "y": 420, "wires": [ [ "bac9031c.48509" ] ] } ]
-
@kla960 Hi, dein Code lässt sich leider nicht impotieren.
-
@frankyboy73 Fehlt die eckige Klammer am Anfang.
-
gelöscht.
-
Im Prinzip müsste es eigentlich funktionieren, wenn Du statt value - ein command in Deiner iobroker out Node verwendest-
Inhaltlich habe ich mir das Kommando nicht angeschaut.
-
@mickym sagte in JSON an tr-069 command übergeben:
Im Prinzip müsste es eigentlich funktionieren, wenn Du statt value - ein command in Deiner iobroker out Node verwendest-
Habe es wohl hinbekommen. Und ja command wird jetzt verwendet. Der Switch ist noch nicht so schön. Ggf. habt Ihr ja eine bessere Idee
Jetzt wird immer um 5:00 einmal der Kanal geprüft und wenn nicht 48 wieder auf 48 gesetzt.
Und noch der Code (Hoffentlich ohne Fehler kopiert):
[ { "id": "3054ca10.a7b9e6", "type": "tab", "label": "WLAN 5GHz", "disabled": false, "info": "" }, { "id": "955c676a.93fea8", "type": "ioBroker out", "z": "3054ca10.a7b9e6", "name": "Request channel info", "topic": "tr-064.1.states.command", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 960, "y": 360, "wires": [] }, { "id": "c04328ca.d76ae8", "type": "inject", "z": "3054ca10.a7b9e6", "name": "GetChannelInfo", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "00 05 * * *", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"service\":\"urn:dslforum-org:service:WLANConfiguration:2\",\"action\":\"GetChannelInfo\",\"params\":{}}", "payloadType": "json", "x": 290, "y": 340, "wires": [ [ "bac9031c.48509" ] ] }, { "id": "bac9031c.48509", "type": "json", "z": "3054ca10.a7b9e6", "name": "", "property": "payload", "action": "str", "pretty": true, "x": 490, "y": 360, "wires": [ [ "955c676a.93fea8" ] ] }, { "id": "85163997.242b48", "type": "inject", "z": "3054ca10.a7b9e6", "name": "SetChannel", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"service\":\"urn:dslforum-org:service:WLANConfiguration:2\",\"action\":\"SetChannel\",\"params\":{\"NewChannel\":\"48\"}}", "payloadType": "json", "x": 270, "y": 440, "wires": [ [ "bac9031c.48509" ] ] }, { "id": "7e96da1.62c4424", "type": "ioBroker in", "z": "3054ca10.a7b9e6", "name": "commandResult", "topic": "tr-064.1.states.commandResult", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "fireOnStart": "false", "x": 260, "y": 140, "wires": [ [ "14ef63f9.2cb11c" ] ] }, { "id": "14ef63f9.2cb11c", "type": "switch", "z": "3054ca10.a7b9e6", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "cont", "v": "\"48\"", "vt": "str" }, { "t": "eq", "v": "{}", "vt": "str" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 450, "y": 140, "wires": [ [], [], [ "c6c6dbfb.8e31c8" ] ] }, { "id": "c6c6dbfb.8e31c8", "type": "function", "z": "3054ca10.a7b9e6", "name": "Create JSON", "func": "var data={\"service\": \"urn:dslforum-org:service:WLANConfiguration:2\",\n\"action\": \"SetChannel\",\n\"params\": {\"NewChannel\": \"48\"}};\nnode.log(typeof data);\nmsg.payload=JSON.stringify(data);\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 670, "y": 260, "wires": [ [ "955c676a.93fea8" ] ] } ]
-
@kla960 Ehrlich gesagt verstehe ich nicht - wieso man eine function Node für sowas braucht und eine Switch Node - von den man 2 Ausgänge nicht braucht.
Wenn der Kanal nicht 48 ist, dann soll doch der Flow nichts machen.
-
@mickym sagte in JSON an tr-069 command übergeben:
@kla960 Ehrlich gesagt verstehe ich nicht - wieso man eine function Node für sowas braucht und eine Switch Node - von den man 2 Ausgänge nicht braucht.
Wenn der Kanal nicht 48 ist, dann soll doch der Flow nichts machen.hast du mal den Code zu dem Bild?
-
@kla960 hängt doch unten dran - Du kannst noch filtern, dass nur die Ergebnisse verarbeitet werden, der NewChannel als Eigenschaft hat.
Falls doch nur prüfen willst, dass das commandResult genau das Objekt enthält, was Du sonst zurück bekommst: Also
dann kannst Du noch folgende switch Node als Filter vorne dran hängen:
hier nochmal der komplette Flow:
-
@kla960 sagte in JSON an tr-069 command übergeben:
hast du mal den Code zu dem Bild?
Klick mal auf "Spoiler" in mickym Post
-
@mickym sagte in JSON an tr-069 command übergeben:
dann kannst Du noch folgende switch Node als Filter vorne dran hängen:
Ja, super danke. NewPossibleChannels muss man aber nicht zusätzlich prüfen. Ansonsten habe ich das jetzt so laufen.
-
@kla960 trotzdem mal eine blöde Frage: Wenn Du kein Autokanal eingestellt hast, dann bleibt doch der Kanal fix eingestellt. Warum muss man das prüfen und manuell wieder umstellen?
-
@mickym Gibt keine blöden Fragen.
Ja, das ist bei mir Fix eingetragen. Kein Autokanal. Dennoch stellt sich immer mal wieder der Kannal um. Und sobald ein Kanal ab 52 aufwärts eingestellt ist, funktionieren einige Geräte nicht mehr wie sie sollen.Amazon Echos können kein Multiroom-Audio mehr. FTV Sticks verbinden sich nicht usw.
AVM Support sagt: "Ja, es gibt trotz fest eingestelltem Kanal umstände die einen automatischen Wechsel herbeiführen."
Also: Gemotze der Familie ertragen, wenn wieder was nicht geht
, oder mit dem iobroker was dagegen tun.
-
Den zweiten Switch kann man noch eliminieren, indem man den ersten wie folgt anpasst:
$exists(payload.NewChannel) and payload.NewChannel in ["52","56","60","64","100","104","108","112","116","120","124","128","132","136","140"]
Wobei ich jetzt die Kanäle von 36 - 48 zulasse.
-
@kla960 sagte in JSON an tr-069 command übergeben:
@mickym Gibt keine blöden Fragen.
Ja, das ist bei mir Fix eingetragen. Kein Autokanal. Dennoch stellt sich immer mal wieder der Kannal um. Und sobald ein Kanal ab 52 aufwärts eingestellt ist, funktionieren einige Geräte nicht mehr wie sie sollen.Amazon Echos können kein Multiroom-Audio mehr. FTV Sticks verbinden sich nicht usw.
AVM Support sagt: "Ja, es gibt trotz fest eingestelltem Kanal umstände die einen automatischen Wechsel herbeiführen."
Also: Gemotze der Familie ertragen, wenn wieder was nicht geht
, oder mit dem iobroker was dagegen tun.
Ok - das ist ja mal eine gute Info. Das 5 GHz Band hat wahrscheinlich das Problem mit der Radarkollision wahrscheinlich das Problem. Aber wie ich sehe, bist Du ja nun am Feintunen - so dass Du Dir glaub jetzt gut selbst zu helfen weißt.