-         

Ergebnis 1 bis 10 von 10

Thema: Geräte über das Internet schalten

  1. #1

    Geräte über das Internet schalten

    Anzeige

    Hallo leute,

    brauche eure hilfe,
    Ich will eine Lampe über das Internet schalten:

    Seite aufrufen, Buttonklicken, Webserver o.ä. sended über RS232 befehl an AVR und der Schaltet dann irgentwas

    ist das realisierbar, oder gibts schon solche Webserver?

    beste Grüße
    Michael
    michaelwuehr.de

    CNC - Bearbeitung
    3D - Druck
    Software

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Ja, gibt es.
    Ulrich Radig hat gerade so ein Projekt vorgestellt
    www.ulrichradig.de
    Besprochen wird er hier:
    http://www.mikrocontroller.net/topic/82127#new

    Dort steht auch Benutzername und Passwort für seinen Webserver, den du hier erreichen kannst:
    http://ulrichradig.dyndns.org/

    Gruß
    Christopher

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.03.2006
    Beiträge
    7
    Hallo MichWuhr,

    beides. Man kann es selbst zusammenbauen - oder man schaut bei "ee-el-vau" unter der Nummer 81-760-86 (Nee, nee, ich krieg nichts für den Hinweis!)

    Gruß
    Skydriver

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377

    Re: Geräte über das Internet schalten

    Zitat Zitat von MichWuhr
    Seite aufrufen, Buttonklicken, Webserver o.ä. sended über RS232 befehl an AVR und der Schaltet dann irgentwas
    Hallo Michael!

    So etwas schüttelt man mit der richtigen Programmiersprache und dem richtigen Web-Framework innerhalb von wenigen Minuten aus dem Ärmel.
    Die Programmiersprache die ich gerne verwende heißt Python http://python.org/ und funktioniert unter Windows genau so gut wie unter Linux.

    Es ist zwar kein ausgeklügeltes, schönes Programm, aber es demonstriert, wie es funktionieren könnte.
    Code:
    #!/usr/bin/env python
    # -*- coding: iso-8859-15 -*-
    
    import cherrypy # http://www.cherrypy.org/
    import serial # http://pyserial.sourceforge.net/
    import time
    
    
    class Root(object):
        
        def __init__(self):
            """Initialisierung"""
            self.lamp_status = "OFF"
        
        
        def switch_lamp(self, new_status):
            """
            Schaltet die Lampe ein/aus
            
            new_status: Wenn "ON", dann wird die Lampe eingeschaltet.
              Wenn nicht "ON" (z.B. "OFF") dann wird die Lampe ausgeschaltet.
            """
            
            # Prüfen
            if new_status.upper() == "ON":
                new_status = "ON"
            else:
                new_status = "OFF"
            
            # Verbindung zum µC herstellen und zum Schalten veranlassen
            ser = serial.Serial(port = "COM1", baudrate = 9600, timeout = 1)
            ser.write("SWITCH LAMP " + new_status + "\n")
            
            # kurz warten
            time.sleep(0.1) 
            
            # Antwort des µC abholen
            new_status = ser.readline()
            
            # Verbindung schließen
            ser.close()
            
            # Neuen Status speichern
            if new_status.upper().strip() == "ON":
                self.lamp_status = "ON"
            else:
                self.lamp_status = "OFF"
        
        
        def index(self, switch = None):
            """
            Diese Methode wird ausgeführt wenn keine Seite (nur der Ordnername)
            angefordert wird. Sie liefert den Text zurück, der an den Browser 
            gesendet wird.
            """
            
            # Schalten
            if not switch is None:
                self.switch_lamp(switch)
            
            # HTML zurück geben
            html = """
            <html>
            <body>
              <form action=".">
                <input type="submit" name="switch" value="ON">
                <input type="submit" name="switch" value="OFF">
              </form>
              <h2>Current Status</h2>
              
    
    %(lamp_status)s</p>
            </body>
            </html>
            """ % dict(lamp_status = self.lamp_status)
            return html
            
        index.exposed = True
    
    
    def main():
        # Server starten
        cherrypy.quickstart(Root())
    
    
    if __name__ == "__main__":
        main()
    CherryPy ist ein kleines Web-Framework welches auch als kleiner Webserver laufen kann (wie in diesem Beispiel gezeigt wird). Gibt man im Browser "http://localhost:8080/" ein, dann wird die Seite angezeigt.

    Das Ergebnis sieht dann so aus:



    mfg
    Gerold, ...der mal wieder mit seiner Lieblingprogrammiersprache angeben wollte


    PS: Fast hätte ich es vergessen: Das Programm läuft auf einem PC mit Internetzugang und verhält sich wie ein Webserver. Die Schaltanweisung wird per RS-232 an den µC weitergegeben. Danach wird die Rückgabe des µC ausgewertet. Der neue Status der Lampe wird in eine Variable geschrieben, welche beim Generieren des HTML-Codes abgefragt wird.

    EDIT: Ich hatte zwei Klammern vergessen

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Gerold, ...der mal wieder mit seiner Lieblingprogrammiersprache angeben wollte
    Tja Jehova nennt man sowas...

    Einen Schönheitsfehler gibt es aber.
    Du brauchst einen PC, und die anderen Lösungen, die vorgestellt wurden kommen mit einer Platine aus, die kaum größer als eine Zigarettenschachtel ist
    Software is like s e x: its better when its free.
    Linus Torvald

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377
    Zitat Zitat von izaseba
    Einen Schönheitsfehler gibt es aber. Du brauchst einen PC, und die anderen Lösungen, die vorgestellt wurden kommen mit einer Platine aus, die kaum größer als eine Zigarettenschachtel ist
    Hallo izaseba!

    Naja, das kann man aber auch umdrehen. ;-)

    Die andere Lösung braucht keine extra Platine. Sie kommt mit nur einem (schon vorhandenen) PC und dem µC aus und ist -- inkl. Programmierung des µC -- in weniger als einer halben Stunde fertig. Außerdem kostet sie (da der Computer sowiso schon vorhanden ist) weniger und die Steuerungs(HTML)seite kann ohne auf den µC zugreifen zu müssen geändert werden. Weiters kann diese Steuerungsseite in andere dynamische Webseiten (PHP, Python, PERL) eingebettet werden.

    Es kommt ganz darauf an, was damit gemacht werden soll. Ist ein Computer verfügbar, dann ist ein kleines Programm auf dem PC unschlagbar einfach und schnell zu erstellen.

    Ist kein PC vorhanden oder soll wirklich auf kleinem Raum oder an abgelegenen Orten gearbeitet werden, dann spielt der Embedded-Webserver natürlich seine Karten aus.

    Da die Embedded-Lösung schon aufgezeigt wurde, blieb mir nur noch übrig, Michael eine Lösung über RS-232 zu zeigen.

    mfg
    Gerold
    :-)

  7. #7
    Hallo Leudde,
    danke danke für eure Antworten...

    Ich werd mir mal die Idee von Gerold (phyton_rocks) ansehen, so wars auch vorher gedacht, das ein PC am Netz hängt, und dann die daten weitersendet....

    werds mal ausprobieren...
    michaelwuehr.de

    CNC - Bearbeitung
    3D - Druck
    Software

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377
    Hallo MichWuhr!

    Hier findest du einen kleinen Erfahrungsbericht zu CherryPy http://halvar.at/python/cherrypy_cheetah/. Wichtig für dich ist hauptsächlich, wie man CherryPy installiert und die einfachen HalloWelt-Sachen. Der Rest ist für Python-Anfänger einfach zu viel.

    Vergiss nicht, dass du vorher Python installieren musst. Dieses findest du hier: http://python.org/download/. Nimm aber nicht die 64Bit-Versionen -- auch dann nicht, wenn du ein 64Bit-Betriebssystem hast.

    Und wie man pySerial installiert, habe ich vor Kurzem hier erklärt: http://www.transistornet.de/viewtopic.php?p=30921#30921
    wxPython brauchst du nicht dafür, da ein Webserver nur ein Kommandozeilenprogramm ist und keine grafische Oberfläche hat.

    Noch etwas: Es war schlampig von mir, den HTML-Code direkt in das Python-Programm zu integrieren. Wenn du also etwas Größeres vor hast, dann solltest du den HTML-Code in Dateien auslagern und vielleicht sogar eine Vorlagensprache wie z.B. Cheetah verwenden.

    mfg
    Gerold
    :-)

  9. #9
    Hallo Gerold,

    Deine Beispieldatei in Python für die RS232 finde ich ok.
    Allerdings Suche ich so was in Perl.
    Kannst Du mir da weiter helfen?
    Gruß
    Manne

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377
    Hallo Manne!

    Leider nein. Aber vielleicht findest du ja etwas im CPAN.

    mfg
    Gerold
    :-)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •