Используйте данные из выпадающего списка, чтобы установить значение в SNMP-set на Node-red - PullRequest
0 голосов
/ 23 сентября 2019

В Node-red я хотел бы использовать, например, значения из выпадающего списка для отправки в команду SNMP-set.Как я понимаю, узел snmp-set использует msg.varbinds для получения своих данных.Но как мне обратиться к значению, полученному из выпадающего списка во входных данных msg.varbinds, так как оно выглядит JSON для меня

Это то, что у меня есть в окне Varbinds.Я думал, что мне просто нужно сослаться на msg.payload, исходящий из выпадающего элемента, но это кажется слишком простым.

[ {
            "oid" : "1.3.6.1.4.1.5835.3.1.3.1.38.1.1",
            "type" : "OctetString",
            "value" : msg.payload
        }
    ]

Это кстати вывод из моего выпадающего списка в окне отладки.

9/23/2019, 8:13:04 PMnode: b4c9ef70.0f38d
msg : Object
object
payload: "14300000000"
socketid: "Xc-CPsZX-CouQVRAAAAA"
_msgid: "b77a7c3f.8645c"

Вот поток

[{"id":"fd51033f.82b34","type":"snmp set","z":"e5486a7.f6cf798","host":"192.168.0.35","community":"public","version":"1","varbinds":"[ {\n            \"oid\" : \"1.3.6.1.4.1.5835.3.1.3.1.38.1.1\",\n            \"type\" : \"OctetString\",\n            \"value\" : msg.payload\n        }\n    ]","timeout":5,"name":"set freq ","x":620,"y":1940,"wires":[]},{"id":"596c4ff0.67b7b","type":"ui_dropdown","z":"e5486a7.f6cf798","name":"","label":"","tooltip":"","place":"Select option","group":"ca614dce.5eeca","order":11,"width":0,"height":0,"passthru":true,"options":[{"label":"14200","value":"14200000000","type":"str"},{"label":"14300","value":"14300000000","type":"str"},{"label":"14400","value":"14400000000","type":"str"}],"payload":"","topic":"","x":340,"y":1940,"wires":[["fd51033f.82b34","b4c9ef70.0f38d"]]},{"id":"b4c9ef70.0f38d","type":"debug","z":"e5486a7.f6cf798","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":690,"y":2060,"wires":[]},{"id":"ca614dce.5eeca","type":"ui_group","z":"","name":"Modulator 5","tab":"fe640bc5.c66b48","order":4,"disp":true,"width":"6","collapse":false},{"id":"fe640bc5.c66b48","type":"ui_tab","z":"","name":"Modulators","icon":"rss_feed","order":5,"disabled":false,"hidden":false}]

1 Ответ

0 голосов
/ 25 сентября 2019

ОК, поэтому справочная информация боковой панели для узла набора SNMP содержит бит, которого вам не хватает:

msg.varbinds может содержать varbinds в виде массива объектов json, содержащих несколько oids, типов и значений.

Это означает, что вам нужно создать строку varbinds и сохранить ее в ключе msg.varbinds объекта сообщения, а затем передать его узлу установки SNMP.Самый простой способ сделать это, вероятно, с помощью функционального узла между ниспадающим узлом пользовательского интерфейса и узлом установки SNMP.

msg.varbinds = "[ {\n" +
        "\"oid\" : \"1.3.6.1.4.1.5835.3.1.3.1.38.1.1\",\n" +
        "\"type\" : \"OctetString\",\n" +
        "\"value\" : \"" + msg.payload + "\"\n"
    "}\n" + 
"]";

return msg;

В конфигурации узла множеств SNMP следует оставить пустыми varbinds.

...