adds the raspi code and rc.local

adds the raspi code and rc.local.

also moving the licence and readme back that was moved by accident
This commit is contained in:
bernd2k 2019-11-30 19:39:16 +01:00
parent 3054997fe1
commit 7963ee5b24
4 changed files with 122 additions and 115 deletions

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2018 bernd2k
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1 +0,0 @@
# space_status

23
raspberry_pi/etc/rc.local Normal file
View file

@ -0,0 +1,23 @@
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
sleep 20
sudo python3 /home/pi/Schreibtisch/button.py &
exit 0

View file

@ -1,4 +1,10 @@
# status bot
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
import json
import os
@ -7,17 +13,6 @@ import urllib.request, json
import datetime
import tweepy
import random
path = os.path.abspath(__file__)
dir_path = os.path.dirname(path)
print("dir path is", dir_path)
def internet_on(url):
try:
urllib.request.urlopen(url)
return True
except urllib.error.URLError as e:
print(e.reason)
return False
def textselect(min, max):
@ -28,113 +23,102 @@ def textselect(min, max):
else:
return random.randint(min, max)
def log(out):
f = open(dir_path + os.sep + "log.csv", "a")
f.write(out)
f.close()
path = os.path.abspath(__file__)
dir_path = os.path.dirname(path)
print("dir path is", dir_path)
# starting by configuring the bot
file_configure_path = dir_path + os.sep + "config.json"
with open(file_configure_path, 'r') as f:
data_config = json.load(f)
path = data_config["path"]
CONSUMER_KEY = data_config["twitter_api"]["consumer_key"]
CONSUMER_SECRET = data_config["twitter_api"]["consumer_secret"]
ACCESS_KEY = data_config["twitter_api"]["token"]
ACCESS_SECRET = data_config["twitter_api"]["token_secret"]
print(CONSUMER_KEY)
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
state = 1
state_b4 = 1
while True:
# starting by configuring the bot
file_configure_path = dir_path + os.sep + "config.json"
with open(file_configure_path, 'r') as f:
data_config = json.load(f)
path = data_config["path"]
CONSUMER_KEY = data_config["twitter_api"]["consumer_key"]
CONSUMER_SECRET = data_config["twitter_api"]["consumer_secret"]
ACCESS_KEY = data_config["twitter_api"]["token"]
ACCESS_SECRET = data_config["twitter_api"]["token_secret"]
print(CONSUMER_KEY)
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
if internet_on("http://twitter.com") == True:
# finding out the status of the space...
api_url = data_config["status_api"]["url"]
with urllib.request.urlopen(api_url) as url:
data_space = json.loads(url.read().decode())
#print(data_space["state"]["open"])
file_path = path + "space.json"
if os.path.exists(file_path) == True:
# Reading data back
with open(file_path, 'r') as f:
data_space_b4 = json.load(f)
#print(data_space_b4["state"]["open"])
if data_space["state"]["open"] != data_space_b4["state"]["open"]:
print("status changed.")
# starting by configuring the bot
file_status_path = path + "status.json"
with open(file_status_path, 'r') as f:
if GPIO.input(12) == GPIO.HIGH:
#print("button was pushed:")
state = 1
if GPIO.input(12) == GPIO.LOW:
#print("button was not pushed:")
state = 0
time_now = time.time()
file_status_path = dir_path + os.sep + "status.json"
#print(file_status_path)
if state == 1 and state_b4 == 0:
if os.path.exists(file_status_path) == True:
with open(file_status_path, 'r') as f:
data_status = json.load(f)
number = len(data_status["opening_text"])
number = textselect(0, number - 1)
time_now = time.time()
# finding out wich state it change and sending out the text
if data_space["state"]["open"] == False:
print("closing at", time.time(), ",last change happend at", datetime.datetime.fromtimestamp(
int(data_space["state"]["lastchange"]) ).strftime('%Y-%m-%d %H:%M:%S'))
number = len(data_status["closing_text"])
number = textselect(0, number - 1)
text = data_status["closing_text"][number]["text"] + " [closed:" + datetime.datetime.fromtimestamp(
int( time_now + 3600 )).strftime('%Y-%m-%d %H:%M:%S') + "]"
text = data_status["opening_text"][number]["text"] + " [OPEN:" + datetime.datetime.fromtimestamp(
int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + "]"
print("Text:", text)
try:
api.update_status(text)
# same text as before cannot be posted!
except:
print(time_now, "did not tweet closing status")
log(str(time_now) + ";" + str(data_space["state"]["lastchange"]) + ";" + str(data_space["state"]["open"])
+ ";" + str(number) + "\n")
else:
print("opening at", time.time(), ",last change happend at", datetime.datetime.fromtimestamp(
int(data_space["state"]["lastchange"]) ).strftime('%Y-%m-%d %H:%M:%S'))
number = len(data_status["opening_text"])
number = textselect(0, number - 1)
text = data_status["opening_text"][number]["text"] + " [open:" + datetime.datetime.fromtimestamp(
int( time_now + 3600 )).strftime('%Y-%m-%d %H:%M:%S') + "]"
print("Text:", text)
#print("opened")
#text = "#Krautspace was opened. testmode (if you think I am wrong, report to me this bug/observation!) " + datetime.datetime.fromtimestamp(
# int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + ""
print("Text:", text)
try:
api.update_status(text)
except:
print(time_now, "did not tweet opening status")
#print("Text:", text)
try:
api.update_status(text)
# same text as before cannot be posted!
except:
print(time_now, "did not tweet closing status")
if state == 0 and state_b4 == 1:
#print("closed")
if os.path.exists(file_status_path) == True:
with open(file_status_path, 'r') as f:
data_status = json.load(f)
number = len(data_status["closing_text"])
number = textselect(0, number - 1)
log(str(time_now) + ";" + str(data_space["state"]["lastchange"]) + ";" + str(data_space["state"]["open"])
+ ";" + str(number) + "\n")
else:
print("status is still the same at", time.time(), datetime.datetime.fromtimestamp(
int(data_space["state"]["lastchange"]) ).strftime('%Y-%m-%d %H:%M:%S'))
else:
print("We're back, baby! #Krautspace space status is active again. @HackspaceJena")
# saving the current space status just too compare them in the next round
with open(file_path, 'w') as outfile:
json.dump(data_space, outfile, indent=4)
else:
print(time.time(), "internet is off")
# how often shall we check for status?
time.sleep(data_config["status_api"]["checking_period"])
text = data_status["closing_text"][number]["text"] + " [CLOSED:" + datetime.datetime.fromtimestamp(
int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + "]"
print("Text:", text)
#text = "#Krautspace was closed. testmode (if you think I am wrong, report to me this bug/observation!) " + datetime.datetime.fromtimestamp(
# int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + ""
#print("Text:", text)
try:
api.update_status(text)
# same text as before cannot be posted!
except:
print(time_now, "did not tweet closing status")
state_b4 = state
time.sleep(10)