thecynic / pylutron

MIT License
31 stars 41 forks source link

add caseta report loader #1

Closed ptone closed 3 years ago

ptone commented 7 years ago

From what I can tell - the Caseta smartbridge uses the same integration protocol, but does not serve the xml DB (it responds to telnet but not HTTP)

It will generate a json report like the following (you can tell I'm just starting to add devices)

It looks like there may be some different assumptions? maybe a single area? If there is a sample of the XML report, I'd be willing to take a look at this. Interested in your PR for the home-assistant project.

{
  "LIPIdList" : {
    "Devices" : [
      {
        "ID" : 1,
        "Name" : "Smart Bridge",
        "Buttons" : [
          {
            "Name" : "Arriving Home",
            "Number" : 1
          },
          {
            "Name" : "Leaving Home",
            "Number" : 2
          },
          {
            "Name" : "Dining Low",
            "Number" : 3
          },
          {
            "Name" : "Dining Mid",
            "Number" : 4
          },
          {
            "Name" : "Button 5",
            "Number" : 5
          },
          {
            "Name" : "Button 6",
            "Number" : 6
          },
          {
            "Name" : "Button 7",
            "Number" : 7
          },
          {
            "Name" : "Button 8",
            "Number" : 8
          },
          {
            "Name" : "Button 9",
            "Number" : 9
          },
          {
            "Name" : "Button 10",
            "Number" : 10
          },
          {
            "Name" : "Button 11",
            "Number" : 11
          },
          {
            "Name" : "Button 12",
            "Number" : 12
          },
          {
            "Name" : "Button 13",
            "Number" : 13
          },
          {
            "Name" : "Button 14",
            "Number" : 14
          },
          {
            "Name" : "Button 15",
            "Number" : 15
          },
          {
            "Name" : "Button 16",
            "Number" : 16
          },
          {
            "Name" : "Button 17",
            "Number" : 17
          },
          {
            "Name" : "Button 18",
            "Number" : 18
          },
          {
            "Name" : "Button 19",
            "Number" : 19
          },
          {
            "Name" : "Button 20",
            "Number" : 20
          },
          {
            "Name" : "Button 21",
            "Number" : 21
          },
          {
            "Name" : "Button 22",
            "Number" : 22
          },
          {
            "Name" : "Button 23",
            "Number" : 23
          },
          {
            "Name" : "Button 24",
            "Number" : 24
          },
          {
            "Name" : "Button 25",
            "Number" : 25
          },
          {
            "Name" : "Button 26",
            "Number" : 26
          },
          {
            "Name" : "Button 27",
            "Number" : 27
          },
          {
            "Name" : "Button 28",
            "Number" : 28
          },
          {
            "Name" : "Button 29",
            "Number" : 29
          },
          {
            "Name" : "Button 30",
            "Number" : 30
          },
          {
            "Name" : "Button 31",
            "Number" : 31
          },
          {
            "Name" : "Button 32",
            "Number" : 32
          },
          {
            "Name" : "Button 33",
            "Number" : 33
          },
          {
            "Name" : "Button 34",
            "Number" : 34
          },
          {
            "Name" : "Button 35",
            "Number" : 35
          },
          {
            "Name" : "Button 36",
            "Number" : 36
          },
          {
            "Name" : "Button 37",
            "Number" : 37
          },
          {
            "Name" : "Button 38",
            "Number" : 38
          },
          {
            "Name" : "Button 39",
            "Number" : 39
          },
          {
            "Name" : "Button 40",
            "Number" : 40
          },
          {
            "Name" : "Button 41",
            "Number" : 41
          },
          {
            "Name" : "Button 42",
            "Number" : 42
          },
          {
            "Name" : "Button 43",
            "Number" : 43
          },
          {
            "Name" : "Button 44",
            "Number" : 44
          },
          {
            "Name" : "Button 45",
            "Number" : 45
          },
          {
            "Name" : "Button 46",
            "Number" : 46
          },
          {
            "Name" : "Button 47",
            "Number" : 47
          },
          {
            "Name" : "Button 48",
            "Number" : 48
          },
          {
            "Name" : "Button 49",
            "Number" : 49
          },
          {
            "Name" : "Button 50",
            "Number" : 50
          },
          {
            "Name" : "Button 51",
            "Number" : 51
          },
          {
            "Name" : "Button 52",
            "Number" : 52
          },
          {
            "Name" : "Button 53",
            "Number" : 53
          },
          {
            "Name" : "Button 54",
            "Number" : 54
          },
          {
            "Name" : "Button 55",
            "Number" : 55
          },
          {
            "Name" : "Button 56",
            "Number" : 56
          },
          {
            "Name" : "Button 57",
            "Number" : 57
          },
          {
            "Name" : "Button 58",
            "Number" : 58
          },
          {
            "Name" : "Button 59",
            "Number" : 59
          },
          {
            "Name" : "Button 60",
            "Number" : 60
          },
          {
            "Name" : "Button 61",
            "Number" : 61
          },
          {
            "Name" : "Button 62",
            "Number" : 62
          },
          {
            "Name" : "Button 63",
            "Number" : 63
          },
          {
            "Name" : "Button 64",
            "Number" : 64
          },
          {
            "Name" : "Button 65",
            "Number" : 65
          },
          {
            "Name" : "Button 66",
            "Number" : 66
          },
          {
            "Name" : "Button 67",
            "Number" : 67
          },
          {
            "Name" : "Button 68",
            "Number" : 68
          },
          {
            "Name" : "Button 69",
            "Number" : 69
          },
          {
            "Name" : "Button 70",
            "Number" : 70
          },
          {
            "Name" : "Button 71",
            "Number" : 71
          },
          {
            "Name" : "Button 72",
            "Number" : 72
          },
          {
            "Name" : "Button 73",
            "Number" : 73
          },
          {
            "Name" : "Button 74",
            "Number" : 74
          },
          {
            "Name" : "Button 75",
            "Number" : 75
          },
          {
            "Name" : "Button 76",
            "Number" : 76
          },
          {
            "Name" : "Button 77",
            "Number" : 77
          },
          {
            "Name" : "Button 78",
            "Number" : 78
          },
          {
            "Name" : "Button 79",
            "Number" : 79
          },
          {
            "Name" : "Button 80",
            "Number" : 80
          },
          {
            "Name" : "Button 81",
            "Number" : 81
          },
          {
            "Name" : "Button 82",
            "Number" : 82
          },
          {
            "Name" : "Button 83",
            "Number" : 83
          },
          {
            "Name" : "Button 84",
            "Number" : 84
          },
          {
            "Name" : "Button 85",
            "Number" : 85
          },
          {
            "Name" : "Button 86",
            "Number" : 86
          },
          {
            "Name" : "Button 87",
            "Number" : 87
          },
          {
            "Name" : "Button 88",
            "Number" : 88
          },
          {
            "Name" : "Button 89",
            "Number" : 89
          },
          {
            "Name" : "Button 90",
            "Number" : 90
          },
          {
            "Name" : "Button 91",
            "Number" : 91
          },
          {
            "Name" : "Button 92",
            "Number" : 92
          },
          {
            "Name" : "Button 93",
            "Number" : 93
          },
          {
            "Name" : "Button 94",
            "Number" : 94
          },
          {
            "Name" : "Button 95",
            "Number" : 95
          },
          {
            "Name" : "Button 96",
            "Number" : 96
          },
          {
            "Name" : "Button 97",
            "Number" : 97
          },
          {
            "Name" : "Button 98",
            "Number" : 98
          },
          {
            "Name" : "Button 99",
            "Number" : 99
          },
          {
            "Name" : "Button 100",
            "Number" : 100
          }
        ]
      },
      {
        "ID" : 3,
        "Name" : "Dino Remote",
        "Buttons" : [
          {
            "Number" : 2
          },
          {
            "Number" : 3
          },
          {
            "Number" : 4
          },
          {
            "Number" : 5
          },
          {
            "Number" : 6
          }
        ]
      }
    ],
    "Zones" : [
      {
        "ID" : 2,
        "Name" : "Diningroom Lights"
      }
    ]
  }
}
thecynic commented 7 years ago

Did you get a chance to add all your devices? I'd be curious to see what a fully populated one looks like. How do you query this from your Caseta thingie?

adam-fox commented 7 years ago

I can help. This is pulled directly from the app. The Pro version of the bridge allows you to export an integration report. Would love to see Caseta support added to this project. Unfortunately, I've no idea how to help other than providing this:

{ "LIPIdList" : { "Devices" : [ { "ID" : 1, "Name" : "Smart Bridge", "Buttons" : [ { "Name" : "Scene Example", "Number" : 1 }, { "Name" : "Button 2", "Number" : 2 }, { "Name" : "Button 3", "Number" : 3 }, { "Name" : "Button 4", "Number" : 4 }, { "Name" : "Button 5", "Number" : 5 }, { "Name" : "Button 6", "Number" : 6 }, { "Name" : "Button 7", "Number" : 7 }, { "Name" : "Button 8", "Number" : 8 }, { "Name" : "Button 9", "Number" : 9 }, { "Name" : "Button 10", "Number" : 10 }, { "Name" : "Button 11", "Number" : 11 }, { "Name" : "Button 12", "Number" : 12 }, { "Name" : "Button 13", "Number" : 13 }, { "Name" : "Button 14", "Number" : 14 }, { "Name" : "Button 15", "Number" : 15 }, { "Name" : "Button 16", "Number" : 16 }, { "Name" : "Button 17", "Number" : 17 }, { "Name" : "Button 18", "Number" : 18 }, { "Name" : "Button 19", "Number" : 19 }, { "Name" : "Button 20", "Number" : 20 }, { "Name" : "Button 21", "Number" : 21 }, { "Name" : "Button 22", "Number" : 22 }, { "Name" : "Button 23", "Number" : 23 }, { "Name" : "Button 24", "Number" : 24 }, { "Name" : "Button 25", "Number" : 25 }, { "Name" : "Button 26", "Number" : 26 }, { "Name" : "Button 27", "Number" : 27 }, { "Name" : "Button 28", "Number" : 28 }, { "Name" : "Button 29", "Number" : 29 }, { "Name" : "Button 30", "Number" : 30 }, { "Name" : "Button 31", "Number" : 31 }, { "Name" : "Button 32", "Number" : 32 }, { "Name" : "Button 33", "Number" : 33 }, { "Name" : "Button 34", "Number" : 34 }, { "Name" : "Button 35", "Number" : 35 }, { "Name" : "Button 36", "Number" : 36 }, { "Name" : "Button 37", "Number" : 37 }, { "Name" : "Button 38", "Number" : 38 }, { "Name" : "Button 39", "Number" : 39 }, { "Name" : "Button 40", "Number" : 40 }, { "Name" : "Button 41", "Number" : 41 }, { "Name" : "Button 42", "Number" : 42 }, { "Name" : "Button 43", "Number" : 43 }, { "Name" : "Button 44", "Number" : 44 }, { "Name" : "Button 45", "Number" : 45 }, { "Name" : "Button 46", "Number" : 46 }, { "Name" : "Button 47", "Number" : 47 }, { "Name" : "Button 48", "Number" : 48 }, { "Name" : "Button 49", "Number" : 49 }, { "Name" : "Button 50", "Number" : 50 }, { "Name" : "Button 51", "Number" : 51 }, { "Name" : "Button 52", "Number" : 52 }, { "Name" : "Button 53", "Number" : 53 }, { "Name" : "Button 54", "Number" : 54 }, { "Name" : "Button 55", "Number" : 55 }, { "Name" : "Button 56", "Number" : 56 }, { "Name" : "Button 57", "Number" : 57 }, { "Name" : "Button 58", "Number" : 58 }, { "Name" : "Button 59", "Number" : 59 }, { "Name" : "Button 60", "Number" : 60 }, { "Name" : "Button 61", "Number" : 61 }, { "Name" : "Button 62", "Number" : 62 }, { "Name" : "Button 63", "Number" : 63 }, { "Name" : "Button 64", "Number" : 64 }, { "Name" : "Button 65", "Number" : 65 }, { "Name" : "Button 66", "Number" : 66 }, { "Name" : "Button 67", "Number" : 67 }, { "Name" : "Button 68", "Number" : 68 }, { "Name" : "Button 69", "Number" : 69 }, { "Name" : "Button 70", "Number" : 70 }, { "Name" : "Button 71", "Number" : 71 }, { "Name" : "Button 72", "Number" : 72 }, { "Name" : "Button 73", "Number" : 73 }, { "Name" : "Button 74", "Number" : 74 }, { "Name" : "Button 75", "Number" : 75 }, { "Name" : "Button 76", "Number" : 76 }, { "Name" : "Button 77", "Number" : 77 }, { "Name" : "Button 78", "Number" : 78 }, { "Name" : "Button 79", "Number" : 79 }, { "Name" : "Button 80", "Number" : 80 }, { "Name" : "Button 81", "Number" : 81 }, { "Name" : "Button 82", "Number" : 82 }, { "Name" : "Button 83", "Number" : 83 }, { "Name" : "Button 84", "Number" : 84 }, { "Name" : "Button 85", "Number" : 85 }, { "Name" : "Button 86", "Number" : 86 }, { "Name" : "Button 87", "Number" : 87 }, { "Name" : "Button 88", "Number" : 88 }, { "Name" : "Button 89", "Number" : 89 }, { "Name" : "Button 90", "Number" : 90 }, { "Name" : "Button 91", "Number" : 91 }, { "Name" : "Button 92", "Number" : 92 }, { "Name" : "Button 93", "Number" : 93 }, { "Name" : "Button 94", "Number" : 94 }, { "Name" : "Button 95", "Number" : 95 }, { "Name" : "Button 96", "Number" : 96 }, { "Name" : "Button 97", "Number" : 97 }, { "Name" : "Button 98", "Number" : 98 }, { "Name" : "Button 99", "Number" : 99 }, { "Name" : "Button 100", "Number" : 100 } ] }, { "ID" : 10, "Name" : "Bathroom Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 11, "Name" : "Hallway Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 13, "Name" : "Foyer Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 5, "Name" : "Kitchen Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 6, "Name" : "Living Room Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 15, "Name" : "Bedroom Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 16, "Name" : "Pico2", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 17, "Name" : "Pico1", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] }, { "ID" : 19, "Name" : "Nursery Remote", "Buttons" : [ { "Number" : 2 }, { "Number" : 3 }, { "Number" : 4 }, { "Number" : 5 }, { "Number" : 6 } ] } ], "Zones" : [ { "ID" : 2, "Name" : "Family Room Dimmer" }, { "ID" : 3, "Name" : "Dining Room Dimmer" }, { "ID" : 4, "Name" : "Stairway Dimmer" }, { "ID" : 7, "Name" : "Hallway Dimmer" }, { "ID" : 9, "Name" : "Bathroom Dimmer" }, { "ID" : 12, "Name" : "Foyer Dimmer" }, { "ID" : 14, "Name" : "String Lights" }, { "ID" : 18, "Name" : "Night Light" }, { "ID" : 20, "Name" : "Nursery Fan" } ] } }

thecynic commented 7 years ago

Is this last one what is provided by pro version? Is this the integration report? or is that something different?

thecynic commented 7 years ago

Also, doesn't seem like there's anything mapped to the Picos or in the "virtual" buttons on the smart bridge? You just have and only use the dimmers?

adam-fox commented 7 years ago

Apologies for not getting that to format correctly. Yep, it's the Pro hub and the Picos were being used with a different home automation hub to control some Hue lights.

thecynic commented 5 years ago

Sorry, took no action on this at all. Without having a system I can test on, anything I write will be broken. If someone has a caseta and wants to add support, I'll be glad to take a look at a PR.