Posts by Tobi

    Im dem Theard soll später mal eine Variable zurückgesetzt bzw. verändert werden, da ich dieses Email Programm nutze um einen bestimmten Inhalt auf einem einfachen LCD Display (4x20) anzuzeigen. So soll bei Betätigen des Tasters ein anderer Inhalt angezeigt werden oder das Display soll gelöscht werden.

    Hier mein Versuch:

    Ich erhalte aber folgende Fehlermeldung:

    Code
    sudo python mail.py
    Traceback (most recent call last):
      File "mail.py", line 11, in <module>
        class MailChecker:
      File "mail.py", line 78, in MailChecker
        GPIO.add_event_detect(17, GPIO.RISING, callback=mycallback)
    RuntimeError: No access to /dev/mem.  Try running as root!

    Was mache ich falsch :D?

    Hey,
    ich versuche gerde eine Interrupt in einen Programm Code einzufügen, der meine Emails Abfragen soll. Es soll aber noch der Abhandlung des Interrupts die Email Abfrage weitergeführt werden, wie stell ich das an?

    Der Programm Code:
    #! /usr/bin/python

    # Das Script benötigt die IMAPLIB und TIME. Für POP3 wäre das POPLIB. Siehe http://docs.python.org/2/library/poplib.html
    # Googlemail verwendet IMAP address: imap.gmail.com und Port 993 username ist die volle Mailaddresse

    import imaplib, time
    import RPi.GPIO as GPIO

    GREEN_PIN = 25
    RED_PIN = 24

    class MailChecker:
    def __init__(self, server, port):
    # GPIO aufsetzen - siehe Konstanten für GREEN_PIN und RED_PIN müssen mit eurer Belegung übereinstimmen
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(GREEN_PIN, GPIO.OUT)
    GPIO.setup(RED_PIN, GPIO.OUT)
    GPIO.setwarnings(False)

    # verbindung mit dem IMAP server - SSL versteht sich ;)
    try:
    self.m = imaplib.IMAP4_SSL(server, port)
    except:
    self.do_error("Server nicht erreichbar")

    def do_error(self, error):
    print(error)
    exit()


    def log_in(self, user, password):
    # Login mit mailaddresse und password
    try:
    self.m.login(user, password)
    except:
    self.do_error("Fehler: Login")

    def check_mail(self):
    type, data = 0, 0
    # Inbox nach ungelesenen Mails durchsuchen. Kann weiter eingeschränkt werden z.B. '(FROM "Horst")'
    try:
    self.m.select()
    type, data = self.m.search(None, "UNSEEN")
    except:
    self.do_error("Ausnahme: Mailsabrufen")


    if type == "NO":
    self.do_error("Fehler: Mailsabrufen")

    self.report(data)

    def start_checking(self, interval):
    while True:
    self.check_mail()
    time.sleep(interval)

    def report(self, data):
    message_count = len(data[0].split())
    if message_count > 0:
    print("Sie haben %i neue Mails" %
    message_count)
    GPIO.output(RED_PIN, GPIO.LOW)
    for i in range(1, 100):
    # Grüne LED Blinkt
    GPIO.output(GREEN_PIN, GPIO.LOW)
    time.sleep(.2)
    GPIO.output(GREEN_PIN, GPIO.HIGH)
    time.sleep(.2)
    else:
    print("Keine neuen Mails")
    GPIO.output(GREEN_PIN, GPIO.LOW)
    GPIO.output(RED_PIN, GPIO.HIGH)

    if __name__ == "__main__":
    user = "benutzer"
    password = "passwort"
    server = "serveradresse"
    port = 993
    # oder welcher port auch immer relevant ist

    checker = MailChecker(server, port)
    checker.log_in(user, password)
    checker.start_checking(60)

    Der Interrupt :
    1. GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    2. def my_callback(channel):
    print("test")
    3. GPIO.add_event_detect(17, GPIO.RISING, callback=my_callback)

    Ich hoffe ihr könnte mir helfen, da ich noch ein blutiger Anfänger in Sachen Python bin :)
    Gruß Tobi

    Hey,
    ich bin gerade dabei eine Funkauswert-Software auf meinem Raspi zu installieren, welche auf Java basiert. Zuerst habe ich es mit OpenJdk versucht und die Software konnte auch richtig ausgeführt werden, auch die angeschlossene USB Soundkarte wurde korrekt erkannt. Da ich aber aus Performance Gründen nun auf die gerade erschienende Oracle Java Version umsteigen muss, hab ich das Problem das die Soundkarte leider nicht mehr im Java Programm korrekt verwendet werden kann. Zuvor wurde anscheinen automatisch mit dem Openjdk der PulseAudio Mixer(siehe Foto) mit installiert, dieser fehlt aber anscheinen bei der Oracle Java Version. Dies hat zur Folge das der Soundeingangspegel entweder 0% oder 100% anzeigt. Auch eine Regelung des Pegels über dem Alsamixer brachten keine Verbesserung. Kann man diese PulseAudio Mixer nachinstallieren?

    Gruß Tobi

    Hey,
    ich versuch schon seit einer Ewigkeit dieses Display über python anzusprechen: http://www.amazon.de/Display-Anzeigen-Zeichen-kompatibel-HD44780/dp/B00ALNHTVY/ref=sr_1_1?ie=UTF8&qid=1380988897&sr=8-1&keywords=display+20x4&tag=psblog-21 [Anzeige]
    Dazu bin ich der Anleitung auf dieser Website gefolgt:

    http://www.raspberrypi-spy.co.uk/2012/08/20x4-l…l-using-python/
    Doch leider bekomme ich immer zuerst diese Fehlermeldungen wenn ich das script ausführe:

    lcd.py:61: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LCD_E, GPIO.OUT) # E
    lcd.py:62: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LCD_RS, GPIO.OUT) # RS
    lcd.py:63: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LCD_D4, GPIO.OUT) # DB4
    lcd.py:64: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LCD_D5, GPIO.OUT) # DB5
    lcd.py:65: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LCD_D6, GPIO.OUT) # DB6
    lcd.py:66: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LCD_D7, GPIO.OUT) # DB7
    lcd.py:67: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LED_ON, GPIO.OUT) # Backlight enable
    backlight
    text

    Das Display hingegen leuchtet und mann kann auch weiße Kästchen erkennen. Jetzt zu meinem Quelltext:
    (Hierbei verwende ich zum definieren von LCD_RS usw. immer die Nummer des Gpio Ports, also z.B. für gpio 7 die 26, weil ich das über nen einfaches script mit einer LED getest habe und ich nur so den gpio port ansprechen konnte, in der Anleitung hingegen werden immer die Nummern des Gpio Ports benutzt)

    #!/usr/bin/python
    #
    # HD44780 20x4 LCD Test Script for
    # Raspberry Pi
    #
    # Author : Matt Hawkins
    # Site : http://www.raspberrypi-spy.co.uk/
    #
    # Date : 09/08/2012
    #

    # The wiring for the LCD is as follows:
    # 1 : GND
    # 2 : 5V
    # 3 : Contrast (0-5V)*
    # 4 : RS (Register Select)
    # 5 : R/W (Read Write) - GROUND THIS PIN
    # 6 : Enable or Strobe
    # 7 : Data Bit 0 - NOT USED
    # 8 : Data Bit 1 - NOT USED
    # 9 : Data Bit 2 - NOT USED
    # 10: Data Bit 3 - NOT USED
    # 11: Data Bit 4
    # 12: Data Bit 5
    # 13: Data Bit 6
    # 14: Data Bit 7
    # 15: LCD Backlight +5V**
    # 16: LCD Backlight GND

    #import
    import RPi.GPIO as GPIO
    import time

    # Define GPIO to LCD mapping
    LCD_RS = 26
    LCD_E = 24
    LCD_D4 = 22
    LCD_D5 = 18
    LCD_D6 = 16
    LCD_D7 = 12
    LED_ON = 13

    # Define some device constants
    LCD_WIDTH = 20 # Maximum characters per line
    LCD_CHR = True
    LCD_CMD = False

    LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
    LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line
    LCD_LINE_3 = 0x94 # LCD RAM address for the 3rd line
    LCD_LINE_4 = 0xD4 # LCD RAM address for the 4th line

    # Timing constants
    E_PULSE = 0.00005
    E_DELAY = 0.00005

    def main():
    # Main program block

    GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
    GPIO.setup(LCD_E, GPIO.OUT) # E
    GPIO.setup(LCD_RS, GPIO.OUT) # RS
    GPIO.setup(LCD_D4, GPIO.OUT) # DB4
    GPIO.setup(LCD_D5, GPIO.OUT) # DB5
    GPIO.setup(LCD_D6, GPIO.OUT) # DB6
    GPIO.setup(LCD_D7, GPIO.OUT) # DB7
    GPIO.setup(LED_ON, GPIO.OUT) # Backlight enable

    # Initialise display
    lcd_init()

    # Toggle backlight off-on
    GPIO.output(LED_ON, False)
    time.sleep(1)
    GPIO.output(LED_ON, True)
    time.sleep(1)
    print("backlight")

    # Send some centred test
    lcd_byte(LCD_LINE_1, LCD_CMD)
    lcd_string("--------------------",2)
    lcd_byte(LCD_LINE_2, LCD_CMD)
    lcd_string("Rasbperry Pi",2)
    lcd_byte(LCD_LINE_3, LCD_CMD)
    lcd_string("Model B",2)
    lcd_byte(LCD_LINE_4, LCD_CMD)
    lcd_string("--------------------",2)
    print("text")

    time.sleep(3) # 3 second delay

    lcd_byte(LCD_LINE_1, LCD_CMD)
    lcd_string("Raspberrypi-spy",3)
    lcd_byte(LCD_LINE_2, LCD_CMD)
    lcd_string(".co.uk",3)
    lcd_byte(LCD_LINE_3, LCD_CMD)
    lcd_string("",2)
    lcd_byte(LCD_LINE_4, LCD_CMD)
    lcd_string("20x4 LCD Module Test",2)

    time.sleep(20) # 20 second delay

    # Blank display
    lcd_byte(LCD_LINE_1, LCD_CMD)
    lcd_string("",3)
    lcd_byte(LCD_LINE_2, LCD_CMD)
    lcd_string("",3)
    lcd_byte(LCD_LINE_3, LCD_CMD)
    lcd_string("",2)
    lcd_byte(LCD_LINE_4, LCD_CMD)
    lcd_string("",2)

    time.sleep(3) # 3 second delay

    # Turn off backlight
    GPIO.output(LED_ON, False)

    def lcd_init():
    # Initialise display
    lcd_byte(0x33,LCD_CMD)
    lcd_byte(0x32,LCD_CMD)
    lcd_byte(0x28,LCD_CMD)
    lcd_byte(0x0C,LCD_CMD)
    lcd_byte(0x06,LCD_CMD)
    lcd_byte(0x01,LCD_CMD)

    def lcd_string(message,style):
    # Send string to display
    # style=1 Left justified
    # style=2 Centred
    # style=3 Right justified

    if style==1:
    message = message.ljust(LCD_WIDTH," ")
    elif style==2:
    message = message.center(LCD_WIDTH," ")
    elif style==3:
    message = message.rjust(LCD_WIDTH," ")

    for i in range(LCD_WIDTH):
    lcd_byte(ord(message),LCD_CHR)

    def lcd_byte(bits, mode):
    # Send byte to data pins
    # bits = data
    # mode = True for character
    # False for command

    GPIO.output(LCD_RS, mode) # RS

    # High bits
    GPIO.output(LCD_D4, False)
    GPIO.output(LCD_D5, False)
    GPIO.output(LCD_D6, False)
    GPIO.output(LCD_D7, False)
    if bits&0x10==0x10:
    GPIO.output(LCD_D4, True)
    if bits&0x20==0x20:
    GPIO.output(LCD_D5, True)
    if bits&0x40==0x40:
    GPIO.output(LCD_D6, True)
    if bits&0x80==0x80:
    GPIO.output(LCD_D7, True)

    # Toggle 'Enable' pin
    time.sleep(E_DELAY)
    GPIO.output(LCD_E, True)
    time.sleep(E_PULSE)
    GPIO.output(LCD_E, False)
    time.sleep(E_DELAY)

    # Low bits
    GPIO.output(LCD_D4, False)
    GPIO.output(LCD_D5, False)
    GPIO.output(LCD_D6, False)
    GPIO.output(LCD_D7, False)
    if bits&0x01==0x01:
    GPIO.output(LCD_D4, True)
    if bits&0x02==0x02:
    GPIO.output(LCD_D5, True)
    if bits&0x04==0x04:
    GPIO.output(LCD_D6, True)
    if bits&0x08==0x08:
    GPIO.output(LCD_D7, True)

    # Toggle 'Enable' pin
    time.sleep(E_DELAY)
    GPIO.output(LCD_E, True)
    time.sleep(E_PULSE)
    GPIO.output(LCD_E, False)
    time.sleep(E_DELAY)

    if __name__ == '__main__':
    main()


    Ich hoffe ihr könnt mir helfen :)

    Hey,
    ich habe mir das "neue" Java von Oracle auf meinem raspi mit dem Befehl sudo apt-get install oracle-java7-jdk installiert. Doch wenn ich jetzt ein Java Porgramm auf dem Desktop bzw. im meinem Home Verzeichnis starten will, öffnet sich nur Xarchive. Auf dem Befehl sudo java -version zeigt er mir aber eine Java version an. Wie kann ich das ändern?


    LG Tobi

    schon mal danke für die vielen Antworten :)
    Also an c,c++ hab ich mich schon mal dran probiert und ganz ehrlich .....da hab ich mir ganz schön die zähne dran ausgebissen ^^ wenn es irgendwie ohne geht dann versuch ich es...
    Es handelt sich bei dem Vertretungsplan nicht um "Vplan" sondern um einer Lösung von dieser Firma hier http://www.school-timetabling.com/.
    Von bash hab ich zwar noch nichts gehört aber 20 Zeilen klingen schon nach einem realiesierbaren Ansatz da werd ich mich morgen gleich mal einarbeiten und von curl hab ich diesem Zusammenhang auch schon mal was gelesen ;D

    Hey,
    ich habe eine Raspberry Pi zu Weihnachten bekommen und will nun mal was nützliches damit machen. Und zwar habe ich das ergeizoge Ziel eine "kleines" Programm zu programmieren was Folgende Aufgaben bewältigen soll:
    1. soll es sich automtisch bei einer Website anmelden können (genauer gesagt bei dem Vertrettungsplan meiner Schule)
    2. soll es dann den Quelltext einer/meherer Unterseiten auslesen können und ihn ihnen nach bestimmten Keywörten suchen ,also z.B. Ausfall oder Vertretung etc.
    3. soll es diese informtaionen in irgendeiner Weise auf einen vllt. als txt datei auf einen FTP Server laden (vllt. gibt es ja noch was besseres?)
    (4. soll dann in entfernter Zukunft ein Android Programm diese Informationen auslesen und dem Nutzer evtl. als push meldung mitteilen ) Aber erstmal muss der Teil davor laufen^^

    Ich weiß das es nicht gerade einfach werden wird aber ich bringe schon gewissen Erfarhrungen in Bereich Programmieren mit (pascal,basic). Nun meine Eigentlich Fragen: Welche Sprache eigenet sich für mein Vorhaben am besten? Und hat jemand vllt. Ideen wie man die einzelnen Schritte umsetzen könnte? Bzw. ist das Überhaupt möglich ????

    So genug gefragt .....ich hoffe ihr könnt mir helfen ;D


    Gruß Tobi