Astroberry: Zeit und Geokoordinaten per Handy setzen

Status
Es sind keine weiteren Antworten möglich.

Nebelhorn

Aktives Mitglied
Hallo zusammen,

in der Grundausstattung besitzt der Raspberry Pi keinen GPS-Empfänger. Ich möchte mir eigentlich kein weiteres Gerät kaufen, nur um die GPS-Koordinaten an den Raspberry Pi, auf dem bei mir Astroberry läuft, zu übermitteln. Da ich mein (Android)-Handy eigentlich immer dabei habe, habe ich mir eine einfache Lösung gebastelt, um per Knopfdruck auf meinem Handy, die Uhrzeit und die Geokoordinaten des Astroberrys einzustellen. Bei meiner Recherche konnte ich den von mir gewählten Weg noch nirgendwo dokumentiert finden, weshalb ich mir dachte, dass das vielleicht für irgendjemand interessant sein könnte.

Meine Lösung berücksichtigt ganz sicherlich nicht alle Eventualitäten von potentiellen Fehlern. Vielmehr ist es eine Bastellösung. Sicherheitsaspekte spielen für mich auch keine große Rolle, weil ich den Astroberry nur für das Teleskop verwende. Ob ich mit dem Thema hier im richtigen Unterforum gelandet bin, weiß ich leider nicht.

Hier also meine Kurzanleitung: Mein Astroberry hat die IP 10.42.0.1 und ich verwende den Benutzer astroberry. Auf dem Handy müssen die Apps Termux, Termux-API und Termux-Widget installiert werden. Diese Apps habe ich über den Appstore F-Droid bezogen. Termux ist eine Art Terminal, in dem man viele Programme installieren kann, die man aus dem Linuxumfeld kennt. In Android muss man Termux die Berechtigung geben, sich automatisch über andere Apps hinweg sichtbar schalten zu können. Diese Berechtigung ist erforderlich, damit das Widget ein Terminal starten und in den Vordergrund bringen kann (siehe).

In Termux muss man die Programme python und openssh installieren (pkg install python openssh). Man muss in Termux ein Unterverzeichnis namens .shortcuts erstellen, sofern es noch nicht vorhanden ist (mkdir .shortcuts). Damit man sich ohne Passwortabfrage in Astroberry einloggen kann, muss ein SSH-Schlüsselpaar erzeugt werden. Bei mir hat es dafür ausgereicht, im Termuxterminal den Befehl ssh-keygen auszuführen. Es wird ein Schlüssel erzeugt, man darf diesem Schlüssel aber kein Passwort geben. Anschließend muss der Schlüssel auf den Astroberry kopiert werden (ssh-copy-key astroberry@10.42.0.1). Nun sollte es möglich sein, sich aus dem Termuxterminal in den Astroberry ohne Passwort einzuloggen. Das sollte man testen (ssh astroberry@10.42.0.1), wobei man sich mit dem Befehl exit wieder ausloggen kann.

Auf dem Astroberry müssen ein paar Kleinigkeiten konfiguriert werden, das habe ich aber nicht über das Handy bewerkstelligt. Dem Benutzer astroberry muss die Berechtigung gegeben werden, ohne Passwortabfrage die Uhrzeit setzen und den Dienst virtualgps neustarten zu können. Letzteres ist vermutlich erforderlich, denn, wenn ich das im Quellcode richtig sehe, liest virtualgps die Konfigurationsdatei nur einmalig beim Starten ein. Die Berechtigungen kann man mit dem Befehl "sudo visudo" an den Nutzer astroberry vergeben, indem man ganz unten Folgendes einfügt:

Code:
astroberry ALL=(ALL) NOPASSWD:/bin/date
astroberry ALL=(ALL) NOPASSWD:/bin/systemctl restart virtualgps

Da die Datei /etc/location.conf nicht so einfach an Ort und Stelle vom Benutzer astroberry geschrieben werden kann, habe ich sie kurzerhand an eine andere Stelle kopiert:

Bash:
sudo cp /etc/location.conf /etc/location.conf_backup
sudo chown astroberry:astroberry /etc/location.conf
sudo cp /etc/location.conf /home/astroberry/location.conf
sudo rm /etc/location.conf
sudo ln -s /home/astroberry/location.conf /etc/location.conf

Dafür gibt es sicherlich auch elegantere Lösungen.

Die Uhrzeit und die GPS-Koordinaten werden auf dem Handy mit dem Script ausgelesen, das an diesen Beitrag angehängt ist. Das Script muss in das Unterverzeichnis .shortcuts kopiert werden. Das geht auf meinem Handy aus Sicherheitsgründen nur über einen Hook im Dateimanager und nicht in Termux selber. Bei mir hat Termux diese Verknüpfung aber automatisch in den Dateimanager gesetzt. Eventuell muss man ausgeblendete Dateien einblenden, damit der Dateimanager das Verzeichnis .shortcuts anzeigt.

Das Script kann man nun starten, indem man auf dem Homescreen ein Widget hinzufügt und als Datei das Script auswählt. Auf meinem Handy kann ich dann nach dem Verbindungen mit dem Astroberry-Hotspot durch Drücken auf den Widgetknopf das Script starten, welches daraufhin die Zeit und Geokoordinaten setzt. Wenn ich dann in KStars Ekos starte und GPSD als AUX-Port auswähle, dann werden über virtualgps die Koordinaten an Indi gesendet, welches das dann an Ekos und KStars weiterreicht. Ich hoffe, dass ich in meiner Anleitung alles Wesentliche aufgeführt habe.

Viele Grüße
Jörg

--
Python:
#!/data/data/com.termux/files/usr/bin/env python
import json
import os
import datetime
import time

astroberryhost = '10.42.0.1'
astroberryuser = 'astroberry'

def sshcmd(c):
    cmd = "ssh {}@{} ".format(astroberryuser,astroberryhost) + c
    print(cmd)
    os.system(cmd)

date=str('sudo date -s \\"{} {}:{}:{}\\"'.format(datetime.date.today(), datetime.datetime.now().time().hour, datetime.datetime.now().time().minute, datetime.datetime.now().time().second))
sshcmd(date)

x=os.popen('termux-location').readlines()
if(len(x) == 0):
    raise ValueError('error location dictionary length = 0')
d=json.loads("".join([_.strip() for _ in x]))

s_long = "longitude"
s_alt = "altitude"
s_lat = "latitude"

for s in [s_long, s_alt, s_lat]:
    if s in d:
        pass
    else:
        raise ValueError('location key {} missing'.format(s))

latitude  = float(d[s_lat])
longitude = float(d[s_long])
elevation = float(d[s_alt])

if (abs(latitude) > 90.0):
    raise ValueError('latitude error: {}'.format(latitude))
if (abs(longitude) > 180.0):
    raise ValueError('longitude error: {}'.format(longitude))
if (elevation > 9000.0 or elevation < -1000.0):
    raise ValueError('elevation error: {}'.format(elevation))

print("\n\nlongitude = {}\nlatitude={}\naltitude={}\n\n".format(longitude, latitude, elevation))

geo='\"printf \\"[default]\\nlatitude = {}\\nlongitude = {}\\nelevation = {}\\n\\" > /home/astroberry/location.conf\"'.format(latitude,longitude, elevation)
sshcmd(geo)
sshcmd('sudo systemctl restart virtualgps')
print('Done. Sleep for 20 s.')
time.sleep(20)
 
Hi Jörg,

das ging doch Recht unkompliziert wenn man in Kstars GPS NMEA einstellt und dann über eine App die GPS Koordinaten direkt an Kstars schickt. Name der App weiß ich aber nicht mehr. Man braucht da kein eigenständiges Script für.

Ich bin dann irgendwann bei Stellarmate gelandet. Ist ja auch nichts anderes wir Astroberry. Hab nur das Gefühl dass alles Packages aktueller sind und auch 64-bit unterstützt wird vom OS. Eine Android/IOS App gibt es auch. GPS Sync erfolgt auch automatisch. Und es ist ganz nett Kstars/Ekos über eine an Smartphones/Tablets angepasste Oberfläche zu bedienen;)

CS

Ralph
 
