Autor Thema: Connair über FHEM steuern  (Gelesen 28135 mal)

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #180 am: 06 Dezember 2017, 11:21:22 »
Hallo RKronenberg,

das ist exact die Sequenz aus Post #177 für on für A1. Darunter ist die für off für A1.

Das mit dem ";" kannst du probieren, wenn es so nicht funktioniert.

Gruß rippi

PS: kannst du mal dein Definitionen posten?
« Letzte Änderung: 06 Dezember 2017, 12:01:31 von rippi46 »
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #181 am: 06 Dezember 2017, 12:04:51 »
Hallo Rippi,

die beiden Sequenzen von der Konsole gesendet, senden den richtigen Ein- und Auschaltbefehl, die Dosen schalten (endlich) das ";" spielt jetzt da keine Rolle.

Gruß Ralph

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #182 am: 06 Dezember 2017, 12:06:19 »
Dann sollte der Code jetzt auch funktionieren!

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #183 am: 06 Dezember 2017, 12:30:07 »
Hallo Rippi,

sollte in der $SendData die zweite Bedingung nicht $c_AUS beinhalten?

meine 99_revteleUtils.pm sieht jetzt so aus:

use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;
$main::NextUpdate = ();

sub revtele {
 my $SendData="";
 my $c_A = "0";
 my $c_G = "0";
 my $c_repeat = "10";
 my $c_pause = "5600";
 my $c_tune = "350";
 my $c_baud = "25";
 my $c_speed = "16";
 my $c_master = "$_[0]";
 my $c_slave = "$_[1]";
 my $c_bitLow="1";
 my $c_bitHgh="3";
 my $c_tx433ver="1,";
 
 my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";
 my $c_seqLow="$c_bitLow,$c_bitHgh,$c_bitLow,$c_bitHgh,";
 my $c_seqF1="$c_bitLow,$c_bitHgh,$c_bitHgh,$c_bitLow,";
 
 
 my $c_AN = "$c_seqF1$c_seqF1";
 my $c_AUS = "$c_seqLow$c_seqLow";
 my $c_add="$c_seqLow$c_seqF1$c_seqF1";
 
 
 $c_bits[A]="$c_seqHgh$c_seqF1$c_seqF1$c_seqF1";
 $c_bits[B]="$c_seqF1$c_seqHgh$c_seqF1$c_seqF1";
 $c_bits[C]="$c_seqF1$c_seqF1$c_seqHgh$c_seqF1";
 $c_bits[D]="$c_seqF1$c_seqF1$c_seqF1$c_seqHgh";

 $c_bits[1]="$c_seqHgh$c_seqF1$c_seqF1";
 $c_bits[2]="$c_seqF1$c_seqHgh$c_seqF1";
 $c_bits[3]="$c_seqF1$c_seqF1$c_seqHgh";
 
 
 my ($state) = "$_[2]";
 if ($state eq "on")
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AN$c_tx433ver$c_speed;";
 }
 else
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AUS$c_tx433ver$c_speed;";
 }


my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.100.102:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

es schaltet noch nicht.

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #184 am: 06 Dezember 2017, 12:45:15 »
Hallo RKronenberg,

das muß natürlich $c_AUS heißen. (sorry)

Kannst du auch die Definition in der fhem.cfg posten. Vielleicht wird nicht A1 übergeben?

Zum Test könntest du auch die beiden Code für on und off direkt in die 99_revteleUtils.pm einsetzen.

also so:
use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;
$main::NextUpdate = ();

sub revtele {
 my $SendData="";
 my $c_ip = "Deine IP des Gateway";
 my $c_port = "49880";
 my $c_A = "0";
 my $c_G = "0";
 my $c_repeat = "10";
 my $c_pause = "5600";
 my $c_tune = "350";
 my $c_baud = "25";
 my $c_speed = "16";
 my $c_master = "$_[0]";
 my $c_slave = "$_[1]";
 my $c_bitLow="1";
 my $c_bitHgh="3";
 my $c_tx433ver="1";
 
 my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";
 #my $c_seqHgh="3,1,3,1,";
 
 my $c_seqLow="$c_bitLow,$c_bitHgh,$c_bitLow,$c_bitHgh,";
 #my $c_seqLow="1,3,1,3,";
 
 my $c_seqF1="$c_bitLow,$c_bitHgh,$c_bitHgh,$c_bitLow,";
 #my $c_seqF1="1,3,3,1,";
 
 
 my $c_AN = "$c_seqF1$c_seqF1";
 #my $c_AN = "1,3,3,1,1,3,3,1,";
 
 
 my $c_AUS = "$c_seqLow$c_seqLow";
 #my $c_AUS = "1,3,1,3,1,3,1,3,";
 
 my $c_add="$c_seqLow$c_seqF1$c_seqF1";
 #my $c_add="1,3,1,3,1,3,3,1,1,3,3,1,";
 
 
 $c_bits[A]="$c_seqHgh$c_seqF1$c_seqF1$c_seqF1";
 #$c_bits[A]="3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,";
 
 $c_bits[B]="$c_seqF1$c_seqHgh$c_seqF1$c_seqF1";
 $c_bits[C]="$c_seqF1$c_seqF1$c_seqHgh$c_seqF1";
 $c_bits[D]="$c_seqF1$c_seqF1$c_seqF1$c_seqHgh";

 $c_bits[1]="$c_seqHgh$c_seqF1$c_seqF1";
 #$c_bits[1]="3,1,3,1,1,3,3,1,1,3,3,1,";
 
 $c_bits[2]="$c_seqF1$c_seqHgh$c_seqF1";
 $c_bits[3]="$c_seqF1$c_seqF1$c_seqHgh";
 
 
 my ($state) = "$_[2]";
 if ($state eq "on")
 {
  #$SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AN$c_tx433ver,$c_speed";
  $SendData = "TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,16";
 }
 else
 {
  #$SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AUS$c_tx433ver,$c_speed";
  $SendData = "TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,16";
 }


my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>"$c_ip:$c_port",Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

das ganze funktioniert dann aber nur mit A1.

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #185 am: 06 Dezember 2017, 13:07:39 »
Nach Korrektur sieht mein Notify für den Schalter so aus:

define Schalter_8_ntfy notify Schalter_8:.* {\
    my $master = "A";;\
    my $slave = "1";;\
    my $v=Value("Schalter_8");;\
    if ($v eq "on") {revtele("$master","$slave","on")};;\
    if ($v eq "off") {revtele("$master","$slave","off")};;\
    }
attr Schalter_8_ntfy room 99_System

meine 99_revteleUtils wie aus dem letzten Post.

sollte alles so korrekt sein. Ich füge jetzt aber mal deine direkte übergabe so ein, und sehe was dann passiert.

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #186 am: 06 Dezember 2017, 13:17:25 »
Wenn ich die beiden $sendData fest übergebe, schalten die Dosen.

#$SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AN$c_tx433ver,$c_speed";
  $SendData = "TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,16";
 }
 else
 {
  #$SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AUS$c_tx433ver,$c_speed";
  $SendData = "TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,16";
 }

Das funktioniert. Irgendwo fehlt ein Komma oder was auch immer...

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #187 am: 06 Dezember 2017, 13:18:29 »
Oder es wird nicht A1 übergeben.

versuche mal das:

use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;
$main::NextUpdate = ();

