[DIY] AllSky Kamera mit Raspberry Pi – Mein Bauprojekt & Anleitung (All Sky Camera)

ein proxy verbindet normalerweise viele externe Server mit dem privaten Netz. Ein reverse proxy verbindet viele interne Quellsysteme /Server unter einer Adresse mit dem externen Netz und verbirgt so die interne Struktur. Für den externen Anwendet schaut es so aus, als würden die Daten alle vom gleichen Backend System kommen….
 
Ich glaube aber man muss da schon mehr machen, als ein reverse proxy, denn die Quellsysteme liefern ja unterschiedliche Datensätze, die man im Web anschauen will. Immerhin haben ja die Allsky schätzungsweise versch IPs. Daher sollte das mit den Ports nicht zwingend problematisch sein….
Grüße
 
Hallo,

ich habe vor zwei Tagen mit dem Versuchsaufbau einer AllSky angefangen. Läuft auch alles, momentan aber nur mit einem Linuxsystem, aber das spielt keine Rolle.

Was ich nirgends finden kann "wie bindet ihr die Daten auf eurer Webseite ein". Welche Dateien alle per FTP auf den Webspace sollen ist auch klar. Aber es müsste doch irgendwo eine HTML-Seite existieren die aufzurufen ist?
 
Hallo,

es hat sich erledigt. Beim Kaffee trinken ist der Groschen gefallen. Aber diese eine Zeile hätte man in der Anleitung auch noch schreiben können.
 
Hallo,

woher bezieht das "constalations overlay" (also die einblendbare Sternkarte) die Koordinaten? Bei mir wird 34.43N / 119.86W eingelesen, obwohl in der "Allsky Webseite config.js" das richtige steht.
 
Hallo,
ich versuch es hier dann mal: Ich habe auf meinem PI die All-Sky Kamera von Thomas Jacquin installiert. Als Kamera verwende ich die ASI 120 MC. Ich sehe eine Livebild, das alle paar Minuten erneuert wird. Wie speichere ich die Bilder auf dem PI / USB Stick ?. Eine Webseite hab ich nicht und möchte auch keine erstellen. Jemand hier eine Idee oder ist eine Webseite ein Muß ?
Gru? Klaus
 
Hallo Klaus,
die Bilder werden automatisch im Ordner Allsky/Image gespeichert. Du kannst dies über die Weboberfläche ansehen oder du gehst auf deinen Pi mit dem Dateimanager zum oben aufgeführten Ordner.
Um die Dateien von dort auf einen Stick zu bekommen müsste man ein kleinen Script schreiben.
 
Vielleicht geht auch:

1. Ordner Allsky/Image löschen.
2. ln -s <sd-ordner> Allsky/images

Ggf. komplette Pfadnamen verwenden (vermutlich /home/... oder /User/...)

Damit wird der gewünschte Zielordner quasi unter einem anderen, zusätzlichen Namen erzeugt. Hab grade kein Linux offen, aber könnte funktionieren.

Ciao, Udo

Ciao, Udo
 
Also der Ordner Allsky/image ist bei mir nicht vorhanden. Bilder oder das jeweils aktuelle Bild wird im TMP gespeichert, das vorherige gaelöscht.
 
Hallo Klaus,

es fehlen noch ein paar Informationen von dir. Testest du derzeit nur am Tag? Wenn ja, dann muss der Parameter bei
DAYTIME_SAVE="true" sein. Standardmäßig ist dieser auf "false".

Das Web User Interface ist richtig installiert und funktioniert? Dann sieht die Seite Images so aus.

Bildschirm­foto 2022-11-27 um 15.15.55.png

Du kannst auch mal deine config.sh hier rein stellen, damit ich sie mit meiner vergleichen kann.

Ich habe übrigens alle von mir oben im Verlauf gestellten Fragen selbst gelöst. Wenn man viele Stunden sich mit diesem Tool beschäftigt findet man die Lösungen. Es ist ganz schöne Bastelarbeit.
 
woher bezieht das "constalations overlay" (also die einblendbare Sternkarte) die Koordinaten? Bei mir wird 34.43N / 119.86W eingelesen, obwohl in der "Allsky Webseite config.js" das richtige steht.
Hallo Andreas,
da hast du einen guten Hinweis. Man vergisst schnell was man alles gemacht hat.

Damit das "constalations overlay" mit den richtigen Koordinaten (eigene die auch schon in der config.js eingetragen sind) eingefügt wird, muss in der Datei /var/www/html/allsky/virtualsky/virtualsky.js
ab Zeile 269 folgender Eintrag korrigiert werden:

// Set location on the Earth
this.setLongitude(xx.xx);
this.setLatitude(xx.xx);

Mit dieser Änderung wird aber nur der richtige Standort definiert. Damit das Overlay richtig passt, müssen noch Änderungen in folgenden Dateien durchgeführt werden:

- Allsky Website config.js über das WebUI
az: 185.5, Drehwinkel um die richtige Nord/Süd Richtung einzustellen
overlaySize: 1560, die Größe damit das Overlay richtig auf die Sterne passt
overlayOffsetLeft: -258, Verschieben des Overlay vom linken Rand in Pixel
overlayOffsetTop: -354, Verschieben des Overlay vom oberen Rand in Pixel

- /var/www/html/allsky/allsky.css
Bis zur Zeile 100 wird an drei Stellen der Kommentar /* Optionally change to change size of image */ ausgewiesen. Hier können zwei mal die maximale Breite und
einmal die Höhe des Overlay definiert werden.

An die Änderungen der Werte muss man sich langsam herantasten. Am besten gelingt es bei längeren klaren Himmel. Um die Änderungen der Werte auf der Webseite zu sehen. Ich hatte das Glück den Polarstern oben im Bild fast mittig zu haben. Da war es relativ einfach das Overlay zu dehnen und zu drehen bis es passte.
Wichtig! Bei jeder Änderung muss die Webseite aktualisiert werden um die Änderungen zu sehen. Notfalls auch mal den temporären Speicher der Webseite löschen. Beachtet man dies nicht, ändert man ins Nirwana!

Als erstes sollte man die Bildgröße auf der Webseite festlegen und im Zeiten Schritt die Veränderung des Overlay durchführen.

Zum veranschaulichen hier mal ein Bild: (heute bewölkt, damit das Overlay gut sichtbar ist, AllSky gestoppt)
Bildschirm­foto 2022-11-28 um 18.18.09.png

Ich habe die Bildgröße erheblich erweitert damit mehr zu erkennen ist. Beim Einsatz eines 150° Objektives muss zwangsläufig das Overlay größer sein als der Bildausschnitt. Damit das Overlay überhaupt über das Bildfenster reicht, müssen die Anpassungen von oben durchgeführt werden.
 
Hallo Harald,

ich danke dir (auch im Namen aller hier :) ) für deine schnelle und ausführliche Antwort.
Du musstes sicherlich viel mit der Try&Error die richtige Methode austüfteln. Wir können nun, dank dir eine Abkürzungen gehen.

Danke dir:y:
 
Frage mich nur, wie kann ich die am besten schaltbar machen, gibts da schon was dazu?
Hallo Carsten,

die Heizung habe ich schön benötigt um den Taubeschlag fernzuhalten. Mit den abfallenden Temperaturen musste ich auch mehr Spannung auf die Heizwiderstände geben. Es wird also etwas komplexer.

Einen Temperatursensor (z.B. DHT22) könnte man ja in das Gehäuse der Allsky unten reinpacken. Und über einen Transistor die Spannung für die Heizwiderstände schalten. Das dazu erforderliche Python Programm kann man ja über Autostart laufen lasen.

Jetzt müssen wir es nur noch umsetzen ;) Vielleicht gibt es ja was fertiges.
 
Hallo Harald,

ich bin gerade dabei meine MySky zu bauen, warte noch auf Teile, welchen Dome-Durchmesser, Widerstandswert und Spannung hast du gerade bei den Temperaturen anliegen? Denn ich wollte das ganze geregelt machen (drei Stufen gesteuert über GPIO oder ggf. binär gesteuert [3-Bit/ 6 Schaltzustände] über einen Spannungswandler mal sehen) und könnte mich an Deine Eckdaten anlehnen. Sobald ich etwas brauchbares habe melde ich mich.

vorab vielen Dank

bis bald, LG und CS
Hampo
 
Hallo Hampo,

ich nutze meine AllSky mobil. D.h., sie ist nicht nur stationär montiert. Aufgrund dessen, habe ich ein kleineres Gehäuse für die Kamera und der Raspberry Pi befindet sich außerhalb. Für die AllSky Funktion befindet sich der Raspberry im Carport und es gehen nur das USB Kabel zur Kamera und die Stromversorgung für die Heizwiderstände. Wenn das Wetter, wie jetzt wochenlang, keine Möglichkeiten zur Aufzeichnung bietet, ist die Kamera nicht draußen.

Ich habe ein 76mm Dome eingesetzt in diesem ist auch Platz für drei Heizwiderstände a 5W, so wie es Daniel Nimmervoll in seinem Video beschreibt. Bisher bin ich mit 7,5 Volt ausgekommen.

IMG_5137D.JPG
 
Hallo Harald,

vielen Dank für die Info, sobald ich meine Teile habe werde ich ein paar Bilder und Infos hochladen, bei meiner Version möchte ich noch eine Wetterstation integrieren, die Software selbst schreiben, alles etwas schlanker und für meine Zwecke passender.

vielen Dank nochmals für die Infos

bis bald, LG und CS
Hampo
 
Hallo, vor drei Jahren habe ich bei mir eine AllSky installiert:
20191220_151540.jpg


Die funktioniert seit dem ohne Unterbrechung. Sie ist in meine Webseite eingebunden und das Live Bild, Video, Keogramm und Startrails werden auf den Server übertragen.
Nur ein Problem konnte ich bis jetzt nicht beheben: ab und zu wird von einem Bild unten ein Stück abgeschnitten, ein weißer Balken entsteht: Die abgespeicherten Bilder auf dem Pi sind OK. Es muß also etwas mit der Übertragung von der Webseite(auf Strato Server) in den Browser zu tun haben. Oder vom Pi auf den Server.
Image 3.jpg


Kennt jemand diese Problematik oder hat einen Tipp für mich?
Mitte des Jahres habe ich die Software mal aktualisiert.

Beste Grüße, Henri
 
Das zeigt er übrigens auch in der Browser Konsole an(F12 drücken, Konsole Tab anklicken).
Image 1.jpg

Vermutlich wird das Bild gerade vom Raspberry Pi auf den Server geladen wenn der Browser es anfordert.
Mich wundert nur dass ich scheinbar der einzige bin der das Problem hat?
 
ich habe bei mir 2 Heizkreisläufe mit "Weltron 410144 18Ω Hochlast-Widerstände " eingebaut. Einmal 3x18Ω und einmal mit 5x18Ω. Diese kann ich dann manuell über das AllSky Administration Panel je nach Bedarf zu schalten. Im Gehäuse habe ich zur Überwachung der Temperatur und Feuchtigkeit einen einen DHT22 eingebaut. Wenn ich weiß wieviel Heizleistung bei welchen Temperaturen benötigt wird, kann ich später ein automatisches Ein- und Ausschalten hinzufügen. So der Plan :)
Über die AllSky-Seite kann ich den Zustand der Heizkreiläufe (und vom automatisch gesteuerten CPU-Ventilator) ablesen.
 

Anhänge

  • 1.jpg
    1.jpg
    371 KB · Aufrufe: 146
  • 2.JPG
    2.JPG
    85,8 KB · Aufrufe: 116
  • 3.jpg
    3.jpg
    94,7 KB · Aufrufe: 124
ich habe das in den PHP-Scripten der jeweiligen Webseiten selber hinzuprogrammiert. Die nötigen Pytonscripte usw. natürlich auch. Hier als Bsp. der Code für die AllSky-Seite aus der Datei /var/www/html/allsky/index.php
 

Anhänge

  • www-html-allsky-index.php.jpg
    www-html-allsky-index.php.jpg
    69 KB · Aufrufe: 111
Hallo Henri,
so etwas ähnliches hatte ich auch, das ist aufgetreten, wenn die Aufnahme von der Kamera auf den Speicherübertragenwurde und bei der Übertragung eine Unterbrechung entstanden ist. Da bei dir die original Datei ok zu sein scheint, wird wohl bei der Übertragung auf den "Server" die Übertragung unterbrochen. Somit fehlt ein Stück, woran das liegt? ggf. der Router?
Diese Info hilft zwar nicht wirklich aber vielleicht ein Ansatz.
LG und CS
Hampo
 
ich habe das in den PHP-Scripten der jeweiligen Webseiten selber hinzuprogrammiert. Die nötigen Pytonscripte usw. natürlich auch. Hier als Bsp. der Code für die AllSky-Seite aus der Datei /var/www/html/allsky/index.php
super. Wäre natürlich cool wenn das schon mit in die Original SW einfließen könnte, bzw. es eine update gebe welches das reinfixt.

Grüße
Carsten
 
Hallo geehrte Forumsmitglieder,
habe mir eine zweite Allskykamera gebastelt, diesmal mit der PiHQ Kamera. Software ist die neueste Version, das ganze läuft auf Bullseye. Ich erwähne das hier, da sich im Versionsverlauf vieles an den Einstellmöglichkeiten in Camera Settings und Editoren geändert hat. Läüft alles wunderbar bis auf ein Problem: Daytime-Images macht die Kamera nicht. Daytime-Image steht auf "true", Daytime-save auf "false", ich hab es auch mit "true" versucht aber leider ohne Erfolg. Tagsüber seh ich nur den grünen Hinweis, daß die Kamera startet. Ein Bug ? Vielleicht weiss jemand Rat.
Gruss Klaus
 
Hallo Henry,
Ich habe die Datei angehängt. Ich musste das in PDF umwandeln da die Forumssoftware keine .txt oder .py Dateien erlaubt.
Also einfach mit Copy Paste in einen Texteditor übertragen. Endung sollte .py sein.
Die Einrückungen sind bei Python wichtig da das die Zugehörigkeit zu einer Bedingung oder Schleife bedeutet.
Die print Befehle kann man weglassen helfen aber beim Debug

Ich starte das Programm beim boot mit cron.
crontab -e in einem Terminal starten (kein sudo nötig!)
Editor wählen (z.B. nano)
Folgendes eintragen: @reboot python3 /home/pi/Lüftersteuerung.py (Pfad entsprechend anpassen)
^o und enter zum speichern ^x zum beenden. (Gilt für nano)
Danach Raspi neu starten

Viel Spaß damit
Hallo Roger,
nach 2 Jahren musste ich den Pi der Kamera aktualisieren. Nun läuft mein Temperatursensor AM2302 - DTH22 - nicht mehr. Er wird nicht mehr unterstützt. Ich bekomme folgenden Fehler:
from . import Beaglebone_Black_Driver as driver
ImportError: cannot import name 'Beaglebone_Black_Driver' from 'Adafruit_DHT' (/home/pi/.local/lib/python3.7/...
Mittlerweile habe ich rausgefunden, dass die Bibliothek wohl veraltet ist und man eher auf adafruit-circuitpython-dht setzen sollte. Nach diversen Anleitungen kann ich über einen test.py die Temperatur und Luftfeuchte auslesen.
--------------------
# SPDX-FileCopyrightText: 2017 Limor Fried for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import adafruit_dht
import board
dht = adafruit_dht.DHT22(board.D4)

while True:
try:
temperature = dht.temperature
humidity = dht.humidity
# Print what we got to the REPL
print("Temp: {:.1f} *C \t Humidity: {}%".format(temperature, humidity))
except RuntimeError as e:
# Reading doesn't always work! Just print error and we'll try again
print("Reading from DHT failure: ", e.args)

time.sleep(1)
----------------------------------
Jedoch der Script zur Heizungssteuerung geht nimmer.

##############
import RPi.GPIO as GPIO # muss eingefügt werden um die GPIOs zu nutzen
import time # Um die Funktion sleep zu nutzen
import adafruit_dht # Der Treiber für den Sensor
import board
Heizung = 25 # Hier die Nummer des verwendeten GPIO verwenden
GPIO.setmode(GPIO.BCM) # setzt die Nummerierung der Pins auf BCM Nummern also hier GPIO18
GPIO.setup(Heizung, GPIO.OUT) # setzt den GPIO mit Nummer pin als Ausgang fest
GPIo_Output(Heizung, GPIO.LOW) # setzt den GPIO mit Nummer pin auf 0
# Example using a Raspberry Pi with DHT sensor connected to GPIO23.
# pin = 2
# sensor = Adafruit_DHT.AM2302
dht = adafruit_dht.DHT22(board.D4)
# Diese Schleife läuft koninuierlich nach Start des Programms
while 1:
# Try to grab a sensor reading. Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
temperature = dht.temperatur
humidity = dht.humidity
# Abfrage ob ein sinnvoller WErt gelesen wurde. Wenn nicht einfach den nächs
if humidity is not None and temperature is not None:
# Hier wird die Temperatur verglichen und entsprechend Code ausgeführt
print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
if temperature < 0.0:
# Hier wird der GPIO eingeschalten wenn die Temperatur kleiner 0° ist
GPIo_Output(pin, GPIO.HIGH)
print("Temperatur ist kleiner als 0.0°. Heizung ist an")
if temperature > 2.0:
# Hier wird der GPIO ausgeschalten wenn die Temperatur größer 2° ist
GPIo_Output(pin, GPIO.LOW)
print("Temperatur ist größer als 2.0°. Heizung ist aus")

time.sleep(10) # Sleep 10 Sekunden

########################

Hast du zufällig einen Script mit adafruit-circuitpython-dht und GIPO der das Relais wieder ansteuert?

Viele Grüße Henry.
 
Oben