Über Relais, überwachtes Netzwerkgerät, aus und einschalten

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,

    mein Internet ist über eine Richtfunkantenne realisiert, von Zeit zu Zeit verabschiedet sich eine der Antennen und benötigen einen reset.

    Da ich das nicht immer sofort mitbekomme und bei der Gegenstelle eventuell niemmand zuhause ist möchte ich das gerne von einem Raspberry erledigen lassen.


    Also:

    per Ping soll die gegenüberliegende Antenne überwacht werden,.. wenn 10 pings nicht erfolgreich waren soll mit einem Railais die Stromversorgung für 20 sec unterbrochen werden, natürlich soll auch mitgeloggt werden wie oft denn das passiert.

    Und dann soll noch Teamviewer laufen damit ich auch Remote auf den Raspberry komme.

    Wie man ein Relais schaltet ist mir klar, jedoch in Kombination mit einer Pingüberwachung bin ich nicht fündig geworden.


    Hoffe bei euch Unterstützung zu finden..... :gk1:

    sg

    Dongl :danke_ATDE:

  • Benötigen die Antennen zufällig eine Stromversorgung mittels Schuko Stecker?

    Bzw. mit wie viel Volt werden diese Versorgt?


    Hätte da nämlich einen Shelly Plug S im Sinn

    https://shelly.cloud/products/…t-home-automation-device/

    und ansonsten sowas:

    https://shop.shelly.cloud/shel…-smart-home-automation#50

    Beide bieten eine API zur Steuerung


    Ansonsten, welche Hardware soll denn nach deinem Sinne zum Einsatz kommen?

    Wie man ein Relais schaltet ist mir klar, jedoch in Kombination mit einer Pingüberwachung bin ich nicht fündig geworden.

    Es muss ja auch nicht alles fertig geben ;)

    Zum Pingen lässt sich ja auch einiges finden.

    Dann die Fehlversuche mitzählen, bei Erfolg die Fehlversuche zurücksetzen auf 0.

    Ist die maximale Anzahl an Fehlversuchen erreich, kommst du zu dir Codestelle mittels if Abfrage wo das Relais geschalten wird, wo du ja auch schon informationen finden konntest.

  • Also auf Lager hätte ich einen Raspberry 2b und einen 4er mit ?! 2GB Ram, und ein Relais-Modul, welches, weiß ich grad nicht, muss nachsehen.


    Die Antennen sind Ubiquiti mit 24V PoE Adapter, welche ich mit den Relais aus und einschalten will.


    Da ich mit dem Raspberry so eigentlich außer fertige Sachen, noch nichts gemacht habe, hoffe ich auf jemanden der so eine Lösung schon fertig in der Schublade hat. ;)

    Ich weiß natürlich man könnte sich das mit viel Zeit erarbeiten, die Zeit hab ich aber nicht und möchte aber trotzdem das ganze nicht einfach mit einer Zeitschaltuhr jede Woche einmal aus und wieder einschalten.


    Danke lg Dongl

  • hoffe ich auf jemanden der so eine Lösung schon fertig in der Schublade hat.

    Denke das wird so nicht passieren.

    Aber das ganze lässt sich relativ einfach umsetzen.


    Ich weiß natürlich man könnte sich das mit viel Zeit erarbeiten, die Zeit hab ich aber nicht

    Klar lässt sich das erarbeiten und geht einfacher als Gedacht. Das nach dem Komma ist Schade, denn das Forum hier baut eigentlich auf Eigeninitiative.


    Wenn nicht geplant ist, dass auf dem Pi sonst noch anderweitige Software ausgeführt wird, reicht vollkommen der Raspberry Pi 2 aus. Da es sowieso von irgendjemanden geschrieben wird, erwähn ichs gleich. Auch ein ESP könnte mit Leichtigkeit diese Arbeit vollrichten, sofern das die einzige Aufgabe bleibt.


    Dann erstell doch mal einen Schaltplan und erkundige dich welches Modul du hast, zeige auch wie du die Spannung konkret unterbrechen/schalten willst und dann sehen wir weiter.

  • Auch wenn ich mich jetzt total blamiere,... was meinst mit "ESP" Ich denke mal nicht das du Electronic Stability Control meinst.


    Heute Abend werde ich mal bisschen Zeichen, keine Sorgen von Elektrik hab ich Ahnung, nur mit dem Code bin ich nicht auf Du und Du.

    Zeit ist relativ, wenn es etwas wird, bin ich auch bereit zu Investieren, bitte mich nicht falsch verstehen.

    lg

    Dongl

  • was meinst mit "ESP"

    https://de.wikipedia.org/wiki/ESP8266


    AZDelivery NodeMCU ESP8266 ESP 12E Development (Affiliate-Link)


    Sowas meinte ich damit.


    Zeit ist relativ, wenn es etwas wird, bin ich auch bereit zu Investieren, bitte mich nicht falsch verstehen.

    :conf:Das versteh ich jetzt in der Tat nicht was du damit ausdrücken willst. Willst du Zeit oder Geld investieren? Wobei die Zeit das besser Investment ist ;)

  • Ich meine Zeit zu investieren,..

    OK, ESP verstanden, jedoch glaube ich nicht das hier Teamviewer läuft,..
    Im schlimmsten Fall bin ich ja vom Internet getrennt und kann dann nur mehr per Remote Software am Handy auf den Raspberry, Teamviewer ist meine erste Wahl, weil ich das zur Not mit dem Handy egal wo ich bin steuern kann.


    Grob auch mal aufgezeichnet, werde das aber noch sauber Zeichnen, aber ich denke man kennt sich aus.


  • Also ich gehe davon aus das mein Handy Internet hat.

    Normalerweise hab ich jemanden Zuhause welcher im Notfall die Antenne aus und wieder einsteckt, Jedoch sollte ja der Reboot automatisiert funktionieren.

    Auf Seite Raspberry2 hatte ich bis jetzt noch keinen Ausfall des Internets (Provider Router) jedoch hat mich die Antenne schon 2x im Stich gelassen.

    Somit ist der Raspberry2 über das Internet erreichbar jedoch nicht über eine fixe IP, und auch nicht von Zuhause aus.


    Wenn ich nun Unterwegs bin, und warum auch immer, Zuhause das Internet nicht funktioniert, kann ich mit dem Handy und Teamviewer weiter nach einer Lösung suchen. Pingen, tracert, nochmal neu starten, was auch immer.

  • Was sind denn das für Antennen, ist in diesen eine CPU verbaut? Oder sind das Medienwandler bzw. konverter, Vielleicht wären statt der RPi's und den aktiven Antennen, zwei Router mit alternativer Firmware (OpenWRT) besser geeignet? Hab auch eine kleine Richtfunkstrecke mit WRT54 Routern seit längerer Zeit in Betrieb, mit einen kleinem Skript im Router sehe ich über die LED Anzeige den Zustand der Verbindung. Damit könnte man schon im Router auf evtl. bestehende Probleme reagieren.

  • Also hab einen Raspberry 1b und eine Raspbeery4, als Relais würde ein Keyes_SR1y zum Einsatz kommen.

    Später würde ich dann auf ein 4Kanal Relais Platine wechseln aber erst mal spielen mit dem 1Kanal Relais.


    Also, kann mir jemand dabei helfen aus einem Netzwerk Ping eine Aktion zu machen?


    Vielen Dank im Voraus.


    @Fliegenhals Die Antennen sind von Ubiquiti, powerbeam-ac-gen2, 2,5km 460MBit und ich übertrage einen InternetAnschluss mit 300MBit Down und 100Mbit UP. Die Lösung bleibt auf alle Fälle, ich möchte nur im Notfall die Antennen mal stromlos machen können.


    Ich hatte die Letzten 7 Jahre auch schon von Ubiquiti eine Richtfunk Lösung über 9km die super Stabil lief, nur jetzt muss ich hin und wieder rebooten, bis ich das gelöst habe, möchte ich das mit dem Raspberry lösen.


    @ det_lev_da, ich möchte den 24V PoE Adapter von der Spannung (230V) trennen.

    Edited once, last by dongl ().

  • Ich hab nur gefragt, weil ich in meinen Routern die Entfernung wegen der der Signallaufzeit angepassen musste. Aber vielleicht ist so eine Funktion in den Antennen mit eingebaut. Die 24V Spannung für die PoE Adapter könnte man auch per MOSFET schalten. Ich würde einen Mikrocontroller wegen der Robustheit bevorzugen, denn wenn mal der Strom für den RPi u. deine Anlage ausfällt o. der RPi ein Problem hat kann es passieren, dass der RPi auch nicht bootet.

  • Servus,

    aber den Microcontroller kann ICH (eventuell jemand anderer schon) nicht von der Ferne mit Teamviewer verwalten.


    Bis jetzt hab ich das hier, also ich schalte schon 2mal ein Relais wenn eine IP erreichbar ist und wiederhole das nach 20 sec.

    Was ich jetzt noch brauche ist so etwas wie ein log wenn er das Relais schaltet

    Ich mach mal morgen weiter,.. auch wenn es nicht viele Zeilen sind, bin ich doch stolz auf meinen ersten Code!


    import os

    import RPi.GPIO as GPIO

    import time

    while True:

    GPIO.setmode(GPIO.BCM)

    GPIO.setup(17, GPIO.OUT)

    ip = "192.168.114.14"

    os.system("ping -c 1 " + ip)

    if os.system("ping -c 1 " + ip) == 0:

    for i in range(2):

    GPIO.output(17, GPIO.HIGH)

    time.sleep(0.5)

    GPIO.output(17, GPIO.LOW)

    time.sleep(0.5)

    print ("IP ist erreichbar")

    print ("nach 20 sec gleich nochmal")

    time.sleep(20)

  • Glückwunsch zum ersten Code. :thumbup:

    Code bitte immer in Codetags posten. In Python sind Einrückungen essentiel, die gehen so verloren.


    Damit das ganze nicht in die falsche Richtung geht ein paar Korrekturen.

    Die schönere/bessere Bibliothek zum schalten der GPIOs ist gpiozero.

    os.system ist veraltet und soll nicht mehr verwendet werden. Als Ersatz dafür gibts subprocess.

    Dein Code steht aktuell auf "globaler Ebene". Besser ist es sich von Anfang an anzugewöhnen alles zu funktionalisieren.

    Der Code ist aber nicht getestet.


    Was ich jetzt noch brauche ist so etwas wie ein log wenn er das Relais schaltet

    Wie/was stellst du dir darunter vor?

    Soll das in einer Textdatei stehen? Oder willst du eine Benachrichtigung aufs Handy?

  • Puh, das sieht mal ganz anders aus,.. was soll ich sagen DANKE, habe einige Zeit benötigt um den Code lesen zu können.


    Nach einigen Stunden hab ich auch den Fehler im Script gefunden, im Abschnitt "def main():" fehlte hinter "if status_ping:" etwas.


    Mit rumtesten hab ich dann das genommen "if status_ping == 0:


    Wie kann ich, wie du es gepostet hast die Zeilennummer mit angeben?


    Logging: fur's erste würde eine Textdatei reichen, wenn du eine Lösung aufs Handy hast, dann nur her damit.


    Ich werde mal heute oder morgen mit smtplib versuchen was hinzubekommen.


  • das kommt raus,.. bei erfolgreichem Ping:

    rtt min/avg/max/mdev = 1.353/2.586/3.819/1.233 ms

    <class 'int'>

    2020-09-03 20:27:19.612431: Ping erfolgreich

    Fehler:

    2 packets trasmitted, 0 received, +2 errors, ..........

    pipe 2

    <class 'int'>

    2020-09-03 20:27:19.612431: Ping fehlversuch Nummer: 1


    Anschließend hab ich "meine" Zeichen wieder entfernt, nun ist jeder ping ein "Pingfehlversuch"


    Wenn ich einen Code Eingebe dann sind da keine Zeilennummern, nach dem Absenden sind Zeilennummer vorhanden also passt schon danke.


    Telegramm aha, hab ich noch nie verwendet,...

    smtplib, naja ich hab versucht über meinen gmx Acount ein Mail zu versenden, bin jetzt bin ich aber noch nicht erfolgreich gewesen.


    Ich spiele grad mit dem counter rum, und möchte das er nach dem antenne_neustarten wieder bei 0 anfängt, das ist der Code warum funzt das nicht?



    Nur mal so eine Frage wie lange hast du für den Code benötigt? Und was machst du weil du das kannst?

    Auf alle Fälle vielen Dank für deine Unterstützung!!!! :bravo2::bravo2::bravo2::bravo2::bravo2:

  • Anschließend hab ich "meine" Zeichen wieder entfernt, nun ist jeder ping ein "Pingfehlversuch"

    Stimmt, war ein Fehler von mir, muss heißen if not status_ping:


    Ich spiele grad mit dem counter rum, und möchte das er nach dem antenne_neustarten wieder bei 0 anfängt, das ist der Code warum funzt das nicht?

    RE: Über Relais, überwachtes Netzwerkgerät, aus und einschalten

    Du darfst hier von der Klasse keine neue Instanz erstellen, sondern müsstest von der main Funktion aus, die schon erstellte Instanz von PingCounter  namens ping_counter in die von dir gewünschte Funktion antennen_neustarten als Parameter mit übergeben. Wie das funktioniert siehst du eh bei der Funktion antennen_neustarten bei dem relais.


    Es gibt aber einen einfacheren Weg das umzusetzen, den if Block in der main so abzuändern:

    Python
                if ping_counter.zaehlerstand >= ANZAHL_FEHLVERSUCHE:
                    antennen_neustarten(relais)
                    ping_counter.reset_counter()


    Um schnell und unkompliziert mit dem bereits vorhandenen Code zu einem Textlog zu kommen, kannst du die print() Ausgaben einfach in eine Textdatei umleiten lassen.

    Wie das ganze geht ist hier beschrieben:

    https://wiki.ubuntuusers.de/Shell/Umleitungen/



    Nur mal so eine Frage wie lange hast du für den Code benötigt? Und was machst du weil du das kannst?

    Das waren so 30-45 Minuten. Beruflich habe ich mit sowas nicht zu tun. Das ist alles selbst beigebracht mit Hilfe diesem Forum hier. Begonnen hat das ganze vor 6 Jahren. Da war erstmal der Kontakt mit Linux durch den Pi den ich brauchte für die Datenerfassung meiner TFA Nexus Wetterstation. Ab 2017 begann dann auch so langsam das Programmieren mit Python.



    EDIT:

    Gerade gesehen, dass du das relais.on() und relais.off() zum an und ausschalten in der gezeigten Funktion von dir gedreht hast?! Absicht?