Hardware-Wakeup - Software

  • Hallo,


    da weder Carlo noch Rasputin ihre Sourcen veröffentlichen wollen, habe ich damit begonnen ein eigenes Programm in "C" zu schreiben.
    Die aktuelle Version werde ich jeweils immer hier am Anfang des Threads veröffentlichen.


    Dokumentation findet Ihr unter
    http://www.jepsennet.de/vdr


    Aktuelle Version V2.1 vom 25.02.2006
    vdrwakeupM8.zip
    vdrwakeupM168.zip


    Alte Version V1.5 vom 14.11.2004
    vdrwakeup.zip


    Aktuelle Source V2.1 vom 25.02.2006
    Hier nun endlich die Source. Ich habe das Archiv verschlüsselt, weil ich gerne wissen möchte, wer alles mitprogrammiert. Schickt mir einfach eine Email an vdr[SIZE=7]_at_[/SIZE]jepsennet[SIZE=7]_punkt_[/SIZE]de mit eurem Namen und VDR-Portal Nickname und ihr bekommt das Passwort. Änderungen oder Änderungsvorschläge schickt mir bitte auch an diese Email, damit ich sie in die allgemeine Source einpflegen kann.
    vdrwakeup_src.zip


    Unterstützende Scripte vom 25.02.2006
    jetzt mit den Scripten von Sascha (Dentec) sowie epgscan.sh mit verbessertem Logging. Enthält auch den fertigen LCDd-Dämon basierend auf LCDproc 0.4.5 für c't 3.0 und LinVDR 0.7.
    Wakeup Downloadseiten


    V2.1

    • Programmierung der Portmodes funktionierte bisher nicht korrekt (Die Tücken des Progmem wurden nicht berücksichtigt)


    V2.0

    • Decodierung und Anzeige von NEC Fernbedienungscodes
    • Umstellung auf aktuellen WinAVR
    • Unterstützung für ATmega168 (Pinkompatibel zum ATmega8 aber 16 KB Flashspeicher)


    V1.5

    • Unterstützung von RC6 Fernbedienungscodes.
      Auch RC6 hat ein Toggle-Bit, was wenn es nicht rausgefiltert wird, dazu führte das die alte Routine den Code nur bei jedem zweiten Tastendruck erkannte. Da es so gut wie keine frei verfügbare Dokumentation dieses Codes gibt, habe das Timing an Hand der mir zur Verfügung stehenden Fernbedienung eingestellt und programmiert. Sollte jemand eine Fernbedienung haben, die nicht oder nur bei jedem zweiten Tastendruck erkannt wird, bitte bei mir melden!
    • Anzeige für erkannte Fernbedienungscodes. Der neue Befehl IRSHOW schaltet zwischen Uhrzeit- und IRCode-Anzeige hin und her. (z.B. echo IRSHOW > /dev/ttyS1)
    • Nach jedem IR-Tastencode wird die IR-Erkennung für ein bis zwei Sekunden deaktiviert, um unbeabsichtigte Doppeldrücke oder Doppelsendungen der Fernbedienung zu unterdrücken.


    V1.4a

    • BugFix: Port an LED3 (JP1 Pin3) wurde beim Start immer auf Low gesetzt unabhängig vom gespeicherten Startwert für diesen Port.


    V1.4

    • In Verbindung mit dem neuen LCDPROC-Treiber wird jetzt Backlight über Relais unterstützt.
    • Mit einer Änderung am VDR-Plugin-LCDproc geht das Backlight bei jeder Änderung am Display für eine einstellbare Zeit an und dann wieder aus.
    • BugFix: IR-Port Einstellungen wurden nur für IRO gespeichert.
    • Bei eingeschaltetem VDR (Powersense) wird Wakeup und IR-On deaktiviert.
    • Nach einem erstem IR-On wird IR-On ebenfalls für ein paar Sekunden deaktiviert, um zu schnelles ein-/ausschalten zu verhindern.


    V1.3


    V1.2

    • Erkennung, ob VDR-PC eingeschaltet ist über Eingang PC0. Wird der PC eingeschaltet (wie auch immer), wird ein aktueller Timer gelöscht und die Anzeige "VDR startet..." wird für mehrere Sekunden eingeblendet.
    • Codeoptimierung hinsichtlich der Größe
    • Unterstützung von Displays mit zwei Controllern (z.B. 4x40 oder 4x27)


    V1.1

    • Remote On und Remote Relais Ports können frei definiert werden (siehe IRR und IRO).
    • Zwei zusätzliche IR-Tasten können definiert werden (siehe IRA und IRB).


    V1.0c

    • Bugfix: Bei RC5 Codes wird jetzt nur der Addr und Code verglichen. Vorher wurde das Togglebit nicht ignoriert.
    • Bugfix: Weiteres Problem bei RC5 Code beseitigt.
    • Bugfix: Nach RTC Interrupt wurde Alarm Flag nicht zurückgesetzt.


    V1.0

    • Unterstützung von Displays mit 16x4 und 20x4 mit großer Uhrzeitanzeige und neu 16x2 bis 40x2.
    • Verbessertes RS232 Protokoll. Es sind keine Sleep-Befehle zwischen den Befehlen mehr nötig. Unterschiedlich lange Befehle sind nun möglich.
    • Sekunden- und jahresgenaues stellen der Uhr. Sonst ist jedes Jahr ein Schaltjahr.
    • Anzeige des Wochentags.
    • Programmierung der Infrarot-Kommandos wird per RS232-Befehl eingeleitet. Dadurch können die Pins PC0 und PC1 als zusätzliche Schaltausgänge genutzt werden.
      Wichtig: Programmierjumper auf keinen Fall setzen!
    • Unterstützung beliebiger Fernbedienungscodes (nicht nur RC5) zum Einschalten und für die verschiedenen Schaltausgänge.


    Später ist dann noch folgendes auf meiner Wunschliste:

    • Anzeige des Titels der nächsten programmierten Sendung.
    • Bei Betrieb umschalten des Displays auf Ausgabe der LCDPROC Anzeige des VDR. (Simulation eines seriellen Displays)
    • Und mein Traum: Verwendung eines grafischen Displays über die serielle Schnittstelle mit graphlcd-plugin und im ausgeschalteten Zustand vom Wakeup-Modul.


    Für Anregungen, Wünsche und Fehlerreports steht Euch dieser Thread nun offen.


    Tschüß Frank

  • Hallo Frank,


    Zitat

    Für Anregungen, Wünsche und Fehlerreports steht Euch dieser Thread nun offen.


    Ich beziehe mich da auf Wünsche ;)


    Was ich bräuchte:
    Na ich fang mal so an: Ich möchte meien vdr über den WOL-Anschluss starten.


    Ich bräuchte also beim betätigen der Powertaste an der Fernbediehnung bzw. wenn der Timer abgelaufen ist einen kurzen (ca. 500ms müssten reichen) Impuls am RELAI um auf den WOL PIN kurz ein +5V Signal zu legen!


    Unterstütz deine Version das, oder kann man (DU) das vielleicht ohne grösseren Aufwand integrieren?


    Danke



    PS: Ich hab momentan nur ein 2x24 Display, wann bindest du das ein? Dauert das noch oder kann ich drauf warten. Weist du schon wann du die Sourcen reinstellst (nur so ungefähr)

  • Hallo Jabby,


    dafür bietet sich eigentlich die RING-Leitung an, die es auch invertiert direkt am ATMEGA gibt.


    Ist auch sehr schön auf Starters Seite beschrieben.


  • Hallo Frank,


    dann nochmal die Frage hier:


    Welchen Compiler verwendest Du ?


    Ich hab momentan leider schon ein 2*16 fest eingebaut und würde den VDR aber gerne mit der Nexus Fernsteuerung einschalten. Wenn ich das richtig verstanden habe, müsste das mit deiner Software gehen. Sobald Du den Quellcode veröffentlichst, kann ich das auch selbst erledigen. Die Routinen hab ich schon mal selbst geschrieben.


    Ich hab auch schon Routinen zur Ansteuerung von Graphik LCDs angefangen. Die Kombination von HW-WAKEUP und GRAPH-LCD ist genau das was mir auch vorschwebt.



    Gruss

    VDR:
    c't 1.2.6, remote, hw-wakeup, graphlcd
    AOPEN EZ65, Celeron 2GHz, 256MB, Maxtor 160GB, Hauppauge Nexus+CI, AlphaCrypt

  • Hallo Jabby,


    ich hab einfach ein Halbleiter Relais mit Leuchtdioden Vorwiderstand an +5V an den WOL Pin gehängt. Das funktioniert mit jedem Mainboard.



    Gruss

    VDR:
    c't 1.2.6, remote, hw-wakeup, graphlcd
    AOPEN EZ65, Celeron 2GHz, 256MB, Maxtor 160GB, Hauppauge Nexus+CI, AlphaCrypt

  • Hallo,


    heute abend werde ich mich wieder ransetzen.


    Wakeup werdeich vielleicht einfach per Befehl konfigurierbar machen zwischen PC0, PC1, PC3 und PD3 (invertiert und nicht invertiert).


    Zweizeilige Displays werde ich auch einbauen.


    Wenn ich dann noch Zeit habe, werden ich die Sourcen weiter sortieren und kommentieren.


    Ich verwende WinAVR, UEdit und PonyProg.


    So das muss erstmal reichen.


    Bis demnächst
    Frank

  • Zitat

    Originally posted by FrankJepsen
    Ich verwende WinAVR, UEdit und PonyProg.


    das klingt doch gut. Dann kommen wir Deinem Traum schon etwas näher. Serial-glcd funktioniert bei mir hier schon 'ne Weile (ist auch mit WinAVR programmiert). Ich hatte das Thema vor längerer Zeit schonmal vorgestellt, die Resonanz war aber leider sehr gering (um nicht zu sagen Null).
    Hier nochmal der Link: AVRSerial


    Clemens

  • Hallo rockclimber,


    Das hört sich ja schon mal gut an. :]


    Einen Atmega16 habe ich schon rumliegen. Ich wollte den Atmega8 einfach durch ihn ersetzen. Für die Entwicklungsphase erstmal per Aufsteckplatine die nur den Atmega16 und den Grafikdisplayanschluß enthält und in den Atmega8 Sockel gesteckt wird. Dann ist kein komplett neues Platinenlayout nötig. Der Atmega8 hat einfach zu wenig Ports für ein Grafikdisplay.


    Genau deine Idee mit dem graphlcd Plugin hatte ich auch. Im ersten Schritt wollte ich für IR-Remote einfach einen zweiten seriellen Port oder den IR-Eingang der DVB-Karte nutzen. Später kann man dann vielleicht alles mit in das graphlcd Plugin integrieren. Oder man bräuchte einen virtuellen RS232 Treiber der den IR-Eingang für LIRC weitergibt, sich aber sonst wie ein normaler RS232 Treiber verhält.


    Tschüß Frank

  • Update 11.07.2004 siehe oben.
    Unterstützung zweizeiliger Displays:
    [Blockierte Grafik: http://www.jepsennet.de/vdr/Timer2.jpg]


    Tschüß Frank

  • Hallo Frank,


    Vielen Dank für die 2*16 Version.


    Funktioniert prima. :rolleyes:



    Gruss

    VDR:
    c't 1.2.6, remote, hw-wakeup, graphlcd
    AOPEN EZ65, Celeron 2GHz, 256MB, Maxtor 160GB, Hauppauge Nexus+CI, AlphaCrypt

  • Jabby
    Ich habe es gestern doch nicht mehr geschafft den Weckimpuls umschaltbar zu machen. Ehrlich gesagt sehe ich auch nicht so viel Sinn darin. Wenn man schon eine extra Leitung zieht dann sollte man sie doch zum Powertasteranschluß ziehen, wie von Tournevis auf Starters Seite unter Erweiterungen beschrieben. Das ist immer noch die sicherste Art den PC eingeschaltet zu kriegen (WakeOnRing oer WakeOnLan funktionieren eventuell nach Stromausfall nicht mehr).


    martini2
    Und wovon träumst du nachts? ;)
    Das PS1 Display hängt doch wohl am TV oder VGA Ausgang des Rechners, oder? Wie soll der Atmega das denn wohl bei ausgeschaltetem Rechner ansteuern?


    JanikMarc
    Freut mich zu hören.


    Tschüß Frank

  • Hallo Frank,


    ich hab mich wohl zu früh gefreut.


    Einschalten über IR geht, Einschalten über Timer geht nicht mehr.


    Weitere kleine Punkte sind:


    1.
    Heute zeigt er Son. 13., also den falschen Wochentag an.


    2.
    IR ist etwas unzuverlässig. Oft muss man mehrfach drücken.


    3.
    ATS00000000 löscht den Timer nicht, sondern es wird der 1.1. 00.00 angezeigt.


    4.
    Mein WOR liegt über ein Relais am Power-Taster.
    Wenn man bei gesetztem Timer von Hand einschaltet, muss der Timer gelöscht werden, sonst geht er wieder aus. Ich möchte deshalb beim Hochfahren zumindest ein ATS000000 senden. Siehe 3.


    5.
    Wenn der VDR an ist, sollte er nicht versehentlich über Infrarot hart ausgeschaltet werden können. Hast Du dafür eine Lösung ?



    Für ne Vorabversion der Quellen unterschreib ich dir auch ein NDA :) ? ?(



    Gruss


    Rainer

    VDR:
    c't 1.2.6, remote, hw-wakeup, graphlcd
    AOPEN EZ65, Celeron 2GHz, 256MB, Maxtor 160GB, Hauppauge Nexus+CI, AlphaCrypt

  • @Frank


    Theoretisch könnte man ein PSOneTFT doch über eine abgewandelte Schaltung dieser Art ansteuern, zumindestens um den nächsten Timer im ausgeschalteten Zustand anzuzeigen.


    LINK

    Capulet:
    HW: Dell Dimension 3100, Pentium 4 3GHz, 2GB RAM, 160GB HDD (System), 1TB HDD (Video), 1 x TT S2-1600, 1 x Technisat Skystar HD | SW: Debian 7.4, VDR 2.0.4 (selfcompiled), dummydevice 2.0.0, streamdev-server 0.6.1, NFS-Server


    TiViPi01:
    HW: Raspberry Pi Mod. B Rev. 2, 512MB RAM, 8GB SD-Card, Teko TEK-BERRY.9 Gehäuse, Ednet 85024 USB 2.0 Hub, Digitainer X10 Funk-Fernbedienung | SW: Raspbian 01/2014, VDR 2.0.4 (selfcompiled), rpihddevice 0.0.8, ffmpeg 1.0.8, streamdev-client 0.6.1, NFS-Client

  • ich dachte eher scherzhaft daran den Atmel als controller für das Display einzusetzen. Als rs232-video Wandler ist das ding wohl zu langsam.
    Und sonst träume ich Nachts von ... (zensiert!). :D

  • JanikMarc


    zu 1.
    Wochentag wird nicht berechnet sondern nur weitergeführt und muss richtig gesetzt werden.


    zu 2.
    Bei mir geht es jetzt sehr zuverlässig. Schick mal deinen EEPROM Inhalt per EMail an mich (kann mit PonyProg ausgelesen werden).


    zu 3.
    Nimm einfach ATS zum Löschen. Ist normalerweise unnötig, denn die Software löscht den Timer automatisch.


    zu 4. und 5.
    Den Powertaster so ohne Absicherung gegen Ausschalten anzuschließen finde ich nicht so gut. Tournevis Lösung ist da glaube ich besser.
    Ich wollte noch eine Erkennung einbauen, ob der PC ein- oder ausgeschaltet ist. Wer hat eine gute Idee? Die Anzeige 'VDR schaltet ab' und 'VDR startet' waren nur schnelle Hacks. Dann könnte man auch per Software absichern.


    Tschüß Frank


    PS: Ich gehe jetzt auch träumen. ;)

  • martini2


    Das ist sicherlich richtig, das das Ding als VideoWandler wahrscheinlich ein wenig zu schwach ist. Aber man könnte doch noch eine kleine Umschaltplatine bauen, die, solange es ein Composite Signal vom Computer bekommt diesen benutz, und sobald der Computer aus ist, auf die Ausgabe der Wakeup-Platine umschaltet. :rolleyes:

    Capulet:
    HW: Dell Dimension 3100, Pentium 4 3GHz, 2GB RAM, 160GB HDD (System), 1TB HDD (Video), 1 x TT S2-1600, 1 x Technisat Skystar HD | SW: Debian 7.4, VDR 2.0.4 (selfcompiled), dummydevice 2.0.0, streamdev-server 0.6.1, NFS-Server


    TiViPi01:
    HW: Raspberry Pi Mod. B Rev. 2, 512MB RAM, 8GB SD-Card, Teko TEK-BERRY.9 Gehäuse, Ednet 85024 USB 2.0 Hub, Digitainer X10 Funk-Fernbedienung | SW: Raspbian 01/2014, VDR 2.0.4 (selfcompiled), rpihddevice 0.0.8, ffmpeg 1.0.8, streamdev-client 0.6.1, NFS-Client

  • Zitat

    Originally posted by FrankJepsen
    zu 4. und 5.
    Den Powertaster so ohne Absicherung gegen Ausschalten anzuschließen finde ich nicht so gut. Tournevis Lösung ist da glaube ich besser.
    Ich wollte noch eine Erkennung einbauen, ob der PC ein- oder ausgeschaltet ist. Wer hat eine gute Idee? Die Anzeige 'VDR schaltet ab' und 'VDR startet' waren nur schnelle Hacks. Dann könnte man auch per Software absichern.


    Ob der PC an oder aus ist könnte man über das 'PowerGood'-Signal vom Netzteil abfragen. Bedeutet aber ein zusätzliches Kabel.
    Eleganter finde auch ich die Lösung über den Ring (oder WOL). Da ist es dann egal, ob der Rechner an oder aus ist. Ring ist sogar vorteilhafter, da man ja eh schon an der seriellen Schnittstelle hängt und kein extra Kabel braucht.


    Clemens

  • Hallo,


    ab sofort ist wieder ein Update verfügbar.
    Ich hatte extra vor der Rausgabe der ersten Version einen RC5 Decoder in die universelle Empfangsroutine eingebaut, um das Togglebit ignorieren zu können. Bei RC5 wechselt das 3. Bit bei jedem Tastendruck. Leider habe ich dann vergessen das beim Vergleich zu berücksichtigen.:( War wohl doch schon zu spät am Wochenende.
    Dadurch wurde warscheinlich nur jeder zweite RC5 Tastendruck als übereinstimmend erkannt.


    JanikMarc:
    Danke für Deine Codes. Es sind RC5 Codes. Sie streuen zwar relativ stark, sollten aber von der tolleranten Erkennung trotzdem noch erkannt werden.
    Dein Problem mit dem Aufwachen zur eingestellten Uhrzeit ist warscheinlich ein Hardwareproblem. Kontrollier mal die Interruptleitung Int0. Mess noch mal nach. Wenn Du sie auf Null ziehst, sollte ein Interrupt ausgelöst werden.


    Tschüß Frank

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!