Announcement

Collapse
No announcement yet.

Unable to get Zigbee thermostat recognized

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #31
    Originally posted by w.vuyk View Post
    I will notify you when a new version is including the thermostat changes.
    Cool.

    Originally posted by w.vuyk View Post
    I also had a lot of x10 devices running, the motion sensor I was using then (MS13) was very reliable for sure. They are all here in a box and still functioning (around 15 years old....)
    But I replaced them all by zigbee motion sensors as two way communication is more reliable I think.
    Funny you mention that. I just added a 3rd Sinope TH3000ZB thermostat to replace the standalone one in the bathroom this afternoon. Right beside it I have 2 z-wave dimmers, 1 z-wave switch and the last MS13 x-10 motion detector. As soon as I managed to add the TH3000ZB to HS4 in your plugin, the MS13 started acting weird, sending ON command every 5-10 seconds and keeping one of the dimmer (and its connected light) on all the time. Turning off the light at the dimmer, it would come back on after a few seconds. I temporarily disabled the MS13 automation to have the heating working. 🤔 I can't help but wonder why this is happening...

    About the newly added thermostat, being newer than the other 2, it has differences in its clusters in deCONZ. How should that be handled with SwoopX? A new request, or adding to the current one?

    Originally posted by w.vuyk View Post
    As for brands, there are many good brands. Xiaomi/Aqara (chinese) is very popular due to the price tags on it, Philips Hue of course, IKEA etc. etc... for starters, check this page: https://www.phoscon.de/en/conbee2/compatible This will give you some insight of possible lights, switches and sensors. And searching on the github will show you even far more devices that will work on deCONZ (like the thermostats)
    One of the goal of moving to HS4 (I didn't upgrade the HS3, both are running in parallel until everything has been moved over to HS4) is to get rid of X-10 devices. So I'll be looking into those Zigbee sensors. One other goal was to have HS control the heated floor thermostats. This one is almost accomplished, thanks do deCONZ and your plugin.


    Comment


      #32
      Originally posted by zguy View Post
      Funny you mention that. I just added a 3rd Sinope TH3000ZB thermostat to replace the standalone one in the bathroom this afternoon. Right beside it I have 2 z-wave dimmers, 1 z-wave switch and the last MS13 x-10 motion detector. As soon as I managed to add the TH3000ZB to HS4 in your plugin, the MS13 started acting weird, sending ON command every 5-10 seconds and keeping one of the dimmer (and its connected light) on all the time. Turning off the light at the dimmer, it would come back on after a few seconds. I temporarily disabled the MS13 automation to have the heating working. 🤔 I can't help but wonder why this is happening...
      In my experience a MS13 sending false ON commands means the battery is drained, almost (but not 100%) empty. This seems to trigger the on commands for some reason. Just allow the poor device a fresh battery and it will do its job for another year or so
      Pretty sure that is a cause, don't expect it to be sensitive for a zigbee signal?

      Wim
      -- Wim

      Plugins: JowiHue, RFXCOM, Sonos4, Jon00's Perfmon and Network monitor, EasyTrigger, Pushover 3P, rnbWeather, BLBackup, AK SmartDevice, Pushover, PHLocation, Zwave, GCalseer, SDJ-Health, Device History, BLGData

      1210 devices/features ---- 392 events ----- 40 scripts

      Comment


        #33
        Originally posted by w.vuyk View Post

        In my experience a MS13 sending false ON commands means the battery is drained, almost (but not 100%) empty. This seems to trigger the on commands for some reason. Just allow the poor device a fresh battery and it will do its job for another year or so
        Pretty sure that is a cause, don't expect it to be sensitive for a zigbee signal?

        Wim
        Quite right. That came to mind the next morning... Took them off, tested them, they looked good. Still, I put a new set in. And it started looping again. So, it's not the batteries. Then I turned the thermostat breaker off and the looping stopped. Turn it back on, looping starts again. Breaker off, no looping. Breaker on, looping. It's systematic. So there's got to be something. I'm a bit flaberghasted by this to be honest. But any way, besides a palm pad, it's the last X-10 device I have and one of the goal in my move to HS4 is to get rid of those X-10 devices. So I ain't gonna loose sleep over that.

        After checking deCONZ supported devices list, I bought a Philips Hue motion sensor and added it to deCONZ. That thing comes with no documentation whatsoever except a very short mention to use the Hue app to add the device. Still I managed to add it to deCONZ using the, should I say deficient, Phoscon app, which doesn't see the sensor even if it's in deCONZ. I wish there was a way to add a device within deCONZ instead of having to go thru the Phoscon app.

        Click image for larger version

Name:	Capture.JPG
Views:	232
Size:	123.5 KB
ID:	1448968

        REST API sees it too, albeit not much info visible:

        Code:
         "1": {
        "config": {
        "configured": true,
        "on": true,
        "sunriseoffset": 30,
        "sunsetoffset": -30
        },
        "etag": "c1fc198cec0688590cb433d7d21539da",
        "manufacturername": "Philips",
        "modelid": "PHDL00",
        "name": "Daylight",
        "state": {
        "dark": true,
        "daylight": false,
        "lastupdated": "2021-01-18T02:04:49.129",
        "status": 230,
        "sunrise": "2021-01-17T12:31:56",
        "sunset": "2021-01-17T21:42:04"
        },
        "swversion": "1.0",
        "type": "Daylight",
        "uniqueid": "00:21:2e:ff:ff:05:bb:1c-01"
        },
        I can't help but notice the difference between the cluster model "SML001" and the API modelid "PHDL00", making me doubt the detection actually works properly.

        I then tried to scan sensors (and devices as well) in the Hue HS plugin. No luck.

        Since I had to re-add the thermostats at least twice before the plugin could see and add them to HS, I removed the sensor from deCONZ and added it again, 3 times, scanning with the plugin in between. Still no luck.

        Given that this sensor is supposed to have been supported for a certain time in deCONZ, I'm disappointed of these results. That Phoscon app, which has an option to add Phillips sensors, doesn't even sees it and fails every time when trying to add it. And in the sensors section, it was seeing only the first thermostat before I tried to add the motion sensor. Now, it sees the first and third thermostats but not the second one. Go figure.

        The beauty of this is there is no log nowhere that I can find to help troubleshooting. No deCONZ log, no Phoscon log and the plugin merely say it's scanning for devices or sensors without any feedback

        On another subject, I saw some movement at Dresden. Not clear when an update will be available though.

        Comment


          #34
          Originally posted by zguy View Post

          After checking deCONZ supported devices list, I bought a Philips Hue motion sensor and added it to deCONZ. That thing comes with no documentation whatsoever except a very short mention to use the Hue app to add the device. Still I managed to add it to deCONZ using the, should I say deficient, Phoscon app, which doesn't see the sensor even if it's in deCONZ. I wish there was a way to add a device within deCONZ instead of having to go thru the Phoscon app.
          If you check the image you will see the sensor is having an 'inital' Hex name "0xD943". This initial name is given by deCONZ. The REST API will, once it has all the information will change it to a readable name (like your "Thermostat 7". The sensor having this initial name means the REST API interface did not get all info yet.
          When you join a device to deCONZ, especially battery devices you need to keep it awake a bit, by generating motion, or short presses on the reset buttons. Once the REST API has got what it needs, you will see the name change in deCONZ and you can be sure bot Phoscon and the plugin will start adding the device.

          You can quite easy proceed on this process with these steps:
          1. Check on the backside of the motion sensor for a little hole for the reset and find a pin for it.
          2. Before doing the reset, go to the bridge maintenance page of the plugin and select "Scan for devices". No need to remove the device in deCONZ!
          3. Once this button is pressed, reset the motion sensor by pressing the reset button for 10 seconds (you will see a red flashing light on the front of the sensor, which will change to green once deCONZ grabs it)
          4. Then during max 2 minutes keep moving the sensor around so it communicates with deCONZ - check the name in deCONZ, if it changes you are done.
          5. If the name does not change (be sure to press the button to scan for devices once more if you need to do this), select the basic cluster of the sensor in deCONZ and press read, while waking the sensor by triggering motion.
          The above process works for all sensors and switches, you can always reset them to refresh information
          Philips motion sensors are the best you can get in my experiences and are normally very good in joining...



          Originally posted by zguy View Post

          REST API sees it too, albeit not much info visible:

          Code:
           "1": {
          "config": {
          "configured": true,
          "on": true,
          "sunriseoffset": 30,
          "sunsetoffset": -30
          },
          "etag": "c1fc198cec0688590cb433d7d21539da",
          "manufacturername": "Philips",
          "modelid": "PHDL00",
          "name": "Daylight",
          "state": {
          "dark": true,
          "daylight": false,
          "lastupdated": "2021-01-18T02:04:49.129",
          "status": 230,
          "sunrise": "2021-01-17T12:31:56",
          "sunset": "2021-01-17T21:42:04"
          },
          "swversion": "1.0",
          "type": "Daylight",
          "uniqueid": "00:21:2e:ff:ff:05:bb:1c-01"
          },
          I can't help but notice the difference between the cluster model "SML001" and the API modelid "PHDL00", making me doubt the detection actually works properly.
          This is not the motion sensor, it is a virtual sensor for daylight. This one is ignored by the plugin as HS already has its own daylight functions.

          Originally posted by zguy View Post

          On another subject, I saw some movement at Dresden. Not clear when an update will be available though.
          There is movement indeed, they have released beta version 2.09.01 for Linux - not yet for Windows....

          Wim
          -- Wim

          Plugins: JowiHue, RFXCOM, Sonos4, Jon00's Perfmon and Network monitor, EasyTrigger, Pushover 3P, rnbWeather, BLBackup, AK SmartDevice, Pushover, PHLocation, Zwave, GCalseer, SDJ-Health, Device History, BLGData

          1210 devices/features ---- 392 events ----- 40 scripts

          Comment


            #35
            Originally posted by w.vuyk View Post

            You can quite easy proceed on this process with these steps:
            1. Check on the backside of the motion sensor for a little hole for the reset and find a pin for it.
            2. Before doing the reset, go to the bridge maintenance page of the plugin and select "Scan for devices". No need to remove the device in deCONZ!
            3. Once this button is pressed, reset the motion sensor by pressing the reset button for 10 seconds (you will see a red flashing light on the front of the sensor, which will change to green once deCONZ grabs it)
            4. Then during max 2 minutes keep moving the sensor around so it communicates with deCONZ - check the name in deCONZ, if it changes you are done.
            5. If the name does not change (be sure to press the button to scan for devices once more if you need to do this), select the basic cluster of the sensor in deCONZ and press read, while waking the sensor by triggering motion.
            The above process works for all sensors and switches, you can always reset them to refresh information
            Philips motion sensors are the best you can get in my experiences and are normally very good in joining...
            You're the man! This was a bit awkward but it worked. This Zigbee world works differently then what I'm used too, gotta take notes.

            I now have the sensor in HS an it is amazing! I've never seen such responsiveness from a sensor. It's also present in Phoscon. Which is not the case of the second thermostat...

            Question: instead of using Phoscon to add a device, should I just use the plugin scan and it would work, adding it to both deCONZ and HS?

            About the device name in deCONZ, this only changed after the plugin saw it and I updated/changed it in HS. And now, the only device reflecting HS naming is the Hue sensor. All 3 thermostats show a different value in deCONZ. Interestingly enough, Phoscon has retained the HS naming. May be that will be fixed in the next deCONZ release.

            Originally posted by w.vuyk View Post

            There is movement indeed, they have released beta version 2.09.01 for Linux - not yet for Windows....

            Wim
            The deCONZ runs a Linux Debian. Should I go for it or wait for the 'stable' release? How is that done? app-get? Will that only update deCONZ/Phoscon or the Linus kernel as well, meaning I'd lose the network configuration?

            On another unrelated note, the very first thermostat I added to deCONZ went belly up last night. Error code E16 and reset button lit red. Sinope kb is minimal but got a quick response from Sinope tech support. Thermostat is approx 1.5 years old. I'm hoping they will replace it.

            Comment


              #36
              Originally posted by zguy View Post

              Question: instead of using Phoscon to add a device, should I just use the plugin scan and it would work, adding it to both deCONZ and HS?

              About the device name in deCONZ, this only changed after the plugin saw it and I updated/changed it in HS. And now, the only device reflecting HS naming is the Hue sensor. All 3 thermostats show a different value in deCONZ. Interestingly enough, Phoscon has retained the HS naming. May be that will be fixed in the next deCONZ release.
              You can use either the plugin (which I do) or use Phoscon, whicever you like. Scanning for devices / sensors is the same in both cases.
              As for naming, it is a work in progress, deCONZ tends to disagree on the name regular, but synchronizes after a while. There will be changes in the future on this.


              Originally posted by zguy View Post
              The deCONZ runs a Linux Debian. Should I go for it or wait for the 'stable' release? How is that done? app-get? Will that only update deCONZ/Phoscon or the Linus kernel as well, meaning I'd lose the network configuration?

              On another unrelated note, the very first thermostat I added to deCONZ went belly up last night. Error code E16 and reset button lit red. Sinope kb is minimal but got a quick response from Sinope tech support. Thermostat is approx 1.5 years old. I'm hoping they will replace it.
              You can use the beta version for this if you like, it would be helpful to the developers to know the changes worked out.
              Check out the conbee2 site for the process to update the installation: https://www.phoscon.de/en/conbee2/install
              Make sure to change the channel to beta? I am no good in Linux, so I am always using this site for updates
              -- Wim

              Plugins: JowiHue, RFXCOM, Sonos4, Jon00's Perfmon and Network monitor, EasyTrigger, Pushover 3P, rnbWeather, BLBackup, AK SmartDevice, Pushover, PHLocation, Zwave, GCalseer, SDJ-Health, Device History, BLGData

              1210 devices/features ---- 392 events ----- 40 scripts

              Comment


                #37
                Originally posted by w.vuyk View Post
                You can use the beta version for this if you like, it would be helpful to the developers to know the changes worked out.
                Check out the conbee2 site for the process to update the installation: https://www.phoscon.de/en/conbee2/install
                Make sure to change the channel to beta? I am no good in Linux, so I am always using this site for updates
                I've checked the process. Not really complicated but a bit tedious to perform. Since it's pretty much the same for the stable release besides the repository, I'll wait a bit for the stable release. Any way I'm still waiting the replacement thermostat. Hopefully the stable release will come in before the new thermostat so I can see if the new one adds properly.

                Comment


                  #38
                  No problem, normally the release should be after 14 days or so, so we can wait here!
                  -- Wim

                  Plugins: JowiHue, RFXCOM, Sonos4, Jon00's Perfmon and Network monitor, EasyTrigger, Pushover 3P, rnbWeather, BLBackup, AK SmartDevice, Pushover, PHLocation, Zwave, GCalseer, SDJ-Health, Device History, BLGData

                  1210 devices/features ---- 392 events ----- 40 scripts

                  Comment


                    #39
                    Hello @w.vuyk
                    I received the replacement thermostat. But before that, I got myself a Phillips Hue bridge and a few bulbs. That was quick and easy to setup within your plugin.

                    But when I got ready to add the new thermostat, I hit somewhat of an issue.

                    Click image for larger version

Name:	Capture.JPG
Views:	179
Size:	48.0 KB
ID:	1453859
                    In the plugin bridge maintenance screen, I can no longer access the deCONZ bridge. Clicking on it briefly flash the screen and it comes back to the Hue bridge. In fact, clicking on any upper buttons (Phoscon/deCONZ bridge, light info, group info and sensor info) does the same. I restarted HS, just in case, but no luck.

                    I ended up adding the new thermostat using the Phoscon app. It's in deCONZ and talking. But seems I no longer can 'scan' it into HS.

                    I'm also in the process of adding 3 additional Hue motion sensors to deCONZ, I hope there is an easy way to fix this.


                    Comment


                      #40
                      Update on previous post.

                      The 3 additional motion sensors are now in deCONZ/Phoscon:
                      Click image for larger version

Name:	Capture.JPG
Views:	155
Size:	48.3 KB
ID:	1453890

                      They were added to HS as well after a device and sensor scan from the Hue bridge screen. Odd...

                      Even more odd is that 2 of them were added as motion sensors like the very 1st one:

                      Click image for larger version

Name:	Capture.JPG
Views:	138
Size:	34.0 KB
ID:	1453891

                      But one of them, the 3rd one added, was added as "Presence":

                      Click image for larger version

Name:	Capture.JPG
Views:	134
Size:	33.0 KB
ID:	1453892

                      What's with this? The 3 sensors have the exact same model #.

                      And I'm still not seeing the newly added replacement thermostat. The one seen above in Phoscon is the failed one that just got replaced.

                      Comment


                        #41
                        Update again on previous post, motion sensor showing as "Presence" now shows as "Motion sensor".

                        I'm loosing my latin here. And yes, I did take latin in high school.

                        Comment


                          #42
                          Are you using Firefox? As Firefox has an issue with the bridge maintenance page of the plugin. Some users get this issue, others seem to get around it. Could you try with another browser? I have been testing here, but for the life of it, I do not see what is going wrong (it is not working for me here either. When I try to find the error with my limited knowledge of Firefox debugging, all I find is an error in bootstrap, which I doubt is caused by my page. But I keep hoping that someday it becomes clear what the issue is...

                          And the renaming of the motion sensor is something that comes from deCONZ. Somehow deCONZ presents an initial name at first discovery, but changes it after a while. The plugin follows deCONZ in this case. Phoscon has its own pack of tricks for it.

                          Is the new thermostat added complete in deCONZ (e.g. does it have a different naming in the interface then 0xnnnnn)?
                          Maybe a basic cluster is needed?

                          Wim

                          -- Wim

                          Plugins: JowiHue, RFXCOM, Sonos4, Jon00's Perfmon and Network monitor, EasyTrigger, Pushover 3P, rnbWeather, BLBackup, AK SmartDevice, Pushover, PHLocation, Zwave, GCalseer, SDJ-Health, Device History, BLGData

                          1210 devices/features ---- 392 events ----- 40 scripts

                          Comment


                            #43
                            Originally posted by w.vuyk View Post
                            Are you using Firefox? As Firefox has an issue with the bridge maintenance page of the plugin. Some users get this issue, others seem to get around it. Could you try with another browser?
                            Browser it is! I was indeed using Firefox. I tried IE which was readily available, it can't even select something under the plugin dropdown. Not that I intended to use that obsolete browser any way. Installed a chromium based browser named Vivaldi. Everything works fine with this one.

                            Originally posted by w.vuyk View Post
                            I have been testing here, but for the life of it, I do not see what is going wrong (it is not working for me here either. When I try to find the error with my limited knowledge of Firefox debugging, all I find is an error in bootstrap, which I doubt is caused by my page. But I keep hoping that someday it becomes clear what the issue is...
                            I might be able to help with this once I get the deCONZ working properly. What kind of info do you have on hand on this? You can send via pm if you prefer.

                            Originally posted by w.vuyk View Post
                            And the renaming of the motion sensor is something that comes from deCONZ. Somehow deCONZ presents an initial name at first discovery, but changes it after a while. The plugin follows deCONZ in this case. Phoscon has its own pack of tricks for it.
                            And deCONZ follow the plugin too as the names eventually reflect the ones from HS to show the renaming done in HS. But not all the times. It happened with all Hue sensors but only 2 of the thermostats, including the one that failed. That's definitely not consistent. I'm hoping this will be resolved once the deCONZ firmware becomes available.

                            Originally posted by w.vuyk View Post
                            Is the new thermostat added complete in deCONZ (e.g. does it have a different naming in the interface then 0xnnnnn)?
                            Maybe a basic cluster is needed?
                            It does show with an hex number. But it does communicate properly. All readable clusters read, and I can even set the temperature right in deCONZ. I also deleted and re-added it with the Phoscon app. That seems to be the only way so far, and you have to wait until the detection fails to see it complete in deCONZ. That hex number happened with all thermostats so far. It eventually disappeared and got the HS nomenclature, whenever the thermostat got included in HS and I managed to rename it. Oddly enough, one of them retained an intermediate name in deCONZ and used in HS but never got updated with the final HS nomenclature. Phoscon app also shows HS nomenclature for the motion sensors and 2 of the thermostats, one of them being the one that failed.

                            As for the new thermostat, it's still not visible in HS despite a couple of scan from your plugin.

                            Comment


                              #44
                              When you did a scan, did you also reset the thermostat? No need to remove it from deCONZ first, just start the scan from the plugin and reset the thermostat. At that time also try to do a read of the basic cluster of the thermostat in deCONZ

                              The new stable of deCONZ is expected on the 8th of Februari now, which would be next week. I do doubt if there will be any changes in the naming by then, but maybe scanning the thermostat will improve.

                              Normally the rest api is not satisfied when the thermostat name is still in hex formats.

                              On the firefox issue, I sure can use some help. I have not much to go on yet. If I use ctrl/shif/z in the browser I do get some trace windows, where I can find the bootstrap error message. But to find from where this routine was called from is a mystery to me. But if you know how to and have pointers - or already can find the origin of the issue - let me know, just pm me, or send mail to jowihue at ziggo dot nl so we can go from there?

                              Wim
                              -- Wim

                              Plugins: JowiHue, RFXCOM, Sonos4, Jon00's Perfmon and Network monitor, EasyTrigger, Pushover 3P, rnbWeather, BLBackup, AK SmartDevice, Pushover, PHLocation, Zwave, GCalseer, SDJ-Health, Device History, BLGData

                              1210 devices/features ---- 392 events ----- 40 scripts

                              Comment


                                #45
                                Originally posted by w.vuyk View Post
                                When you did a scan, did you also reset the thermostat? No need to remove it from deCONZ first, just start the scan from the plugin and reset the thermostat. At that time also try to do a read of the basic cluster of the thermostat in deCONZ
                                Well, I finally managed to get it in HS, but it was painful. After removing the thermostat from the Zigbee network but leaving it in deCONZ as you stated, my understanding was that simply scanning from the plugin would do it but alas, not.

                                Steps I took:
                                1. start the plugin scan (tried for devices, then sensors then both)
                                2. initiate the thermostat inclusion mode
                                The thermostat never got include.

                                What eventually worked is:
                                1. start the Phoscon sensor scan (which fails, as always)
                                2. start the plugin scan for devices
                                3. initiate the thermostat inclusion mode
                                All the while I was watching HS log. If I may ask for one tiny request, it would be nice to have the end of a scan logged. So if the scan does nothing, at least we know. Otherwise, unless there is an error or new stuff added, we have no idea what happened.

                                Originally posted by w.vuyk View Post
                                The new stable of deCONZ is expected on the 8th of Februari now, which would be next week. I do doubt if there will be any changes in the naming by then, but maybe scanning the thermostat will improve.
                                I sure will be looking into that sometime next week. How did you know? Is there a way to get an email notification?

                                Originally posted by w.vuyk View Post
                                On the firefox issue, I sure can use some help. I have not much to go on yet. If I use ctrl/shif/z in the browser I do get some trace windows, where I can find the bootstrap error message. But to find from where this routine was called from is a mystery to me. But if you know how to and have pointers - or already can find the origin of the issue - let me know, just pm me, or send mail to jowihue at ziggo dot nl so we can go from there?

                                Wim
                                Sent you a pm on that. Origin comes from several includes in bridges.html:
                                Code:
                                 {{includefile 'bootstrap/css/page_common.css'}}
                                {{includefile 'bootstrap/js/page_common.js'}}
                                These files are located in \HomeSeer4\html\bootstrap subfolders. First one calls a bunch of other stylesheets:

                                Code:
                                <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet" >
                                <link href="/bootstrap/css/mdb.css" rel="stylesheet" >
                                <link rel="stylesheet" href="/bootstrap/fontawesome/css/all.min.css" >
                                <link href="/bootstrap/css/jui.css" rel="stylesheet" type="text/css" >
                                <link href="/bootstrap/css/pickr.min.css" rel="stylesheet" type="text/css" >
                                <link href="/bootstrap/css/sweetalert/bootstrap-4.min.css" rel="stylesheet" type="text/css" >
                                Second one calls a bunch of java scripts including the bootstrap one:

                                Code:
                                <script type="text/javascript" src="/bootstrap/js/jquery-3.4.0.min.js"></script>
                                <script type="text/javascript" src="/bootstrap/js/popper.min.js"></script>
                                <script type="text/javascript" src="/bootstrap/js/[B][COLOR=#e74c3c]bootstrap.min.js[/COLOR][/B]"></script>
                                <script type="text/javascript" src="/bootstrap/js/mdb.js"></script>
                                <script type="text/javascript" src="/bootstrap/js/js.cookie.min.js"></script>
                                <script type="text/javascript" src="/bootstrap/js/pickr.min.js"></script>
                                <script type="text/javascript" src="/bootstrap/js/sweetalert/sweetalert2.min.js"></script>
                                Guy

                                Comment

                                Working...
                                X