Trädvy Permalänk
Medlem
Plats
Tidaholm
Registrerad
Nov 2009

Python Raspberry Pi Twitter

Hej!
Jag håller på med en kurs i Datorteknink och just nu håller jag på med en uppgift där målet är att: Skicka en tweet om CPU-temperaturen blir för hög.

Jag använder mig av en Raspberry Pi 3 med Raspbian. Hittils har jag använt mig av Python3 och följt först denna guiden: www.raspberrypi.org och sedan denna: www.raspberrypi.org

Jag har lyckats så jag får fram aktuell CPU-temperatur som sparas i en log och kan visa den på en graf. Även klar med guide två där jag kan skicka slumpmässiga meddelanden till Twitter. Men nu ska jag på något sätt koppla samman dessa så jag skickar ett meddelande till Twitter om CPU-temperaturen överstiger ett visst gradantal.

Hur gör jag (i Python) för att: om temperaturen överstiger x grader -> skicka tweet ?

Tacksam för tips och idéer! Förväntar mig inte hela scriptet klart men vad ska jag börja med? Jag har googlat en del och läst på forum men hittar inget.

Trädvy Permalänk
Medlem
Plats
~/
Registrerad
Mar 2008

Jag gjorde ett pythonskript en gång som twittrar en bild. Du kanske kan ha nytta av det på något sätt.

https://github.com/bitlabbet/nestbox_tweet

Tweepy: http://www.tweepy.org/

AMD Ryzen 5 2600X, Asus ROG Strix B350-I, 16GB Corsair Vengeance LP 2400MHz, Nvidia GeForce GTX 970, Fractal Design Nano S, EVGA Supernova G2 650W.

Trädvy Permalänk
Medlem
Plats
Tidaholm
Registrerad
Nov 2009
Skrivet av saturday_sun:

Jag gjorde ett pythonskript en gång som twittrar en bild. Du kanske kan ha nytta av det på något sätt.

https://github.com/bitlabbet/nestbox_tweet

Tweepy: http://www.tweepy.org/

Tack!

Efter lite pyssel löste jag problemet själv.

Kanske inte det vackraste scriptet och går säkert att korta ner och snygga till. Men det är mitt första som iallafall fungerar som det ska

from subprocess import check_output from re import findall from time import sleep, strftime, time from datetime import datetime from twython import Twython from kod import ( consumer_key, consumer_secret, access_token, access_token_secret ) twitter = Twython( consumer_key, consumer_secret, access_token, access_token_secret ) def get_temp(): temp = check_output(["vcgencmd","measure_temp"]).decode("UTF-8") temp = float(findall("\d+\.\d+",temp)[0]) return(temp) def write_temp(temp): with open("cpu_temp.csv", "a") as log: log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp))) thetime = datetime.now().strftime('%-I:%M%P on %d-%m-%Y') message = (thetime + "CPU för varm!") while True: temp = get_temp() write_temp(temp) sleep(120) if get_temp() > 65.0: twitter.update_status(status=message) print("Tweeted: %s" % message)

Ser nu att jag har kvar skapandet av loggen som inte fyller någon funktion här. Jaja jag får jobba vidare på att snygga till det.

La till code-taggar
Trädvy Permalänk
Hedersmedlem
Plats
Linköping
Registrerad
Okt 2006

Fixade code-taggar så man ser de indenteringar som är kritiska för att kunna läsa python.

Trädvy Permalänk
Medlem
Plats
Tidaholm
Registrerad
Nov 2009
Skrivet av Shimonu:

Fixade code-taggar så man ser de indenteringar som är kritiska för att kunna läsa python.

Tack! Man lär sig något nytt varje dag

Trädvy Permalänk
Medlem
Plats
Tidaholm
Registrerad
Nov 2009

@wicerd:

Såhär blev det efter lite justeringar.

from subprocess import check_output from re import findall from time import sleep, strftime, time from datetime import datetime from twython import Twython from kod import ( consumer_key, consumer_secret, access_token, access_token_secret ) twitter = Twython( consumer_key, consumer_secret, access_token, access_token_secret ) def getCPUtemperatur(): temp = check_output(["vcgencmd","measure_temp"]).decode("UTF-8") temp = float(findall("\d+\.\d+",temp)[0]) return(temp) while True: temp = getCPUtemperatur() tiden = datetime.now().strftime("Kl:"'%H:%M:%S den %d-%m-%Y') meddelande = (tiden + " CPU för varm!") if getCPUtemperatur() > 65.0: twitter.update_status(status=meddelande) print("Tweeted: %s" % meddelande) sleep(120)

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Dec 2008

Tänkte du bara vila om du skickat en tweet?