Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support for plantuml based network graphs #3742

Merged
merged 1 commit into from
Jun 14, 2020

Conversation

Kosta-Github
Copy link
Contributor

Add support for PlantUML based network graphs, which can be pasted into this online editor.

The test configuration used for unit testing for example produces this output:

output.svg

The generated script looks like this:

' paste into: https://www.planttext.com/

@startuml
card 0x0017880104e45525 [
0x0017880104e45525
---
0x0017880104e45525 (6536) failed: lqi,routingTable
---
Boef notSupportedModelID
---
1970-01-01T01:00:01+01:00
]

card 0x000b57fffec6a5b2 [
bulb
---
0x000b57fffec6a5b2 (40369)
---
IKEA TRADFRI LED bulb E26/E27 980 lumen, dimmable, white spectrum, opal white (LED1545G12)
---
1970-01-01T01:00:01+01:00
]

card 0x000b57fffec6a5b3 [
bulb_color
---
0x000b57fffec6a5b3 (40399)
---
Philips Hue Go (7146060PH)
---
unknown
]

card 0x0017880104e45521 [
button_double_key
---
0x0017880104e45521 (6538)
---
Xiaomi Aqara double key wireless wall switch (WXKG02LM)
---
1970-01-01T01:00:01+01:00
]

card 0x0017880104e45559 [
cc2530_router
---
0x0017880104e45559 (6540)
---
Custom devices (DiY) [CC2530 router](http://ptvo.info/cc2530-based-zigbee-coordinator-and-router-112/) (CC2530.ROUTER)
---
1970-01-01T01:00:01+01:00
]

card 0x00124b00120144ae [
Coordinator
---
0x00124b00120144ae (0)
---
1970-01-01T01:00:10+01:00
]

0x000b57fffec6a5b3 --> 0x00124b00120144ae: 120
0x000b57fffec6a5b2 --> 0x00124b00120144ae: 92
0x000b57fffec6a5b3 --> 0x000b57fffec6a5b2: 110
0x0017880104e45559 --> 0x000b57fffec6a5b2: 100
0x0017880104e45521 --> 0x0017880104e45559: 130

@enduml

@branch-switcher branch-switcher bot changed the base branch from master to dev June 14, 2020 13:32
@branch-switcher
Copy link

Hello @Kosta-Github. The base branch of this pull request has been updated to the dev branch. Please revisit the changes and make sure that there are no conflicts with the new base branch. Thank you for your contributions.

Add support for [PlantUML](http://plantuml.com/guide) based network graphs, which can be pasted into [this online editor](https://www.planttext.com/).

The test configuration used for unit testing for example produces this output:

![output.svg](https://www.planttext.com/api/plantuml/svg/j5LTRzem57tVhxYFGSFbEbyG7gOoOBHggrMCQPsg2Zc9KwmwSPeufTjVsyD-qlx20dICZuJni4PHPDdtd7lkyRNpwyTFU7bESyqoNSJopP-PW6KXu3CYRNSwID7cjkEO3jok8_ONrqk4a0DXOBYEvJOWOaBoi0loKJGpLMYHt4-OBtabpNl58qYK_bIagSeq3wzKoENve3AOUcqaICjtWhIBs4NwTZbOHzojH_iLe--qeoZYWSiStzoes2-aNrlZ3igmqNAzHcNu-SMm1vDnR_1XV0wNmy6I68QcsngQRV0w2BA8UTA4KCJnmf4cp6T2SyXJ7kYiY9kWKYPV9esIWJgsCw9cTRh_w8QruyOqK59bntbYBJtnQZovdWafqXpE2WuZ1KQRsYwwU7rM7Lua3ucQ9qTLiDLzTAi2hLKo3LLHUZnzuD-EQs2wRE1EjR0RmLGieFV8CWOhPYYPOIuoBdcUmvn92VbSw606nfURYn6QbrUliN6RcXrle-mWC1qBfuiZn-ltRWTUbcnZjSn-aMiLGyYVHC1pC0RYQmDk-_r55bXbkJDcMgVTLYlLJ-f4995ghLGGd-Ky9D_5lSyv2PJAGf4mhJB2af2im8HIizK0OyLuClxuUJ8SlufZfkqllaXjc_4Dn_f_TTNxjGqsQipQKqZntmehpX8XxohITg4S7RgMwc2UUKooRR8o6SL3FLCBmtfOURhM6hVOIfY5-zQSyYHS_BT-0m00__y30000)

The generated script looks like this:

```
' paste into: https://www.planttext.com/

@startuml
card 0x0017880104e45525 [
0x0017880104e45525
---
0x0017880104e45525 (6536) failed: lqi,routingTable
---
Boef notSupportedModelID
---
1970-01-01T01:00:01+01:00
]

card 0x000b57fffec6a5b2 [
bulb
---
0x000b57fffec6a5b2 (40369)
---
IKEA TRADFRI LED bulb E26/E27 980 lumen, dimmable, white spectrum, opal white (LED1545G12)
---
1970-01-01T01:00:01+01:00
]

card 0x000b57fffec6a5b3 [
bulb_color
---
0x000b57fffec6a5b3 (40399)
---
Philips Hue Go (7146060PH)
---
unknown
]

card 0x0017880104e45521 [
button_double_key
---
0x0017880104e45521 (6538)
---
Xiaomi Aqara double key wireless wall switch (WXKG02LM)
---
1970-01-01T01:00:01+01:00
]

card 0x0017880104e45559 [
cc2530_router
---
0x0017880104e45559 (6540)
---
Custom devices (DiY) [CC2530 router](http://ptvo.info/cc2530-based-zigbee-coordinator-and-router-112/) (CC2530.ROUTER)
---
1970-01-01T01:00:01+01:00
]

card 0x00124b00120144ae [
Coordinator
---
0x00124b00120144ae (0)
---
1970-01-01T01:00:10+01:00
]

0x000b57fffec6a5b3 --> 0x00124b00120144ae: 120
0x000b57fffec6a5b2 --> 0x00124b00120144ae: 92
0x000b57fffec6a5b3 --> 0x000b57fffec6a5b2: 110
0x0017880104e45559 --> 0x000b57fffec6a5b2: 100
0x0017880104e45521 --> 0x0017880104e45559: 130

@enduml
```
@Koenkk
Copy link
Owner

Koenkk commented Jun 14, 2020

Very cool, thanks!

@Koenkk Koenkk merged commit a2ea520 into Koenkk:dev Jun 14, 2020
Koenkk added a commit to Koenkk/zigbee2mqtt.io that referenced this pull request Jun 14, 2020
@Kosta-Github Kosta-Github deleted the plantuml branch June 14, 2020 14:17
@sjorge
Copy link
Sponsor Contributor

sjorge commented Jun 14, 2020

Pretty good stuff but I found a few issues.

  • when requesting the netmap including routes, they are not marked as they are in graphviz
  • large netmaps don't seem to render at all on planttext.com or alternatives.
' paste into: https://www.planttext.com/

@startuml
card 0x14b457fffe7f52ab [
bathroom/lights/bulb
---
0x14b457fffe7f52ab (9887)
---
IKEA GUNNARP panel 40*40 (T1829)
---
56 seconds ago
]

card 0x90fd9ffffee8e67a [
bathroom/lights/remote
---
0x90fd9ffffee8e67a (53853)
---
IKEA TRADFRI remote control (E1524/E1810)
---
9 minutes, 3 seconds ago
]

card 0x90fd9ffffee77fcf [
bedroom/bed_lamp/bulb
---
0x90fd9ffffee77fcf (31787)
---
IKEA TRADFRI LED bulb E14/E26/E27 600 lumen, dimmable, color, opal white (LED1624G9)
---
1 minute, 18 seconds ago
]

card 0x14b457fffecc1315 [
bedroom/bed_lamp/remote
---
0x14b457fffecc1315 (44663)
---
IKEA TRADFRI ON/OFF switch (E1743)
---
1 hour, 58 minutes ago
]

card 0x14b457fffe2bd760 [
bedroom/desk_lamp/bulb
---
0x14b457fffe2bd760 (21312)
---
Innr E14 bulb RGBW (RB 250 C)
---
13 seconds ago
]

card 0x14b457fffeca351b [
bedroom/desk_lamp/remote
---
0x14b457fffeca351b (24931)
---
IKEA TRADFRI ON/OFF switch (E1743)
---
2 hours, 12 minutes ago
]

card 0xec1bbdfffeb5154f [
bedroom/lights/bulb1
---
0xec1bbdfffeb5154f (11898)
---
IKEA TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum (LED1537R6/LED1739R5)
---
1 minute, 58 seconds ago
]

card 0xec1bbdfffeaf89de [
bedroom/lights/bulb2
---
0xec1bbdfffeaf89de (31642)
---
IKEA TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum (LED1537R6/LED1739R5)
---
1 minute, 58 seconds ago
]

card 0xec1bbdfffe4318dc [
bedroom/lights/bulb3
---
0xec1bbdfffe4318dc (7683)
---
IKEA TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum (LED1537R6/LED1739R5)
---
1 minute, 58 seconds ago
]

card 0x680ae2fffe34b63b [
bedroom/lights/bulb4
---
0x680ae2fffe34b63b (24293)
---
IKEA TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum (LED1537R6/LED1739R5)
---
1 minute, 58 seconds ago
]

card 0xccccccfffe381ebc [
bedroom/lights/remote
---
0xccccccfffe381ebc (12286)
---
IKEA TRADFRI remote control (E1524/E1810)
---
1 hour, 20 minutes ago
]

card 0x00178801086412b5 [
bedroom/motion
---
0x00178801086412b5 (65426)
---
Philips Hue motion sensor (9290012607)
---
3 seconds ago
]

card 0x90fd9ffffe4a612f [
bedroom/radiator
---
0x90fd9ffffe4a612f (36335)
---
Viessmann ViCare radiator thermostat valve (ZK03840)
---
1 minute ago
]

card 0x00158d00033ddfaa [
bedroom/sensor
---
0x00158d00033ddfaa (39644)
---
Xiaomi Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)
---
17 minutes, 40 seconds ago
]

card 0x00124b001938a7e5 [
Coordinator
---
0x00124b001938a7e5 (0)
---
0 seconds ago
]

card 0x000b3cfffef575ce [
masterbedroom/lights/bulb1
---
0x000b3cfffef575ce (10436)
---
IKEA TRADFRI LED bulb E12/E14/E17 400 lumen, dimmable warm white, chandelier opal (LED1649C5)
---
1 minute, 28 seconds ago
]

card 0x000b3cfffef43b06 [
masterbedroom/lights/bulb2
---
0x000b3cfffef43b06 (29809)
---
IKEA TRADFRI LED bulb E12/E14/E17 400 lumen, dimmable warm white, chandelier opal (LED1649C5)
---
1 minute, 28 seconds ago
]

card 0x90fd9ffffee04d2b [
masterbedroom/lights/remote
---
0x90fd9ffffee04d2b (25909)
---
IKEA TRADFRI remote control (E1524/E1810)
---
20 minutes, 23 seconds ago
]

card 0x000d6ffffe8e8d4f [
masterbedroom/repeater
---
0x000d6ffffe8e8d4f (46726)
---
IKEA TRADFRI signal repeater (E1746)
---
1 minute, 49 seconds ago
]

card 0x00158d0003f115c5 [
serverroom/sensor
---
0x00158d0003f115c5 (41220)
---
Xiaomi Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)
---
21 minutes, 18 seconds ago
]

0xec1bbdfffe4318dc --> 0x00124b001938a7e5: 1
0x680ae2fffe34b63b --> 0x00124b001938a7e5: 36
0xec1bbdfffeaf89de --> 0x00124b001938a7e5: 23
0xec1bbdfffeb5154f --> 0x00124b001938a7e5: 21
0x14b457fffe2bd760 --> 0x00124b001938a7e5: 1
0x000b3cfffef43b06 --> 0x00124b001938a7e5: 42
0x000d6ffffe8e8d4f --> 0x00124b001938a7e5: 55
0x14b457fffe7f52ab --> 0x00124b001938a7e5: 0
0x000b3cfffef575ce --> 0x00124b001938a7e5: 16
0x90fd9ffffee77fcf --> 0x00124b001938a7e5: 1
0x00124b001938a7e5 --> 0x000d6ffffe8e8d4f: 104
0xec1bbdfffe4318dc --> 0x000d6ffffe8e8d4f: 124
0x14b457fffe7f52ab --> 0x000d6ffffe8e8d4f: 148
0x000b3cfffef575ce --> 0x000d6ffffe8e8d4f: 200
0xec1bbdfffeb5154f --> 0x000d6ffffe8e8d4f: 151
0x14b457fffe2bd760 --> 0x000d6ffffe8e8d4f: 115
0x680ae2fffe34b63b --> 0x000d6ffffe8e8d4f: 146
0x000b3cfffef43b06 --> 0x000d6ffffe8e8d4f: 196
0xec1bbdfffeaf89de --> 0x000d6ffffe8e8d4f: 131
0x90fd9ffffee77fcf --> 0x000d6ffffe8e8d4f: 79
0xec1bbdfffe4318dc --> 0x90fd9ffffee77fcf: 152
0x14b457fffe7f52ab --> 0x90fd9ffffee77fcf: 79
0x000b3cfffef575ce --> 0x90fd9ffffee77fcf: 79
0xec1bbdfffeb5154f --> 0x90fd9ffffee77fcf: 148
0x14b457fffe2bd760 --> 0x90fd9ffffee77fcf: 65
0x680ae2fffe34b63b --> 0x90fd9ffffee77fcf: 149
0x000b3cfffef43b06 --> 0x90fd9ffffee77fcf: 80
0xec1bbdfffeaf89de --> 0x90fd9ffffee77fcf: 129
0x000d6ffffe8e8d4f --> 0x90fd9ffffee77fcf: 74
0x00124b001938a7e5 --> 0x14b457fffe2bd760: 39
0xec1bbdfffe4318dc --> 0x14b457fffe2bd760: 142
0x14b457fffe7f52ab --> 0x14b457fffe2bd760: 126
0x000b3cfffef575ce --> 0x14b457fffe2bd760: 115
0xec1bbdfffeb5154f --> 0x14b457fffe2bd760: 186
0x680ae2fffe34b63b --> 0x14b457fffe2bd760: 208
0x000b3cfffef43b06 --> 0x14b457fffe2bd760: 104
0xec1bbdfffeaf89de --> 0x14b457fffe2bd760: 184
0x90fd9ffffee77fcf --> 0x14b457fffe2bd760: 95
0x000d6ffffe8e8d4f --> 0x14b457fffe2bd760: 137
0xec1bbdfffe4318dc --> 0x14b457fffe7f52ab: 150
0x000b3cfffef575ce --> 0x14b457fffe7f52ab: 103
0xec1bbdfffeb5154f --> 0x14b457fffe7f52ab: 102
0x14b457fffe2bd760 --> 0x14b457fffe7f52ab: 124
0x680ae2fffe34b63b --> 0x14b457fffe7f52ab: 157
0x000b3cfffef43b06 --> 0x14b457fffe7f52ab: 130
0xec1bbdfffeaf89de --> 0x14b457fffe7f52ab: 184
0x90fd9ffffee77fcf --> 0x14b457fffe7f52ab: 102
0x000d6ffffe8e8d4f --> 0x14b457fffe7f52ab: 167
0xec1bbdfffe4318dc --> 0xec1bbdfffeb5154f: 255
0x14b457fffe7f52ab --> 0xec1bbdfffeb5154f: 91
0x000b3cfffef575ce --> 0xec1bbdfffeb5154f: 191
0x14b457fffe2bd760 --> 0xec1bbdfffeb5154f: 174
0x680ae2fffe34b63b --> 0xec1bbdfffeb5154f: 245
0x000b3cfffef43b06 --> 0xec1bbdfffeb5154f: 143
0xec1bbdfffeaf89de --> 0xec1bbdfffeb5154f: 255
0x90fd9ffffee77fcf --> 0xec1bbdfffeb5154f: 164
0x000d6ffffe8e8d4f --> 0xec1bbdfffeb5154f: 163
0x90fd9ffffee8e67a --> 0xec1bbdfffeb5154f: 213
0x00158d00033ddfaa --> 0xec1bbdfffeb5154f: 203
0x90fd9ffffe4a612f --> 0xec1bbdfffeb5154f: 189
0xec1bbdfffe4318dc --> 0xec1bbdfffeaf89de: 255
0x14b457fffe7f52ab --> 0xec1bbdfffeaf89de: 174
0x000b3cfffef575ce --> 0xec1bbdfffeaf89de: 120
0xec1bbdfffeb5154f --> 0xec1bbdfffeaf89de: 255
0x14b457fffe2bd760 --> 0xec1bbdfffeaf89de: 170
0x680ae2fffe34b63b --> 0xec1bbdfffeaf89de: 255
0x000b3cfffef43b06 --> 0xec1bbdfffeaf89de: 117
0x90fd9ffffee77fcf --> 0xec1bbdfffeaf89de: 144
0x000d6ffffe8e8d4f --> 0xec1bbdfffeaf89de: 141
0x14b457fffecc1315 --> 0xec1bbdfffeaf89de: 201
0x00178801086412b5 --> 0xec1bbdfffeaf89de: 176
0xec1bbdfffe4318dc --> 0x000b3cfffef575ce: 111
0x14b457fffe7f52ab --> 0x000b3cfffef575ce: 75
0xec1bbdfffeb5154f --> 0x000b3cfffef575ce: 171
0x14b457fffe2bd760 --> 0x000b3cfffef575ce: 84
0x680ae2fffe34b63b --> 0x000b3cfffef575ce: 130
0x000b3cfffef43b06 --> 0x000b3cfffef575ce: 255
0xec1bbdfffeaf89de --> 0x000b3cfffef575ce: 100
0x90fd9ffffee77fcf --> 0x000b3cfffef575ce: 74
0x000d6ffffe8e8d4f --> 0x000b3cfffef575ce: 191
0x00158d0003f115c5 --> 0x000b3cfffef575ce: 255
0xec1bbdfffe4318dc --> 0x000b3cfffef43b06: 132
0x14b457fffe7f52ab --> 0x000b3cfffef43b06: 106
0x000b3cfffef575ce --> 0x000b3cfffef43b06: 255
0xec1bbdfffeb5154f --> 0x000b3cfffef43b06: 125
0x14b457fffe2bd760 --> 0x000b3cfffef43b06: 76
0x680ae2fffe34b63b --> 0x000b3cfffef43b06: 78
0xec1bbdfffeaf89de --> 0x000b3cfffef43b06: 102
0x90fd9ffffee77fcf --> 0x000b3cfffef43b06: 79
0x000d6ffffe8e8d4f --> 0x000b3cfffef43b06: 192
0x90fd9ffffee04d2b --> 0x000b3cfffef43b06: 255
0x14b457fffe7f52ab --> 0xec1bbdfffe4318dc: 142
0x000b3cfffef575ce --> 0xec1bbdfffe4318dc: 132
0xec1bbdfffeb5154f --> 0xec1bbdfffe4318dc: 255
0x14b457fffe2bd760 --> 0xec1bbdfffe4318dc: 126
0x680ae2fffe34b63b --> 0xec1bbdfffe4318dc: 255
0x000b3cfffef43b06 --> 0xec1bbdfffe4318dc: 149
0xec1bbdfffeaf89de --> 0xec1bbdfffe4318dc: 255
0x90fd9ffffee77fcf --> 0xec1bbdfffe4318dc: 166
0x000d6ffffe8e8d4f --> 0xec1bbdfffe4318dc: 134
0x14b457fffeca351b --> 0xec1bbdfffe4318dc: 216
0xccccccfffe381ebc --> 0xec1bbdfffe4318dc: 224
0xec1bbdfffe4318dc --> 0x680ae2fffe34b63b: 255
0x14b457fffe7f52ab --> 0x680ae2fffe34b63b: 150
0x000b3cfffef575ce --> 0x680ae2fffe34b63b: 150
0xec1bbdfffeb5154f --> 0x680ae2fffe34b63b: 245
0x14b457fffe2bd760 --> 0x680ae2fffe34b63b: 196
0x000b3cfffef43b06 --> 0x680ae2fffe34b63b: 93
0xec1bbdfffeaf89de --> 0x680ae2fffe34b63b: 255
0x90fd9ffffee77fcf --> 0x680ae2fffe34b63b: 165
0x000d6ffffe8e8d4f --> 0x680ae2fffe34b63b: 156

@enduml

Here is one of mine, not a huge network but not small either.

Here is the graphvis one rendered highlighting the routes in use:
https://imgur.com/mlLKrB9.png

@Kosta-Github
Copy link
Contributor Author

Kosta-Github commented Jun 14, 2020

Try switching to SVG...

Esp. for large graphs the graphviz layouting was not working for me.

Since the routing tables doesn‘t work for me (seems to have issues with the OSRAM Smart+ plugs), I haven‘t tried to implement... but should be easy to add.

How does this graph looks with graphviz?

@sjorge
Copy link
Sponsor Contributor

sjorge commented Jun 14, 2020

I don't think it will ever work for networks that have >~10 devices, the UML can make both StarUML and Enterprise Architects completely crash/hang.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants