Mein Ziel ist es, eine LED leuchten zu lassen, sobald ein neuer Besucher
auf meiner Webseite ist. Meine Webseite ist auf einem fremden Server,
also nicht dem Pi, gehostet. Der Pi hat Internetzugriff. Später will ich
dann Details über den Besucher anzeigen, wie etwa den Referrer und so
fort.
Ich habe es mit Google Analytics über ein Dienstkonto versucht. Das ist
mir allerdings zu kompliziert.
Welchen einfachen Weg gibt es, diese Daten möglichst ohne große Umwege
auf den Pi zu bekommen?
Ich dachte auch daran, einen Webserver aus dem Pi zu machen mit einer
einzigen Bilddatei als Angebot. Sobald diese abgefragt wird, steuere ich
die LED an.
Allerdings ändert sich die Ip des Pi und er ist auch nicht immer an.
Eure Ideen?
Frank Linde schrieb:> Allerdings ändert sich die Ip des Pi und er ist auch nicht immer an.>> Eure Ideen?
Statische IP vergeben und Pi immer an lassen. :D
Und wann geht die LED wieder aus?
Ich lasse mir eine Email senden, sobald jemand eine bestimmte Seite
aufruft.
Klappt soweit.
Pi könnte Email abholen und, wenn Email vorhanden, LED an.
Bleibt immer noch die Frage wann LED wieder ausgehen soll. Hmmm ....
Frank Linde schrieb:> Allerdings ändert sich die Ip des Pi und er ist auch nicht immer an.
Die IP kannst du in der Fritzbox als feste IP einstellen und ihn dann
nach außen hin öffnen. Per DynDNS hast du eine feste Adresse.
So ein RaspBerryPi Zero verbraucht etwa 0,415-0,467 Watt wenn er nichts
macht und bei 100% CPU-Last sind es 0,778-0,830 Watt.
Du kannst ihn also einfach laufen lassen.
Wenn man mit etwas Verluste des Netzteils rechnet und 1 Watt als
Verbrauch annimmt, dann kommt man auf Kosten von:
(0,001kW*24h*365)*0,30€/kWh = 2,63€ pro Jahr
Mike J. schrieb:> Frank Linde schrieb:>> Allerdings ändert sich die Ip des Pi und er ist auch nicht immer an.>> Die IP kannst du in der Fritzbox als feste IP einstellen und ihn dann> nach außen hin öffnen. Per DynDNS hast du eine feste Adresse.>> So ein RaspBerryPi Zero verbraucht etwa 0,415-0,467 Watt wenn er nichts> macht und bei 100% CPU-Last sind es 0,778-0,830 Watt.> Du kannst ihn also einfach laufen lassen.>> Wenn man mit etwas Verluste des Netzteils rechnet und 1 Watt als> Verbrauch annimmt, dann kommt man auf Kosten von:> (0,001kW*24h*365)*0,30€/kWh = 2,63€ pro Jahr
Das stört mich am wenigsten. Meine Gedanken gehen in Richtung
Angreifbarkeit aus dem Internet. Gleichzeitig ist der Pi per
Zentralschalter mit dem PC verbunden, der auch nicht immer an ist.
Frank Linde schrieb:> Meine Gedanken gehen in Richtung> Angreifbarkeit aus dem Internet.
Angreifbar ist ein System eher wenn du zum Beispiel ein
Content-Management-System (CMS) auf deiner Webseite im RaspBerryPi
installiert hast und dieses System eine Schwachstelle aufweist über die
man Root-Rechte erlangen kann.
Je geringer die Komplexität des Ganzen, desto geringer ist die
Wahrscheinlichkeit für eine Schwachstelle.
Wenn du den Pi mit der internen Firewall so sicherst dass nur die
notwendigen Ports offen stehen, dann kann eigentlich nichts passieren.
https://blog.doenselmann.com/firewall-fuer-raspberry-pi-und-banana-pi/
Es ist ja im Endeffekt nur ein ein kleines Bildchen welches mit geladen
werden soll, also ist auch nur das Bildchen von außen sichtbar.
Worüber du dir Gedanken machen solltest:
Wenn jemand im Internet surft und nur eine geringe Datenrate (64kbit/s)
nutzen kann, dann schaltet er beim Surfen die Möglichkeit Bilder aus dem
Netz zu laden ab und nutzt auch einen AdBlocker.
Ich mache das auch so, da ich nicht bereit bin zusätzliches
Download-Volumen zu erkaufen. Meist habe ich eh Zugriff auf W-Lan und
für die paar mal wo ich im Zug oder auf dem Bahnhof etwas im Netz surfe
hole ich mir nicht so einen überteuerten Müll.
Ich würde den PI nicht als Server ins Netz hängen, viel zu umständlich
da mit zwei Servern und eingebundenen Grafiken irgendwas zu tricksen.
Bleibt wahrscheinlich eh im Cache hängen.
Häng den PI lieber per SSH auf den Webserver! Dann kannst du die
Access-Logs vom Apache beobachten und deinen Seitenzugriff auswerten.
Oder dein Webseiten Skript schreibt selbst die gewünschten Daten in /tmp
raus.
Frank Linde schrieb:> Gleichzeitig ist der Pi per> Zentralschalter mit dem PC verbunden, der auch nicht immer an ist.
Dann bleibt nur Batteriebetrieb. Pager laufen mit 1 bis 2 AA-Batterien
einen Monat. Damit geht es auch ohne Strom aus der Steckdose ziemlich
einfach.
Der "echte" Webserver schickt eine Email an ecityruf.de, die senden die
(wahrscheinlich im 2m-Band) an den Pager. Das war's schon -- wenn man
statt der Led mit dem Display des Pagers zufrieden ist.
Wenn es denn die LED am RPi sein soll kann man den Lautsprecher des
Pagers anzapfen und mit ein paar Transistoren und einem fetten Elko ein
Relais (zweipolig, 3mm Kontaktöffnung) einschalten. Das überbrückt den
Zentralschalter und geht über eins der zahlreichen Steckernetzteile in
Selbsthaltung. Gleichzeitig wird der Elko wieder geladen. Sobald der RPi
gebootet hat kann er die LED einschalten und nach angemessener (tbd)
Zeit das Relais wieder abschalten.
Andre schrieb:> Häng den PI lieber per SSH auf den Webserver!
Wie kann er dort abfragen ob ein Besucher da war?
Bei meiner Webseite kann ich mich nicht mal per ssh einloggen, nur über
ftp. :-(
Mike J. schrieb:> Andre schrieb:>> Häng den PI lieber per SSH auf den Webserver!>> Wie kann er dort abfragen ob ein Besucher da war?
ssh kann einen Tunnel aufbauen, durch den der externe Webserver den RPi
erreichen kann. Die IP-Adresse darf sich dann ruhig ändern, der RPi muss
nur jedesmal den Tunnel neu aufbauen.
> Bei meiner Webseite kann ich mich nicht mal per ssh einloggen,> nur über ftp. :-(
Geiz ist geil? ;)
Also ich würde mal JSON in den Raum werfen. Das ist doch für solch einen
Datenaustausch gemacht. Ein Python-Script auf dem Raspi und er könnte
die Daten abfragen, müsste also nicht von außen erreichbar sein.
Robert K. schrieb:> Also ich würde mal JSON in den Raum werfen. Das ist doch für solch einen> Datenaustausch gemacht. Ein Python-Script auf dem Raspi und er könnte> die Daten abfragen, müsste also nicht von außen erreichbar sein.
JSON ist nur ein Datenformat.
Da aktuell noch nicht mal klar ist wie der Transport der Daten ablaufen
soll nützt das erstmal garnichts.
Ob du die Infos nachher als JSON, XML oder Plaintext überträgst ist doch
erstmal vollkommen egal.
Würde allerdings beim Punkt mit dem Script zustimmen. Sprich: Der Pi
baut die Verbindung auf.
Interessant wäre jetzt erst mal welche Möglichkeiten der TO auf dem
"fremden Server" (also dort wo die Seite gehostet) ist hat?
Ist das ein Root-Server? Oder nur Webspace?
Webserver schreibt Daten über neue Besucher
irgendwohin. Dein Raspi fragt im Minutentakt
(?) diese Daten ab und macht dann irgendwas.
DSGVO? Traffic? Zeitkritisch?
merciless
Bauform B. schrieb:> Geiz ist geil? ;)
Ja ... die höheren Tarife wollte ich dann auch nicht zahlen.
Meine Webseite ist klein und ich brauche eigentlich auch nicht viel,
aber dass man sich dort nicht per sftp einloggen kann ist für mich nicht
verständlich. Ist doch eigentlich nur ein sicherer Datentransport.
Jemand schrieb:> Impressum nicht vergessen, das ist nützlich um dir die Abmahnung> zukommen zu lassen.
Das braucht doch nur bei Webseiten die kommerziell sind.
Du hast aber die Datenschutzerklärung vergessen, die muss drin sein wenn
er irgend welche Cookies auf den fremden Rechner schiebt oder die Daten
(IP, Nutzerdaten ... ) irgend wie nutzt.
Bei einer anderen meiner Webseiten brauche ich weder ein Impressum, noch
eine Datenschutzerklärung, weil es rein privat, nicht kommerziell ist,
ich keine Daten des Besuchers nutze und ihm keine Cookies unterschiebe.
@Mike beide deiner Rechtsauffassungen sind falsch.
Würde das einfach per get request machen und entweder null oder eins
Anfragen. Zwischenspeichern kann man im einem file oder Datenbank. Wenn
man die Seite aufruft wird eine 1 in die dB zB geschrieben. Erfolgt dann
ein get request, die led geht an, wird die 1 wieder mit 0 überschrieben
Habe hier einen Python-Script der auf einem Pi über crontab 1xpro Minute
draussen eine Datei auf dem Webserver abfragt und je nachdem ob 0 oder 1
drinsteht einen Pin des Pi steuert:
#!/usr/bin/python
import RPi.GPIO as gpio
import time
import urllib2
gpio.setwarnings(False)
#Pin-Nummern verwenden (nicht GPIO-Nummern)
#gpio.setmode(gpio.BCM)
gpio.setmode(gpio.BOARD)
# Pin zur Datenausgabe definieren
p = 7
gpio.setup(p, gpio.OUT)
response = urllib2.urlopen('http://www.yourdomain.de/subdir/alarm.txt';)
data = response.read()
status = "off"
gpio.output(p, gpio.LOW)
if (data=='1'):
status = "on"
gpio.output(p, gpio.HIGH)
time.sleep(1)
gpio.output(p, gpio.LOW)
#print (status)
Nun musst du nur noch die Datei auf dem Webserver entsprechend befüllen
und wieder löschen.
Frank Linde schrieb:> Das stört mich am wenigsten. Meine Gedanken gehen in Richtung> Angreifbarkeit aus dem Internet. Gleichzeitig ist der Pi per> Zentralschalter mit dem PC verbunden, der auch nicht immer an ist.
Verschiedene Software bietet sogenannte Publish-Subscribe-Fähigkeiten,
oft auch verkürzt als "PubSub" bekannt. Unter denen, die sich mit einer
gewissen Wahrscheinlichkeit ohnehin auf meinen Servern befinden, gehören
das RDBMS PostgreSQL und der Key-Value-Store Redis (auch ein prima Cache
für die Webseite, unter anderem...).
Im Falle von PostgreSQL müßte auf dem RasPi ein Client laufen, der mit
dem Befehl LISTEN auf einem benannten Channel auf Nachrichten lauscht.
Dein Webserver würde dann bei jedem Hit (oder Visitor oder...) mit den
Befehl NOTIFY eine Nachricht in diesen Channel schreiben, die quasi
sofort beim lauschenden RasPi-Client ankommt. Ganz ähnlich würde es im
Falle von Redis aussehen: der Client auf dem RasPi würde einen Channel
auf dem Redis-Server SUBSCRIBEn und der Webserver bei Bedarf eine
Nachricht in diesen Channel PUBLISHen.
Vorteil: der RasPi baut die Verbindung von innen nach außen auf, Du mußt
also Dein Heimnetzwerk nicht nach außen hin öffnen. Dafür muß jedoch die
entsprechende Software auf Deinem Server von außen zugänglich gemacht
werden, und wenn Du keine feste IP-Adresse hast, vielleicht sogar für
die ganze Welt. Dann sind Verschlüsselung und Authentifizierung
allerdings Pflicht sowie fail2ban wärmstens empfohlen! ;-)
Pro:
Datei auf Server durch ein PHP Script erstellen lassen (da auch gleich
die Referrer in die Datenbank schreiben). Und per Crontab (wie oben)
oder als Service (wenn die Abfrage schneller als 1 Minute geschehen
soll) die Datei abfragen und damit die LED schalten. Vorteil: Kein
Server auf dem RPi notwendig, wenig Aufwand, keine "Schwachstelle" am
RPi, keine Möglichkeit dies zu umgehen (AdBlock etc..).
Jetzt kommt das große "AAAAAaaaaaaaber":
Wann soll diese LED wieder ausgehen?!? Zeitgesteuert?
Rene K. schrieb:> Wann soll diese LED wieder ausgehen?!? Zeitgesteuert?
Das wäre am einfachsten. Weiter vereinfachen liesse sich das alles noch,
wenn die auch noch zufallsgesteuert eingeschaltet wird.
Vorteil: gar kein Aufwand auf dem Server, gar keine Sicherheitslücken,
es blinkt trotzdem irgendwann irgendwie, und alles wird gut.
Oliver
Er will ja nur wissen ob ein Besucher da war.
Eigentlich braucht er ein Display und einen Zähler mit der aktuellen
Anzahl an Besuchern.
Er könnte es auch mitloggen und die Uhrzeit ermitteln ... dann weiß er
ob seine Besucher eher Frühaufsteher sind oder sich seine Seite erst am
Abend anschauen.
Mike J. schrieb:> Er könnte es auch mitloggen und die Uhrzeit ermitteln ... dann weiß er> ob seine Besucher eher Frühaufsteher sind oder sich seine Seite erst am> Abend anschauen.
Zeitverschiebung nicht vergessen!
Mike J. schrieb:> Er will ja nur wissen ob ein Besucher da war.> Eigentlich braucht er ein Display und einen Zähler mit der aktuellen> Anzahl an Besuchern.> Er könnte es auch mitloggen und die Uhrzeit ermitteln ... dann weiß er> ob seine Besucher eher Frühaufsteher sind oder sich seine Seite erst am> Abend anschauen.
Ich denke, darum wird es in Summe wohl eher nicht gehen? Also nicht im
Detail? Das könnte man ja auch anders erreichen. Meine Vermutung ist,
dass es nur ein optisches Signal geben soll, wenn ein Besucher da war.
So ähnlich wie manche sich am Handy nicht von einem Ton oder Vibrieren
benachrichtigen lassen, sondern von einem Aufleuchten des Blitz-LEDs.
Holger R. schrieb:> sondern von einem Aufleuchten des Blitz-LEDs.
So mache ich das, die LED blinkt einfach bei einer neuen Nachricht.
Dieses runtröten war nach einer gewissen Zeit dann wirklich nervig, denn
ich will ja nicht genau dann Nachrichten Beantworten wenn jemand anderes
sie los schickt, sondern wenn ich gerade Zeit habe ... und dann schaue
ich eh mal auf das Handy.
Oft liegt es nur auf dem Schreibtisch und dann merkt man, wenn der Blick
von Monitor abschweift, dass es blinkt. Das ist auch angenehmer und
lenkt nicht so ab.
Frank Linde schrieb:> Welchen einfachen Weg gibt es, diese Daten möglichst ohne große Umwege> auf den Pi zu bekommen?
Der Webserver macht ja bestimmt Logfiles; eigentlich brauchst Du diese
ja nur zugänglich zu machen und kannst diese dann periodisch mit dem
Raspberry Pi runterladen und auswerten. Mit rsync wäre das auch rel.
Bandbreitenschonend zu machen.
Normalerweise lässt man auf dem Webserver automatisch ein Analysetool
laufen, welches die Logfiles verarbeitet wie z.B. AWstats oder
Webalizer.
https://awstats.sourceforge.io/http://www.webalizer.org/
Mike J. schrieb:> Bei einer anderen meiner Webseiten brauche ich weder ein Impressum, noch> eine Datenschutzerklärung, weil es rein privat, nicht kommerziell ist,> ich keine Daten des Besuchers nutze und ihm keine Cookies unterschiebe.
Da sollte man vorsichtig sein. Wenn irgendwas kommerzielles, wie z.B.
ein Werbebanner eingeblendet wird, gilt es bereits nicht mehr als rein
privat. Dafür reicht z.B. auch schon ein Facebook-Like-Button (Der
natürlich auch datenschutzrechtlich nicht unproblematisch ist). Und
nicht nur kommerzielle, sondern auch als redaktionell oder
journalistisch zu wertende Webseiten erfordern ein Impressum.
Sheeva P. schrieb:> Verschiedene Software bietet sogenannte Publish-Subscribe-Fähigkeiten,> oft auch verkürzt als "PubSub" bekannt. Unter denen, die sich mit einer> gewissen Wahrscheinlichkeit ohnehin auf meinen Servern befinden, gehören> das RDBMS PostgreSQL und der Key-Value-Store Redis (auch ein prima Cache> für die Webseite, unter anderem...).
Im kleineren Stil gäb's dafür MQTT.
Rolf M. schrieb:> Dafür reicht z.B. auch schon ein Facebook-Like-Button
Da ist wirklich nichts drin, kein CMS, keine Einbeziehung von Fremdcode
anderer Seiten, keine Banner oder so etwas. Es ist rein selbst
geschrieben, HTML, PHP, etwas Javascript.
Ich nutze auch keine fremden Bilder.
Links sind als solche gekennzeichnet, die Leute wissen also wenn sie die
Webseite verlassen.
Rolf M. schrieb:> Sheeva P. schrieb:>> Verschiedene Software bietet sogenannte Publish-Subscribe-Fähigkeiten,>> oft auch verkürzt als "PubSub" bekannt. Unter denen, die sich mit einer>> gewissen Wahrscheinlichkeit ohnehin auf meinen Servern befinden, gehören>> das RDBMS PostgreSQL und der Key-Value-Store Redis (auch ein prima Cache>> für die Webseite, unter anderem...).>> Im kleineren Stil gäb's dafür MQTT.
Absolut richtig, irgendein Message Broker halt. Ob das dann Apache
Kafka, RabbitMQ, irgendeine MQTT-Implementierung ist, spielt da keine
Rolle. ;-) PostgreSQL und Redis hatte ich nur erwähnt, weil diese beiden
auf meinen Servern mit hoher Wahrscheinlichkeit bereits installiert
sind... ;-)