home-network/konijnenberg.py
Clément Martin 127e4ac6e4 Cleanup
2022-01-05 18:32:14 +01:00

93 lines
3.8 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('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