Shutdown Script: Difference between revisions

From NURDspace
No edit summary
Line 61: Line 61:
     print(msg.topic+" "+str(msg.payload))
     print(msg.topic+" "+str(msg.payload))


     if msg.payload=="False":
     if msg.payload=="false":


         print("Space is uit")
         print("Space is uit")

Revision as of 13:23, 13 November 2022

Shutdown Script
Shutdown.png
Participants
Skills Python, Linux
Status Finished
Niche
Purpose Saving energy and money
Tool No
Location
Cost
Tool category

Shutdown Script

Shutdown.png {{#if:No | [[Tool Owner::{{{ProjectParticipants}}} | }} {{#if:No | [[Tool Cost::{{{Cost}}} | }}

A script that shuts PC's down on the space when space state is off.

It checks space status on MQTT and shuts machine down if space is closed.

  • Make sure you have paho installed.
apt install python-pip
pip install paho-mqtt
  • Log in as root and access root folder.
sudo -s
cd /root/
  • Enter crontab.
crontab -e
  • Add a cronjob on the last line with the location of the script file.
* * * * *  python /home/user/space_status_shutdown.py

The Script

Make sure the file has a .py extension.

#!/usr/bin/env python

#2019 The_Niz

#checks space status and shuts machine down if space is closed


import paho.mqtt.client as mqtt
import os 

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):

    if rc==0:

        client.connected_flag=True #set flag

        print("Connected with result code "+str(rc))

    else:

        print("Bad connection Returned code=",rc)

        client.loop_stop()

        client.disconnect()

    client.subscribe("space/state")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):

    print(msg.topic+" "+str(msg.payload))

    if msg.payload=="false":

        print("Space is uit")

        os.system('sudo /bin/systemctl poweroff')

    else:

        print("Space is aan")

    client.loop_stop()

    client.disconnect()


client = mqtt.Client()

client.on_connect = on_connect

client.on_message = on_message

client.connect("arbiter.vm.nurd.space", 1883, 60)

client.loop_forever()