109 lines
4.5 KiB
Python
Executable File
109 lines
4.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright (c) 2022 Clément Martin <twisla@twis.la. All rights reserved.
|
|
# Unauthorized copying of this file, via any medium is strictly prohibited
|
|
|
|
"""Home network diagram
|
|
"""
|
|
|
|
from diagrams import Cluster, Diagram
|
|
from diagrams.generic.network import Firewall, Router, Switch
|
|
from diagrams.onprem.network import Internet
|
|
from diagrams.onprem.client import User, Users
|
|
from diagrams.onprem.compute import Server
|
|
from diagrams.generic.storage import Storage
|
|
|
|
from audio import Amplifier, AudioStreamer, TubeAmp, TurnTable
|
|
from consoles import NintendoSwitch, PlayStation4
|
|
from devices import AndroidPhone, IPhone, Laptop, NUC, Printer, Rpi4, WashingMachine
|
|
from edges import MyEdge, Legend
|
|
from electricity import Boxx, CPL
|
|
from fitbit import Aria
|
|
from lights import HueBridge, HueBulb, HueSpot, SmartPlug, Tradfri
|
|
from network import Modem, UniFiAP
|
|
from video import ProximusTV, Television, UltraWideScreen
|
|
|
|
with Diagram('Konijnenberg', direction='TB'):
|
|
with Cluster('Bureau', direction='TB'):
|
|
office_cpl = CPL('CPL bureau')
|
|
ps4 = PlayStation4()
|
|
printer = Printer()
|
|
rainbow = Rpi4('Rainbow')
|
|
switch = Switch('dlink')
|
|
walter = NUC('walter')
|
|
zippo = Storage('Zippo')
|
|
rpi4s = [ Rpi4('RPI4/{x}') for x in range(5) ]
|
|
|
|
switch << MyEdge('ethernet') >> [office_cpl, ps4, printer, rainbow, walter, zippo] + rpi4s
|
|
|
|
with Cluster('Salon'):
|
|
hue = HueBridge('Hue Bridge')
|
|
living_cpl = CPL('CPL salon')
|
|
malkovitch = Firewall('malkovitch')
|
|
proximus = Internet('Proximus')
|
|
proximus_router = Modem('Proximus')
|
|
proximus_tv = ProximusTV('Decodeur')
|
|
telenet = Internet('Telenet')
|
|
telenet_router = Modem('Telenet')
|
|
|
|
malkovitch << MyEdge('ethernet') >> [living_cpl, proximus_router, telenet_router]
|
|
proximus_router << MyEdge('adsl') >> proximus
|
|
proximus_router << MyEdge('ethernet') >> [ hue, proximus_tv ]
|
|
telenet_router << MyEdge('cable') >> telenet
|
|
|
|
|
|
# with Cluster('Lights'):
|
|
# with Cluster('Salon'):
|
|
# lumieres_salon = [ HueBulb('Boule Salon'), HueBulb('Lustre Canapé'), HueBulb('Lustre Table'),
|
|
# SmartPlug('Vinyls'), SmartPlug('Mappemonde'),
|
|
# Tradfri('Vaisselier') ]
|
|
# with Cluster('Veranda'):
|
|
# lumieres_veranda = [ HueSpot(f'Veranda {x}') for x in range(6) ]
|
|
# with Cluster('Bureau'):
|
|
# lumieres_bureau = [ HueSpot('Plafond bureau 1'), HueSpot('Plafond bureau 2') ]
|
|
|
|
# hue << MyEdge('zigbee') >> lumieres_salon
|
|
# hue << MyEdge('zigbee') >> lumieres_veranda
|
|
# hue << MyEdge('zigbee') >> lumieres_bureau
|
|
|
|
|
|
with Cluster('Wireless', direction='TB'):
|
|
|
|
wifi_ap = UniFiAP('NanoHD')
|
|
|
|
with Cluster('Misc'):
|
|
with Cluster('Salon'):
|
|
boxx = Boxx()
|
|
with Cluster('Salle de bain'):
|
|
balance = Aria('Balance')
|
|
with Cluster('Garage', direction='TB'):
|
|
lessiveuse = WashingMachine('Lave linge')
|
|
with Cluster('Sound'):
|
|
with Cluster('Cuisine', direction='TB'):
|
|
flex2i = AudioStreamer('Flex 2i')
|
|
with Cluster('Salon'):
|
|
# ampli = Amplifier('Ampli') # has buletooth
|
|
hifi = AudioStreamer('HiFi')
|
|
with Cluster('Video'):
|
|
tv_salon = Television('TV Salon')
|
|
jack = Rpi4('Jack')
|
|
with Cluster('User Devices'):
|
|
laptop_clement = Laptop('Laptop Clément')
|
|
laptop_maithe = Laptop('Laptop Maïthé')
|
|
nintendo_switch = NintendoSwitch('Switch Alistair')
|
|
tel_alistair = AndroidPhone('Téléphone Alistair')
|
|
tel_clement = AndroidPhone('Téléphone Clément')
|
|
tel_maithe = IPhone('Téléphone Maïthé')
|
|
wifi_devices = [ nintendo_switch, laptop_clement, laptop_maithe,
|
|
tel_alistair, tel_maithe, tel_clement ]
|
|
|
|
|
|
wifi_ap << MyEdge('wifi') >> [ tv_salon, jack, boxx, hifi ]
|
|
wifi_ap << MyEdge('wifi') >> wifi_devices
|
|
wifi_ap << MyEdge('wifi') >> balance
|
|
wifi_ap << MyEdge('wifi') >> flex2i
|
|
wifi_ap << MyEdge('wifi') >> lessiveuse
|
|
|
|
|
|
living_cpl << MyEdge('electric') >> office_cpl
|
|
wifi_ap << MyEdge('ethernet') >> malkovitch
|