sub revtele {
 my $SendData="";
 my $c_ip = "Deine IP des Gateway";
 my $c_port = "49880";
 my $c_A = "0";
 my $c_G = "0";
 my $c_repeat = "10";
 my $c_pause = "5600";
 my $c_tune = "350";
 my $c_baud = "25";
 my $c_speed = "16";

 #my $c_master = "$_[0]";
 my $c_master = "A";
 
 #my $c_slave = "$_[1]";
 my $c_slave = "1";

 my $c_bitLow="1";
 my $c_bitHgh="3";
 my $c_tx433ver="1";
 
 my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";
 #my $c_seqHgh="3,1,3,1,";
 
 my $c_seqLow="$c_bitLow,$c_bitHgh,$c_bitLow,$c_bitHgh,";
 #my $c_seqLow="1,3,1,3,";
 
 my $c_seqF1="$c_bitLow,$c_bitHgh,$c_bitHgh,$c_bitLow,";
 #my $c_seqF1="1,3,3,1,";
 
 
 my $c_AN = "$c_seqF1$c_seqF1";
 #my $c_AN = "1,3,3,1,1,3,3,1,";
 
 
 my $c_AUS = "$c_seqLow$c_seqLow";
 #my $c_AUS = "1,3,1,3,1,3,1,3,";
 
 my $c_add="$c_seqLow$c_seqF1$c_seqF1";
 #my $c_add="1,3,1,3,1,3,3,1,1,3,3,1,";
 
 
 $c_bits[A]="$c_seqHgh$c_seqF1$c_seqF1$c_seqF1";
 #$c_bits[A]="3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,";
 
 $c_bits[B]="$c_seqF1$c_seqHgh$c_seqF1$c_seqF1";
 $c_bits[C]="$c_seqF1$c_seqF1$c_seqHgh$c_seqF1";
 $c_bits[D]="$c_seqF1$c_seqF1$c_seqF1$c_seqHgh";

 $c_bits[1]="$c_seqHgh$c_seqF1$c_seqF1";
 #$c_bits[1]="3,1,3,1,1,3,3,1,1,3,3,1,";
 
 $c_bits[2]="$c_seqF1$c_seqHgh$c_seqF1";
 $c_bits[3]="$c_seqF1$c_seqF1$c_seqHgh";
 
 
 my ($state) = "$_[2]";
 if ($state eq "on")
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AN$c_tx433ver,$c_speed";
  #$SendData = "TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,16";
 }
 else
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AUS$c_tx433ver,$c_speed";
  #$SendData = "TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,16";
 }


my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>"$c_ip:$c_port",Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

Gruß rippi

PS: Es wird  A1 übergeben , aber im folgenden D1 verwendet; irgendwo ist noch ein Fehler
« Letzte Änderung: 06 Dezember 2017, 14:23:07 von rippi46 »
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #188 am: 06 Dezember 2017, 14:52:00 »
hier  eine hoffentlich funktioniernde 99_revtelUtils.pm:

use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;
$main::NextUpdate = ();

sub revtele ($$$){
 my ($hash) = @_;
 my $SendData="";
 my $c_ip = "Deine IP des Gateway";
 my $c_port = "49880";
 my $c_A = "0";
 my $c_G = "0";
 my $c_repeat = "10";
 my $c_pause = "5600";
 my $c_tune = "350";
 my $c_baud = "25";
 my $c_speed = "16";
 my $c_master = "$_[0]";
 print " Wert von c_master = $_[0] \n";

 my $c_slave = "$_[1]";
 print " Wert von c_slave = $_[1] \n";

 my $c_bitLow="1";
 my $c_bitHgh="3";
 my $c_tx433ver="1";
 
 my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";
 my $c_seqLow="$c_bitLow,$c_bitHgh,$c_bitLow,$c_bitHgh,";
 my $c_seqF1="$c_bitLow,$c_bitHgh,$c_bitHgh,$c_bitLow,";
 
 
 my $c_AN = "$c_seqF1$c_seqF1";
 my $c_AUS = "$c_seqLow$c_seqLow";
 my $c_add = "$c_seqLow$c_seqF1$c_seqF1";

 
if ($c_master eq "A"){
 $c_bits[A]="$c_seqHgh$c_seqF1$c_seqF1$c_seqF1";
 print "Wert von Master: $c_bits[A]\n";}
elsif ($c_master eq "B"){
 $c_bits[B]="$c_seqF1$c_seqHgh$c_seqF1$c_seqF1";
 print "Wert von Master: $c_bits[B]\n";}
elsif ($c_master eq "C"){
 $c_bits[C]="$c_seqF1$c_seqF1$c_seqHgh$c_seqF1";
 print "Wert von Master: $c_bits[C]\n";}
elsif ($c_master eq "D"){
 $c_bits[D]="$c_seqF1$c_seqF1$c_seqF1$c_seqHgh";
 print "Wert von Master: $c_bits[D]\n";}

if ($c_slave eq "1"){
 $c_bits[1]="$c_seqHgh$c_seqF1$c_seqF1";}
elsif ($c_slave eq "2"){
 $c_bits[2]="$c_seqF1$c_seqHgh$c_seqF1";}
elsif ($c_slave eq "3"){
 $c_bits[3]="$c_seqF1$c_seqF1$c_seqHgh";}

 print "Wert von Master: $c_bits[$c_master]\n";
 print "Wert von Slave: $c_bits[$c_slave]\n";
 
 
 my ($state) = "$_[2]";
 print "Wert von state = $_[2] ";

 if ($state eq "on")
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AN$c_tx433ver,$c_speed";
  print "Das ist der Wert SendData = $SendData \n";
 }
 else
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AUS$c_tx433ver,$c_speed";
 print "Das ist der Wert SendData = $SendData \n";
 }