Hi Jörg,

das ging doch Recht unkompliziert wenn man in Kstars GPS NMEA einstellt und dann über eine App die GPS Koordinaten direkt an Kstars schickt. Name der App weiß ich aber nicht mehr. Man braucht da kein eigenständiges Script für.

Ich bin dann irgendwann bei Stellarmate gelandet. Ist ja auch nichts anderes wir Astroberry. Hab nur das Gefühl dass alles Packages aktueller sind und auch 64-bit unterstützt wird vom OS. Eine Android/IOS App gibt es auch. GPS Sync erfolgt auch automatisch. Und es ist ganz nett Kstars/Ekos über eine an Smartphones/Tablets angepasste Oberfläche zu bedienen;)

CS

Ralph
Hallo Ralph,

danke für deinen Beitrag. Dass es dafür eine App gibt, wusste ich nicht. Hätte ich das gewusst, dann hätte ich mir das mit dem Script ja sparen können. ;)
Mir Stellarmate zu holen, habe ich mir auch schonmal überlegt.
Viele Grüße
Jörg
 
Hallo Jörg,

Danke für Deine Mühen und das ausführliche Tutorial.
Es gibt schon lang eine einfache Alternative:
Die App heißt Share GPS und der korrespondierende Indi-Treiber GPS NMEA.

Ich bin dazu übergegangen in meinen Stellarmate-Controllern neben Mosfets, Power-Boards auch BN180 oder BN280 GPS-Module zu verbauen.

Software wie hier schon andere geschrieben haben ist irgendwann aus Astroberry Stellarmate geworden. Die Mobile Bedienung ist großartig und die Pakete aktueller.

CS, Ralf
 
Hallo,
danke für die Rückmeldung. Die App Share GPS scheint zumindest auf meinem Handy nicht richtig zu funktionieren, eventuell passt die Androidversion nicht, keine Ahnung.

Der verlinkte USB-Stick ist recht günstig, vielleicht bestelle ich mir so einen. Oder ich schaue mir Stellarmate mal an. Mein Beitrag kann dann als obsolet markiert werden.

Viele Grüße
Jörg
 
WIrd Dir zwar nicht helfen, aber eben mal unter Android 13 auf einem Samsung A53 getestet.
Es kommt eine Meckermeldung, dass die APP für eine ältere Android-version entwickelt wurde, aber sobald ich nahe ans Fenster gehe, bekomme ich einen 3D Fix.
Wird wohl auch abhängig vom Smartphone sein.

Grüße
Hartmut
 
Der verlinkte USB-Stick ist recht günstig, vielleicht bestelle ich mir so einen. Oder ich schaue mir Stellarmate mal an.

Ich hatte mir Anfangs auch einen GPS USB Stick zugelegt weil ich für Stellarmate nicht zahlen wollte. Dann gab es Stellarmate aufgrund des Wechselkurses vor zwei Jahren umgerechnet für 42 Euro oder so.

Der Stick belegt in meinen Augen halt einen USB Port am Raspberry Pi. Den kann ich ja für andere Zwecke nutzen solange ich nicht auf einen aktiven USB Hub angewiesen bin.

Heutzutage hat man ja eh ein Smartphone immer dabei und dank der Stellarmate App braucht man nichtmals mehr sich über VNC auf den Desktop einzuloggen (per Tablet ist die Bedienung aber angenehmer wegen einer besseren Übersicht).

Trotzdem dicken Respekt an dein Script @Nebelhorn ... für mich ist das jedes mal ein Krampf soetwas auf die Beine zu stellen und ich bin immer froh im Internet was zu finden, was ich fast 1:1 per Copy and Paste übernehmen kann ?


CS

Ralph
 
Hallo,
Ich habe einen einfachen Ublox-7 GPS Dongle für eine Handvoll Euros mit dem GPS Deamon laufen. Klappt wunderbar mit dem Astroberry und auch unter Windows mit NINA. Das löst auch elegant das Problem, dass der Raspi keine Echtzeituhr hat. Wolfi hat auf Youtube eine schöne Anleitung dafür.

Viele Grüße,

Günther
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben