node-red-contrib-google-smarthome
Version:
Lets you control Node-Red via Google Assistant or the Google Home App
378 lines (377 loc) • 13 kB
JSON
[
{
"id": "5c6f1fc4968d51be",
"type": "function",
"z": "1797c1fc2aa93477",
"name": "Return Result",
"func": "let msg1 = {};\nlet msg2 = {};\nlet msg3 = {};\n\nlet downloadSpeed = Number(parseFloat(msg.payload.download.bandwidth / 125000).toFixed(2));\nlet uploadSpeed = Number(parseFloat(msg.payload.upload.bandwidth / 125000).toFixed(2));\n\nlet timestamp = (new Date(Date.now()).getTime()) / 1000;\n\nmsg1.topic = \"NetworkControl\";\nmsg1.payload =\n{\n \"status\": \"SUCCESS\",\n \"networkDownloadSpeedMbps\": downloadSpeed,\n \"networkUploadSpeedMbps\": uploadSpeed,\n \"followUpToken\": flow.get (\"networkTestRouterToken\")\n};\n\nmsg2.topic = \"networkSpeedTestInProgress\";\nmsg2.payload = false;\n\nmsg3.payload = \n{ \n \"lastNetworkDownloadSpeedTest\" : {\n \"downloadSpeedMbps\": downloadSpeed,\n \"unixTimestampSec\": timestamp,\n \"status\": \"SUCCESS\" \n },\n \n \"lastNetworkUploadSpeedTest\" : {\n \"uploadSpeedMbps\": uploadSpeed, \n \"unixTimestampSec\": timestamp, \n \"status\": \"SUCCESS\" \n }\n} \n\nreturn [[msg1,msg2,msg3]];",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 420,
"y": 4880,
"wires": [
[
"c66e2e522e6b8821"
]
]
},
{
"id": "9e9726329eed8743",
"type": "function",
"z": "1797c1fc2aa93477",
"name": "Start Test",
"func": "let msg1 = {};\nlet msg2 = {};\n\nflow.set(\"networkTestRouterToken\", msg.params.followUpToken);\n\nmsg1.topic = msg.topic;\nmsg1.payload = \"on\";\n\nmsg2.topic = \"networkSpeedTestInProgress\";\nmsg2.payload = true;\n \nreturn [msg1,msg2];",
"outputs": 2,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 860,
"y": 4880,
"wires": [
[
"97a8c4139c8286e4"
],
[
"c66e2e522e6b8821"
]
]
},
{
"id": "c66e2e522e6b8821",
"type": "google-device",
"z": "1797c1fc2aa93477",
"client": "",
"name": "Testrouter",
"nicknames": "",
"topic": "speedtest/cmd",
"online": true,
"room_hint": "Test Room",
"device_type": "NETWORK",
"trait_appselector": false,
"trait_channel": false,
"trait_inputselector": false,
"trait_mediastate": false,
"trait_onoff": false,
"trait_transportcontrol": false,
"trait_modes": false,
"trait_volume": false,
"trait_toggles": false,
"trait_brightness": false,
"trait_colorsetting": false,
"appselector_file": "applications_<id>.json",
"appselector_type": "str",
"channel_file": "channels_<id>.json",
"channel_type": "str",
"inputselector_file": "inputs_<id>.json",
"inputselector_type": "str",
"command_only_input_selector": false,
"ordered_inputs": false,
"support_activity_state": false,
"support_playback_state": false,
"command_query_onoff": "",
"supported_commands": [
"CAPTION_CONTROL",
"NEXT",
"PAUSE",
"PREVIOUS",
"RESUME",
"SEEK_RELATIVE",
"SEEK_TO_POSITION",
"SET_REPEAT",
"SHUFFLE",
"STOP"
],
"volume_max_level": 100,
"volume_can_mute_and_unmute": true,
"volume_default_percentage": 40,
"level_step_size": 1,
"command_only_volume": false,
"command_only_brightness": false,
"command_only_colorsetting": false,
"color_model": "temp",
"temperature_min_k": 2000,
"temperature_max_k": 9000,
"modes_file": "modes_<id>.json",
"modes_type": "str",
"command_query_modes": "",
"toggles_file": "toggles_<id>.json",
"toggles_type": "str",
"command_query_toggles": "",
"trait_camerastream": false,
"hls": "",
"hls_app_id": "",
"dash": "",
"dash_app_id": "",
"smooth_stream": "",
"smooth_stream_app_id": "",
"progressive_mp4": "",
"progressive_mp4_app_id": "",
"webrtc": "",
"webrtc_offer": "",
"webrtc_ice_servers": "",
"webrtc_ice_servers_type": "str",
"auth_token": "",
"topic_filter": false,
"passthru": false,
"persistent_state": true,
"trait_scene": false,
"scene_reversible": true,
"trait_timer": false,
"trait_temperaturesetting": false,
"max_timer_limit_sec": 86400,
"command_only_timer": false,
"available_thermostat_modes": [
"off",
"heat",
"cool",
"on",
"heatcool",
"auto",
"fan-only",
"purifier",
"eco",
"dry"
],
"min_threshold_celsius": 0,
"max_threshold_celsius": 40,
"thermostat_temperature_unit": "C",
"buffer_range_celsius": 2,
"command_query_temperaturesetting": "",
"trait_temperaturecontrol": false,
"tc_min_threshold_celsius": 0,
"tc_max_threshold_celsius": 40,
"tc_temperature_step_celsius": 1,
"tc_temperature_unit_for_ux": "C",
"tc_command_query_temperaturecontrol": "",
"trait_humiditysetting": false,
"min_percent": 0,
"max_percent": 100,
"command_query_humiditysetting": "",
"trait_dock": false,
"trait_locator": false,
"trait_lockunlock": false,
"trait_reboot": false,
"trait_openclose": false,
"discrete_only_openclose": false,
"open_direction": [],
"command_query_openclose": "",
"trait_startstop": false,
"pausable": false,
"available_zones": [],
"trait_runcycle": false,
"trait_softwareupdate": false,
"trait_rotation": false,
"supports_degrees": true,
"supports_percent": true,
"rotation_degrees_min": 0,
"rotation_degrees_max": 360,
"supports_continuous_rotation": false,
"command_only_rotation": false,
"trait_lighteffects": false,
"default_sleep_duration": 1800,
"default_wake_duration": 1800,
"supported_effects": [
"colorLoop",
"sleep",
"wake"
],
"trait_statusreport": false,
"trait_cook": false,
"supported_cooking_modes": [],
"food_presets_file": "foodPresets_<id>.json",
"food_presets_type": "str",
"trait_fanspeed": false,
"reversible": false,
"supports_fan_speed_percent": false,
"fan_speeds_ordered": false,
"command_only_fanspeed": false,
"available_fan_speeds_file": "availableFanSpeeds_<id>.json",
"available_fan_speeds_type": "str",
"trait_sensorstate": false,
"sensor_states_supported": [],
"arm_levels_ordered": false,
"trait_fill": false,
"available_fill_levels_file": "availableFillLevels_<id>.json",
"available_fill_levels_type": "str",
"supports_fill_percent": false,
"ordered_fill_levels": true,
"trait_armdisarm": false,
"available_arm_levels_file": "availableArmLevels_<id>.json",
"available_arm_levels_type": "str",
"trait_energystorage": false,
"is_rechargeable": false,
"query_only_energy_storage": false,
"energy_storage_distance_unit_for_ux": "",
"trait_dispense": false,
"supported_dispense_items_file": "supportedDispenseItems_<id>.json",
"supported_dispense_items_type": "str",
"supported_dispense_presets_file": "supportedDispensePresets_<id>.json",
"supported_dispense_presets_type": "str",
"trait_networkcontrol": true,
"supports_enabling_guest_network": false,
"supports_disabling_guest_network": false,
"supports_getting_guest_network_password": false,
"network_profiles": [],
"supports_enabling_network_profile": false,
"supports_disabling_network_profile": false,
"supports_network_download_speedtest": true,
"supports_network_upload_speedtest": true,
"trait_objectdetection": false,
"show_trait": "selected",
"advanced_settings": true,
"ct_appselector": "",
"ct_armdisarm": "",
"ct_brightness": "",
"ct_camerastream": "",
"ct_channel": "",
"ct_colorsetting": "",
"ct_cook": "",
"ct_dispense": "",
"ct_dock": "",
"ct_energystorage": "",
"ct_fanspeed": "",
"ct_fill": "",
"ct_humiditysetting": "",
"ct_inputselector": "",
"ct_lighteffects": "",
"ct_locator": "",
"ct_lockunlock": "",
"ct_mediastate": "",
"ct_modes": "",
"ct_networkcontrol": "",
"ct_objectdetection": "",
"ct_onoff": "",
"ct_openclose": "",
"ct_reboot": "",
"ct_rotation": "",
"ct_runcycle": "",
"ct_scene": "",
"ct_sensorstate": "",
"ct_softwareupdate": "",
"ct_startstop": "",
"ct_statusreport": "",
"ct_temperaturecontrol": "",
"ct_temperaturesetting": "",
"ct_timer": "",
"ct_toggles": "",
"ct_transportcontrol": "",
"ct_volume": "",
"pin_appselector": "",
"pin_armdisarm": "",
"pin_brightness": "",
"pin_camerastream": "",
"pin_channel": "",
"pin_colorsetting": "",
"pin_cook": "",
"pin_dispense": "",
"pin_dock": "",
"pin_energystorage": "",
"pin_fanspeed": "",
"pin_fill": "",
"pin_humiditysetting": "",
"pin_inputselector": "",
"pin_lighteffects": "",
"pin_locator": "",
"pin_lockunlock": "",
"pin_mediastate": "",
"pin_modes": "",
"pin_networkcontrol": "",
"pin_objectdetection": "",
"pin_onoff": "",
"pin_openclose": "",
"pin_reboot": "",
"pin_rotation": "",
"pin_runcycle": "",
"pin_scene": "",
"pin_sensorstate": "",
"pin_softwareupdate": "",
"pin_startstop": "",
"pin_statusreport": "",
"pin_temperaturecontrol": "",
"pin_temperaturesetting": "",
"pin_timer": "",
"pin_toggles": "",
"pin_transportcontrol": "",
"pin_volume": "",
"x": 650,
"y": 4880,
"wires": [
[
"9e9726329eed8743"
]
]
},
{
"id": "18500ff8b9360845",
"type": "comment",
"z": "1797c1fc2aa93477",
"name": "READ ME",
"info": "In this example it is assumed that the Network\nSpeed Test from OOKLA will be used.\nThis is the same Network Speed Test, \nthat is used by the Node-RED contrib node.\nhttps://flows.nodered.org/node/node-red-contrib-speedtest\n\nIt will present both for the download and upload speed\nthe bandwidth in bytes per second.\nSee: https://github.com/ddsol/speedtest.net#data",
"x": 400,
"y": 4820,
"wires": []
},
{
"id": "ef67f96cb30c15fc",
"type": "comment",
"z": "1797c1fc2aa93477",
"name": "READ ME",
"info": "It is assumed that the command to **start** the\nNetwork Speed Test will be a **msg.payload = \"on\"**,\nwith a **msg.topic = \"speedtest/cmd**\".",
"x": 860,
"y": 4820,
"wires": []
},
{
"id": "97a8c4139c8286e4",
"type": "debug",
"z": "1797c1fc2aa93477",
"name": "Output to Network Test",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1090,
"y": 4880,
"wires": []
},
{
"id": "ebde3e935514357e",
"type": "inject",
"z": "1797c1fc2aa93477",
"name": "Test Results",
"props": [
{
"p": "payload.download.bandwidth",
"v": "24985069",
"vt": "num"
},
{
"p": "payload.upload.bandwidth",
"v": "26297282",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 210,
"y": 4880,
"wires": [
[
"5c6f1fc4968d51be"
]
]
}
]