No edit summary |
No edit summary |
||
Line 8: | Line 8: | ||
}} | }} | ||
A script that shuts PC's down on the space when space state is off. | 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. | * Make sure you have paho installed. |
Revision as of 22:16, 7 March 2019
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()