my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>"$c_ip:$c_port",Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

die print-Befehle kannst du entfernen, wenn alle funktioniert.

Gruß rippi
« Letzte Änderung: 06 Dezember 2017, 15:09:25 von rippi46 »
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #189 am: 06 Dezember 2017, 15:08:17 »
Jetzt wird das Gateway wieder nicht angesprochen, keine Sendeaktivität, im Logfile:

Wert von c_master = A
 Wert von c_slave = 1
Wert von Master: 3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,
Wert von Master: 3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,
Wert von Slave: 3,1,3,1,1,3,3,1,1,3,3,1,
Wert von state = on Das ist der Wert SendData = TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,16
2017.12.06 15:05:41 3: Schalter_8_ntfy return value: ERROR in Socket Creation : Das Argument ist ungültig

 Wert von c_master = A
 Wert von c_slave = 1
Wert von Master: 3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,
Wert von Master: 3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,
Wert von Slave: 3,1,3,1,1,3,3,1,1,3,3,1,
Wert von state = off Das ist der Wert SendData = TXP:0,0,10,5600,350,25,3,1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,1,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,16
2017.12.06 15:06:04 3: Schalter_8_ntfy return value: ERROR in Socket Creation : Das Argument ist ungültig


sch.....schade

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #190 am: 06 Dezember 2017, 15:10:19 »
Habs geändert!!!!

Waren die falschen Anführungstriche!!!!!!

Anstatt '$c_ip:$c_port' muss es  "$c_ip:$c_port" sein

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #191 am: 06 Dezember 2017, 15:23:07 »
Hallo Rippi,

You made it. !!!

es funktioniert. Super. Und wieder etwas dazu gelernt.

DANKE !!!

Gruß Ralph

P.S. werde meine funktionierende 99_revteleUtils.pm und die Schalterdefinition noch posten, wenn jemand das gleiche sucht.

Offline rippi46

  • Full Member
  • ***
  • Beiträge: 290
Antw:Connair über FHEM steuern
« Antwort #192 am: 06 Dezember 2017, 15:31:04 »
Hallo RKronenberg,

schön, dass es jetzt funktioniert. Das war jetzt eine schwere Geburt!!!
Manchmal sind es echt Kleinigkeiten, warum es nicht funktioniert, oder man baut wieder alte Fehler ein.

Zudem sind meine Perl-Kenntnisse auch nicht die Besten.

Aber ich denke jeder hat etwas dazu gelernt.

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, fhemduino, Signalduino(wifi)
MySensor-GW mit diversen Sensoren, RGBWW

Offline RKronenberg

  • New Member
  • *
  • Beiträge: 25
Antw:Connair über FHEM steuern
« Antwort #193 am: 06 Dezember 2017, 23:30:30 »
Hallo,

