Shutdown Script: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| Line 61: | Line 61: | ||
print(msg.topic+" "+str(msg.payload)) | print(msg.topic+" "+str(msg.payload)) | ||
if msg.payload==" | if msg.payload=="false": | ||
print("Space is uit") | print("Space is uit") | ||
Revision as of 13:23, 13 November 2022
| Shutdown Script | |
|---|---|
| Participants | |
| Skills | Python, Linux |
| Status | Finished |
| Niche | |
| Purpose | Saving energy and money |
| Tool | No |
| Location | |
| Cost | |
| Tool category | |
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()