pyalarmdotcom / alarmdotcom

Custom component to allow Home Assistant to interface with Alarm.com
MIT License
115 stars 35 forks source link

Honeywell T6 Pro z-wave Thermostat #144

Closed ade5hmukh closed 10 months ago

ade5hmukh commented 2 years ago

The alarmdotcom maintainers don't have direct access to all Alarm.com devices. We need your help to support new devices.

Please open one issue per device.

Which device would you like us to support? Provide the device name and a link to a page with device details.

Honeywell T6 PRO Z-WAVE THERMOSTAT 
https://www.honeywellhome.com/us/en/products/air/thermostats/programmable-thermostats/t6-pro-z-wave-thermostat-th6320zw2003-u/

Where does this device appear in the Alarm.com mobile app? Thermostats What types of actions does this device support? E.g.: Garage doors support opening and closing. Alarm systems support arming (home, away, and night modes) and disarming.

Mode: Off, heat, cool 
Schedule: On/Off when Mode is set to heat or cool. 
Fan: Auto, On for 1 hr, 3 hrs, 24hrs
Temp: up/down 

Which provider do you use? E.g.: Alarm Net, ADT, Surety Home, etc. Safe Haven Security Include pyalarmdotcomajax Server Output This is an important step. It's helpful for us to see how this device is represented on the Alarm.com server. We have a tool for dumping this data via the command line.

  1. Install Python >= 3.9.
  2. Install pyalarmdotcomajax via pip: pip install pyalarmdotcomajax.
  3. Run adc -u YOUR_USERNAME -p YOUR_PASSWORD -c YOUR_2FA_COOKIE -vx
  4. The above command dumps server data for all devices that are known to ADC developers, including a few devices that are currently unsupported. Heads Up! This command may leak sensitive information. It does not dump your email address, address, or any other account information, but it may output coordinates from GPS devices (like an Alarm.com car sensor) and names of family members (e.g.: Michael's Room Window Sensor). Be sure to review the data before posting to scrub anything that you're not comfortable posting online.
Provider: Safe Haven Security
Logged in as: XXX (1234)

====[ Camera ]====

{"data": [{"id": "ID-XXXX-2048", "type": "video/camera", "attributes": {"supportsSnapShot": false, "canTakeSnapshot": false, "supportsRecording": true, "canRequestRecording": false, "canUploadClips": true, "hasSvrSchedule": false, "excludedFromVisualVerification": false, "liveViewHdToggleEnabled": true, "supports4MPStreaming": false, "supportsSiren": false, "canSirenBeActivatedByLogin": false, "isSirenEnabledInSettings": false, "isSirenPlaying": false, "canPanTilt": false, "maxPanTiltLevel": 0, "canZoom": false, "maxZoomLevel": 0, "minZoomLevelForPanTilt": 0, "panTiltPresets": [], "preferredPanTiltPreset": null, "isUnreachable": false, "lastSuccessfulSupervision": null, "canStreamToPanel": true, "canChangeStreamToPanel": true, "canStreamToPanelBeEnabled": true, "isStreamToPanelEnabled": true, "doorbellChimeType": 0, "isBatteryCameraAndUsingGatewayForBackendAccess": false, "supportsVmdSchedules": false, "deviceImagePath": "/web/webimages/camera_images/Skybell-slimline_64px.png?v=2", "deviceModel": "ADC-VDB105", "macAddress": "D0C19324F960", "firmwareVersion": "3067", "publicIp": null, "privateIp": null, "port": null, "httpsPort": null, "shouldUseEntireImageForSnapshot": false, "hasDdnsed": true, "usageProtocolMapping": {"18": 3, "9": 1, "10": 1, "6": 1}, "isVirtualCamera": false, "isVarifocalCamera": false, "hasSdRecordingSchedule": false, "supportsLiveView": false, "forcedAspectRatio": null, "canBeSaved": false, "canChangeDescription": false, "description": "Front Door", "deviceModelId": 0, "canConfirmStateChange": false, "canReceiveCommands": false, "remoteCommandsEnabled": false, "hasPermissionToChangeState": false, "deviceIcon": {"icon": 27}, "batteryLevelNull": null, "lowBattery": false, "criticalBattery": false}, "relationships": {"videoEvents": {"data": [], "meta": {"count": "0"}}, "videoSource": {"data": {"id": "ID-XXXX-2048", "type": "video/liveVideoSource"}}, "videoSourceHd": {"data": {"id": "ID-XXXX-2048", "type": "video/liveVideoHighestResSource"}}, "svrVideoSource": {"data": {"id": "ID-XXXX-2048", "type": "video/videoSources/svrVideoSource"}}, "svrScrubberThumbnailEndpoint": {"data": {"id": "ID-XXXX-2048", "type": "video/svrThumbnailEndpoint"}}, "cameraSiren": {"data": null}, "snapshot": {"data": {"id": "ID-XXXX-2048", "type": "video/snapshot"}}, "privacyZonesSetting": {"data": null}, "system": {"data": {"id": "8838516", "type": "systems/system"}}, "stateInfo": {"data": null}}}], "included": [], "meta": {"transformer_version": "1.1"}}

====[ Garage Door ]====

{"data": [], "included": [], "meta": {"transformer_version": "1.1"}}

====[ Image Sensor ]====

{"included": [], "errors": [{"status": "423", "detail": "You do not have permission to view images.", "code": 423}], "meta": {"transformer_version": "1.1"}}

====[ Light ]====

{"data": [{"id": "ID-XXXX-1203", "type": "devices/light", "attributes": {"state": 3, "desiredState": 3, "isDimmer": false, "isFavorite": false, "lightLevel": 100, "stateTrackingEnabled": true, "shouldShowFavoritesToggle": false, "canEnableRemoteCommands": true, "canEnableStateTracking": false, "supportsRGBColorControl": false, "supportsWhiteLightColorControl": false, "percentWarmth": 0, "lightColorFormat": 0, "hexColor": null, "shouldUpdateMultiLevelState": false, "managedDeviceType": 6, "canAccessWebSettings": true, "webSettings": 1017, "hasState": true, "canBeRenamed": true, "canBeDeleted": false, "canAccessAppSettings": false, "canAccessTroubleshootingWizard": false, "troubleshootingWizard": null, "canBeLinkedToVideoDevice": false, "videoDeviceLinkDeviceIds": [], "macAddress": "", "manufacturer": "Cooper Wiring Devices", "isOAuth": false, "isZWave": true, "supportsCommandClassBasic": false, "isMalfunctioning": false, "canBeSaved": true, "canChangeDescription": true, "description": "porch light", "deviceModelId": 2269, "canConfirmStateChange": true, "canReceiveCommands": true, "remoteCommandsEnabled": true, "hasPermissionToChangeState": true, "deviceIcon": {"icon": 319}, "batteryLevelNull": null, "lowBattery": false, "criticalBattery": false}, "relationships": {"lightGroups": {"data": [], "meta": {"count": "0"}}, "system": {"data": {"id": "8838516", "type": "systems/system"}}, "stateInfo": {"data": {"id": "ID-XXXX-1203-2", "type": "devices/state-info"}}}}], "included": [], "meta": {"transformer_version": "1.1"}}

====[ Lock ]====

{"data": [{"id": "ID-XXXX-1201", "type": "devices/lock", "attributes": {"state": 1, "desiredState": 1, "maxUserCodeLength": 8, "supportsScheduledUserCodes": true, "supportsTemporaryUserCodes": true, "supportsLatchControl": false, "canEnableRemoteCommands": false, "managedDeviceType": 7, "canBeRenamed": true, "hasState": true, "availableTemporaryAccessCodes": 0, "totalTemporaryAccessCodes": 0, "canBeDeleted": false, "canAccessWebSettings": false, "canAccessAppSettings": false, "webSettings": 1001, "canAccessTroubleshootingWizard": false, "troubleshootingWizard": null, "canBeLinkedToVideoDevice": true, "videoDeviceLinkDeviceIds": [], "macAddress": "", "manufacturer": "Kwikset", "isOAuth": false, "isZWave": true, "supportsCommandClassBasic": false, "isMalfunctioning": false, "canBeSaved": true, "canChangeDescription": true, "description": "Front Door", "deviceModelId": 3493, "canConfirmStateChange": true, "canReceiveCommands": true, "remoteCommandsEnabled": true, "hasPermissionToChangeState": true, "deviceIcon": {"icon": 28}, "batteryLevelNull": 60, "lowBattery": false, "criticalBattery": false}, "relationships": {"system": {"data": {"id": "8838516", "type": "systems/system"}}, "stateInfo": {"data": {"id": "ID-XXXX-1201-2", "type": "devices/state-info"}}}}], "included": [], "meta": {"transformer_version": "1.1"}}

====[ Partition ]====

{"included": [], "errors": [{"status": "423", "detail": "You do not have permissions for this device type", "code": 423}], "meta": {"transformer_version": "1.1"}}

====[ Sensor ]====

{"data": [{"id": "ID-XXXX-4", "type": "devices/sensor", "attributes": {"deviceType": 1, "openClosedStatus": 2, "state": 0, "isFlexIO": false, "deviceRole": 0, "displayStateText": "Not Monitored", "isMonitoringEnabled": false, "sensorNamingFormat": 3, "supportsBypass": false, "supportsImmediateBypass": true, "isBypassed": false, "managedDeviceType": 11, "hasState": true, "canBeRenamed": true, "canBeDeleted": false, "canAccessWebSettings": true, "canAccessAppSettings": false, "webSettings": 400, "canAccessTroubleshootingWizard": false, "troubleshootingWizard": null, "canBeLinkedToVideoDevice": true, "videoDeviceLinkDeviceIds": [], "macAddress": "", "manufacturer": "", "isOAuth": false, "isZWave": false, "supportsCommandClassBasic": false, "isMalfunctioning": false, "canBeSaved": true, "canChangeDescription": true, "description": "Garage Door", "deviceModelId": 110, "canConfirmStateChange": true, "canReceiveCommands": false, "remoteCommandsEnabled": true, "hasPermissionToChangeState": true, "deviceIcon": {"icon": 317}, "batteryLevelNull": null, "lowBattery": false, "criticalBattery": false}, "relationships": {"system": {"data": {"id": "8838516", "type": "systems/system"}}, "stateInfo": {"data": null}}}, {"id": "ID-XXXX-5259", "type": "devices/sensor", "attributes": {"deviceType": 69, "openClosedStatus": 2, "state": 1, "isFlexIO": false, "deviceRole": 0, "displayStateText": "Closed", "isMonitoringEnabled": false, "sensorNamingFormat": 3, "supportsBypass": false, "supportsImmediateBypass": false, "isBypassed": false, "managedDeviceType": 11, "hasState": true, "canBeRenamed": true, "canBeDeleted": false, "canAccessWebSettings": true, "canAccessAppSettings": false, "webSettings": 400, "canAccessTroubleshootingWizard": false, "troubleshootingWizard": null, "canBeLinkedToVideoDevice": false, "videoDeviceLinkDeviceIds": [], "macAddress": "", "manufacturer": "", "isOAuth": false, "isZWave": false, "supportsCommandClassBasic": false, "isMalfunctioning": false, "canBeSaved": true, "canChangeDescription": true, "description": "XXX", "deviceModelId": 821, "canConfirmStateChange": true, "canReceiveCommands": false, "remoteCommandsEnabled": true, "hasPermissionToChangeState": true, "deviceIcon": {"icon": 317}, "batteryLevelNull": null, "lowBattery": false, "criticalBattery": false}, "relationships": {"system": {"data": {"id": "8838516", "type": "systems/system"}}, "stateInfo": {"data": null}}}, {"id": "ID-XXXX-229", "type": "devices/sensor", "attributes": {"deviceType": 68, "openClosedStatus": 2, "state": 1, "isFlexIO": false, "deviceRole": 0, "displayStateText": "Idle", "isMonitoringEnabled": false, "sensorNamingFormat": 3, "supportsBypass": false, "supportsImmediateBypass": false, "isBypassed": false, "managedDeviceType": 11, "hasState": true, "canBeRenamed": false, "canBeDeleted": false, "canAccessWebSettings": true, "canAccessAppSettings": false, "webSettings": 400, "canAccessTroubleshootingWizard": false, "troubleshootingWizard": null, "canBeLinkedToVideoDevice": false, "videoDeviceLinkDeviceIds": [], "macAddress": "", "manufacturer": "", "isOAuth": false, "isZWave": false, "supportsCommandClassBasic": false, "isMalfunctioning": false, "canBeSaved": true, "canChangeDescription": true, "description": "Panel Camera", "deviceModelId": 818, "canConfirmStateChange": true, "canReceiveCommands": false, "remoteCommandsEnabled": true, "hasPermissionToChangeState": true, "deviceIcon": {"icon": 317}, "batteryLevelNull": null, "lowBattery": false, "criticalBattery": false}, "relationships": {"system": {"data": {"id": "8838516", "type": "systems/system"}}, "stateInfo": {"data": null}}}], "included": [], "meta": {"transformer_version": "1.1"}}

====[ System ]====

{"data": [{"id": 8838516, "type": "systems/system", "attributes": {"description": "XXX's Home", "hasSnapShotCameras": false, "supportsSecureArming": false, "remainingImageQuota": 0, "systemGroupName": "", "unitId": ID-XXXX, "accessControlCurrentSystemMode": 0, "isInPartialLockdown": false, "icon": "property-single"}, "relationships": {"partitions": {"data": [], "meta": {"count": "0"}}, "locks": {"data": [{"id": "ID-XXXX-1201", "type": "devices/lock"}], "meta": {"count": "1"}}, "accessControlAccessPointDevices": {"data": [], "meta": {"count": "0"}}, "cameras": {"data": [{"id": "ID-XXXX-2048", "type": "video/camera"}], "meta": {"count": "1"}}, "sdCardCameras": {"data": [], "meta": {"count": "0"}}, "garageDoors": {"data": [], "meta": {"count": "0"}}, "waterValves": {"data": [], "meta": {"count": "0"}}, "scenes": {"data": [{"id": "17713824", "type": "automation/scene"}, {"id": "17713825", "type": "automation/scene"}, {"id": "17713826", "type": "automation/scene"}, {"id": "17713827", "type": "automation/scene"}], "meta": {"count": "4"}}, "sensors": {"data": [{"id": "ID-XXXX-4", "type": "devices/sensor"}, {"id": "ID-XXXX-5259", "type": "devices/sensor"}, {"id": "ID-XXXX-229", "type": "devices/sensor"}], "meta": {"count": "3"}}, "waterSensors": {"data": [], "meta": {"count": "0"}}, "sumpPumps": {"data": [], "meta": {"count": "0"}}, "waterMeters": {"data": [], "meta": {"count": "0"}}, "lights": {"data": [{"id": "ID-XXXX-1203", "type": "devices/light"}], "meta": {"count": "1"}}, "x10Lights": {"data": [], "meta": {"count": "0"}}, "smartChimeDevices": {"data": [], "meta": {"count": "0"}}, "thermostats": {"data": [{"id": "ID-XXXX-1202", "type": "devices/thermostat"}], "meta": {"count": "1"}}, "remoteTemperatureSensors": {"data": [], "meta": {"count": "0"}}, "commercialTemperatureSensors": {"data": [], "meta": {"count": "0"}}, "valveSwitches": {"data": [], "meta": {"count": "0"}}, "boilerControlSystem": {"data": null}, "geoDevices": {"data": [{"id": "ID-XXXX-2200", "type": "geolocation/geo-device"}, {"id": "ID-XXXX-2201", "type": "geolocation/geo-device"}], "meta": {"count": "2"}}, "fences": {"data": [{"id": "1422903", "type": "geolocation/fence"}], "meta": {"count": "1"}}, "imageSensors": {"data": [], "meta": {"count": "0"}}, "configuration": {"data": {"id": "8838516", "type": "systems/configuration"}}, "shades": {"data": [], "meta": {"count": "0"}}, "gates": {"data": [], "meta": {"count": "0"}}, "switches": {"data": [], "meta": {"count": "0"}}, "iqRouters": {"data": [], "meta": {"count": "0"}}, "noiseSensors": {"data": [], "meta": {"count": "0"}}}}], "included": [], "meta": {"transformer_version": "1.1"}}

Include Action Endpoints This is a more technical than the last step, but in order to support actions for devices we need you to use a tool like Wireshark of Fiddler Classic to tell use which endpoints the Alarm.com app uses to control these devices. For example, for a garage door, we would need the following information:

Base URL: https://www.alarm.com/web/api/devices/garageDoors/ Open Suffix: open Close Suffix: close

(Opening a garage door requires submitting a request to https://www.alarm.com/web/api/devices/garageDoors/open.) How do I do this? Packet captures show TLS encrypted data. Edit: Looked through other open issues and found out about httptoolkit.

Post requests made to: https://www.alarm.com/web/api/devices/thermostats/ID-XXXX-1202/setState


- Set Mode Heat
Request body: 

{ "desiredState": 2, "statePollOnly": false }

- Set Mode Off
Request body: 

{ "desiredState": 1, "statePollOnly": false }


-Turn on Fan for an hour
Request body:

{ "desiredFanMode": 1, "desiredFanDuration": 1, "statePollOnly": false }


- Set cool temp
Request body:

{ "desiredCoolSetpoint": 74, "statePollOnly": false }

- Set heat temp
Request body:

{ "desiredHeatSetpoint": 71, "statePollOnly": false }


One of the response body that will help to send set commands:

{ "data": { "id": "ID-XXXX-1202", "type": "devices/thermostat", "attributes": { "requiresSetup": false, "forwardingAmbientTemp": 77, "minHeatSetpoint": 40, "maxHeatSetpoint": 90, "minCoolSetpoint": 50, "maxCoolSetpoint": 99, "minAuxHeatSetpoint": 40, "maxAuxHeatSetpoint": 90, "heatSetpoint": 71, "desiredHeatSetpoint": 71, "coolSetpoint": 74, "desiredCoolSetpoint": 74, "homeHeatSetpoint": 70, "homeCoolSetpoint": 77, "awayHeatSetpoint": 68, "awayCoolSetpoint": 76, "sleepHeatSetpoint": 72, "sleepCoolSetpoint": 74, "setpointOffset": 1, "autoSetpointBuffer": 3, "thirdPartySettingsUrlDesc": null, "thirdPartySettingsUrl": null, "state": 2, "desiredState": 2, "inferredState": 3, "scheduleMode": 1, "fanMode": 0, "desiredFanMode": 0, "fanDuration": null, "localDisplayLockingMode": 0, "desiredLocalDisplayLockingMode": null, "hasRtsIssue": false, "isControlled": false, "supportsSetpoints": true, "isPoolController": false, "supportsOffMode": true, "supportsHeatMode": true, "supportsCoolMode": true, "supportsAutoMode": false, "supportsSmartSchedules": false, "supportsAuxHeatMode": false, "supportsSchedules": true, "supportsFanMode": true, "supportsIndefiniteFanOn": false, "supportedFanDurations": [ 1, 2, 3, 24 ], "supportsCirculateFanModeAlways": false, "supportsCirculateFanModeWhenOff": true, "supportsRts": null, "supportsLocalDisplayLocking": false, "supportsPartialLocalDisplayLocking": false, "supportsHvacAnalytics": false, "supportsThirdPartySettings": false, "hasPendingTempModeChange": false, "hasPendingSetpointChange": false, "hasPendingHeatSetpointChange": false, "hasPendingCoolSetpointChange": false, "ambientTemp": 77, "isPaired": false, "supportsPairing": false, "tempForwardingActive": true, "supportsHumidity": false, "humidityLevel": null, "managedDeviceType": 15, "hasState": true, "canBeRenamed": true, "canBeDeleted": false, "canAccessWebSettings": true, "canAccessAppSettings": true, "webSettings": 1011, "canAccessTroubleshootingWizard": false, "troubleshootingWizard": null, "canBeLinkedToVideoDevice": false, "videoDeviceLinkDeviceIds": [], "macAddress": "", "manufacturer": "Honeywell", "isOAuth": false, "isZWave": true, "supportsCommandClassBasic": false, "isMalfunctioning": false, "canBeSaved": true, "canChangeDescription": true, "description": "Upstairs Thermostat", "deviceModelId": 4293, "canConfirmStateChange": true, "canReceiveCommands": true, "remoteCommandsEnabled": true, "hasPermissionToChangeState": true, "deviceIcon": { "icon": 37 }, "batteryLevelNull": 95, "lowBattery": false, "criticalBattery": false }, "relationships": { "ruleSuggestions": { "data": [ { "id": "1202_1", "type": "automation/rules/ruleSuggestion" }, { "id": "1202_5", "type": "automation/rules/ruleSuggestion" } ], "meta": { "count": "2" } }, "thermostatSettingsTemplate": { "data": null }, "remoteTemperatureSensors": { "data": [], "meta": { "count": "0" } }, "boilerControlSystem": { "data": null }, "valveSwitches": { "data": [], "meta": { "count": "0" } }, "peakProtect": { "data": { "id": "ID-XXXX-1202", "type": "automation/peak-protect" } }, "controlledThermostats": { "data": [], "meta": { "count": "0" } }, "system": { "data": { "id": "8838516", "type": "systems/system" } }, "stateInfo": { "data": null } } }, "included": [], "meta": { "transformer_version": "1.1" } }

elahd commented 2 years ago

This is great, thanks for providing the required data. I'll get started on this soon, but it may take a couple of weeks. I'll post back when a testable version of ready.

elahd commented 2 years ago

@ade5hmukh Can you confirm a few things for me?

  1. From which endpoint URL is the long response body?
  2. Are you using the thermostat's batteries as the primary power source, or are those just a backup in case of a power failure?
  3. Does Alarm.com show whether you're using the Away, Home, Sleep, etc. presets?
  4. Does Alarm.com show whether the fan is on vs idle? Does it show whether the boiler / condenser are actually running?
  5. There are two related attributes for controlling fan circulation: supportsCirculateFanModeAlways and supportsCirculateFanModeWhenOff. supportsCirculateFanModeWhenOff means that the fan can be on in circulate mode when the system is neither heating nor cooling. supportsCirculateFanModeAlways = True means that the fan can be on when the thermostat is set to either heat, cool, or auto. Your system has supportsCirculateFanModeAlways = False. Are you able to describe the restrictions around turning on fan circulation mode? Can it only circulate when heating? When cooling?

Thanks again!

ade5hmukh commented 2 years ago

Answers below:

  1. I'm not sure I understand the question but all Post requests are made to and every response is long response: https://www.alarm.com/web/api/devices/thermostats/ID-XXXX-1202/setState
  2. thermostat batteries are backup power and per thermostat manual: Batteries are not required if the Honeywell T6 Pro Z-Wave Programmable Thermostat was wired to run on 24 VAC power when installed. To provide optional backup power, install three fresh AA alkaline batteries immediately when the low battery alert appears.
  3. Yes, it does show it. image
  4. Yes it shows fan on vs idle, in a weird way as shown below: image image

It doesn't show boiler/condenser running but does show ❄️ for cooling and πŸ”₯ for heating if that's what you were asking.

  1. i think alarm.com only supports fan = auto, 1hr, 2hr, 3hr, 24hr. it doesn't show mode circulate or on on website and they are only on the device. Anyway, If i understand your question correctly here's my response: supportsCirculateFanModeAlways = keep fan on when air conditioning/ heating is on irrespective of whatever temperature has reached. For eg: home temp is 78 and I setup thermostat to cool at 75. it will keep the fan on running even when we have reached 75. afaik, its not ideal to keep the fan running always on your a/c. i maybe wrong.

supportsCirculateFanModeWhenOff means that the fan can be on in circulate mode when the system is neither heating nor cooling. -- This is really important to keep the air circulating in the house in an event of wildfires or AQI index is horrible outdoors and we want to circulate air indoors irrespective of heating/cooling on/off. But this can be only done through the device and not available on alarm.com.

hope this helps! thanks for working on it!

elahd commented 2 years ago

Nice detail -- thanks for that!

I have code that's ready to test. Can you update your integration to v0.2.12-beta.0? Let's see what happens.

If you don't have beta releases enabled in HACS, do the following:

  1. Go to the Alarmdotcom integration in HACS.
  2. Click on the triple-vertical-dots on the top right, then click Redownload: image
  3. Turn on Show Beta Versions, then select v0.2.12-beta.0 from the dropdown.: image
  4. Click the Download button.
  5. Reboot Home Assistant.
ade5hmukh commented 2 years ago

i'm not sure what's wrong. please pardon my ignorance:

Setup failed for custom integration alarmdotcom: Requirements for alarmdotcom not found: ['pyalarmdotcomajax==0.4'].
8:39:03 PM – (ERROR) setup.py
Unable to install package pyalarmdotcomajax==0.4: ERROR: Could not find a version that satisfies the requirement pyalarmdotcomajax==0.4 (from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.2.0b0, 0.2.0b1, 0.2.0b2, 0.2.0b3, 0.2.0b4, 0.2.0b5, 0.2.0b6, 0.2.0b7, 0.2.0b8, 0.2.0b9, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4) ERROR: No matching distribution found for pyalarmdotcomajax==0.4 WARNING: You are using pip version 22.0.3; however, version 22.1.2 is available. You should consider upgrading via the '/usr/local/bin/python3 -m pip install --upgrade pip' command.
8:39:03 PM – (ERROR) util/package.py - message first occurred at 8:37:49 PM and shows up 3 times

updated pip but i know that wasn't the problem. how do i install pyalarmdotcomajax on HA docker instance?


Setup failed for custom integration alarmdotcom: Requirements for alarmdotcom not found: ['pyalarmdotcomajax==0.4'].
8:52:44 PM – (ERROR) setup.py
Unable to install package pyalarmdotcomajax==0.4: ERROR: Could not find a version that satisfies the requirement pyalarmdotcomajax==0.4 (from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.2.0b0, 0.2.0b1, 0.2.0b2, 0.2.0b3, 0.2.0b4, 0.2.0b5, 0.2.0b6, 0.2.0b7, 0.2.0b8, 0.2.0b9, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4) ERROR: No matching distribution found for pyalarmdotcomajax==0.4
8:52:44 PM – (ERROR) util/package.py - message first occurred at 8:51:26 PM and shows up 3 times
elahd commented 2 years ago

Oops, there was a hiccup with publishing the update to pypi. It should work now. Can you try again? You may need to remove / re-add the integration.

ade5hmukh commented 2 years ago

Ok, that worked. You have nailed basic cool/heat/off functionality. However, there are few kinks that I'm not sure if it can be fixed easily.

  1. Data discrepancy between HA and alarm.com. HA shows temp set to 75 and currently at 75: image

    Alarm.com shows currently at 74 and set to 74:

    image

In the above case: Issue was fixed when I hit reload on alarmdotcom integration.

  1. Fan modes set doesn't create any log entry. Not that I care about logs but I don't seem to see if action actually was triggered or not. on the other hand, action is triggered and alarm.com turns ON the fan but it isn't reflecting on HA, as shown below: HA turn ON fan from AUTO mode:

    image

    Alarm.com shows fan ON.

    image

    Perhaps the above issue will be resolved when i reload the integration.

  2. Idle/Off mode doesn't show up and it sticks to fan only mode by default. HA:

    image

Alarm.com:

image

Thanks so much for quick turnaround! I'm happy irrespective of this issues because i can see my thermostat on HA :)

elahd commented 2 years ago

Can you send a debug log for the states that you're capturing in the screenshot?

For each item, set up as follows:

In Tab A:

  1. In HA, go to Settings > Devices & Services and click on the "XX devices" link for your Alarm.com integration: image
  2. Click on "Upstairs Thermostat".
  3. Look for thermostat's "Debug" button: image

In Tab B:

  1. In HA, go to Settings > System > Logs.

Then....

  1. Recreate one of the states from your screenshots.
  2. Wait until the change is picked up in Home Assistant.
  3. In tab A, click on the Debug button.
  4. Refresh Tab B. You'll see an entry with debug data: image. Click on it.
  5. Copy the stuff in the box to your reply: image
  6. Repeat for the other two.

Thanks!

elahd commented 2 years ago

Actually, let's just put this on hold for a couple of weeks. I'll install an Alarm.com-compatible thermostat on my system and will just develop off of that.

elahd commented 2 years ago

This should work with the latest update.

ade5hmukh commented 2 years ago

Thanks! sorry for no responses past couple weeks. I'll test this update and report if any issues.

elahd commented 2 years ago

Hey -- have you been able to test?

ade5hmukh commented 2 years ago

Yes sir, all commands work fine but there's one slight issue that i'm not sure how/if we can fix. there are times, when we will use alarm.com app to change settings on thermostat instead of the home-assistant. those changes don't reflect until you send any command from home-assistant to the thermostat. what we perhaps need is keepalive/status message every certain seconds/minutes? it may not be a dealbreaker to me, but there are times when data on home-assistant doesn't reflect the true state of thermostat.

elahd commented 2 years ago

Would you mind send me a debug dump (like in my screenshot above) when the two system go out of sync? HA definitely syncs, it may just be misinterpreting the states. Also, when you post the log, please let me know what Alarm.com shows vs what Home Assistant shows.

elahd commented 2 years ago

Would you mind send me a debug dump (like in my screenshot above) when the two system go out of sync? HA definitely syncs, it may just be misinterpreting the states. Also, when you post the log, please let me know what Alarm.com shows vs what Home Assistant shows.

AalianKhan commented 2 years ago

Hello, I just installed the alarm.com integration and my thermostat isnt working as expected. My provider is embridge and I am using Celsius. Home assistant Screenshot_20220828-151105_Home Assistant Alarm.com Screenshot_20220828-152106_Home

AalianKhan commented 2 years ago

I just changed my home assistant unit to Fahrenheit and now the home assistant value is 0.5 more than the alarm.com reported value

Raul-7-7 commented 1 year ago

@AalianKhan I am having the same issue with celcius. Did you ever solve it?

AalianKhan commented 1 year ago

Nope, still not solved

elahd commented 1 year ago

Hey @AalianKhan @Raul-7-7: Can you confirm whether this works with the newest version of the integration?

AalianKhan commented 1 year ago

@elahd I don't see my thermostat at all now. I tried reloading the integration as well.

elahd commented 1 year ago

Are you on the latest version of the integration and Home Assistant?

AalianKhan commented 1 year ago

Yup, I am on version 3.0.4

elahd commented 10 months ago

This works now

AalianKhan commented 10 months ago

@elahd Hey,

Thank you for fixing the issue. I noticed that the step is set to 1. Am I able to change it to a step of 0.5 instead?

Thanks

Raul-7-7 commented 10 months ago

Thank @elahd works great, however, I have the same question as @AalianKhan , is there a way to change the step to 0.5 instead?

Raul-7-7 commented 9 months ago

@AalianKhan created this issue: https://github.com/pyalarmdotcom/alarmdotcom/issues/353