During the last week or so I have been gradually tweaking my spin on Damien Mooney's ISS tracker. link https://damianmooney.wordpress.com/2016/02/16/raspberry-pi-minecraft-iss-tracker/
My bolt on is to take a screenshot record of each ISS movement and then tweet that picture from a twitter bot that I set up (@warksmessabout1).
This has worked for a while in trials, but has always fallen flat after a few hours. By trial and error I have hit upon a version which has run for 27 hours continuously updating 4 times an hour.
Here is an example screenshot of one of the recent updates from earlier today:
"""
Tweeting ISS current position at set intervals with Minecraft Pi.
Get current ISS position from http://wheretheiss.at/ and map it on
a raspberry pi with minecraft
Damian Mooney wrote this minecraft Tracker in 2016. I have added a few
features on top, namely:
walking random wool blocks to mark current and positions
ability to screenshot the position using Martin O'Hanlons raspi2png tutorial:
(http://www.stuffaboutcode.com/2016/03/raspberry-pi-take-screenshot-of.html)
ability to tweet that using twython python library
"""
__author__ = '@damianmooney' #additions by @ncscomputing
from mcpi import minecraft as minecraft
from mcpi import block as block
from datetime import datetime
import time
import urllib2
import json
import random
import subprocess # to run shell script to autocall raspi2png
import sys
from twython import Twython
import BuildWorldDM as BuildWorld
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
api = Twython(consumer_key,consumer_secret,access_token,access_token_secret)
WoolList = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
""" call where the iss at api thanks to Bill Shupp"""
def getiss():
response = urllib2.urlopen('https://api.wheretheiss.at/v1/satellites/25544')
mydata = response.read()
return mydata
""" longitude: convert our longitude to a minecraft co-ordinate"""
def do_coord(longitude):
mine_long = longitude * -.55
return mine_long
#if __name__ == "__main__":
mc = minecraft.Minecraft.create()
mc.postToChat(" Minecraft ISS Tracker for @naascoderdojo")
mc.player.setting("autojump", False)
mc.player.setPos(6, 20, 50)
time.sleep(10)
while True:
try:
BuildWorld.Build()
time.sleep(5)
iss = getiss()
pos = json.loads(iss)
lat = pos['latitude']
lon = pos['longitude']
mc.postToChat("MC ISS tracker Version 1.4.1 of @naascoderdojo's Minecraft ISS Tracker")
mc.camera.setFollow()
mc.postToChat("Credits to @damianmooney")
mc.postToChat(' ISS Location Lat: %.2f Long: %.2f' % (lat,lon))
new_long = do_coord(lon)
mc.player.setPos(int(new_long), 20, int(lat))
mc.setBlock(int(new_long), 20-1, int(lat),35,random.choice(WoolList))
msg = 'ISS pos '+'@SpacePiJam'+' lon %d lat %d' % (new_long, lat)
#print msg
mc.postToChat(msg)
#ory to location that you havesaved raspi2png in
a=subprocess.check_output('./raspi2png -d 3 -p "myscreenshot.png"',shell=True)
photo = open('myscreenshot.png', 'rb')
time.sleep(8)
api.update_status_with_media(status=msg, media=photo)
except:
mc.postToChat("update issue")
a=subprocess.check_output('./raspi2png -d 3 -p "myscreenshot.png"',shell=True)
photo = open('myscreenshot.png', 'rb')
api.update_status_with_media(status="update issue", media=photo)
time.sleep(450) # --only update once every 15 minutes
It reads in and renders the world text file from here:
https://raw.githubusercontent.com/ncscomputing/HpAnthologyV2/master/BuildWorldDM.py
The data file is here:
https://raw.githubusercontent.com/ncscomputing/HpAnthologyV2/master/world3.txt
Enjoy :)



No comments:
Post a Comment