Intertechno Fernbedienung empfangen, aber wie?

Begonnen von duke24, 23 Dezember 2012, 20:21:58

Vorheriges Thema - Nächstes Thema

duke24

Hallo,

habe seit ein paar Tagen ein CUL433, damit schalte ich ein paar Steckdosen/Lichter per FHEM, desweiteren kann mein VDR den Fernseher auch endlich ein/ausschalten. Leider kann ja der CUL433 (noch??)" die Signale der Fernbedienung nicht empfangen, was schade ist, da die Fernbedienungen ja recht günstig zu haben sind und der FHEM so nicht mitbekommt, dass eine Lampe aus ist wenn per FB geschaltet. Leider reichen meine Programmierkenntnisse nicht aus, dem CUL das beizubringen und auch per Google bekomme ich das nicht hin.
Gibt es eine andere, möglichst kostengünstige Lösung? Gerne auch eine Bastellösung mit Atmega µC, wenn möglich mit Bascom, das verstehe ich dann wenigstens ein wenig (//images/smiley_icons/icon_smile.gif).

Was ich bisher gefunden habe, ist rc-switch, leider lässt sich das wohl nicht so einfach in FHEM integrieren, oder?

MfG
Daniel

PS: Das Forum macht aus einer Klammer")" leider ein (//images/smiley_icons/icon_wink.gif), daher die " hinter der Klammer.

Willi

Zitat von: duke24 schrieb am So, 23 Dezember 2012 20:21Gibt es eine andere, möglichst kostengünstige Lösung? Gerne auch eine Bastellösung mit Atmega µC, wenn möglich mit Bascom, das verstehe ich dann wenigstens ein wenig (//images/smiley_icons/icon_smile.gif).

Statt eines CUL433 kannst Du den RFXtrx433 einsetzen. Siehe http://www.rfxcom.com/store/Sender%20und%20Empf%C3%A4nger/12103 .

Dieser kann diverse Protokolle empfangen. FHEM-Module sind von mir.

ZitatWas ich bisher gefunden habe, ist rc-switch, leider lässt sich das wohl nicht so einfach in FHEM integrieren, oder?

Interessant ist, dass es auch einen Raspberry-Pi-Port gibt.

Noch interessanter finde ich http://gathering.tweakers.net/forum/list_message/38850587#38850587
https://github.com/CurlyMoo/433.92-Raspberry-Pi

Ich glaube die Lösungen mit Funkmodulen am GPIO des Raspberry Pi könnten in Zukunft sehr interessant werden. Genügend Code für Arduino/Jeelabs (ook relay, ...(//images/smiley_icons/icon_wink.gif) sowie CUL (culfw) gibt es ja bereits, den man portieren könnte. Wenn man Zeit hätte........

FHEM-Treiber zu schreiben ist keine Hexerei. Nimm Dir ein Beispielmodul und leg los.
Du brauchst halt etwas Zeit.

Grüße

Willi
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

duke24

Danke für die Antwort,

Ja das mit dem Raspberry klingt echt interessant, leider habe ich keinen. Aber ich glaube ich werde mir doch mal einen besorgen zum basteln. Leider habe ich auch das Zeitproblem, welches bei Frau und zwei Kindern nicht klein ist. Andere Hobbys sind dann erstmal stillgelegt (//images/smiley_icons/icon_wink.gif)
Der RFXtrx433 ist mir eigentlich zu "teuer", das Geld würde ich lieber in Temperatursensoren investieren. Angeschaut hatte ich mir den schon. Wäre dann die Kauflösung ohne groß basteln zu müssen.

Ich werd jetzt mal schauen, ob ich die IT-FB per Atmega88 und Bascom dekodiert und per UART am PC angezeigt bekomme. Kann ja auch nicht zu schwierig sein und man lernt noch ein wenig. Wenn das läuft schau ich mir mal die FHEM-Treiber-Geschichte an.

Falls jemand Tipps und Tricks dazu hat, also Bascom und so, immer her damit. Wenns klappt, werde ich berichten.

MfG
Daniel

ext23

Moin,

das mit dem 433 Mhz Empfänger ist so eine Sache, und auch das mit dem zu teuer. Ich habe mir vor einiger Zeit (da dachte ich noch nicht an FHEM) ein kleinen USB Sender selber gebaut, allerdings NUR Sender, was bei Funksteckdosen vom Grabbeltisch ja reicht. Hat ne Menge Spass gemacht die Protokolle von den Dingern raus zu bekommen, vor allem bei HomeEasy(EU) Geräten, was mir bis heute noch nicht komplett gelungen ist, aber immerhin kann ich schalten ;-)

Aber die Zeit und so dazu das Material, da sind die 100 Euro für den RFXtrx433 gut angelegtes Geld, und ich habe mir jetzt auch ein bestellt weil ich es immer noch nicht gebacken bekommen habe ein Modul für FHEM zu schreiben. Apropos, das wäre mal ein Thema hier Wert wo wir mal ein Beispiel Modul durchgehen mit Kommentaren (//images/smiley_icons/icon_smile.gif)

Mein Sender schaut so aus, ich hab das mal minimal dokumentiert auf meiner HP:
http://itse.homeip.net/projekte/12/5/
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

duke24

So, ich denke ich bin schon ein Stück weit gekommen:
RCswitch läuft erfolgreich auf meinem Atmega88, per UART bekomme ich direkt den Tristate angezeigt, also z.B. FFF0FFF0FFFF. Habe dazu den Beispielcode aus RCswitch genommen und alle "Serial.Print" rausgenommen, bis auf den Tristate (//images/smiley_icons/icon_wink.gif) Nur beim loslassen der Taste der FB kommt ein nicht gewollter Wert, aber ich denke das könnte FHEM dann ausfiltern, sehen wir wenn es soweit ist.


Jetzt muss das ganze nur noch an FHEM übergeben werden können.
Hardwarekosten bisher:
Atmega88 ca. 3€ (hatte ich schon)
FTDI-Kabel (DELOCK 83116) ca. 18€ bei Reichelt (hatte ich schon)
Empfängerplatine (aus ner Steckdose ausgebaut) kein Preis

ZitatApropos, das wäre mal ein Thema hier Wert wo wir mal ein Beispiel Modul durchgehen mit Kommentaren
Gerne, nur wie?

Was gibt den der RFXtrx433 aus? Kann man den auch einfach nur per UART auslesen? Evtl. kann man da was abkupfern (//images/smiley_icons/icon_wink.gif)

MfG
Daniel

Willi

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

Bei RFXtrx433 hat RFXCOM extra eine eigene API erfunden, damit man nicht abkupfert........
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

duke24

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

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:
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFFF
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFF0FFF0
0FFFFFFFFFF1
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/):
#!/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;


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