FHEM - Hausautomations-Systeme > InterTechno

Intertechno Fernbedienung empfangen, aber wie?

<< < (2/2)

Willi:

--- Zitat von: duke24 schrieb am Mo, 24 Dezember 2012 10:40 ---
Was gibt den der RFXtrx433 aus? Kann man den auch einfach nur per UART auslesen? Evtl. kann man da was abkupfern (http://images/smiley_icons/icon_wink.gif)

--- Ende Zitat ---


Bei RFXtrx433 hat RFXCOM extra eine eigene API erfunden, damit man nicht abkupfert........

duke24:

--- Zitat von: Willi schrieb am Mo, 24 Dezember 2012 21:53 ---
Bei RFXtrx433 hat RFXCOM extra eine eigene API erfunden, damit man nicht abkupfert........

--- Ende Zitat ---


Das hab ich mir fast gedacht.

Ok, ich würde gerne versuchen meinen einfachen Empfänger in FHEM einzubinden, leider habe ich von Perl noch weniger Ahnung als von C (++). Daher wäre es nett, wenn mir hier jemand unter die Arme greifen würde.
Derzeitiger Stand:
Der Atmega gibt auf der seriellen Schnittstelle jeden empfangenen Intertechno-Code als Tristate aus, gefolgt von einem carriage return und new line (/r/n oder auch "CRLF"). Sieht dann so aus, wenn ich per screen /dev/ttyUSB0 öffne:

--- Code: ---0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFFFFFF1

--- Ende Code ---
Habe ca. zwei Sekunden "On" und zwei Sekunden "Off" gedrückt.

Mit Perl bin ich soweit gekommen, dass ich auf den seriellen port zugreifen kann, bekomme aber nicht das was ich will, dabei brauche ich hilfe. Hier mein Perl-Testprogramm (geklaut von http://www.netzmafia.de/skripten/hardware/Seriell/):

--- Code: ---#!/usr/bin/perl
use strict;
use warnings;
use vars qw($OS_win);

# Vor allem anderen das Betriebssystem checken
BEGIN
  {
  $OS_win = ($^O eq "MSWin32") ? 1 : 0;
  print "Perl_Vers.: $], Betriebssystem: $^O\n";   # Debug
  # das Folgende geht nur innerhalb des BEGIN-Blocks
  if ($OS_win)
    {
    print "Lade Windows-Modul\n";
    eval "use Win32::SerialPort";
 die "Oops: $@\n" if ($@);
    }
  else
    {
    print "Lade Unix-Modul\n";
    eval "use Device::SerialPort";
 die "Oops: $@\n" if ($@);
    }
  }

# Kommandozeilenparameter holen
die "\nUsage: $0 PORT\n" unless (@ARGV);
my $port = shift;

# Serielle Schnittstelle oeffen (abhaengig vom Betriebssystem)
my $serial_port;
if ($OS_win)
  { $serial_port = Win32::SerialPort->new ($port,1); }
else
  { $serial_port = Device::SerialPort->new ($port,1); }
die "Kann seriellen Port $port nicht oeffen: $^E\n"
   unless ($serial_port);

# Ab hier ist dann alles identisch
my $baud = $serial_port->baudrate();
print "Schnittstelle $port arbeitet mit $baud BPS\n";

# Schnittstellenparameter lesen
my $handshake = $serial_port->handshake();
print "Handshake: $handshake\n";
my $databits = $serial_port->databits();
my $parity = $serial_port->parity();
my $stopp = $serial_port->stopbits();
print "$databits Databits, $stopp Stoppbit(s), "
      . "Paritaet:  $parity\n";

# Hier geht das eigentliche Programm los

for(;;)
{
$serial_port->read_const_time(1000);
#$serial_port->read;
my (@out) = $serial_port->read(20);
foreach (@out) {
print "$_\n";
}
}

# Hier endet es.

# Schnittstelle schliessen
$serial_port->close;
undef $serial_port;

--- Ende Code ---


Ab hier bin ich völlig ratlos :(
Wenn also jemand Lust und Zeit hat, ich wäre für Hilfe Dankbar. Falls nicht, wirds wohl doch auf einen RFXTRX433 hinauslaufen.

MfG
Daniel

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln