Hi,
 
Automated WPA2-PSK be achieved by API.
 
Edit the following python script as highlighted in red referring to the details.
 
Get the details 
 
"
import meraki
import requests
import random
import string
import smtplib
import ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
 
 
api_key = "your_api_key" # enter your meraki api key here
network_id = "your_network_id" # enter the network id of the network you 
want to change here
ssid_number = "ssid_number"# enter the number of the ssid you want to change here 0 - 14
password_length = 15  # enter the desired length of the new PSK min 8 max 63
character_types = string.ascii_lowercase + string.ascii_uppercase + string.digits # remove or change according to needs
gmail_password = "App_password_generated" # enter the generated gmail app password here
sender_email = "sender@gmail.com" # sending gmail address
receiver_email = "reciver@gmail.com" # receiving address(es)
 
def random_string(stringlength=password_length):
    return ''.join(random.choice(character_types) for i in range(stringlength))
 
 
def set_new_psk(new_psk, ssid=ssid_number):
    url = "https://api.meraki.com/api/v0/networks/"+network_id+"/ssids/"+str(ssid)  #remove the spaces the I inserted to get around a community bug
    payload = "{\r\n    \"psk\": \""+str(new_psk)+"\"\r\n}"
    headers = {
        'Accept': "*/*",
        'Content-Type': "application/json",
        'cache-control': "no-cache",
        'X-Cisco-Meraki-API-Key': api_key
    }
 
    response = requests.request("PUT", url, data=payload, headers=headers)
 
    print(str(response.status_code) + " - " + response.text)
    return(response.status_code)
 
 
def send_password_email(new_psk_param):
 
    message = MIMEMultipart("alternative")
    message["Subject"] = "New Wi-Fi PSK"
    message["From"] = sender_email
    message["To"] = receiver_email
 
    # Create the plain-text and HTML version of your message
    text = """\
    Hi,
    We've changed the Wi-Fi password to: {new_psk}
    Kind regards,
    pskscript""".format(new_psk=new_psk_param)
    html = """\
    <html>
      <body>
        <div>Hi,<br>
           <br>
           We've changed the Wi-Fi password to: <br> #content to be recived
           <h1>{new_psk}</h1>
           Kind regards,<br>
           pskscript
        </div>
      </body>
    </html>
    """.format(new_psk=new_psk_param)
 
    # Turn these into plain/html MIMEText objects
    part1 = MIMEText(text, "plain")
    part2 = MIMEText(html, "html")
 
    # Add HTML/plain-text parts to MIMEMultipart message
    # The email client will try to render the last part first
    message.attach(part1)
    message.attach(part2)
 
    # Create secure connection with server and send email
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
        server.login(sender_email, gmail_password)
        server.sendmail(
            sender_email, receiver_email, message.as_string()
        )
 
 
new_psk = random_string(password_length)
if set_new_psk(new_psk) == 200:
    send_password_email(new_psk)
 
“
 
Schedule Python script to run weekly on some online platforms like "www.pythonanywhere.com" or you can run the script in the internal server with using crontab.