hier jetzt für alle die noch ein REV Telecontrol Set rumliegen haben und das auch gerne mit dem Brematic GWY433 schalten möchten.
Die Funksteckdosen sind hier https://wiki.fhem.de/wiki/Intertechno_Code_Berechnung#REV_Telecontrol im FHEM WIKI beschrieben. Die Geräte haben auch die Bezeichnung 08342 auf der Rückseite und einen Drehschalter mit den Positionen A1 - D3.

Folgende Datei in das entsprechende FHEM Verzeichnis speichern:

99_revteleUtils.pm

use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;
$main::NextUpdate = ();

sub revtele ($$$){
 my ($hash) = @_;
 my $SendData="";
 my $c_ip = "Deine Gateway IP Adresse";
 my $c_port = "49880";
 my $c_A = "0";
 my $c_G = "0";
 my $c_repeat = "10";
 my $c_pause = "5600";
 my $c_tune = "350";
 my $c_baud = "25";
 my $c_speed = "16";
 my $c_master = "$_[0]";
 my $c_slave = "$_[1]";
 my $c_bitLow="1";
 my $c_bitHgh="3";
 my $c_tx433ver="1";
 
 my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";
 my $c_seqLow="$c_bitLow,$c_bitHgh,$c_bitLow,$c_bitHgh,";
 my $c_seqF1="$c_bitLow,$c_bitHgh,$c_bitHgh,$c_bitLow,";
 
 
 my $c_AN = "$c_seqF1$c_seqF1";
 my $c_AUS = "$c_seqLow$c_seqLow";
 my $c_add = "$c_seqLow$c_seqF1$c_seqF1";

 
if ($c_master eq "A"){
 $c_bits[A]="$c_seqHgh$c_seqF1$c_seqF1$c_seqF1";}
elsif ($c_master eq "B"){
 $c_bits[B]="$c_seqF1$c_seqHgh$c_seqF1$c_seqF1";}
elsif ($c_master eq "C"){
 $c_bits[C]="$c_seqF1$c_seqF1$c_seqHgh$c_seqF1";}
elsif ($c_master eq "D"){
 $c_bits[D]="$c_seqF1$c_seqF1$c_seqF1$c_seqHgh";}

if ($c_slave eq "1"){
 $c_bits[1]="$c_seqHgh$c_seqF1$c_seqF1";}
elsif ($c_slave eq "2"){
 $c_bits[2]="$c_seqF1$c_seqHgh$c_seqF1";}
elsif ($c_slave eq "3"){
 $c_bits[3]="$c_seqF1$c_seqF1$c_seqHgh";}

 my ($state) = "$_[2]";

 if ($state eq "on")
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AN$c_tx433ver,$c_speed";
  }
 else
 {
  $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bits[$c_master]$c_bits[$c_slave]$c_add$c_AUS$c_tx433ver,$c_speed";
 }


my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>"$c_ip:$c_port",Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

und dann die Definition für einen Schalter:


define Schalter_8_ntfy notify Schalter_8:.* {\
    my $master = "A";;\
    my $slave = "1";;\
    my $v=Value("Schalter_8");;\
    if ($v eq "on") {revtele("$master","$slave","on")};;\
    if ($v eq "off") {revtele("$master","$slave","off")};;\
    }
attr Schalter_8_ntfy room 99_System
define Schalter_8 dummy
attr Schalter_8 alias Licht Schlafzimmer
attr Schalter_8 eventMap BI:on B0:off
attr Schalter_8 genericDeviceType switch
attr Schalter_8 group Licht
attr Schalter_8 room 22_Schlafzimmer
attr Schalter_8 setList state:on, off

Vielen Dank an Rippi46 der hier 2 Tage lang mit mir unermüdlich das Ganze durchprobiert hat. So stell ich mir Hilfe in einem Forum vor.

Gruß Ralph

immer noch unterwegs mit einem Raspi3 und FHEM 5.7. - Never Change a running System.  :D :D

 

decade-submarginal