mikejac / node-red-contrib-google-smarthome

A collection of Node-RED nodes to control your smart home devices via Google Assistant.
GNU General Public License v3.0
116 stars 36 forks source link

Not getting Brightness trait #482

Closed sonictruth closed 6 months ago

sonictruth commented 6 months ago

Hi,

I have a light device and the problem is that everything is beeing recived except brightness.

[
    {
        "id": "ca1cadc6bda39b3c",
        "type": "google-device",
        "z": "2cd2b24ad96a280c",
        "client": "8a0da43c032e1cc6",
        "name": "Light",
        "nicknames": "",
        "topic": "",
        "online": true,
        "room_hint": "",
        "device_type": "LIGHT",
        "trait_appselector": false,
        "trait_channel": false,
        "trait_inputselector": false,
        "trait_mediastate": false,
        "trait_onoff": true,
        "trait_transportcontrol": false,
        "trait_modes": false,
        "trait_volume": false,
        "trait_toggles": false,
        "trait_brightness": true,
        "trait_colorsetting": true,
        "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": "rgb",
        "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": false,
        "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": false,
        "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": false,
        "supports_network_upload_speedtest": false,
        "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": 190,
        "y": 440,
        "wires": [
            [
                "eb9e5111c21e645b",
                "506457041755f94e"
            ]
        ]
    },
    {
        "id": "8a0da43c032e1cc6",
        "type": "googlesmarthome-client",
        "name": "HOME",
        "enabledebug": true,
        "default_lang": "en",
        "usegooglelogin": false,
        "usehttpnoderoot": false,
        "port": "3001",
        "httppath": "ravalhome",
        "ssloffload": true,
        "local_scan_type": "",
        "local_scan_port": "",
        "localport": "",
        "accesstokenduration": "60",
        "reportinterval": "60",
        "request_sync_delay": "",
        "set_state_delay": ""
    }
]

How can I debug this ? Where can I see what is beeing recived from Google ?

Thanks.

Caprico85 commented 6 months ago

Hi,

you can enable debug output in the configuration (where you set up username, ports, etc.)

image

The output is logged into Node-RED's normal log file. Where that is depends on how Node-RED is set up. Could be a file in /var/log/ or readable using the journalctl command. For Docker it's docker logs <node-red-container>.

sonictruth commented 6 months ago

Thanks! I did enable it and seems that google never calls back (exec) when the brightness is changed from assistant. I did try to recreate the device but it's the same. Temperature and color works.

Caprico85 commented 6 months ago

I'll have a look at it.

What exactly are you doing? I guess you have a light with the aforementioned config. Are you trying to control it with voice commands or the app? Does Google give you the successful bling or a confirmation or does it give you an error message?

One thing you could try is injecting a brightness value. There is a known issue (#413) where Google does not display the brightness trait in the app correctly until you have sent a brightness value at least once. The exact value doesn't matter, it just seems that Google doesn't like undefined values. Maybe you are experiencing a similar problem.

Place an inject node connected to the input of the device. Have it set a brightness value and set it to fire on restart.

image

sonictruth commented 6 months ago

Yes, it works now. What I was trying to do is to control the brightness from the Google Home app. The light temperature worked, but the brightness did not. After injecting that value at the start, it works.

Thank you so much!