FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: rippi46 am 06 November 2013, 20:04:17

Titel: Connair über FHEM steuern
Beitrag von: rippi46 am 06 November 2013, 20:04:17
Hallo zusammen,

bin über Simple Solutions an den Connair-Gateway gekommen, und habe meine Brennenstuhl, Elro und Intertechno Funkschalter geschalten.
Nachdem ich dann später auch noch die Heizköperthermostate von MAX! über den MAXLAN-Gateway steuerte bin ich auf die geniale Software FHEM gestoßen.
Leider gab es da keine Möglichkeit den Connair zu integrieren, deshalb habe ich versucht ( und eigentlich ist es mir auch gelungen) den Connair über FHEM anzusteuern.
Falls jemand Interesse hat kann er den Code bei sich integrieren.

Eintragung in der  fhem.cfg


define Umwaelzpumpe dummy
attr Umwaelzpumpe alias Umwälzpumpe Garage
attr Umwaelzpumpe eventMap BI:on B0:off
attr Umwaelzpumpe room Garage
attr Umwaelzpumpe setList state:on,off
define Umwaelzpumpe_ntfy notify Umwaelzpumpe:.* {\
    my $master = "01010";;\
    my $slave = "11101";;\
    my $v=Value("Umwaelzpumpe");;\
    if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
    if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
    }



Eintragung in der 99_myUtils.pm
die IP des Connair muß noch eingetragen werden


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

sub connair {
my $c_ip = "192.168.x.x";
my $c_port = "49880";
my $c_speed = "16";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "15";
my $c_pause = "5600";
my $c_tune = "350";
my $c_baud = "25";
my $c_speed = "16";
my $c_AN = "1,3,1,3,3";
my $c_AUS = "3,1,1,3,1";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="1";
my $c_bitHgh="3";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[0]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[1]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[3]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[4]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[5]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[6]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[7]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[8]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[9]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[10]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[11]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[12]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[13]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[14]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[15]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[16]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[17]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[18]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[19]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[20]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[21]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[22]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[23]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[24]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[25]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[26]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[27]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[28]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[29]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[30]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[31]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";


 
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AN,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AUS,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}

sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); }





Leider sind mein Perlkenntnisse noch sehr mager und man kann das auch sicher noch schöner programmieren,aber es funktioniert.
Im Moment funktioniert es nur mit Brennenstuhl und Elro für Intertechno müssen die Parameter und der Sendestring angepasst werden.


Viel Spass damit.
Titel: Antw:Connair über FHEM steuern
Beitrag von: mm am 14 Dezember 2013, 23:47:10
hi,

vielen dank, leider geht das bei mir nicht.

beim speichern bekomme ich:

2013.12.14 23:35:08 1: reload: Error:Modul 99_Utils deactivated:
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 276.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 277.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 278.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 279.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 280.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 281.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 282.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 283.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 284.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 285.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 286.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 287.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 288.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 289.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 290.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 291.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 292.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 293.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 294.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 295.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 296.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 297.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 298.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 299.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 300.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 301.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 302.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 303.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 304.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 305.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 306.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 307.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 314.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 314.
Global symbol "$pid" requires explicit package name at ./FHEM/99_Utils.pm line 314.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 318.
Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 318.
Global symbol "$pid" requires explicit package name at ./FHEM/99_Utils.pm line 318.

Danke
Titel: Antw:Connair über FHEM steuern
Beitrag von: Joachim am 15 Dezember 2013, 00:06:47
Google mal:
requires explicit package name at
werden diverse Lösungen vorgeschlagen.

Gruß Joachim
Titel: Antw:Connair über FHEM steuern
Beitrag von: mm am 15 Dezember 2013, 00:16:27
habe ich schon, dachte aber der code geht so.
hast Du strict ausgeklammert?
Titel: Antw:Connair über FHEM steuern
Beitrag von: Joachim am 15 Dezember 2013, 01:49:41
Ich habe kein connair
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 15 Dezember 2013, 14:34:29
Hallo mm,

wenn ich " use strict; " in meinen code einfüge, bekomme ich beim speicher die gleichen Fehlermeldungen.
Lasse es einfach mal weg, vielleicht funktioniert es dann.

Gruß

rippi46
Titel: Antw:Connair über FHEM steuern
Beitrag von: UliM am 15 Dezember 2013, 14:43:53
Hi,

requires explicit package name
ist der Hinweis von perl, dass eine Variable verwendet wird, die zuvor nicht deklariert wurde.

Hast Du mal ein
my @c_bits;
eingefügt?

=8-)
Titel: Antw:Connair über FHEM steuern
Beitrag von: dirkeden am 18 Dezember 2013, 22:52:41
Hab auch noch Code zu dem Thema Connair:

define n_Leuchtstofflampe_actor notify Leuchtstofflampe_actor:* {connair("11100","00100","%")}



sub connair($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.9.102:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


Titel: Antw:Connair über FHEM steuern
Beitrag von: Ollo65 am 26 Januar 2014, 20:22:53
moin,

ich habe mich jetzt auch mal an fhem gewagt und das Beispiel von rippi46 benutzt. Hat auch funktioniert.
Ich bekomme es nur leider nicht selbst hin, eine neue Lampe einzurichten.
Kann mir von euch vielleicht jemand erklären, wie ich z.B.
die Papierlampe im Kinderzimmer mit Elro (00001 00100) eingeben muss?
Was muß in die Befehlzeile von fhem rein geschrieben werden und was direkt 99_Utils.pm geschrieben werden oder in die fhem.cfg.

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte

Grüße aus dem Norden
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 27 Januar 2014, 10:46:51
Hallo Ollo65,

wenn du den code von mir verwendest, muss der nachfolgende code in die fhem.cfg
In der Befehlszeile kannst du einfach "set Papierlampe on" bzw "set Papierlampe off" eingeben
(ohne Anführungsstriche).


define Papierlampe dummy
attr Papierlampe alias Papierlampe Kinderzimmer
attr Papierlampe eventMap BI:on B0:off
attr Papierlampe room Kinderzimmer
attr Papierlampe setList state:on,off
define Papierlampe_ntfy notify Papierlampe:.* {\
    my $master = "00001";;\
    my $slave = "00100";;\
    my $v=Value("Papierlampe");;\
    if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
    if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
    }


Oder du nimmst den code von dirkeden.


define Papierlampe dummy
attr Papierlampe alias Papierlampe Kinderzimmer
attr Papierlampe eventMap BI:on B0:off
attr Papierlampe room Kinderzimmer
attr Papierlampe setList state:on,off
define Papierlampe_ntfy notify Papierlampe:.* {\
    my $master = "00001";;\
    my $slave = "00100";;\
    my $v=Value("Papierlampe");;\
    if ($v eq "on") {connair("$master","$slave","on")};;\
    if ($v eq "off") {connair("$master","$slave","off")};;\
    }


Du musst dann aber die sub connair von dirkeden verwenden und in 99_myUtils kopieren.
Habe ich aber selber noch nicht getestet.(P.S.: funktioniert auch, ist sogar etwas eleganter)
Vielleicht kann ja dirkeden was dazu sagen.
Ansonsten musst du nur die Anweisungen im ersten Post befolgen.

Gruß rippi46

Titel: Antw:Connair über FHEM steuern
Beitrag von: Ollo65 am 29 Januar 2014, 17:04:17
hi rippi46,

hat wunderbar funktioniert.
ich danke Dir für Deine Hilfe.
Hat es von euch schon jemand geschafft einen timer zu integrieren.
Habe es mit "define onAt at 20:45 set Papierlampe on-for-timer 600" hat leider nicht funktioniert.

Gruß Ollo65
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 30 Januar 2014, 19:02:24
Hallo Ollo65

define Timer_LautsprecherGaeste_off at *00:00:20 { fhem("set LautsprecherGaeste off")}
attr Timer_LautsprecherGaeste_off room Gästeklo,Timer


oder in Abhängigkeit mit Sonnenauf/untergang.

define Timer_Christbaum_on at *{sunset(-600)} { fhem("set ChristbaumHof on")}
attr Timer_Christbaum_on room Hof,Timer
define Timer_Christbaum_off at *{sunrise(+900)} { fhem("set ChristbaumHof off")}
attr Timer_Christbaum_off room Hof,Timer


so hat es bei mir funktioniert

Gruß

rippi46
Titel: Antw:Connair über FHEM steuern
Beitrag von: Ollo65 am 30 Januar 2014, 21:28:45
Hallo rippi46,

Genial.......ich Danke Dir für Deine Hilfe.......funktioniert super.
Jetzt kann ich weiter basteln :)

Gruß Ollo65
Titel: Antw:Connair über FHEM steuern
Beitrag von: ms81 am 27 Februar 2014, 11:54:51
Hallo,

kann ich damit auch direkt fertige TXP Codes senden bzw. gibt es eine andere Möglichkeit mit FHEM TXP Codes an den Gateway zu senden?

Ich möchte damit Rolladen Funkschalter von rohrmotor24 schalten, die TXP Codes habe ich durch anlernen in der Steckerchecker app und auslesen der UDP Pakete erhalten.

Es sind jeweils 3 TXP Codes: Auf,Ab und Stop.

In der Console kann ich z.b. mittels

echo "TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,8,4,4,8,8,4,4,8,8,120,0;" | nc -u 192.168.178.20 49880


einen Code absenden und der wird auch ausgeführt.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 27 Februar 2014, 13:19:51
Hallo ms81

das hier in die fhem.cfg


define RolladenW dummy
attr RolladenW alias Rolladen Wohnzimmer
attr RolladenW eventMap BI:auf B0:ab
attr RolladenW room Wohnzimmer
attr RolladenW setList state:auf,ab
define RolladenW_ntfy notify RolladenW:.* {\
    my $v=Value("RolladenW");;\
    if ($v eq "auf") {connair("auf")};;\
    if ($v eq "ab") {connair("ab")};;\
    }


und das in die 99_myUtils.pm


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

sub connair {

   
my ($state) = "$_[0]";
if ($state eq "auf")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,8,4,4,8,8,4,4,8,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \Befehl für on oder off, da ich nicht weiss was der obere Befehl macht\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}



So könnte es funktionieren.
Keine Garantie!!
kannst dich  ja mal melden wenn es funktioniert hat

Gruß ripp46

Titel: Antw:Connair über FHEM steuern
Beitrag von: ms81 am 28 Februar 2014, 08:31:54
Das geht einwandfrei!

Vielen Dank rippi46!

Wie könnte ich den "Stop" Befehl noch integrieren? Weil so kann ich die Rollläden nur komplett hoch und runterfahren.

EDIT:
Habe es selbst hinbekommen:

In 99_MyUtils.pm sieht es nun so aus:
sub connair_R_WZ {

   
my ($state) = "$_[0]";
if ($state eq "auf")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,4,8,4,8,8,4,4,8,4,8,4,8,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
if ($state eq "ab")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,4,8,8,4,8,4,4,8,4,8,8,4,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}

if ($state eq "stop")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,8,4,4,8,8,4,4,8,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}

}


Und in der fhem.cfg:
#Rolladen Wohnzimmer
define Roll_WZ dummy
attr Roll_WZ alias Rollladen Wohnzimmer
attr Roll_WZ eventMap BI:auf B0:ab BS:stop
attr Roll_WZ room Gartenstr_2
attr Roll_WZ webCmd auf:ab:stop
define Roll_WZ_ntfy notify Roll_WZ:.* {\
    my $v=Value("Roll_WZ");;\
    if ($v eq "auf") {connair_R_WZ("auf")};;\
    if ($v eq "ab") {connair_R_WZ("ab")};;\
    if ($v eq "stop") {connair_R_WZ("stop")};;\
    }


Vielen Dank nochmals!
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 28 Februar 2014, 09:47:32
Hallo ms81

das hier in die fhem.cfg


define RolladenW dummy
attr RolladenW alias Rolladen Wohnzimmer
attr RolladenW eventMap on:auf off:ab stop:stop
attr RolladenW room Wohnzimmer
attr RolladenW setList state:auf,ab,stop
define RolladenW_ntfy notify RolladenW:.* {\
    my $v=Value("RolladenW");;\
    if ($v eq "auf") {connair("auf")};;\
    if ($v eq "ab") {connair("ab")};;\
    if ($v eq "ab") {connair("stop")};;\
    }



und das in die 99_myUtils.pm


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

sub connair {

   
my ($state) = "$_[0]";
if ($state eq "auf")
{
  system("echo \" Befehl für auf  \" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
    if ($state eq "stop")
    {
     system("echo \" Befehl für stop \" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
    }
    else
    {
    system("echo \" Befehl für ab \" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
    }
}
}




So würde ich es versuchen.

Gruß rippi46
Titel: Antw:Connair über FHEM steuern
Beitrag von: ms81 am 28 Februar 2014, 09:52:09
Danke

Hab es eben selbst hinbekommen.

Habe den Beitrag oben editiert. Ist etwas anders und ich weiß nicht ob man das auch so korrekt ist, aber es funktioniert jedenfalls.

Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 30 September 2014, 08:08:41
Hallo zusammen, ich hoffe der Beitrag ist noch nicht zu alt und es liest noch jemand mit,

Ich habe fast die gleiche Config wie rippi46, bzw. die gleichen Geräte. Habe nun versucht meine erste Elro Steckdose in FHEM einzubinden. Klappt aber nicht. Meine Connair macht leider keinen Mucks (nur über die Stecker Checker App, bzw. über meine L3X Mobile Webapp). Ich würde aber gerne beide Systeme in FHEM "überführen".
Ich hab im Moment keine Idee wie ich weiterkomme (und ich hab schon viel gelesen...).
FHEM zeigt mir das neue Gerät an, jedoch geht kein Signal an die Connair. Die IP wurde entsprechend geändert. Habt ihr noch ne Idee dazu?

Gruß Carsten
Titel: Antw:Connair über FHEM steuern
Beitrag von: scooty am 30 September 2014, 08:37:17
Hallo Carsten,

erst einmal die einfachen Sachen:

- Reload der 99_myUtils.pm (oder Neustart von fhem) durchgeführt?
- Gibt es Fehlermeldungen im fhem-Log?
- $master/$slave Angaben im DEF des fhem-Devices richtig?

Andreas
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 30 September 2014, 11:36:14
Hi,
Mist, jetzt hab ich mir glaube ich erstmal das Image geschrottet. FHEM startet nicht mehr. Muß jetzt leider zur Arbeit. Jedoch hatte ich als Fehler vorher die "requires explicit package" Meldung. Die hatte ich dann mit dem ausklammern von strict wegbekommen.
Ich würde da aber nochmal ein Logfile nachschieben, wenns wieder läuft.
Tja und die Master Slave Geschichte hab ich mehrfach geprüft. Ich glaube die Angaben sind richtig.
Wie gesagt, ich melde mich
Danke trotzdem schonmal
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 30 September 2014, 14:42:06
So, da ist er wieder...

Ich hab's wieder am laufen. Also meine Max Heizungssteuerung wird problemlos eingebunden.
Nur die Connair zickt rum, bzw. wird nicht angesprochen.

Fehlermeldung beim Abspeichern von 99_myUtils.pm


Undefined subroutine &main::myUtils_Initialize called at fhem.pl line 1777.

Das ist die Datei, bzw. der Inhalt:
Ich hoffe es ist ok, wenn man das hier so postet.


##############################################
# $Id: 99_Utils.pm 3595 2013-08-05 05:38:48Z tobiasfaust $
package main;

#use strict;
use warnings;
use POSIX;


sub
Utils_Initialize($$)
{
  my ($hash) = @_;
}

sub
time_str2num($)
{
  my ($str) = @_;
  my @a;
  if($str ne "") {
    @a = split("[- :]", $str);
    return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);
  } else {
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    return mktime($sec, $min, $hour, $mday, $mon, $year, 0, 0, -1);
  }
}

sub
min($@)
{
  my ($min, @vars) = @_;
  for (@vars) {
    $min = $_ if $_ lt $min;
  }           
  return $min;
}

sub
max($@)
{
  my ($max, @vars) = @_;
  for (@vars) {
    $max = $_ if $_ gt $max;
  }           
  return $max;
}

sub
minNum($@)
{             
  my ($min, @vars) = @_;
  for (@vars) {
    $min = $_ if $_ < $min;
  }           
  return $min;
}

sub
maxNum($@)
{             
  my ($max, @vars) = @_;
  for (@vars) {
    $max = $_ if $_ > $max;
  }           
  return $max;
}


sub
abstime2rel($)
{
  my ($h,$m,$s) = split(":", shift);
  $m = 0 if(!$m);
  $s = 0 if(!$s);
  my $t1 = 3600*$h+60*$m+$s;

  my @now = localtime;
  my $t2 = 3600*$now[2]+60*$now[1]+$now[0];
  my $diff = $t1-$t2;
  $diff += 86400 if($diff <= 0);

  return sprintf("%02d:%02d:%02d", $diff/3600, ($diff/60)%60, $diff%60);
}

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

sub connair {
my $c_ip = "192.168.1.55";
my $c_port = "49880";
my $c_speed = "16";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "15";
my $c_pause = "5600";
my $c_tune = "350";
my $c_baud = "25";
my $c_speed = "16";
my $c_AN = "1,3,1,3,3";
my $c_AUS = "3,1,1,3,1";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="1";
my $c_bitHgh="3";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[0]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[1]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[3]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[4]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[5]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[6]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[7]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[8]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[9]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[10]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[11]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[12]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[13]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[14]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[15]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[16]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[17]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[18]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[19]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[20]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[21]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[22]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[23]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[24]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[25]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[26]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[27]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[28]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[29]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[30]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[31]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";


 
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AN,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AUS,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}

sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); }











######## trim #####################################################
# What  : cuts blankspaces from the beginning and end of a string
# Call  : { trim(" Hello ") }
# Source: http://www.somacon.com/p114.php ,
#         http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernen
sub trim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   $string =~ s/\s+$//;
   return $string;
}

######## ltrim ####################################################
# What  : cuts blankspaces from the beginning of a string
# Call  : { ltrim(" Hello") }
# Source: http://www.somacon.com/p114.php ,
#         http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernensub ltrim($)
sub ltrim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   return $string;
}

######## rtrim ####################################################
# What  : cuts blankspaces from the end of a string
# Call  : { rtrim("Hello ") }
# Source: http://www.somacon.com/p114.php ,
#         http://www.fhemwiki.de/wiki/TRIM-Funktion-Anfangs/EndLeerzeichen_aus_Strings_entfernensub ltrim($)
sub rtrim($)
{
   my $string = shift;
   $string =~ s/\s+$//;
   return $string;
}

######## UntoggleDirect ###########################################
# What  : For devices paired directly, converts state 'toggle' into 'on' or 'off'
# Call  : { UntoggleDirect("myDevice") }
#         define untoggle_myDevice notify myDevice { UntoggleDirect("myDevice") }
# Source: http://www.fhemwiki.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
sub UntoggleDirect($)
{
my ($obj) = shift;
Log 4, "UntoggleDirect($obj)";
if (Value($obj) eq "toggle"){
   if (OldValue($obj) eq "off") {
     {fhem ("setstate ".$obj." on")}
   }
   else {
     {fhem ("setstate ".$obj." off")}
   }
}
else {
   {fhem "setstate ".$obj." ".Value($obj)}

}


######## UntoggleIndirect #########################################
# What  : For devices paired indirectly, switches the target device 'on' or 'off' also when a 'toggle' was sent from the source device
# Call  : { UntoggleIndirect("mySensorDevice","myActorDevice","50%") }
#         define untoggle_mySensorDevice_myActorDevice notify mySensorDevice { UntoggleIndirect("mySensorDevice","myActorDevice","50%%") }
# Source: http://www.fhemwiki.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
sub UntoggleIndirect($$$)
{
  my ($sender, $actor, $dimvalue) = @_;
  Log 4, "UntoggleIndirect($sender, $actor, $dimvalue)";
  if (Value($sender) eq "toggle")
  {
    if (Value($actor) eq "off") {fhem ("set ".$actor." on")}
    else {fhem ("set ".$actor." off")}
  }
  ## workaround for dimming currently not working with indirect pairing
  ## (http://culfw.de/commandref.html: "TODO/Known BUGS - FS20 dim commands should not repeat.")
  elsif (Value($sender) eq "dimup") {fhem ("set ".$actor." dim100%")}
  elsif (Value($sender) eq "dimdown") {fhem ("set ".$actor." ".$dimvalue)}
  elsif (Value($sender) eq "dimupdown")
  {
    if (Value($actor) eq $dimvalue) {fhem ("set ".$actor." dim100%")}
       ## Heuristic above doesn't work if lamp was dimmed, then switched off, then switched on, because state is "on", but the lamp is actually dimmed.
    else {fhem ("set ".$actor." ".$dimvalue)}
    sleep 1;
  }
  ## end of workaround
  else {fhem ("set ".$actor." ".Value($sender))}

  return;
}


1;

=pod
=begin html

<a name="Utils"></a>
<h3>Utils</h3>
<ul>
   <br/>
   This is a collection of functions that can be used module-independant in all your own development<br/>
   </br>
   <pre>
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# IMPORTANT: do not insert your own functions inside
# the file 99_Utils.pm!
#
# This file will be overwritten during an FHEM update and all
# your own inserts will be lost.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# To avoid this, we recommend following procedure:
#
# 1. Create your own file 99_myUtils.pm from the template below
# 2. Put this file inside the ./FHEM directory
# 3. Put your own functions into this new file
#
<br/>
<code>
# start-of-template
package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
   my ($hash) = @_;
}

# start with your own functions below this line


# behind your last function, we need the following
1;
# end-of-template
</code>
</pre>
</br>
   <b>Defined functions</b><br/><br/>
   <ul>
      <li><b>abstime2rel()</b><br>???</li><br/>
      <li><b>ltrim()</b><br>returns string without leading spaces</li><br/>
      <li><b>max()</b><br>returns the highest value from a given list (sorted alphanumeric)</li><br/>
      <li><b>maxNum()</b><br>returns the highest value from a given list (sorted numeric)</li><br/>
      <li><b>min()</b><br>returns the lowest value from a given list (sorted alphanumeric)</li><br/>
      <li><b>minNum()</b><br>returns the lowest value from a given list (sorted numeric)</li><br/>
      <li><b>rtrim()</b><br>returns string without trailing spaces</li><br/>
      <li><b>time_str2num()</b><br>???</li><br/>
      <li><b>trim()</b><br>returns string without leading and without trailing spaces</li><br/>
      <li><b>UntoggleDirect()</b><br>For devices paired directly, converts state 'toggle' into 'on' or 'off'</li><br/>
      <li><b>UntoggleIndirect()</b><br>For devices paired indirectly, switches the target device 'on' or 'off' <br/>
      also when a 'toggle' was sent from the source device</li><br/>
   </ul>
</ul>
=end html
=cut
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 30 September 2014, 15:29:20
Hallo CarstenF

ich würde mal nur diesen Code in die 99_myUtils.pm einfügen.
Du musst dann noch deine IP-Adresse des Connair eintragen.



sub elro ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.40:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}



Aufruf dann in der fhem.cfg


define Wohnzimmerplayer dummy
attr Wohnzimmerplayer alias Wohnzimmerplayer
attr Wohnzimmerplayer eventMap BI:on B0:off
attr Wohnzimmerplayer fm_type smarttogglebutton,lamp
attr Wohnzimmerplayer group Lautsprecher
attr Wohnzimmerplayer icon audio_volume_low
attr Wohnzimmerplayer room Wohnzimmer,Sound
attr Wohnzimmerplayer setList state:on,off
define Wohnzimmerplayer_ntfy notify Wohnzimmerplayer:.* {\
    my $master = "11111";;\
    my $slave = "10100";;\
    my $v=Value("Wohnzimmerplayer");;\
    if ($v eq "on") {elro("$master","$slave","on")};;\
    if ($v eq "off") {elro("$master","$slave","off")};;\
    }
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 30 September 2014, 15:40:11
Hallo rippi46,

Vielen Dank schon mal. Werde heute nach dem Spätdienst Deine Codeschnipsel mal ausprobieren.
Reicht es eigentlich aus, wenn ich die Fhem.cfg neu einlese? Oder macht es Sinn einen kompletten Neustart zu machen?

Gruß Carsten
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 30 September 2014, 15:43:09
einfach in der Befehlszeile "shutdown restart" eingeben

PS: der Übersicht wegen die Inhalte der PM-Dateien als code angeben



Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 30 September 2014, 21:20:56
Hallo rippi46,

Erstmal vielen Dank. Hat auf Anhieb funktioniert. Hatte die alten Einträge komplett gelöscht und Deine "Schnipsel" eingefügt. Nach den entsprechenden Codeänderungen und eintragen der IP, konnte ich die erste ELRO schalten. Jetzt werde ich mich mal ans umbenennen geben und dann nach und nach die Steckdosen einbinden. Ich habe auch noch ein paar Intertechnos. Da wird's dann bestimmt wieder spannend, aber ich bin da guter Dinge.
Auf jeden Fall beide Daumen hoch für die Hilfsbereitschaft!!

Gruß Carsten
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 30 September 2014, 22:08:32
Hallo CarstenF

so sieht mein code für die intertechno aus


sub intertech {
my $c_ip = "192.168.178.40";
my $c_port = "49880";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

$c_bits[1]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[3]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
   
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}



und in der fhem.cfg


define LampeSchlaf dummy
attr LampeSchlaf alias Schlafzimmerlampe
attr LampeSchlaf eventMap BI:on B0:off
attr LampeSchlaf fm_type state,offbutton,onbutton
attr LampeSchlaf group Lampen
attr LampeSchlaf icon li_wht_on
attr LampeSchlaf room Schlafzimmer,Lampen
attr LampeSchlaf setList state:on,off
define LampeSchlaf_ntfy notify LampeSchlaf:.* {\
    my $master = "A";;\
    my $slave = "1";;\
    my $v=Value("LampeSchlaf");;\
    if ($v eq "on") {intertech("on","$master","$slave")};;\
    if ($v eq "off") {intertech("off","$master","$slave")};;\
    }

Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 01 Oktober 2014, 12:36:48
Da werde ich im Nachtdienst mal schön die Dateien vollschreiben. Ist echt ein tolles System. Nochmals Danke für die Hilfe.
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 02 Oktober 2014, 06:30:23
Hallo nochmal,
Also die Elros funktionieren jetzt alle. Klasse. :) Aber die Intertechno wollen nicht. Hatte die Codes so übernommen und natürlich die IP und die Schaltcodes angepasst. Aber der Connair wird nicht angesprochen. Woran könnte das denn liegen. Gibt es da unterschiedliche Arten von Intertechno Steckdosen?
Ach ja, Logfile zeigt keinen Fehler an.
Gruß Carsten
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 02 Oktober 2014, 06:47:22
Hallo CarstenF,

das Einzigste woran ich mich noch erinnern kann war, dass ich die Intertechno in einen Lernmodus (pairen) versetzen musste.
Aber der Connair müsste auf jeden Fall so tun als wollte er die Intertechno schalten.
Soviel ich mich  noch erinnern kann, handelt normalerweise die Intertechno mit der Fernbedienung irgendein code aus.
Ich hatte sie einfach auf A1 eingestellt.
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 02 Oktober 2014, 12:48:16
Ich glaube das Problem ist, das die Connair gar nicht angesprochen wird. Normalerweise blinkt sie kurz blau, wenn ein Befehl rausgeht. Und das ist nicht der Fall. Ich schätze da liegt irgendwo der Knackpunkt. Ich google nochmal weiter. Wird schon...  :)
Update:
Also nur mal zum Verständnis. Die Connair funktioniert schon, die Elros werden ja angesteuert. Irgendwas im Code scheint nicht zu stimmen. Da mit dem pairen klappt so auch nicht rippi46. Ich habe es zwar mal probiert, aber die einfachen Teile mit Drehschalter haben keinen Lernmodus. Da gibts welche, das weiß ich. Ich habe nämlich noch eine Lampenfassung. Die kann man in einen Lernmodus versetzen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 02 Oktober 2014, 15:52:45
Hallo CartenF,

probiere doch mal folgende pm-Datei:

Neustart danach nicht vergessen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 03 Oktober 2014, 11:53:28
Hm, die Connair bleibt beim ansprechen der Intertechnos weiterhin stumm. Schade. Ein bisschen zum verzweifeln. Tendiere jetzt dahin mir so einen CUL zuzulegen in der Hoffnung, das sich das dann erledigt.
Aber bleibt schon seltsam.

Eine Hoffnung habe ich jetzt noch. Ich habe gesehen, das die Firmware der Connair veraltet ist. Jetzt muß ich aber erstmal nen Windows Rechner besorgen, um da ein Update zu machen. Dann teste ich neu und berichte. Allen einen schönen Feiertag.
Gruß C.
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 03 Oktober 2014, 17:03:25
 :'(
Tja, wird wohl nix mehr. habe jetzt auf der Connair die neueste FW aufgespielt. An der Problematik ändert sich nix. Die Elros schalten einwandfrei, die IT werden nicht angesteuert, bzw. die Connair reagiert gar nicht erst. Leider fehlt mir die Fähigkeit zu programmieren, bzw. Fehler dort zu erkennen. Werde aber noch nicht aufgeben.....
Trotzdem ein großes Lob an rippi46 für die Hilfe.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 03 Oktober 2014, 17:07:42
Hallo CarstenF,

Auf was für einer Hardware läuft dein FHEM?

probiere noch einmal diesen code aus:



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

sub intertech {
my $c_ip = "192.168.178.40";
my $c_port = "49880";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

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

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

$socket->close();

}
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 03 Oktober 2014, 17:24:43
Hi,

läuft auf einer Fritzbox 7390. Die ist aber ansonsten frei von anderen Dingen. Habe sie hinter meine andere FB gehangen, um eine reine Hausautomationsbox zu erstellen. Läuft ansonsten recht fluffig. Ich check mal den Code. Danke Dir.
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 03 Oktober 2014, 17:42:01
Hm, leider auch nix. Was nur komisch ist. Über meine L3x Web app http://www.l3x.de/connair/, kann ich die Connair problemlos ansteuern. Ich werde mich mal durch die Config Dateien wühlen und das mit Deinen FHEM Configs vergleichen. Vielleicht finde ich ja dort den Schlüssel, woran es liegt.
Ich geb noch nicht auf..... :)
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 03 Oktober 2014, 18:12:10
Hi,

bei mir läuft es auf einer Fritzbox 7490. Konnte mit dem alten code auch nur von einem Linux-PC steuern.
Habe den Code etwas angepasst. Leider funktioniert er nur nach einem shutdown restart für eine bestimmte Zeit.
Da muss ich noch etwas nacharbeiten.
Titel: Antw:Connair über FHEM steuern
Beitrag von: CarstenF am 05 Oktober 2014, 19:57:06
Tja, leider bin ich nicht weitergekommen. Habe mir jetzt noch nen CUL433 besorgt und damit funzt es. Schade, aber trotzdem noch ml vielen Dank für Deine Bemühungen.
LG und eine schöne Woche.
Carsten
Titel: Antw:Connair über FHEM steuern
Beitrag von: MrStonedfire am 24 Oktober 2014, 01:50:49
Hallo
ich habe soeben nach langen suchen entlich licht am ende des Tunnels gefunden.
Doch leider klappen beide codes nicht.

Ich bekomme folgenden fehler ausgespuckt:

Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 152. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 153. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 154. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 155. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 157. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 158. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 159. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 164. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 164. Global symbol "$pid" requires explicit package name at ./FHEM/99_Utils.pm line 164. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 168. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_Utils.pm line 168. Global symbol "$pid" requires explicit package name at ./FHEM/99_Utils.pm line 168. Unmatched right curly bracket at ./FHEM/99_Utils.pm line 459, at end of line ./FHEM/99_Utils.pm has too many errors.


Als Hardware nutze ich einen RpI und als Gateway nutze ich Brematic welche genauso wie Connair läuft.

Über hilfe würde ich mich sehr freuen.

MfG Dennis
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 24 Oktober 2014, 13:40:20
Hallo MrStonedfire,

welchen code benutzt du?
lass mal "use strict" weg, vielleicht funktioniert es dann.

Gruß
Titel: Antw:Connair über FHEM steuern
Beitrag von: MrStonedfire am 26 Oktober 2014, 21:38:23
Danke erstmal für den tip ;).
Ich benutze diesen code doch leider bis jetzt ohne erfolg.


sub intertech {
my $c_ip = "192.168.178.40";
my $c_port = "49880";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

$c_bits[1]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[3]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
   
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 27 Oktober 2014, 08:21:01
Hallo MrStonedfire,

welche IP-Adresse hat dein Gateway (IP-Adresse muß angepasst werden)?
Welche Funksteckdosen benutzt du (Brennenstuhl, Elro, Intertechno)?

Davon abhängig muß der entsprechende Code verwendet werden.

Ein Auszug aus deiner fhem.cfg bzw. aus deiner 99_myUtils.pm wäre hilfreich.

Ansonsten diesen Beitrag von Anfang an lesen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: MrStonedfire am 11 November 2014, 13:13:10
Hallo
Ich nutze denn oben genanten Code nur mit der Anpassung der iP.
Als Gateway nutze ich Brematic von Brennenstuhl.

In der fhem.cfg habe ich folgendes stehen.

define LampeSchlaf_ntfy notify LampeSchlaf:.* {\
    my $master = "C";;\
    my $slave = "2";;\
    my $v=Value("LampeSchlaf");;\
    if ($v eq "on") {intertech("on","$master","$slave")};;\
    if ($v eq "off") {intertech("off","$master","$slave")};;\
    }

Titel: Antw:Connair über FHEM steuern
Beitrag von: AB1970 am 11 November 2014, 19:52:37
Hi,
ich habe den Code für den Connair mit Intertechno umgeschrieben.
Zwei Sachen sind mir aufgefallen:
- Die Adressierung des Arrays war nicht korrekt, so funktionierte der Code nur mit Master A (zumindest bei mir)
- Der Code war meiner Meinung nach nicht platform unabhängig, würde mich wundern wenn die Unix Befehle unter Windows funktionieren


Die Funktion sollte jetzt mit Master A-O und Slave 1-16 funktionieren
Habe zusätzlich einige Parameter angepasst , basierend auf L3X, das bei mir seid zwei Jahren hervorragend funktioniert.
use strict;
Anweisung sollte jetzt funktionieren

Beispiel für Steuercode in fhem.cfg:


########################Schreibtischlampe###########################
define LampeSchreib dummy
attr LampeSchreib alias Schreibtischlampe
attr LampeSchreib eventMap BI:on B0:off
attr LampeSchreib group Lampen
attr LampeSchreib room Wohnzimmer,Lampen
attr LampeSchreib setList state:on,off
# attr LampeSchreib fm_type smarttogglebutton,lamp
define LampeSchreib_ntfy notify LampeSchreib:.* {\
    my $master = "C";;\
    my $slave = "5";;\
    my $v=Value("LampeSchreib");;\
    if ($v eq "on") {intertech("on","$master","$slave")};;\
    if ($v eq "off") {intertech("off","$master","$slave")};;\
    }
#####################################################################


Und hier nun der Code für die 99_MyUtils.pm


package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}



# start with your own functions below this line

sub intertech {
my $c_ip = "10.0.1.19";
my $c_port = "49880";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "12";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "4";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";
my $c_seqMaster="";
my $c_seqSlave="";
my  $SendData="";


my $filename = '/tmp/report.txt';
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh "Master $_[1]\n";
print $fh "Slave  $_[2]\n";

#Setting master id

if    ($c_master eq "A"){$c_seqMaster="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";}
elsif ($c_master eq "B"){$c_seqMaster="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";}   
elsif ($c_master eq "C"){$c_seqMaster="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";} 
elsif ($c_master eq "D"){$c_seqMaster="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";}
elsif ($c_master eq "E"){$c_seqMaster="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";}
elsif ($c_master eq "F"){$c_seqMaster="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";}
elsif ($c_master eq "G"){$c_seqMaster="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";}
elsif ($c_master eq "H"){$c_seqMaster="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";}
elsif ($c_master eq "I"){$c_seqMaster="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";}
elsif ($c_master eq "J"){$c_seqMaster="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";}
elsif ($c_master eq "K"){$c_seqMaster="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";}
elsif ($c_master eq "L"){$c_seqMaster="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";}
elsif ($c_master eq "M"){$c_seqMaster="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";}
elsif ($c_master eq "N"){$c_seqMaster="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";}
elsif ($c_master eq "O"){$c_seqMaster="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";}

#Setting slave id
   
if    ($c_slave=="1"){$c_seqSlave="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";}
elsif ($c_slave=="2"){$c_seqSlave="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";}   
elsif ($c_slave=="3"){$c_seqSlave="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";} 
elsif ($c_slave=="4"){$c_seqSlave="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";}
elsif ($c_slave=="5"){$c_seqSlave="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";}
elsif ($c_slave=="6"){$c_seqSlave="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";}
elsif ($c_slave=="7"){$c_seqSlave="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";}
elsif ($c_slave=="8"){$c_seqSlave="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";}
elsif ($c_slave=="9"){$c_seqSlave="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";}
elsif ($c_slave=="10"){$c_seqSlave="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";}
elsif ($c_slave=="11"){$c_seqSlave="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";}
elsif ($c_slave=="12"){$c_seqSlave="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";}
elsif ($c_slave=="13"){$c_seqSlave="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";}
elsif ($c_slave=="14"){$c_seqSlave="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";}
elsif ($c_slave=="15"){$c_seqSlave="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";}
elsif ($c_slave=="16"){$c_seqSlave="$c_seqLow$c_seqLow$c_seqLow$c_seqLow";} 

print $fh "Master $c_seqMaster\n";
print $fh "Slave  $c_seqSlave\n";

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

    if($state eq "on") {
        $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_seqMaster$c_seqSlave$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed,;";
    } else {
        $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_seqMaster$c_seqSlave$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$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();

}



Bin zwar von Fach habe aber keine Ahnung von Perl, daher wünsche ich euch
Viel Glück und viel Spass :-)
Titel: Antw:Connair über FHEM steuern
Beitrag von: MrStonedfire am 11 November 2014, 21:13:14
Hey danke es klappt ^^
Titel: Antw:Connair über FHEM steuern
Beitrag von: Niko_K am 24 Dezember 2014, 14:45:07
Super... mit dem letzten intertechno-skript funktionieren bei mir nun alle intertechno Steckdosen.
Mit einer vorherigen Version wurde nicht zwischen "B" und "D" unterschieden (was vermutlich an einer falschen Array-Index-Ansteuerung lag).

Wenn ich jetzt mit dem Gateway noch meine REV-Steckdosen zum Laufen bekomme (so ein Baumarkt-Set, bei dem man keinen (!!) Hauscode/Kanal einstellen kann), dann hat sich die Anschaffung des Gateways wirklich rentiert :-)

Vielen Dank fürs Skript-Teilen!!
Titel: Antw:Connair über FHEM steuern
Beitrag von: AB1970 am 01 Januar 2015, 22:10:07
Ob es nun ein Fehler im Elro Script ist oder nicht, ist schwer zu sagen. Auf jeden Fall liessen sich meine Elro Funksteckdosen nicht schalten. Nach ein wenig Bits vergleichen mit l3x, das es bei mir sehr gut tut, habe ich folgende Änderungen eingeführt:

Hier nun der Code für die 99_MyUtils.pm


sub elro ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my   $c_ip = "10.0.1.19";
my   $c_port = "49880";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=14;
my    $uSleep=800000;
my    $txversion=1;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL="1,$sSpeed,;";
my    $AN="1,3,1,3,3,1,";
my    $AUS="3,1,1,3,1,3,";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);

my $filename = '/tmp/report.txt';
my $d=$SendData;
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh "Readings:: $d\n";
close $fh;
#  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();

}

   

Ihr werdet beim genaueren Vergleich sehen, dass ich die An-/Ausschaltsequenz erweitet habe, ausserdem die Geschwindigkeit nach unten korrigiert habe. Die anderen Änderungen sind mehr Geschmackssache.
Jetzt funktioniert es bei mir.

Der Vollständigkeit halber hier noch ein Beispiel für die Ansteuerung aus der FHEM.cfg heraus:


define KU.LampeDecke dummy
attr KU.LampeDecke alias Hauptlicht
attr KU.LampeDecke eventMap BI:on B0:off
attr KU.LampeDecke group Lampen
attr KU.LampeDecke room Küche,Lampen
attr KU.LampeDecke setList state:on,off
# attr KU.LampeDecke fm_type smarttogglebutton,lamp
define KU.LampeDecke_ntfy notify KU.LampeDecke:.* {\
use Data::Dumper;;\
my $data=readDevice("KU.Heizung");;\
Log 1, "Batterie is ".Dumper($data);;\
    my $master = "00000";;\
    my $slave = "00001";;\
    my $v=Value("KU.LampeDecke");;\
    if ($v eq "on") {elro("$master","$slave","on")};;\
    if ($v eq "off") {elro("$master","$slave","off")};;\
    }



Titel: FHEM mit Rohrmotor24
Beitrag von: thoffma3 am 11 Januar 2015, 21:56:32
hi,
nach meinem Verständnis kann ich damit Rohrmotoren24 Motoren steuern wenn ich ein LAN Gateway habe. HOffe ich hab das richtig verstanden. Im Code ist ja auch die IP des Gateways.

Nach meinem Verständnis müsste es auch möglich sein direkt über den CUL auf die Motoren zu gehen. Das Protokoll von Rohrmotor24 wurde ja entschlüsselt -> http://www.mikrocontroller.net/topic/242784?goto=3962231#3962231 (http://www.mikrocontroller.net/topic/242784?goto=3962231#3962231)

Dort gibt es auch Codebeispiele, ich glaube aber nicht in Perl. Ich bin ganz neu in FHEM, daher ist das noch etwas schwer für mich. Ich hoffe das ändert sich bald, weil ich eigentlich schon lange programmiere (halt nur Java und nich so hardware nahe)

Hat jemand eine Idee wie sich das abbilden lässt?
Titel: Antw:Connair über FHEM steuern
Beitrag von: Stepha1983 am 21 Januar 2016, 12:36:29
hallo,

vll kann mir jemand helfen?
ich habe einen raspberry mit fhem und betreibe da mit einen CUL, Max und Philips HUE.
Zufällig habe ich auch schon seid einigen Jahren einen Connair 433 Sender den ich über die App betreibe,  wo ich jetzt euren TRed gelesen habe würde ich in ihnen gern  Fhem einbinden.

habe auch schon ein paar Tage probiert, aber irgendwie bekomme ich es nicht hin den CONNair Sender einzubinden.
habe einmal unter Unsorted ein 2. CUL gehabt der hab nicht verbunden war.

habe auch leider keine Ahnung von Perl.

was ich noch nicht verstehe?  Die Elro-dosen haben ja einen 5.Stelligen System Code z.b. 01011 den ihr ja auch bei master oder slave eingibt, aber der Geräte Code wo musst  der hin??

danke um jede Antwort,
Gruss
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 21 Januar 2016, 17:11:13
Hallo Stepha1983,
der Connair wird nicht automatisch erkannt. Du musst das Script 3 Antworten weiter oben in die 99_myUtils.pm einfügen und dann in der fhem.cfg deine Elro-Geräte eintragen. Nicht vergessen die IP von deinem Connair eintragen.

Bin gerade unterwegs, falls es Probleme gibt einfach  nochmal melden.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Stepha1983 am 22 Januar 2016, 15:59:58
hey,
ja habe das script eingefügt und meine Ip in der spalte so eingefügt.

my      $c_ip = "192.168.178.37";

muss ich sie noch woanders einfügen??
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 22 Januar 2016, 16:06:42
Hallo Stepha1983,

so ist es richtig. Jetzt noch in der fhem.cfg deine Elro-Teile eintragen und ein reload der 99_myUtils.pm durchführen.

Gruß Rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Stepha1983 am 22 Januar 2016, 20:59:38
So habe jetzt das in meine Fhem.cfg geschrieben:

define Flurlampen dummy
attr Flurlampen eventMap BI:on B0:off
attr Flurlampen room Flur
attr Flurlampen setList state:on,off
#attr Flurlampen alias Hauptlich
#attr Flurlampen group Beleuchtung
attr Flurlampen fm_type smarttogglebutton,lamp
define Flurlampen_ntfy notify Flurlampen:.* {\
   use Data::Dumper;;\
   my $data=readDevice("KU.Heizung");;\
   Log 1, "Batterie is ".Dumper($data);;\
    my $master = "01011";;\
    my $slave = "00010";;\
    my $v=Value("FlurlampenWand");;\
    if ($v eq "on") {elro("$master","$slave","on")};;\
    if ($v eq "off") {elro("$master","$slave","off")};;\
    }


und einen shutdown restart gemacht, das meintest u doch mit reload oder??

master ist der Systemcode und slave der Gerätecode der Elro Zwischenstecker oder??

aber immer noch keine Funktion??

kann es an dem softwarestand des connair liegen?? habe nie ein update vollzogen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 22 Januar 2016, 21:15:38
Hallo

ich habe bei mir in der in der fhem .cfg so etwas stehen

define LaserBuero dummy
attr LaserBuero alias HP Laserjet 5N
attr LaserBuero eventMap BI:on B0:off
attr LaserBuero group Büro
attr LaserBuero icon edit_copy
attr LaserBuero room Büro
attr LaserBuero setList state:on,off
define LaserBuero_ntfy notify LaserBuero:.* {\
    my $master = "10011";;\
    my $slave = "10100";;\
    my $v=Value("LaserBuero");;\
    if ($v eq "on") {elro("$master","$slave","on")};;\
    if ($v eq "off") {elro("$master","$slave","off")};;\
    }


und das habe ich in meiner  99_myUtils.pm stehen

sub elro ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.40:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


reload bedeutet:

"reload 99_myUtils.pm" in der Befehlzeile von Fhem eingeben oder ein "shutdown restart"

Titel: Antw:Connair über FHEM steuern
Beitrag von: Stepha1983 am 22 Januar 2016, 21:35:04
danke dir rippi46, jetzt läuft  es mit dem script welches du grad gepostet hast  ;D ;D ;D
keine Ahnung wo es dran lag.

daumen hoch
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 22 Januar 2016, 21:40:34
freut mich
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 08 März 2016, 17:09:12
Kann ich mit dieser Methode auch das Gateway Brematic von Brennenstuhl einbinden?

Ich wäre sehr sehr dankbar, wenn mir jemand helfen könnte.

Vielen Dank
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 08 März 2016, 23:10:31
Hallo Chridd,

ich kenne leider das Gateway von Brennenstuhl nicht, aber ich glaube es müsste damit auch funktionieren.
Wenn ich mich recht entsinne steckt die gleiche Hardware drin.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 09 März 2016, 10:12:41
Hi Rippi,

vielen Dank für die schnelle Antwort.
Leider habe ich es mit Deinem Code noch nicht zum Laufen gebracht.
IP habe ich geändert.

Woran könnte es noch liegen?
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 März 2016, 15:04:36
Hallo Chridd,

vielleicht hilft dir folgender Link bei der Umsetzung weiter

https://www.symcon.de/forum/threads/27143-Brennenstuhl-Brematic-433-Single-Gateway-%28GWY433%29-Funksteckdosen-433Mhz (https://www.symcon.de/forum/threads/27143-Brennenstuhl-Brematic-433-Single-Gateway-%28GWY433%29-Funksteckdosen-433Mhz)

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 09 März 2016, 15:18:23
Hi Rippi,

auf diesen Artikel bin ich auch schon gestoßen. Allerdings muss ich zugeben, dass hier meine technischen Fähigkeiten nicht ausreichend, ihn zu verstehen. Anders formuliert, ich habe keine Ahnung was ein UDP Socket ist und wo ich das Script erstellen soll. Auf dem Raspberry Pi? Für FHEM? Wo ganz anders?

Wenn Du mir beim Verständnis helfen könntest, wäre ich Dir sehr dankbar.

Gruß Chridd
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 März 2016, 15:29:35
Hallo Chridd,

an welcher Stelle hast du denn noch Probleme.
Reagiert dein Gateway schon wenn du eine Nachricht sendest oder kommt noch garnichts beim Gateway an.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 09 März 2016, 15:38:26
Hi rippi,

bisher sagt das Gateway leider noch gar nichts.
Was soll ich Dir zukommen lassen, damit Du besser analysieren kannst?

Ich bin wirklich noch nicht lange dabei und mache vielleicht auch absolute Anfängerfehler.  :-[

Gruß Chridd
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 März 2016, 15:54:42
Hallo Chridd,

welchen Code benutzt du?
Also wie sieht deine MyUtils.pm aus und wie deine fhem.cfg
Welche Funksteckdosen verwendest du? Hast du schon einmal versucht über die Systemconsole den Gateway anzusprechen?
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 09 März 2016, 18:41:46
in meiner 99_myUtils.pm steht:

##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
sub elro ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'10.0.1.3:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();   
   
}

1;


In meiner fhem.cfg steht viel (vielleicht zu viel!?)
Unter anderem auch:
define LaserBuero_ntfy notify LaserBuero:.* {\     my $master = "10011";;\     my $slave = "10100";;\     my $v=Value("LaserBuero");;\     if ($v eq "on") {elro("$master","$slave","on")};;\     if ($v eq "off") {elro("$master","$slave","off")};;\     }

Ich habe sowohl Elro als auch Brunnenstuhl Steckdosen im Einsatz.

Wie meinst Du das mit der Systemkonsole??
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 März 2016, 22:25:35
Hallo Chridd,

versuche folgende Kommandos in einem Terminal auf der Kommandoebene einzugeben.

echo "TXP:0,0,10,5600,350,25,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,16,;" | nc -u 10.0.1.3 49880

für LaserBuero An

oder
echo "TXP:0,0,10,5600,350,25,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,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,3,1,1,1,16,;" | nc -u 10.0.1.3 49880

für LaserBuero Aus

Ist halt fest auf master 10011 und slave 10100 eingestellt.

Vielleicht funktioniert das.

Wenn du Codetags benutzt ist es übersichtlicher!

Gruß rippi


Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 09 März 2016, 22:36:19
Zitat von: rippi46 am 09 März 2016, 22:25:35
Hallo Chridd,

versuche folgende Kommandos in einem Terminal auf der Kommandoebene einzugeben.

echo "TXP:0,0,10,5600,350,25,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,16,;" | nc -u 10.0.1.3 49880

für LaserBuero An

oder
echo "TXP:0,0,10,5600,350,25,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,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,3,1,1,1,16,;" | nc -u 10.0.1.3 49880

für LaserBuero Aus

Ist halt fest auf master 10011 und slave 10100 eingestellt.

Vielleicht funktioniert das.

Wenn du Codetags benutzt ist es übersichtlicher!

Gruß rippi

Vielen Dank, rippi!!!

Der erste Befehl im raspberry pi Terminal lässt die Brematic Lampe blau leuchten.

Das scheint der richtige Weg zu sein...

Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 09 März 2016, 23:07:16
...dennoch habe ich keine Ahnung, wie es jetzt weitergeht.

Das Gateway reagiert definitiv, was schon mal toll ist. Die Steckdosen sagen allerdings noch nix.  :-\
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 März 2016, 06:45:26
Hallo Chridd,

hatte eine Fehler in der Codierung.

Probiers mal damit:

AN
echo "TXP:0,0,10,5600,350,25,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,3,1,1,16,;" | nc -u 10.0.1.3 49880

AUS
echo "TXP:0,0,10,5600,350,25,1,3,1,3,1,3,3,1,1,3,3,1,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,1,3,1,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,1,1,1,16,;" | nc -u 10.0.1.3 49880

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 10 März 2016, 18:02:49
Hi rippi!

Du hast es echt drauf!  8)

Es funktioniert im Terminal vom Mac und auch vom Pi. Die Steckdose geht an und aus. Ich muss zwar jedes mal das Terminal wieder schließen aber es funktioniert!!

Jetzt stellt sich nur noch die Frage, wie baue ich das ein, dass ich
1) das Gateway über FHEM steuern kann
2) alle meine Steckdosen anlegen kann
3) das Ganze über HomeBridge per Siri steuern kann.

Fragen über Fragen, aber ich hoffe, dass Du mir weiter beiseite stehst.  :)

Vielen Dank!
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 März 2016, 18:52:10
Hi Chridd,

ich benutze es so bei mir:

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

sub connair {
my $c_ip = "10.0.1.3";
my $c_port = "49880";
my $c_speed = "16";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "15";
my $c_pause = "5600";
my $c_tune = "350";
my $c_baud = "25";
my $c_speed = "16";
my $c_AN = "1,3,1,3,3";
my $c_AUS = "3,1,1,3,1";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="1";
my $c_bitHgh="3";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[0]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[1]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[3]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[4]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[5]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[6]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[7]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[8]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[9]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[10]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[11]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[12]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[13]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[14]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[15]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[16]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[17]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[18]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[19]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[20]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[21]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[22]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[23]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[24]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[25]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[26]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[27]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[28]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[29]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[30]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[31]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";


 
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AN,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AUS,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}

sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); }


und in der fhem.cfg sieht es so aus:

define LaserBuero dummy
attr LaserBuero alias Laserdrucker
attr LaserBuero eventMap BI:on B0:off
attr LaserBuero room Buero
attr LaserBuero setList state:on,off

define LaserBuero_ntfyN notify LaserBuero:.* {\
    my $master = "10011";;\
    my $slave = "10100";;\
    my $v=Value("LaserBuero");;\
    if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
    if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
    }


Man kann es sicher einfacher machen, aber so funktioniert es bei mir.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 10 März 2016, 19:17:44
Funktioniert leider nicht.  :'(

Der Schalter im FHEM müsste doch jetzt das Gateway ansprechen und die Steckdose schalten?

Weder das Gateway leuchtet noch schaltet die Steckdose.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 März 2016, 19:25:52
Hallo Chridd

ich habe den Code von der 99_connairUtils.pm noch einmal abgeändert.

Ich brauche bei mir die Funktion bin2dec nicht bzw. habe sie an anderer Stelle schon definiert und hatte sie auskommentiert.

Probiere es noch einmal.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 10 März 2016, 19:29:52
RIPPI!!!! YOU ARE THE MAN!!!!

Et lüppt!!! Vielen, vielen Dank!

Ich nehme an für weitere Steckdosen muss ich jetzt einfach neue Schalter anlegen mit anderen Master und Slave Einstellungen!?

Die HomeBridge Geschichte kommt dann.

Nochmal vielen, vielen Dank. Der erste wichtige Schritt ist getan.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 März 2016, 19:39:35
Danke.

genau so musst du die anderen Schalter mit den entsprechenden Master und Slave  anlegen.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 10 März 2016, 19:57:20
Läuft noch nicht so ganz...

Ok, zwei Fragen.

1. Muss ich in der fhem.cfg irgendwie eine Trennung zwischen die Schalter packen?
2. Was ist hieran falsch? Gateway macht nichts...

define Beamer dummy
attr Beamer alias BENQ
attr Beamer eventMap BI:on B0:off
attr Beamer room Wohnzimmer
attr Beamer setList state:on,off

define Beamer_ntfyN notify Beamer:.* {\
     my $master = ,,00100";;\
     my $slave = "10000";;\
     my $v=Value("Beamer");;\
     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
     }

Vielen Dank
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 März 2016, 20:23:43
Hallo Chridd,

wenn du Codetabs verwendest ist es übersichtlicher.

dein Code

define Beamer_ntfyN notify Beamer:.* {\
     my $master =,,00100";;\
     my $slave = "10000";;\
     my $v=Value("Beamer");;\
     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
     }


mus so aussehen

define Beamer_ntfyN notify Beamer:.* {\
     my $master = "00100";;\
     my $slave = "10000";;\
     my $v=Value("Beamer");;\
     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
     }


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 10 März 2016, 21:02:59
Funktioniert! Natürlich!

Vielen Dank!
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 10 März 2016, 22:12:44
Alle Geräte drin und ich kann sie mit FHEM schalten.

rippi, hast Du auch Erfahrung mit Homebridge?
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 März 2016, 22:14:21
Leider nicht!
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 11 März 2016, 10:45:05
Trotzdem nochmal vielen vielen Dank!
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 11 März 2016, 22:19:15
Hilfe rippi!!!

Ich war schon so weit, dass ich mit Siri steuern konnte. Dann habe ich noch weitere Geräte in fhem.cfg geschrieben. Wollte fhem dann neu starten und seitdem geht nix mehr. Es startet nicht mehr und es kommt diese Meldung:

Can't locate RTypes.pm in @INC (you may need to install the RTypes module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at fhem.pl line 492.

Hast Du eine Idee?
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 11 März 2016, 22:30:12
nie direkt in die fhem.cfg schreiben.
Bei einem Fehler startet fhem nicht mehr.
Am besten  alte Version  einspielen  dann sollte es wieder
funktionieren.  Ist mir auch schon passiert.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 11 März 2016, 22:34:23
was heißt alte Version einspielen? Wie? Und wo kriege ich sie her?
ich weiß leider gar nicht genau, was ich falsch gemacht habe. kannst du mir das bitte erläutern.
Bin gerade wirklich verzweifelt.
Vielen Dank.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 11 März 2016, 22:41:45
Irgendwo im fhem-Verzeichnis gibt es einen Restore oder Backupordner. Dort sollte noch eine alte fhem.cfg existieren. Sichere  deine momentane fhem.cfg und kopiere  die aus dem restore oder backup-Verzeichnis ins  fhem-Verzeichnis. Dann sollte fhem wieder starten. Anschließend kannst du deine Schalter wieder eintragen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 11 März 2016, 22:48:56
In dem root@raspberrypi:/opt/fhem# oder in dem root@raspberrypi:/opt/fhem/FHEM#?
Kann ich irgendwie danach suchen? Weißt Du wie dieser Restore/Backup Ordner heißt? Und wie heißt diese Datei dann? Muss ich diese dann mit nano öffnen und den Inhalt kopieren?

Kannst Du mir bitte nochmal erläutern, was ich falsch gemacht habe?
Damit ich den Fehler nicht wiederhole. Wenn ich es denn überhaupt gefixt bekomme...

Vielen, vielen Dank
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 11 März 2016, 22:57:50
Meine jetzige fhem.cfg sieht so aus


attr global userattr cmdIcon devStateIcon devStateStyle

genericDeviceType:ignore,switch,outlet,light,blind,thermometer,thermostat,garage,window,lock

homebridgeMapping:textField-long icon sortby webCmd widgetOverride attr

global autoload_undefined_devices 1 attr global logfile

./log/fhem-%Y-%m.log attr global modpath . attr global motd

SecurityCheck:\ \ WEB,WEBphone,WEBtablet has no basicAuth attribute.\

telnetPort has no password/globalpassword attribute.\ \ Restart FHEM for

a new check if the problem is fixed,\ or set the global attribute motd

to none to supress this message.\



attr global statefile ./log/fhem.save

attr global updateInBackground 1

attr global verbose 3



define telnetPort telnet 7072 global



define WEB FHEMWEB 8083 global



define WEBphone FHEMWEB 8084 global

attr WEBphone stylesheetPrefix smallscreen



define WEBtablet FHEMWEB 8085 global

attr WEBtablet stylesheetPrefix touchpad



# Fake FileLog entry, to access the fhem log from FHEMWEB

define Logfile FileLog ./log/fhem-%Y-%m.log fakelog



define autocreate autocreate

attr autocreate filelog ./log/%NAME-%Y.log



define eventTypes eventTypes ./log/eventTypes.txt



# Disable this to avoid looking for new USB devices on startup

define initialUsbCheck notify global:INITIALIZED usb create

define Beamer dummy

attr Beamer alias BENQ

attr Beamer eventMap BI:on B0:off

attr Beamer room Homekit,Wohnzimmer

attr Beamer setList state:on,off



define Beamer_ntfyN notify Beamer:.* {\

     my $master = "00100";;\

     my $slave = "10000";;\

     my $v=Value("Beamer");;\

     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\

     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\

     }





define LampeRe dummy

attr LampeRe alias RechteLampe

attr LampeRe eventMap BI:on B0:off

attr LampeRe genericDeviceType switch

attr LampeRe room Homekit,Schlafzimmer

attr LampeRe setList state:on,off



define LampeRe_ntfyN notify LampeRe:.* {\

     my $master = "10000";;\

     my $slave = "10000";;\

     my $v=Value("LampeRe");;\

     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\

     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\

     }





define LampeLi dummy

attr LampeLi alias LinkeLampe

attr LampeLi eventMap BI:on B0:off

attr LampeLi room Homekit,Schlafzimmer

attr LampeLi setList state:on,off



define LampeLi_ntfyN notify LampeLi:.* {\

my $master = "00100";;\

     my $slave = "11000";;\

     my $v=Value("LampeLi");;\

     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\

     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\

     }



define Stehlampe dummy

attr Stehlampe alias WohnzimmerLampe

attr Stehlampe eventMap BI:on B0:off

attr Stehlampe genericDeviceType switch

attr Stehlampe room Homekit,Wohnzimmer

attr Stehlampe setList state:on,off



define Stehlampe_ntfyN notify Stehlampe:.* {\

     my $master = "11111";;\

     my $slave = "10000";;\

     my $v=Value("Stehlampe");;\

     if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\

     if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\

     }





define FHEM.Homebridge.Status dummy

attr FHEM.Homebridge.Status room 9.03_Tech
[code]
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 11 März 2016, 23:23:13
In root@raspberrypi:/opt/fhem# habe ich nur diese Ordner:
configDB.pm
demolog
FHEM
fhem.cfg.demo
www
contrib
docs
fhem.cfg
fhem.pl
README_DEMO.txt

Ich verzweifle...  :'(
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 12 März 2016, 01:55:21
FHEM läuft wieder. Allerdings sagt das Gateway nix mehr. Ich nutze 1zu1 die 99_connairUtils.pm aus Deinem letzten Post, wo es noch funktioniert hat.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Chridd am 12 März 2016, 02:24:23
ok, klappt wieder alles  ;D
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 15:19:36
Rippi, bitte hilf! Du scheinst ja hier der SteckerChecker zu sein! ;D

Mein Tag 3 mit FHEM... habe dieses Thema hier entdeckt, wei ich auch noch ein Connair habe. Kann euch gar nicht sagen, wie cool ich FHEM finde, und wie sehr ich mich freue, das Connair vielleicht wieder benutzen zu können! Ich habe Versucht, das hier mitgelesene nachzubauen:

- eine 99_ConnairUtils.pm angelegt und erstmal stumpf 1:1 mit deinem Inhalt befüllt, nur die IP angepasst
- deren Rechte genau wie die anderen 99_* gesetzt
- deinen Code in die fhem.cfg kopiert, auch hier erstmal alles 1:1, Individualisiert wird später, wenn es klappt ...  8)
- restart

Wenn ich jetzt den Laserdrucker im WEB ein/ausschalte, passiert erstmal nichts.

Ich bin mir aber nicht sicher, ob es an der falschen Codierung der Steckdose liegt?

Im log steht jedenfalls:

2016.03.13 14:58:58 3: LaserBuero_ntfyN return value: Undefined subroutine &main::bin2dec called at (eval 35) line 5.

Das lässt mich vermuten, dass es eher nicht am Code der Dose liegt, oder?  :o
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 15:43:29
Hallo McElch

vermutlich fehlt dir in der 99_ConnairUtils.pm die Funktion bin2dec.

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

sub connair {
my $c_ip = "192.168.178.40";
my $c_port = "49880";
my $c_speed = "16";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "15";
my $c_pause = "5600";
my $c_tune = "350";
my $c_baud = "25";
my $c_speed = "16";
my $c_AN = "1,3,1,3,3";
my $c_AUS = "3,1,1,3,1";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="1";
my $c_bitHgh="3";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[0]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[1]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[3]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[4]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[5]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[6]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[7]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[8]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[9]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[10]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[11]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[12]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[13]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[14]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[15]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[16]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[17]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[18]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[19]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[20]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[21]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[22]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[23]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[24]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[25]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[26]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[27]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[28]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[29]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[30]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[31]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";


 
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AN,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AUS,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}

sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); }


IP anpassen nicht vergessen!!

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 15:55:31
Danke für die schnelle Unterstützung! :)

Das wars aber nicht, die Funktion ist drin, also das ist ja wohl vermutlich die letzte Zeile, also das "sub bin2dec..."

War drin, habe deinen Code sicherheitshalber aber nochmal kopiert, IP nochmal angepasst, die Fehlermeldung bleibt aber gleich... :(

Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 16:08:03
Hallo McElch,

zeige mir mal den Inhalt deiner 99_ConnairUtils.pm und den relevanten Teil deiner fhem.cfg

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 16:17:44
Aber gern! Klasse dass du mir trotz Sonntagnachmittag hier so schnell hilfst!

99_ConnairUtils.pm in
/usr/local/FHEM/share/fhem/FHEM


package main;
use strict;
use warnings;
use POSIX;
sub
ConnairUtils_Initialize($$)
{
   my ($hash) = @_;
}
use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;
$main::NextUpdate = ();

sub connair {
my $c_ip = "192.168.70.208";
my $c_port = "49880";
my $c_speed = "16";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "15";
my $c_pause = "5600";
my $c_tune = "350";
my $c_baud = "25";
my $c_speed = "16";
my $c_AN = "1,3,1,3,3";
my $c_AUS = "3,1,1,3,1";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="1";
my $c_bitHgh="3";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[0]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[1]="$c_seqLow$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[3]="$c_seqLow$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[4]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[5]="$c_seqLow$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[6]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[7]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[8]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[9]="$c_seqLow$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[10]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[11]="$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[12]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[13]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[14]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[15]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[16]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqLow";
$c_bits[17]="$c_seqHgh$c_seqLow$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[18]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[19]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[20]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[21]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[22]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[23]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[24]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqLow";
$c_bits[25]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
$c_bits[26]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqLow";
$c_bits[27]="$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[28]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqLow";
$c_bits[29]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow$c_seqHgh";
$c_bits[30]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqLow";
$c_bits[31]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";


 
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AN,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_bitHgh,$c_AUS,1,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}

sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); }


1;


und die confi:


define LaserBuero dummy
attr LaserBuero alias Laserdrucker
attr LaserBuero eventMap BI:on B0:off
attr LaserBuero room Buero
attr LaserBuero setList state:on,off

define LaserBuero_ntfyN notify LaserBuero:.* {\
    my $master = "11111";;\
    my $slave = "00100";;\
    my $v=Value("LaserBuero");;\
    if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
    if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
    }



Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 16:28:54
Hallo McElch,

schmeiß mal alles raus aus deiner 99_ConnairUtils.pm und füge den Inhalt von Antwort #92 ein und teste dann nochmal.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 16:35:57
Okay, jetzt sieht das log schon etwas freundlicher aus! Es schaltet zwar noch immer nicht, aber das kann ja am Ende auch an der Steckdose und dem Code liegen?

Das log sagt jetzt beim Schalten:

sh: nc: not found
2016.03.13 16:33:45 3: LaserBuero_ntfyN return value: -1
sh: nc: not found
sh: nc: not found
2016.03.13 16:34:23 3: LaserBuero_ntfyN return value: -1
sh: nc: not found
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 16:43:09
Hallo McElch,

das sieht schon besser aus. Vermutlich hast du auf deiner Synology kein netcat installiert.

Gruß0 rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 16:48:25
OMG Rippi, das würde ich jetzt aber nicht als eine gute Nachricht bezeichnen, ich hab doch keine Ahnung!?

Bin heile froh, dass ich das alles soweit nach Kochbuch hinbekommen hab...  :'(

Wie geht das? ipkg install netcat?  :o

Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 16:56:54
Hallo McElch

von der Synology habe ich leider keine Ahnung wie man Software nachinstalliert. Aber vermutlich funktioniert das über ipkg. (ipkg install netcat)

oder du versuchst das ganze über udp.

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

sub elro ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.40:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}



und in der fhem.cfg

define LautsprecherBad dummy
attr LautsprecherBad alias Badlautsprecher
attr LautsprecherBad eventMap BI:on B0:off
attr LautsprecherBad group Lautsprecher
attr LautsprecherBad room Bad,Sound
attr LautsprecherBad setList state:on,off

define LautsprecherBad_ntfy notify LautsprecherBad:.* {\
    my $master = "10011";;\
    my $slave = "11000";;\
    my $v=Value("LautsprecherBad");;\
    if ($v eq "on") {elro("$master","$slave","on")};;\
    if ($v eq "off") {elro("$master","$slave","off")};;\
    }


und wieder IP in der  99_ConnairUtils.pm und Schalter in der fhem.cfg anpassen.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 17:04:59
Rippi, you god damn SteckerChecker Schrecker!  ;D

So klappt es!!! Unglaublich! Vielen Dank!!!  :D
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 17:10:23
Hallo McElch,

wie hast du es jetzt gemacht?

Über ipkg netcat nachinstalliert oder über udp-skript

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 17:22:28
Über deinen UDP code. Die netcat-Baustelle wollte ich jetzt so kurz vor den Wahlergebnissen nicht noch aufmachen...  ;D

Mann, ich kann dir gar nicht sagen, wie sehr ich mich freue, dass das ConnAir jetzt wieder was tun hat! Ich fand das damals soo ärgerlich, dass das eingestellt wurde...

Theoretisch müsste das doch jetzt eigentlich als CUL für alle möglichen 433MHz-Sachen, also zB auch für Baumarkt-Intertechno-Geräte gehen, oder?
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 13 März 2016, 17:31:30
Hallo McElch

Intertechno musst du extra anpassen.

ich hatte das für Intertechno mal angepasst.

99_intertechUtils.pm

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

sub intertech {
my $c_ip = "192.168.178.40";
my $c_port = "49880";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

$c_bits[1]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[3]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
   
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$c_speed,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}


und in der fhem.cfg

define LampeSchlaf dummy
attr LampeSchlaf alias Schlafzimmerlampe
attr LampeSchlaf eventMap BI:on B0:off
attr LampeSchlaf group Lampen
attr LampeSchlaf icon li_wht_on
attr LampeSchlaf room Schlafzimmer,Lampen
attr LampeSchlaf setList state:on,off
#attr LampeSchlaf fm_type state,offbutton,onbutton
define LampeSchlaf_ntfy notify LampeSchlaf:.* {\
    my $master = "A";;\
    my $slave = "1";;\
    my $v=Value("LampeSchlaf");;\
    if ($v eq "on") {intertech("on","$master","$slave")};;\
    if ($v eq "off") {intertech("off","$master","$slave")};;\
    }


Schade, dass es für den Connair keine Firmware-Erweiterung für den Empfang mehr gibt.
Wenn man den Codeaufbau anderere Protokolle kennt, kann man natürlich den mit dem Connair nachbauen.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 13 März 2016, 18:03:23
Ja, das ist schade, aber wie gesagt, ich bin sehr glücklich damit, dass die ConnAir wieder was zu tun hat.

Ich will eh den Rest eigentlich mit Arduinos machen. Dass die ConnAir den gesamten Bereich "Funksteckdosen" übernimmt, ist doch klasse.

Mal sehen was ich für die neue Wohnung dann noch alles brauche. Wenn man weiß, was die vorhandene Technik alles kann und was nicht, kann man ja entsprechend passende Sachen zukaufen.

Viele Grüße
Nico
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 14 März 2016, 15:49:49
Hi Rippi,

sag mal, hast du vielleicht für intertechno auch noch eine UDP-Lösung in der Schublade? Habe deinen Code für das einzige Intertechno-Gerät was ich habe, eine E27-lampenfassung ausprobiert, da kommt auch die nc not found Fehlermeldung.

Wenn nicht ist das nicht schlimm, früher oder später muss ich mir das mit dem netcat auf der Synology eh mal ansehen.

Vielen Dank & VG
McElch
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 14 März 2016, 16:18:36
Hi McElch

keine Garantie!

aber probiers mal damit:

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

sub intertech {
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

$c_bits[1]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[3]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
   
my ($state) = "$_[0]";

if($state eq "on") {
        $SendData = "$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed";
    } else {
        $SendData = "$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$c_speed";
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.40:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();
}


IP wieder anpassen!

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 14 März 2016, 16:33:45
Und wieder sieht das log gleich freundlicher aus:

2016.03.14 16:29:36 3: Kuechendecke_ntfy return value: 1
2016.03.14 16:29:37 3: Kuechendecke_ntfy return value: 1
2016.03.14 16:29:39 3: Kuechendecke_ntfy return value: 1
2016.03.14 16:29:41 3: Kuechendecke_ntfy return value: 1
2016.03.14 16:30:02 3: Kuechendecke_ntfy return value: 1
2016.03.14 16:30:06 3: Kuechendecke_ntfy return value: 1

Aber es schaltet nicht. Das kann jetzt aber an allem möglichen liegen, zB dass die Fassung ja schon irgendeinen Code hatte, den ich nicht mehr kenne, und sich mit einer anderen Code-Kombi nicht anlernen lässt, oder?

Ist jetzt aber wirklich nicht schlimm. Ich hab wie gesagt nur die eine Fassung. Kannst du mir eine Kaufempfehlung für Fassungen geben, die leicht mit der Connair funktionieren? Ich werde da sicher in der neuen Wohnung die eine oder andere haben wollen.

Vielen Dank!
McElch :)
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 14 März 2016, 16:52:29
Hi McElch,

wenn ich mich recht entsinne, musste ich meine Intertechno  in den Lernmodus versetzen, und dann mit meinem Connair irgendeinen Code senden. Anschließend konnte ich die Intertechno schalten.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 14 März 2016, 17:08:38
Ja, genauso habe ich das versucht. Habe mir extra die Anleitung von der Fassung nochmal runtergeladen. Den Code aus deinem Beispiel habe ich nicht verändert, weil der ja eigentlich egal ist, die Fassung sollte es ja lernen.

So hat das damals auch mit der alten Software ( http://www.l3x.de/connair/ ) geklappt. ich hatte nie eine Fernbedienung für das Teil.

Factory Setting klappt nach Handbuch nur mit einem gepairten Handsender - finde den Fehler! :)

Ist aber wie gesagt nicht schlimm. Ich werde mir neue Fassungen suchen und vorher drauf achten, dass die mit dem Connair gehen.

VG
McElch
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 14 März 2016, 20:00:21
Hallo McElch,

ich habs noch einmal mit udp probiert. Der Code aus post #107 hat auch bei mir nicht funktioniert.
Der Connair leuchtet zwar auf, aber es passiert nichts.

Ich habe jetzt den Code abgeändert und dieser funktioniert jetzt bei mir.

sub intertech_udp {
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";


$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

$c_bits[1]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[3]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
   
my ($state) = "$_[0]";
if ($state eq "on")
    {
        $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed";
    } else {
        $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$c_speed";
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.40:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


IP anpassen und reload 99_Modulname.pm eingeben um das Modul, in dem sich die Routine befindet neu zu laden.

P.S.: in der fhem.cfg dann halt mit intertech_udp aufrufen.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: McElch am 14 März 2016, 23:41:39
Hat funktioniert! Genial!

Nochmal viiieeeelen Dank!!! :)
Titel: Antw:Connair über FHEM steuern
Beitrag von: Tompsg am 26 April 2016, 09:53:55
Wer Interesse hat, ich schreibe gerade ein Brematic-Modul (ähnlich Connair). Aktuell kann ich Brematic und Intertechno und noch ein undefinerbares 2722-Gerät damit steuern. Ich stelle es gerne zur Verfügung, wenn fertig auch offiziell.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 26 April 2016, 12:08:53
Hallo Tompsg,

finde ich eine super Idee.
Bin leider nicht so der Programmierer, aber habe mir damals den Connair in Fhem über myutils eingebunden.
Der Connair kann leider kein Empfang.
Kann der Brematic empfangen?

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Tompsg am 26 April 2016, 13:49:29
Die Brematic kann leider auch nicht empfangen. Ich steuere damit alles, was sowieso nichts zurück meldet und unkritisch ist, wenn es mal nicht klappt.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Elbwurm am 25 September 2016, 09:56:27
Hallo zusammen...

Ich denke ich könnte hier mit meinem Problem ganz gut aufgehoben sein...

Zur Basis:

Intel NUC mit Win10
fhem 5.7
Brematic Gateway

Elro/Brennstuhl Funksteckdosen die mit Hilfe dieses Threads einwandfrei funktionieren.

Intertechno strteikt und ich habe keine Ahnung warum.
Ich bin absoluter Frischling und kann vieles nicht interpretieren oder auch nur Ansatzweise verstehen.

Trotzdem mag ich nicht aufgeben und hoffe hier kann mir geholfen werden.

Einträge in der myUtils sehen folgendermaßen aus...
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

# use strict;
use warnings;
use POSIX;
use CGI qw(:standard);
use IO::Socket;
use MIME::Base64;
use Time::Piece;

sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}



# start with your own functions below this line

sub connair($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.50:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

sub intertech_udp {
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "6";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "125";
my $c_AN = "12,4,4,12,12,4";
my $c_AUS = "12,4,4,12,4,12";
my $c_master = "$_[1]";
my $c_slave = "$_[2]";
my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitHgh,$c_bitHgh,$c_bitLow,$c_bitLow,";
my $c_seqHgh="$c_bitHgh,$c_bitLow,$c_bitHgh,$c_bitLow,";

$c_bits[A]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[B]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[C]="$c_seqHgh$c_seqLow$c_seqHgh$c_seqHgh";
$c_bits[D]="$c_seqLow$c_seqLow$c_seqHgh$c_seqHgh";

$c_bits[1]="$c_seqHgh$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[2]="$c_seqLow$c_seqHgh$c_seqHgh$c_seqHgh";
$c_bits[3]="$c_seqHgh$c_seqLow$c_seqLow$c_seqHgh";
   
my ($state) = "$_[0]";
if ($state eq "ON")
    {
        $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AN,1,$c_speed";
    } else {
        $SendData = "TXP:$c_A,$c_G,$c_repeat,$c_pause,$c_tune,$c_baud,$c_bitLow,$c_bits[$c_master]$c_bits[$c_slave]$c_seqHgh$c_seqLow$c_bitHgh,$c_AUS,1,$c_speed";
    }
my ($socket,$data);
# We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.178.50:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


1;


In der fhem.cfg für die Intertechno (Code A3)
define lk dummy
attr lk alias lk
attr lk eventMap BI:on B0:off
attr lk setList state:on,off
attr lk userReadings STATE
define lk_ntfy notify lk:.* {\
    my $master = "A";;\
    my $slave = "3";;\
    my $state=Value("lk");;\
    if ($state eq "on") {intertech_udp("$master","$slave","on")};;\
    if ($state eq "off") {intertech_udp("$master","$slave","off")};;\
    }


Im LOG taucht etwas auf was ich absolut nicht verstehe bzw. weiß wie ich es "beheben" kann.

2016.09.25 09:32:19 1: PERL WARNING: Argument "A" isn't numeric in array element at ./FHEM/99_MyUtils.pm line 107.
2016.09.25 09:32:19 1: PERL WARNING: Argument "B" isn't numeric in array element at ./FHEM/99_MyUtils.pm line 108.
2016.09.25 09:32:19 1: PERL WARNING: Argument "C" isn't numeric in array element at ./FHEM/99_MyUtils.pm line 109.
2016.09.25 09:32:19 1: PERL WARNING: Argument "D" isn't numeric in array element at ./FHEM/99_MyUtils.pm line 110.


und

PERL WARNING: Argument "on" isn't numeric in array or hash lookup at ./FHEM/99_MyUtils.pm line 121.
PERL WARNING: Argument "off" isn't numeric in array or hash lookup at ./FHEM/99_MyUtils.pm line 121.


Also wie gesagt, der Thread hier hat mir also schon deutlich weitergeholfen indem ich die Elros und Brennstuhl Schalten kann.
Die Intertechno bereiten mir als Anfänger Kopfweh.

Das Gatway wird scheinbar angesprochen... Die Lampe leuchtet blau auf.
Auch ein Mitschnitt des reinen TXP-Signals von der App Powerswitch scheint sich mit den Abfolgen des intertech_udp 1:1 zu decken bis auf $c_speed der im Mitschnitt bei 140 liegt im Gegensatz zum Eintrag im Script wo 125 eingetragen sind.

So, ich hoffe damit kann jemand etwas anfangen und mir weiterhelfen bitte.

VG ELbwurm
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 25 September 2016, 10:33:55
Hallo Elbwurm,

so auf Anhieb kann ich keinen Unterschied feststellen. hast du den Code aus Post #111 genommen?
Dieser sollte eigentlich funktionieren.

Was du vielleicht auch noch berücksichtigen solltest, dass der connair(brennenstuhlGW) angelernt werden muß.

Zitatwenn ich mich recht entsinne, musste ich meine Intertechno  in den Lernmodus versetzen, und dann mit meinem Connair irgendeinen Code senden. Anschließend konnte ich die Intertechno schalten.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Elbwurm am 25 September 2016, 10:42:03
Hallo Rippi,

ich war der Meinung das diese Sache mit dem Anlernen was mit Empfängern ohne Codierrad zu tun hat!?
Habe hier 3 x PAR 1500 mit Codierrad und die Fernbedienung PAR 1000 dazu.

Ich glaube der Code war tatsächlich aus #111 aber beschwören möchte ich es nicht.

So ganz verstehe ich das nicht mit dem Anlernen...

Also z.B. Empfänger in den Lernmodus (wie auch immer das geht, muss ich mal Google bemühen)
Dann mit der App vom Smartphone ein Signal absetzen?
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 25 September 2016, 12:09:49
Hallo Elbwurm,

ich denke es war kein richtiges Anlernen, sondern eher eine Berechtigung diesen Funkempfänger zu schalten.
Also ich mußte einmal im Lernmodus(Setup etc) den Funkempfänger mit dem eingestellten Code schalten.

Was mir noch aufgefallen ist: In meinen Dummy habe ich kein "userReadings STATE".

Gruß rippi

Titel: Antw:Connair über FHEM steuern
Beitrag von: Elbwurm am 25 September 2016, 17:11:45
Hm, ich finde zum Thema anlernen der PAR 1500 Steckdosen leider nichts.
Das mit dem State stimmt das habe ich zur Sicherheit auch geändert.

Was mir noch eingefallen ist... Die PAR1500 Steckdosen haben nur EIN Codierrad.
Der bisher noch nicht erwähnte CMR1000 hat zwei, habe jetzt zur Sicherheit mal eine Dose und den CMR1000 auf A1 gestellt, aber auch hier von beiden keine Reaktion.


Kannst du denn etwas zu diesen Fehlermeldungen im LOG sagen?
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 25 September 2016, 18:29:17
versuche mal nach dem Einstecken der Funksteckdosen innerhalb der ersten 5 Sekunden den on-Befehl zu senden.

Um irgendwelche Codes zu löschen must du in diesen 5 Sekunden den Off-Code senden
Titel: Antw:Connair über FHEM steuern
Beitrag von: Elbwurm am 26 September 2016, 04:59:09
Leider funktioniert das nur mit den ITL Serien aber nicht mit den PAR Dosen. Hab es zwar trotzdem versucht, leider ohne Erfolg. :-\
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 29 September 2016, 15:07:01
Hallo Elbwurm,

kannst du in der Zwischenzeit deine Intertechnodosen schalten?

Oder brauchst du noch Hilfe?


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Elbwurm am 03 Oktober 2016, 16:48:25
Hallo Rippi,

bin jetzt am Wochenende endlich dazu gekommen mich nochmals damit auseinander zu setzen. Meine Intertechno kann ich jetzt Schalten. Habe es jetzt mit dem Code aus Post 44 hingekommen.

Also Elro,Brennstuhl und Intertechno mit dem Brematic Gateway. Brauche dafür zwei Subs, aber es geht. Also zumindest bei mir geht es jetzt.

Vielen Dank
Titel: Brematic Module
Beitrag von: Tompsg am 05 Oktober 2016, 19:03:47
Hallo,

anbei stelle ich Euch meine Brematic-Module zum Test und Erweiterung zur Verfügung.

Kurze Anleitung:

Sendemodul einrichten:
define <name> BREMATIC_LAN <IP-adress> [<port>]

z.B. define Brem_gw BREMATIC_LAN 192.168.0.99

Empfänger einrichten:
define <name> BREMATIC <BREMATIC_LAN> <master> <slave> [<type> <coding>]
type switch / roller
coding B2 = Brematic / IT = Intertechno

z.B. define SchaltsteckdoseBrematic BREMATIC Brem_gw 01100 01000
define RolloIntertechno BREMATIC Brem_gw O 1 roller IT

Bei Fragen helfe ich gerne.

Viele Grüße,
Thomas
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 Oktober 2016, 13:46:47
Hallo Tompsg,

danke für das Modul. :)
Hatte leider das Problem, dass ich viele Steckdosen nur ausschalten konnte.
Habe dann in der 00_BREMATIC_LAN.pm bei der sub BRL_type_B2 die Zeile mit dem Repeat geändert.

my $Repeat    = "20";

Danach hat es dann auch mit dem Einschalten funktioniert.

Gruß rippi
Titel: Antw:Brematic Module
Beitrag von: RalfPit am 12 Oktober 2016, 14:40:58
Zitat von: Tompsg am 05 Oktober 2016, 19:03:47
Hallo,

anbei stelle ich Euch meine Brematic-Module zum Test und Erweiterung zur Verfügung.

Kurze Anleitung:

Sendemodul einrichten:
define <name> BREMATIC_LAN <IP-adress> [<port>]

z.B. define Brem_gw BREMATIC_LAN 192.168.0.99

Empfänger einrichten:
define <name> BREMATIC <BREMATIC_LAN> <master> <slave> [<type> <coding>]
type switch / roller
coding B2 = Brematic / IT = Intertechno

z.B. define SchaltsteckdoseBrematic BREMATIC Brem_gw 01100 01000
define RolloIntertechno BREMATIC Brem_gw O 1 roller IT

Bei Frage helfe ich gerne.

Viele Grüße,
Thomas

Hallo Thomas,

1000x Danke für die beiden Module, habe auch gleich alle Steckdosen mit DIP Schalter eingebunden.
Ein Problem habe ich nur noch bei meinen Intertechno Steckdosen. Hier habe ich nur den 19-stelligen Code. Kannst du mir bei der Definition helfen ?
define Intertechno_Steckdose BREMATIC BREMATIC_LAN .... ??

Vielen Dank
Ralf
Titel: Antw:Connair über FHEM steuern
Beitrag von: Gerrit72 am 24 November 2016, 23:01:48
Hallo zusammen, ich lese hier schon lange mit probiere viel aus und mit lesen kommt man hier oft weiter!
Ich habe ein Brematic mit Elro Dosen. Das Ganze funktioniert auch hervorragend. Nun mein Problem, ich brauche für eine Steckdose einen Timer. Also ein on for Timer (120min). Wie kann ich den realisieren. Aussehen tut das ganze so:

#Steckdose
define Beamer dummy
attr Beamer alias Beamer
attr Beamer eventMap BI:on B0:off
attr Beamer icon it_television
attr Beamer room Haus,Wohn
attr Beamer setList state:on,off

define Beamer_ntfyN notify Beamer:.* {\
    my $master = "11111";;\
    my $slave = "00100";;\
    my $v=Value("Beamer");;\
    if ($v eq "on") {connair("on",bin2dec("$master"),bin2dec("$slave"))};;\
    if ($v eq "off") {connair("off",bin2dec("$master"),bin2dec("$slave"))};;\
    }

PS: Funktioniert so etwas wie ein Taster (vent) da ich die anderen Steckdosen gerne über die Home Companion App nicht nur an, sondern auch wieder aus schalten möchte.
Danke schonmal
Grüße aus Steinfurt Gerrit
Titel: Antw:Connair über FHEM steuern
Beitrag von: Tompsg am 26 November 2016, 08:44:47
Hi Gerrit,

hilft Dir das?

https://forum.fhem.de/index.php?topic=27305.0 (https://forum.fhem.de/index.php?topic=27305.0)

Viele GHrüße,
Thomas
Titel: Antw:Connair über FHEM steuern
Beitrag von: ssperling am 01 Dezember 2016, 23:41:37
Halllo zusammen,

habe seit kurzem auch die Brematic und mich hier einmal "durchgefräst" um meinen alten Intertechno PAR 1000 an das Ding anzubinden. Gute Infos gibt es dazu beim OpenSource Projekt "PowerSwitcher": https://github.com/Power-Switch/PowerSwitch_Android/blob/8b4e20859303c5cf225e41e5b1149e4a55aa39dd/Smartphone/src/main/java/eu/power_switch/obj/receiver/device/intertechno/CMR1000.java

Hier mein Code:
99_myUtils.pm:
sub intertech {
my ($c_master,$c_slave,$action) = @_;
my $c_ip = "192.168.178.142";
my $c_port = "49880";
my $c_A = "0";
my $c_G = "0";
my $c_repeat = "12";
my $c_pause = "11125";
my $c_tune = "89";
my $c_baud = "25";
my $c_speed = "4";
my $c_speedConnAir = "140";
my $c_tx433version = "1,";

my $c_bitLow="4";
my $c_bitHgh="12";

my $c_seqLow="$c_bitLow,$c_bitHgh,$c_bitLow,$c_bitHgh,";
my $c_seqHgh="$c_bitLow,$c_bitHgh,$c_bitHgh,$c_bitLow,";

my $c_AN = "$c_seqHgh$c_seqHgh";
my $c_AUS = "$c_seqHgh$c_seqLow";

my $c_additional = "$c_seqLow$c_seqHgh";
my $c_headConnAir = "TXP:0,0,6,11125,89,25,";
my $c_tailConnAir = "$c_tx433version$c_speedConnAir;";

my $c_seqMaster="";
my $c_seqSlave="";
my $SendData="";


my $filename = '/tmp/report.txt';
open(my $fh, '>>', $filename) or die "Could not open file '$filename' $!";
print $fh "Master $c_master\n";
print $fh "Slave  $c_slave\n";

#Setting master id
# A=0000
# B=1000
# C=0100 etc.
for($b=0; $b<4; $b++) {
    if (((ord($c_master) - ord("A")) >> $b) & 1) {
       $c_seqMaster="$c_seqMaster$c_seqHgh";
    } else {
       $c_seqMaster="$c_seqMaster$c_seqLow";
    }
}


#Setting slave id
# 1=0000
# 2=1000
# 3=0100 etc.
for($b=0; $b<4; $b++) {
    if (((ord($c_slave) - ord("1")) >> $b) & 1) {
       $c_seqSlave="$c_seqSlave$c_seqHgh";
    } else {
       $c_seqSlave="$c_seqSlave$c_seqLow";
    }
}

print $fh "Master $c_seqMaster\n";
print $fh "Slave  $c_seqSlave\n";

if($action eq "on") {
        $SendData = "$c_headConnAir$c_seqMaster$c_seqSlave$c_additional$c_AN$c_tailConnAir";
    } else {
        $SendData = "$c_headConnAir$c_seqMaster$c_seqSlave$c_additional$c_AUS$c_tailConnAir";
    }

print $fh $SendData;

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();
}


fhem.cfg:

define Lampe_Tisch dummy
attr Lampe_Tisch alias Lampe Wohnzimmertisch
attr Lampe_Tisch eventMap BI:on B0:off
attr Lampe_Tisch room Wohnzimmer
attr Lampe_Tisch setList state:on,off
define Lampe_Tisch_ntfy notify Lampe_Tisch:.* {\
    my $master = "A";;\
    my $slave = "2";;\
    my $v=Value("Lampe_Tisch");;\
    if ($v eq "on") {intertech("$master","$slave","on")};;\
    if ($v eq "off") {intertech("$master","$slave","off")};;\
    }


Damit sollte es einfach sein, jegliches von Power-Switch unterstütze Device nach FHEM zu "portieren".
Habe das auch mal auf Github hochgeladen: https://github.com/steffensperling/fhem

Grüße
Steffen
Titel: Antw:Connair über FHEM steuern
Beitrag von: andreas0003 am 08 Dezember 2016, 13:54:45
Hallo,

ich kann nun dank Post#125 meine brennenstuhl RCR1000N mit dem Conair steuern. Vielen Dank dafür!

Nun stehe ich nur noch vor dem Problem, das wenn ich auf ON schalte die Steckdosen ausgehen, wenn ich auf OFF schalte gehen sie an. Verdrehte Welt also.

Hat dieses Problem noch jemand, bzw. wie kann ich es denn lösen.

Vielen Dank für eure Mithilfe. Bin leider noch lange nicht so fit in FHEM.

***********
Lösung gefunden: Ich habe die Steckdose einfach nochmals neu eingerichtet. Dann hat es funktioniert :-)
***********

VLG
Andreas
Titel: Antw:Connair über FHEM steuern
Beitrag von: Kaltesbier am 04 Februar 2017, 15:52:23
Kannst du mir bitte schreiben wie du es hinbekommen hast?
Habe Auch einen ConnAir und auch die Brennstuhl 1000 Dosen.

Vielleicht kannst du mir auch deine 99_myUtils.pm und die fhem.cfg zeigen.
Und eventuell erklären wie es andere auch hinbekommen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: eckonator am 10 Februar 2017, 23:01:51
Hallo zusammen, mein erster Post hier - wow!
Demnach bin ich auch ganz frisch mit FHEM unterwegs und schnell der Sucht an Möglichkeiten verfallen.
Dazu habe ich bei eBay den GWY 433 zusammen mit dem Funkschalt-Set RCS 1000 Comfort geschossen.
Nun lese ich mich gerade zum Thema Einbindung ein und will das Modul von Thomas nutzen. Dazu 2 Fragen:

1. Wohin muss ich die beiden Dateien ablegen? FHEM liegt in "/opt/fhem"
2. Ich habe ja die Hoffnung die alten Tevion Funkdosen ebenfalls einzubinden. Habe ich eine Chance und wie würdet ihr am besten vorgehen? Traumhaft wäre das Modul von Thomas zu erweitern.

Zu den Tevion Funkdosen habe ich hier die Codes gefunden: http://v3-1255.vlinux.de/mediawiki/index.php/Rflink
Meine Dosen sind zwar die 2013er Modelle, habe aber Hoffnung dass die Codes der 2012er Modelle gleich sind, ist das wahrscheinlich oder eher nicht?

Freue mich über jede Hilfe.
Gruß Markus
Titel: Antw:Connair über FHEM steuern
Beitrag von: eckonator am 12 Februar 2017, 23:37:11
Hi Kaltesbier,
meine erste Frage konnte ich mir schon selbst beantworten. Was ist zu tun?

1. Nimm die 2 Dateien von Thomas oben angehängt und lege sie in /opt/fhem/FHEM
2. Danach FHEM neustarten in der Weboberfläche eingeben "shutdown restart"
3. Dann die Brematic/Connair über das Modul anmelden: "define Brem_gw BREMATIC_LAN 192.168.178.123"
4. Nun kannst deine Brennenstuhl Dosen anmelden. Hier ein Beispiel von mir:



# Stehlampe
define Gaestezimmer_Stehlampe BREMATIC Brem_gw 10000 10000
attr Gaestezimmer_Stehlampe IODev Brem_gw
attr Gaestezimmer_Stehlampe genericDeviceType light
attr Gaestezimmer_Stehlampe group Lichter
attr Gaestezimmer_Stehlampe room Beleuchtung,Gaestezimmer



10000 10000 musst du gemäß der Dip Schalter anpassen (Master/Slave).

Danke für das tolle Modul an der Stelle :)
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 03 Oktober 2017, 17:09:54
Hallo zusammen,
ich bin absoluter Anfänger mit fhem und arbeite mich noch ein.
Zu meiner Test Konfiguration:
Ich habe mir auf einem virtuellen Windows 7 ein fhem aufgesetzt, was auch erst einmal soweit ohne Probleme funktioniert.
Zudem habe ich von Brennenstuhl das GWY 433 und dazu lernbare Brennenstuhl  RCP3600 IP44 Funksteckdosen. Zusätzlich habe ich mir die App SteckerPRO geholt sowohl für mein IPhone wie auch für den PC.  Das Brennenstul GWY lässt sich mit der SteckerPRO App auch problemlos steuern bzw. ich kann damit sowohl vom PC aus, wie auch von meinem Handy aus die Steckdosen schalten.
Nun ist aber mein Ziel das ganze noch komfortabler mit fhem auf Dauer zu steuern, denn mein Ziel ist es, das ich später auch einige Steckdosen Zeit gesteuert betreiben möchte oder sogar mit Sprache wie zum Beispiel mit Alexa  steuern möchte.
Aber bevor ich Zeitsteuerung oder Sprachesteuerung angehe, muss ich erst einmal fhem soweit haben, dass meine Steckdosen bzw. das Brennenstuhl GWY angesprochen wird.

Ich habe mir schon in viele Foren, Beiträge und auch Anleitungen mittlerweile durchgelesen. Aber ich hänge nun an einer Stelle fest und hoffe das man mir hier weiter hilft um wenigstens schon einmal die Steckdosen auch von fhem aus, An  und Aus zu anschalten.

Was schon funktionierte ist die Einbindung der Module ,,10_BREMATIC.pm" und ,,00_BREMATIC_LAN.pm", so wie es Tompsq (Thomas) in dem Post  #125 beschrieben hat.
Zumindest habe ich dieses 1 zu 1 übernommen und nur die IP Adresse von meinem Gateway angepasst. (Meine interne IP Adresse vom Brennenstuh GWY  ist: 192.168.2.151 Port 49880)
Nun kann ich sehen wenn ich auf ,,On" oder ,,off" klicke von dem  Schalter SchaltsteckdoseBrematic, das mein Brennenstuhl GWY auch angesprochen wird. Zumindest leuchtet dann kurz die blaue Lampe an dem GWY auf.
Das Problem ist aber, das ich lernbare Brennenstuhel  RCP3600 IP44 Schaltsteckdosen habe und weis so nicht welchen Code die haben?
Auch hier hatte ich nun versucht mich weiter einzuarbeiten und habe dann mit Wireshark und dem Programm Steckerpro am PC gearbeitet und mir die TXP Codes ermittelt die an die Schaltsteckdosen gesendet werden.

So ist z.B. für eine Schaltsteckdose der TXP Code für An:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;
Und für Aus:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2;

Mein Problem ist nun wie bekomme ich diese nun in Fhem eingebunden bzw. kann diese in die Master und Slave Codierung umwandeln, damit ich auch die Schaltsteckdosen in fhem angelegt bekomme und von dort aus steuern kann?
Über Hilfe bin ich sehr dankbar, denn ich sehe vermutlich den Wald vor laute Bäumen im Moment nicht mehr.
Grüße
Sven
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Oktober 2017, 12:35:13
Hallo sven1973

du kannst ja vielleicht von der Fernbedienung alle Codes aufzeichnen und dann in einem Dummy definieren.

so ähnlich:

if ($state eq "on")
{
  system("echo \"TXP:*code für on*,;\" | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP:*code für off*,;\" | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 05 Oktober 2017, 20:31:44
Hallo Rippi,
danke für eine Antwort. Aber als Anfänger verstehe ich noch nicht ganz wo ich den Code eintragen muss?
Kannst Du mir vielleicht das was ich genau machen soll schritt für schritt erklären?
Einen Schalter als Dummy in fehm anlegen mit z.B. Den Befehl:
define Wohnzimmer1  dummy
bekomme ich hin.
Aber wie kann ich nun zu diesem Dummy meinen passenden ausgelesenen TXP Code zu diesem Schalter Dummy zu ordnen, so dass er passend reagiert wenn ich ich ein und aus schalte.
Der Schalter muss dann auch diesen Code passend an Brennenstuhl GWY weiter geben, damit dann die Schaltsteckdose reagiert.
Ich hoffe Du kannst es mir als Anfänger erklären, damit ich das umsetzen kann.
Grüße
Sven
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Oktober 2017, 21:35:15
Hallo sven1973

so ähnlich sollte es aussehen:

Leider ungetestet!!

define SchalterA dummy
attr SchalterA devStateIcon on:li_wht_on off:li_wht_off
attr SchalterA eventMap BI:on B0:off
attr SchalterA room Wohnzimmer
attr SchalterA setList state:on,off


define SchalterA_ntfy notify SchalterA:.* {\
    my $v=Value("SchalterA");;\
    if ($v eq "on") ({system("echo TXP:*code für on*,; | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null")});;\
    if ($v eq "off") ({system("echo TXP:*code für off*,; | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null")});;\
    }
attr SchalterA_ntfy room Wohnzimmer


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 05 Oktober 2017, 23:10:58
Hallo Rippi,
ich stelle mich vermutlich total ungeschickt an?
Die ersten Codes bzw. Befehle sind mir klar, die kann ich in der fhem Eingabe direkt eintippen und der Schalter wird direkt angelegt. Zum testen habe ich auch einfach erste einmal Deine Vorgabe 1 zu 1 übernommen. Heißt in der fhem.cfg Datei sind dann auch die eintragungen gekommen und ich habe den Raum Wohnzimmer mit dem SchalterA nun erhalten.
Aber wie gehe ich nun mit Deiner zweiten Code Vorgabe vor?
Muss ich diese in die Datei 99_myUtils.pm eintragen ?
Wenn ich Dich richtig verstehe, dann müsste ich meinen TXP Code in Deiner Vorgabe dann auch so eintragen:

define SchalterA_ntfy notify SchalterA:.* {\
    my $v=Value("SchalterA");;\
    if ($v eq "on") ({system("echo TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;,; | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null")});;\
    if ($v eq "off") ({system("echo TXP0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2;,; | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null")});;\
    }
attr SchalterA_ntfy room Wohnzimmer


Meine ausgelesener Code mit Wireshark zum testen ist:
für An:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;
Und für Aus:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2;
Mit diesem Code möchte ich erst mal testen. Wenn ich dann den Zusammenhang auch verstehe, kann ich die Schalter und auch alle anderen weiteren Codes von meinen Funksteckdosen in fhem einbauen und dann von fhem aus das Brennenstuhl GWY steuern, was dann wiederum die Schaltsteckdosen einschaltet.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 06 Oktober 2017, 08:51:21
Hallo sven1973,

der zweite Teil ist ein Notify und  soll auch in die fhem.cfg.

Du kannst ja erst einmal folgendes eingeben:

define SchalterA_ntfy notify SchalterA:.* {}

und anschließend dann den Code in der Klammer in die Definition noch einfügen.

oder versuch einmal folgenden Befehl in Fhem einzugeben und schau ob die Steckdose schaltet:
Natürlich mit deiner IP und Port!!!

{ system("echo \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;; \" | nc -u IP-Adresse Port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null") }


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 08 Oktober 2017, 15:57:28
Hallo Rippi,
Ich bin jetzt erst dazu gekommen mich mit Deinen weiteren vorgeschlagenen Tipps zu beschäftigen.
Leider immer noch ohne Erfolg.
Gebe ich folgenden Code wie von Dir vorgeschlagen in Fhem ein:
{ system("echo \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;; \" | nc -u 192.168.2.151 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null") }

Da bekomme ich dann in Fhem die Fehlermeldung:   Global symbol "$pid" requires explicit package name (did you forget to declare "my $pid"?) at (eval 131) line 1.

Ich habe auch die Codes wie von Dir in dem Ntfy unter DEF eingetragen.
Anschließend habe ich mir auch mit einem Editor einmal die eintragungen in der fhem.cfg angeschaut.

Was ich nun nicht verstehe, ich habe zum Testen auch mein Brennenstuhl GWY eingebunden mit dem Modul von Tompsq (Thomas) wie in dem Post  #125 beschrieben.
Wenn ich nun den Schalter SchaltsteckdoseBrematic betätige, dann leuchtet auch die blaue LED am Bennenstuhl GWY kurz auf. Heißt mit anderen Worten, dann wird auch das Brennstuhl GWY angesprochen. Allerdings natürlich mit einem falschen Bit Code.
Da ich selber lernbare Brennenstuhl Schaltsteckdosen habe und weis natürlich nicht welche Code Reheinfolge ich setzen muss, weil die ja keine Jumper haben, habe ich mir die Arbeit mit Wireshark gemacht.
Ich habe dann den TXP Code mit Wireshark und der SteckerPro am PC mir mitgeschnitten. Denn mit der SteckerPro App kann ich schon über das Brennenstuhl GWY ohne Probleme meine Schaltsteckdosen steuern.

Nutze ich nun die von Dir vorgeschlagenen einstellungen des SchalterA, wird das Brennenstuhl GWY nicht angesprochen, es leuchtet keine blaue LED kurz auf. 
Ich bekomme aber auch keine Fehlerausgabe und im Event Monitor kann ich sehen, das ein bzw. ausgeschaltet wird. Mehr aber auch nicht.
Das Brennestuhl GWY hat bei mir die IP Adresse 192.168.2.151 und der Port ist die 49880.
Was kann noch falsch sein? Oder kann man den TXP Code umwandeln in eine passende Bit Folge, so dass ich die passenden Bit einstellen kann, wie es bei der SchaltsteckdoseBrematic der Fall ist?
Heißt dann z.B.: den Befehl  define SchaltsteckdoseBrematic BREMATIC Brem_gw  ?????  ?????

Hier einmal ein Auszug aus meiner  fhem.cfg, wo von der unter Teil mit SchalterA nach Deiner Anleitung entstanden ist:

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define Brem_gw BREMATIC_LAN 192.168.2.151 49880
define SchaltsteckdoseBrematic BREMATIC Brem_gw 01100 01000
attr SchaltsteckdoseBrematic IODev Brem_gw
attr SchaltsteckdoseBrematic room Teich
#
define SchalterA dummy
attr SchalterA devStateIcon on:li_wht_on off:li_wht_off
attr SchalterA eventMap BI:on B0:off
attr SchalterA room Wohnzimmer
attr SchalterA setList state:on,off
define SchalterA_ntfy notify SchalterA:.*|SchalterA:state:.*|define SchalterA_ntfy notify SchalterA:.* {\my $v=Value("SchalterA");;;;\
    if ($v eq "on") ({system("echo TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2,;; | nc -u 192.168.2.151 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null")});;;;\
    if ($v eq "off") ({system("echo TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,;; | nc -u 192.168.2.151 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null")});;;;\
    }\
attr SchalterA_ntfy room Wohnzimmer
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 08 Oktober 2017, 19:20:58
Hallo sven1973

probiere mal folgendes:

trage in die 99_myUtils.pm ein:

sub connairSchalterA {
my $c_ip = "192.168.2.151";
my $c_port = "49880";
my ($state) = "$_[0]";
if ($state eq "on")
{
  system("echo \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}


und in der fhem.cfg:

define SchalterA dummy
attr SchalterA devStateIcon on:li_wht_on off:li_wht_off
attr SchalterA eventMap BI:on B0:off
attr SchalterA room Wohnzimmer
attr SchalterA setList state:on,off

define SchalterA_ntfy notify SchalterA:.* {\
    my $v=Value("SchalterA");;\
    if ($v eq "on") {connairSchalterA("on")};;\
    if ($v eq "off") {connairSchalterA("off")};;\
    }
attr SchalterA_ntfy room Wohnzimmer


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 08 Oktober 2017, 23:48:54
Hallo Rippi,
danke für Deine Geduld mit mir und Deinen Erklärungen.
Ich habe Deine vorgaben 1 zu 1 in der fhem.cfg und auch in der 99_myUtils.pm übernommen.
Ich habe dann fhem auch zu Sicherheit einmal neu gestartet.
Leider geht es immer noch nicht. Aber ich bekomme nun in der Logdatei wenigstens einen Fehler, der darauf schließt, dass ich kein ,,nc" Befehl schicken kann.
Liegt es daran das ich fhem auf einem Windows 7 Betriebssystem aufgesetzt habe und nicht auf ein Linux Betriebssystem?

Hier mal die Fehlermeldung aus dem Log, wenn ich nun den SchalterA auf On und Off schalte:

2017.10.08 23:36:47 1: PERL WARNING: Terminating on signal SIGINT(2)
2017.10.08 23:36:48 1: starting in console mode
2017.10.08 23:36:48 1: Including fhem.cfg
Der Befehl "nc" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "nc" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Was mich nur wundert, mit den Modul von Tompsq (Thomas) wie in dem Post  #125 beschrieben, bekomme ich wenigstens das Brennenstuhl GWY auch angesprochen.
Danke noch mal für Deine Geduld und auch Hilfe die Du mir gibst.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 Oktober 2017, 07:55:31
Hallo sven1973,

dir fehlt netcat für Windows (nc).

https://github.com/diegocr/netcat (https://github.com/diegocr/netcat)

dann sollte es funktionieren.

oder in der 99_myUtils.pm:

sub connairSchalterA {
my ($state) = "$_[0]";
my  $SendData="";

    if($state eq "on") {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2";
    } else {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2";
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.2.151:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


Dass es mit dem Modul von Thomas soweit funktioniert (Gateway angesprochen) liegt nur daran, dass die IP und der Port stimmt. Wenn du aus deiner Bitfolge
die einzelnen Teile (maste,slave, tune,baud, ....) extrahieren könntest, würde deine 99_myUtils so aussehen:

sub brennenstuhl ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.2.151:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}

Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 09 Oktober 2017, 19:18:11
Hallo Rippi,
Danke für Deine super schnellen Antworten.
Sobald ich zu Hause bin, werde ich testen und Deine Empfehlung testen. Mit dem Thema netcat hatte ich mir schon fast gedacht gehabt und hatte schon angefangen gehabt danach zu googeln. Aber dann würde es mir gestern doch zu spät. Insofern schon mal Danke für den Link.
Ich werde berichten, sobald ich netcat installiert habe.

Das Thema mit der Bitfolge hatte ich auch schon die ganze Zeit immer im Kopf. Aber bisher wüßte ich nicht wie ich mir aus dem Ausgelesenen TXP Code die Bitfolge ermitteln kann? Zumindest finde ich da auch nichts zu im Internet. Wenn Du da auch einen Tipp hast, ist dieses auch ein Ansatz und ich könnte dann meine Schalter mit dem Modul von Thomas auch einbinden. Aber vorausgesetzt ist natürlich das ich die richtige Bitfolge ermittele.

Ich werde später erstmal den Ansatz mit netcat angehen und berichten.
Erst einmal Danke das Du mir hilfst.
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 09 Oktober 2017, 21:52:46
Hallo Rippi,
erste kurze und schnelle Rückantwort: "Du bist der beste! Danke!" :D
Ich habe auf die schnelle für den ersten Test nur entschieden mal eben die 99_myUtils.pm 1 zu 1 zum testen von Dir zu übernehmen.
Und siehe da, nun schaltet auch die Schaltsteckdose.
Somit sind meine ausgelesenen Codes die ich über Wireshark gemacht habe schon einmal richtig!
Der Bringer bei mir ist dann der Befehl $SendData = "TXP: .........
Das läuft auch wenn man Fhem in einem Windows installiert hat und Netcat (nc) hat. Wobei die Variante mit Netcap werde ich auch noch mal testen.
So viel eben schon einmal auf die Schnelle als Antwort das es mit Deiner zu Letzt angegeben 99_myUtils.pm funktioniert und ich nun schon mal Dank Dir auf dem richtigen weg bin.
Vielleicht hilft es auch dem ein oder anderen User der hier mit ließt.
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 09 Oktober 2017, 22:57:30
Hallo Rippi,
zweite Rückmeldung zu Netcat!
Ich habe mir die nc.exe von vor 4 Jahren auf dem angegebenen Link von Dir herunter geladen und in das Verzeichnis c:\Windows\System32 mit abgelegt auf dem indows 7 PC, wo ich fhem drauf am laufen habe..
Dann habe ich sicherheitshalber fhem einmal neu gestartet.
Allerdings funktioniert Deine von gestern angegebene  99_myUtils.pm aus Deiner Antwort #142 dann immer noch nicht.
Aber um sicher zu gehen ob der nc Befehl überhaupt funktioniert, habe ich mir dann eine Dos Konsole auf dem PC wo Fhem drauf ist aufgemacht und dort einmal folgenden Befehl eingegeben direkt unter c:\

echo \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;\" | nc -u 192.168.2.151 49880 & pid=$!

Mit diesem Befehl spreche ich zwar das Brennenstuhl GWY an, heißt die blaue LED flackert  4 mal ganz schnell auf und das war es. Aber meine Schaltscheckdose die ich aktuell zum testen nutze, schaltet leider nicht ein.

Somit ist glaube der bessere Weg für mich es über den Befehl $SendData = "TXP: .........
weiter umzusetzen. Heißt mit der 99_myUtils.pm aus Deiner Antwort #144 und den eintragungen in der fhem.cfg aus Deiner Antwort #142.

Es sei denn ich entscheide mich eines Tages dazu, dass ich mir einen raspberry pi zulege und dann somit Linux als Betriebssystem habe. Aber im Moment zum testen und um mich erst einmal mit fhem weiter zu beschäftigen werde ich es auf meinem virtuellen Windows 7 Testsystem lassen und kann mich nun an die nächsten Aufgaben machen.

Die nächsten Aufgaben werden sein:
Zeitsteuerung die ich gerne einbauen möchte, damit die Schalsteckdosen später automatisch zu gewissen Zeiten gesteuert werden, denn das kann diese SteckerPro App nicht  und ich aber dennoch manuell eingreifen kann und auch trotzdem nach wie vor die StecklerApp nutzen kann.
Und dann zum Schluss möchte ich mich noch mit der Spracheingabe beschäftigen, um z.B. über Siri oder Alexa die Steckdosen ansprechen.

Danke noch mal, das Du mir bei dem ersten Weg geholfen hast, damit ich aus fhem heraus das Brennenstuhl GWY 433 MHz ansprechen kann und so nun auch jede beliebige Schaltsteckdose die auch lernbar ist, steuern kann. Danke!
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 09 Oktober 2017, 23:17:57
Hallo sven1973,

schön, dass es soweit schon einmal funktioniert.
Bei der Version mit netcat habe aus Versehen 2-mal den Code für on angegeben, vielleicht ist das das Problem, das es nicht schaltet.

Vielleicht könntest du den Code von einer zweiten Steckdose aufzeichnen, damit man den Code für on, master und slave extrahieren kann.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 09 Oktober 2017, 23:37:01
Hallo Rippi 46,

doch sie schaltet ein und aus. mit folgender 99_myUtils.pm von Dir:
sub connairSchalterA {
my ($state) = "$_[0]";
my  $SendData="";

    if($state eq "on") {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2";
    } else {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2";
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.2.151:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


Aber wenn ich in der fhem versuche direkt in der Befehlszeile folgenden Befehl zu testen:
echo \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;\" | nc -u 192.168.2.151 49880 & pid=$!
Dann bekomme ich ein Fehler das er "echo" nicht kennt.
Darauf hin habe ich direkt die Konsole von dem Windows 7 PC geöffnet wo ich auch fhem drauf am laufen habe und Netcat installiert habe und dort den Befehl noch einmal abgeschickt.
Dann wenn ich es über die direkte Konsole mache, flackert die blaue LED vom Brenenstuhl GWY 4 mal kurz auf. Aber die Schaltsteckdose schaltet nicht.  :-\
Einen weiteren TXP Code von meinen weiteren Steckdosen lese ich Morgen noch einmal gerne aus, denn das muss ich jetzt ja sowieso machen, wenn ich meine anderen Steckdosen auch schalten möchte.
Die weiteren TXP Codes die ich dann ausgelesen habe, stelle ich dann Morgen gerne Dir zu Verfügung.
Noch mal danke für Deine Hilfe und einen schönen Restabend. Bis Morgen dann.
Gruß Sven
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 10 Oktober 2017, 09:26:55
Hallo sven1973

Zitatecho \"TXP: 0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;\" | nc -u 192.168.2.151 49880 & pid=$!
so kannst du den Befehl nicht in die Kommandozeile von fhem eingeben.
fhem kennt den Systembefehl echo nicht.

Du musst fhem sagen, das jetzt ein Systembefehl kommt. Also so:

{ system ( "echo \" TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2 \" | nc -u 192.168.2.151 49880 >/dev/null >/dev/null" ) }

Das Problem bei der Sache ist nur, dass sich netcat nicht beendet und dadurch dein fhem hängt. Du musst dann den Prozess nc "abschießen"

Am besten ist von jeder Steckdose die on-off-codes aufzuzeichnen, um dadurch Rückschlüsse auf die einzelnen Parameter zu bekommen.

Wenn das mit dem udp-Protokoll aber funktioniert, dann brauchst du kein netcat.

Falls alle Stricke reißen:
könnte man in der fhem.cfg folgendes definieren:

define SchalterA dummy
attr SchalterA devStateIcon on:li_wht_on off:li_wht_off
attr SchalterA eventMap BI:on B0:off
attr SchalterA room Wohnzimmer
attr SchalterA setList state:on,off

define SchalterA_ntfy notify SchalterA:.* {\
    my $v=Value("SchalterA");;\
    if ($v eq "on") {connairSchalter("TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2")};;\
    if ($v eq "off") {connairSchalter("TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2")};;\
    }
attr SchalterA_ntfy room Wohnzimmer


und in der myUtils.pm mit netcat:

sub connairSchalter {
my ($SchalterCodeONOFF) = "$_[0]";
my $c_ip = "192.168.2.151";
my $c_port = "49880";
system("echo \"$SchalterCodeONOFF;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}


oder mit udp:

sub connairSchalter {
my ($SchalterCodeONOFF) = "$_[0]";
my  $SendData="";

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

$socket->close();

}



Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 10 Oktober 2017, 23:04:06
Hallo Rippi46,
danke für Deine Antwort, die muss ich mir gleich noch einmal ganz in Ruhe anschauen.
Deinen Vorgeschlagenen Systembefehl werde ich in fehm auch gleich noch einmal in Ruhe testen.
Von netcat werde ich abstand nehmen, weil genau das was Du geschildert hast, habe ich auch bereits in anderen Foren Beiträgen gelesen, das sich dann ggf.  fhem aufhängt.

Aber ich war in der Zwischenzeit nicht untätig gewesen und habe zum einen meine insgesamt fünf Brennenstuhl RCR3600IP 44 Schaltsteckdosen mit Wireshark ausgelesen, so dass ich hier jetzt nun die Ein- und Ausschalt TXP zusammen habe.

Vielleicht noch einmal ausführlich zu meinem Projekt,  womit ich mich beschäftige vorab, damit Du einen genaueren Eindruck meines Vorhabens bekommst:
Diesen Sommer habe ich mir im Garten eine größere und tiefere Teichanlage gebaut. Und diese möchte ich nun mit unterschiedlichen Spots (Licht) und auch Wasserspielen ausstatten. Deswegen auch die Brennenstuhl RCR3600IP 44 Schaltsteckdosen, damit ich die draußen verwenden kann.
Im Haus selber habe ich noch ein paar Baumarkt Schaltsteckdosen, die ich für die Fernsehanlage oder Stehlampe & Co verwende. Die Steckdosen vom Baumarkt habe ich auch bereits über das Brennenstuhl GWY am laufen und kann die mit der SteckerPro App steuern. Was mir eigentlich auch erst einmal so ausreicht. Vielleicht werde ich diese aber auch später noch mal in fhem zusätzlich mit einbinden?
Aber an meinem neuen Gartenteich möchte ich mir gewisse Senaren programmieren, das zu gewissen Uhrzeiten gewisse Lichter angehen oder auch z.B. die Pumpe für den Wasserfall. Und so bin ich zu fhem gekommen um mir das dann selber nach und nach nun so zu programmieren wie ich es gerne möchte. Denn genau solche Zeitsteuerungen kann die SteckerPro App nicht und ist auch nicht so flexibel wie fhem.
Aber ich muss gestehen, ich bin noch ein absoluter Anfänger mit fhem und arbeite mich nun mehr und mehr da rein.
So das zu dem Projekt, damit Du Dich gleich nicht wunderst wie ich meine Schaltsteckdosen in Fhem bezeichnet habe bzw. für mich genannt habe.
Nun aber zurück zum Thema.

Hier mal wie gestern Abend versprochen, meine ausgelesenen TXP Codes von den fünf Brennenstuhl RCR3600IP 44 die ich erst einmal habe:
Ausgelesene TXP Codes mit Wireshark:

1 Wasser-Beleuchtung:
An:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,1,2,1,2,2,1,1,2,1,2,2,1,2,1,1,2,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;

Aus:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1,1,2,1,2,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2;

Wasser-Beleuchtung-2:
An:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2

Aus:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2;


Scheibenbeleuchtung:
An:
TXP:0,0,6,0,505,25,6,14,1,2,2,1,1,2,2,1,2,1,1,2,1,2,1,2,2,1,1,2,2,1,1,2,2,1,2,1,2,1,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2;

Aus:
TXP:0,0,6,0,505,25,6,14,1,2,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,1,2,1,2,2,1,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2;


Unterwasserbeleuchtung-1:
An:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,2,1,2,1,1,2,1,2,1,2,2,1,2,1,2,1,2,1,1,2,1,2,2,1,2,1,2,1,2,1,1,2,2,1,1,2,2,1,2,1,1,2,1,2;

Aus:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,2,1,2,1,2,1,1,2,1,2,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,2,1,2,1,1,2,1,2,1,2,2,1,2,1,1,2,1,2;


Unterwasserbeleuchtung-2:
An:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,2,1,2,1,1,2,1,2,1,2,2,1,2,1,2,1,1,2,2,1,1,2,2,1,2,1,1,2,1,2;

Aus:
TXP:0,0,6,0,505,25,6,14,2,1,1,2,2,1,1,2,1,2,2,1,1,2,1,2,2,1,1,2,1,2,2,1,2,1,2,1,1,2,2,1,2,1,1,2,1,2,1,2,2,1,2,1,1,2,1,2;


Für Dich zur Info, wir hatten die letzten Tage immer schon getestet mit der Steckdose Wasser-Beleuchtung-2. Du hattest diese SchalterA in Deinen Vorgaben genannt und in den Raum Wohnzimmer gelegt.
Dieses habe ich bereits mit alias auf Wasser-Beleuchtung-2 umgeändert und auch in den Raum Teich gelegt.
Zusätzlich habe ich mich dann noch etwas weiter mit Deinen Vorgaben beschäftigt, so dass ich nun auch schon eine weitere Schaltsteckdose erfolgreich über fhem steuern kann.
Es ist bei mir Wasser-Beleuchtung-1.

Hier mal meine kompletten Einträge in der fhem.cfg, wie sie aktuell für die beiden Schaltsteckdosen aus sieht. Ach so, dass was ich zum Testen von Thomas hatte, habe ich aktuell auch noch zum testen in der fhem.cfg gelassen:

attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd none
attr global nofork 1
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global

define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define Brem_gw BREMATIC_LAN 192.168.2.151 49880
###Schalter zum Testen nicht in Funktion nur mit einem Code
define SchaltsteckdoseBrematic BREMATIC Brem_gw 01100 01000
attr SchaltsteckdoseBrematic IODev Brem_gw
attr SchaltsteckdoseBrematic room Test_Raum_Brematic
#
###Schalter zum Testen nicht in Funktion nur mit einem Code
define Scheibe BREMATIC Brem_gw 11111 11111
attr Scheibe IODev Brem_gw
attr Scheibe room Test_Raum_Brematic
#
#### 2-Wasser-Beleuchtung
define SchalterA dummy
attr SchalterA alias Wasser-Beleuchtung-1
attr SchalterA devStateIcon on:li_wht_on off:li_wht_off
attr SchalterA eventMap BI:on B0:off
attr SchalterA room Teich
attr SchalterA setList state:on,off

define SchalterA_ntfy notify SchalterA:.* {\
    my $v=Value("SchalterA");;\
    if ($v eq "on") {connairSchalterA("on")};;\
    if ($v eq "off") {connairSchalterA("off")};;\
    }

#### 2-Wasser-Beleuchtung
define SchalterB dummy
attr SchalterB alias Wasser-Beleuchtung-2
attr SchalterB devStateIcon on:li_wht_on off:li_wht_off
attr SchalterB eventMap BI:on B0:off
attr SchalterB room Teich
attr SchalterB setList state:on,off

define SchalterB_ntfy notify SchalterB:.* {\
    my $v=Value("SchalterB");;\
    if ($v eq "on") {connairSchalterB("on")};;\
    if ($v eq "off") {connairSchalterB("off")};;\
    }


Und hier die 99_myUtils für die beiden Schaltsteckdosen:
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

sub connairSchalterA {
my ($state) = "$_[0]";
my  $SendData="";

    if($state eq "on") {
        $SendData = "TXP::0,0,6,0,505,25,6,14,2,1,1,2,1,2,1,2,1,2,2,1,1,2,1,2,2,1,2,1,1,2,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2";
    } else {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1,1,2,1,2,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2";
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.2.151:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}
sub connairSchalterB {
my ($state) = "$_[0]";
my  $SendData="";

    if($state eq "on") {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2";
    } else {
        $SendData = "TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2";
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'192.168.2.151:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}
1;


Nun schaue ich aber erst noch einmal ganz in Ruhe mir Deine letzte Antwort durch und schaue was ich mir aus Deinen letzten Vorschlägen auch noch weiter erarbeiten kann.
Noch mal Danke für Deine Hilfe.
Grüße
Sven


Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 10 Oktober 2017, 23:27:57
Hallo Rippi46,
kurz zu Deiner Info noch.
Ich habe so eben noch mal Den von Dir vorgeschlagenen System Befehl in fhem direkt übernommen:
{ system ( "echo \" TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2 \" | nc -u 192.168.2.151 49880 >/dev/null >/dev/null" ) }

Wenn ich das mache und den Befehl abschicke, gibt mir fhem folgenden Info direkt aus:

65280

Aber die Schaltsteckdose schaltet nicht.
In der Log Datei selber steht aber kein Fehler oder irgend ein neuer Eintarg drin.
Soviel noch als kurze Rückantwort.
Grüße
Sven
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 11 Oktober 2017, 10:20:30
Hallo Sven,

vermutlich liegt es daran, das unter Windows das etwas anders funktioniert. Vielleicht funktioniert die Pipe nicht richtig und der Code für die Steckdose wird nicht übergeben. Aber dem würde ich keine Bedeutung mehr schenken.

Ich würde auch die Definition in der 99_myUtils.pm eher allgemein halten.

Mein Vorschlag:

fhem.cfg:
define SchalterA dummy
attr SchalterA alias Wasser-Beleuchtung-1
attr SchalterA devStateIcon on:li_wht_on off:li_wht_off
attr SchalterA eventMap BI:on B0:off
attr SchalterA room Teich
attr SchalterA setList state:on,off

define SchalterA_ntfy notify SchalterA:.* {\
    my $v=Value("SchalterA");;\
    if ($v eq "on") {connairSchalter("TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,1,2,1,2,2,1,1,2,1,2,2,1,2,1,1,2,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2")};;\
    if ($v eq "off") {connairSchalter("TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1,1,2,1,2,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2")};;\
    }
attr SchalterA_ntfy room Teich

define SchalterB dummy
attr SchalterB alias Wasser-Beleuchtung-2
attr SchalterB devStateIcon on:li_wht_on off:li_wht_off
attr SchalterB eventMap BI:on B0:off
attr SchalterB room Teich
attr SchalterB setList state:on,off

define SchalterB_ntfy notify SchalterB:.* {\
    my $v=Value("SchalterB");;\
    if ($v eq "on") {connairSchalter("TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2,1,2")};;\
    if ($v eq "off") {connairSchalter("TXP:0,0,6,0,505,25,6,14,2,1,1,2,1,2,2,1,1,2,1,2,1,2,2,1,2,1,1,2,2,1,1,2,1,2,2,1,1,2,2,1,2,1,1,2,2,1,1,2,1,2,1,2,1,2,1,2")};;\
    }
attr SchalterB_ntfy room Teich


analog dazu dann die anderen Schalter.

und die 99_myUtils.pm:
sub connairSchalter {
my ($SchalterCodeONOFF) = "$_[0]";
my  $SendData="";

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

$socket->close();

}

dann musst du nicht jeden Schalter auch in der 99_myUtils.pm definieren.

Die Codes der Schalter sehen ziemlich wirr aus.
Die ersten 8 Stellen nach der allgemeinen Definition(Repeat,Pause,Tune,Baud) und die letzten 10 Stellen sind sowohl bei on als auch bei off identisch (pro Schalter).
Die Stellen 19 un 20 von Hinten sind vermutlich der On bzw off Code. Der Rest ist nicht auf Anhieb erklärbar.
Deswegen würde ich es wie oben beschrieben definieren.

Timer könnte man so definieren:

define T_SchalterA DOIF ([{sunset(-1800)}-00:00:00])(set SchalterA on) DOELSE (set SchalterA off)
attr T_SchalterA room Teich,Timer

also 30 Minuten vor Sonnenuntergang einschalten und um 0:00Uhr wieder ausschalten.

Aber das ist wieder ein anderes Thema!

Gruß rippi

PS: habe es in meiner Konfiguration mit einem Schalter und dem TXP-String getestet. Hat einwandfrei funktioniert.


Titel: Antw:Connair über FHEM steuern
Beitrag von: sven1973 am 11 Oktober 2017, 22:12:16
Hallo Rippy46,

Dein Vorschlag ist super gut! Ich habe ihn getestet und er  funktionierte sofort  sehr gut!
Mit diesem Vorschlag ist die 99_myUtils.pm schön klein und die fhem.cfg auch übersichtlicher für mich als Fhem Anfänger.  Besten Danke dafür.

Aber eine Frage habe ich noch: Wofür hast Du die beiden notify Zeilen, ich meine die letzten Zeilen zu den jeweiligen Schalter gesetzt?

attr SchalterA_ntfy room Teich
attr SchalterB_ntfy room Teich


Denn die Schalter Wasser-Beleuchtung-1 und Wasser-Beleuchtung-2 funktionieren ja auch ohne diesen Befehl und ich hätte dann in der Raumübersicht ,,Teich" nur die dummy Schalter die ich sehe und nicht auch noch die notify.
Der Grund dafür erschließt sich mir im Moment noch nicht ganz, warum man das notify dort sehen sollte?

Aber ansonsten Top! Es funktionierte sofort. Danke!

Als nächstes werde ich dann auch mal mich mit der Zeitgeschichte beschäftigen und mit den zwei Schaltern ersteinmal testen. Wobei ich mir hier selber noch nicht ganz sicher bin, ob ich mit Sonnenuntergang arbeiten werde, oder einfach nur mit einer festen Ein- und Ausschalt  Zeiten? Wobei Du vermutlich recht hast, wenn ich mit einem Sonnenuntergang arbeite, dann ist es bei einer Teichbeleuchtung sehr sinnvoll, je nach Jahreszeit ist dann auch immer passend das Licht bzw. die Wasserspielbeleuchtung an und geht dann zu einer festen Uhrzeit aus.
Aber Thema Zeit gehört glaube nun hier nicht mehr in diesem Thema ,,Connair über FHEM steuern" oder bei mir müsste es heißen ,,Brennenstuhl GWY 433 MHz über FHEM steuern."  :)

Grüße Sven
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 11 Oktober 2017, 23:01:00
Hallo Sven,

ZitatAber eine Frage habe ich noch: Wofür hast Du die beiden notify Zeilen, ich meine die letzten Zeilen zu den jeweiligen Schalter gesetzt?

attr SchalterA_ntfy room Teich
attr SchalterB_ntfy room Teich

ich habe mir einfach angewöhnt alle Teile, die den Schalter betreffen auch in den gleichen Raum zu stecken.
Aber das ist künstlerische Freiheit. Natürlich funktioniert der Schalter auch ohne das das notify im gleichen Raum ist.

Schön, dass jetzt alles funktioniert.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 30 November 2017, 14:27:54
Hallo ihr Steckdosenspezalisten,

Meine Brennenstuhl Steckdosen habe ich schon vor gut einem Jahr mit Hilfe der Einträge in der my99_utils Methode und den entsprechenden Definitionen in FHEM integriert, läuft auch zuverlässig mit dem Brematic GWY433 Gateway.
Jetzt habe ich noch ein paar REV 8342 Steckdosen hier liegen, und würde die auch gerne über das Gateway schalten, hat da jemand einen Hinweis wie ich die ins System einbinden könnte?

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 30 November 2017, 15:14:41
Hallo RKronenberg,

wenn du die Möglichkeit hast die TXP Codes auszulesen, könntest du es vielleicht wie Sven konfigurieren.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 01 Dezember 2017, 15:58:23
Hallo Danke für die Antwort,

das sind die Steckdosen die auch im WiKi beschrieben sind.

REV Telecontrol
Die REV Telecontrol haben einen Dreh-Wahlschalter auf der Rückseite, mit dem sich der Hauscode (A - D) und der Gerätecode (1 - 3) bestimmen lässt.

Die Codierung ist dabei:

Hauscode   Stelle 1-4
A   1FFF
B   F1FF
C   FF1F
D   FFF1
Gerätecode   Stelle 5-7
1   1FF
2   F1F
3   FF1
Dazu (Stelle 8+9+10) noch drei statische Werte: 0FF.

Der Code für An ist FF, für Aus 00.

Beispiel:

define My_Switch IT 1FFF1FF0FF FF 00 für A1
Erfolgreich getestet mit CULfw V 1.49 CUL868.

jetzt wäre es schön wenn mich einer aufs Rad setzen würde...

Danke und Grüße
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 01 Dezember 2017, 17:05:40
Hallo RKronenberg,

versuche es mal mit diesen Einstellungen:

ZitatIch habe die Dinger aufgeschraubt und die Hardware analysiert: Es ist ein PT2272A L2 Decoder verbaut!
Wenn man die 10 Codeschalter zu "12345ABCED" umbeschriftet kann man die Steckdosen mit dem ELRO-Code
ansprechen. 8-)

hier ein Beispiel ohne Garantie

define LautsprecherBad dummy
attr LautsprecherBad alexaName lautsprecher
attr LautsprecherBad alexaRoom bad
attr LautsprecherBad alias Badlautsprecher
attr LautsprecherBad eventMap BI:on B0:off
attr LautsprecherBad genericDeviceType switch
attr LautsprecherBad group Lautsprecher
attr LautsprecherBad icon audio_volume_low
attr LautsprecherBad room Bad,Sound,alexa
attr LautsprecherBad setList state:on,off

define LautsprecherBad_ntfy notify LautsprecherBad:.* {\
    my $master = "10011";;\
    my $slave = "11000";;\
    my $v=Value("LautsprecherBad");;\
    if ($v eq "on") {elro("$master","$slave","on")};;\
    if ($v eq "off") {elro("$master","$slave","off")};;\
    }



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

sub elro ($$$){
my ($Master,$Slave,$action) = @_;
my  $SendData="";
my    $sA=0;
my    $sG=0;
my    $sRepeat=10;
my    $sPause=5600;
my    $sTune=350;
my    $sBaud=25;
my    $sSpeed=16;
my    $uSleep=800000;
my    $txversion=2;
my    $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
my    $TAIL=",$txversion,1,$sSpeed,;";
my    $AN="1,3,1,3,3";
my    $AUS="3,1,1,3,1";
my    $bitLow=1;
my    $bitHgh=3;
my    $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
my    $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";
my    $i=0;
my    $bit="";   
my    $msg="";

my  $bits=$Master;
    for($i=0; $i<length($bits); $i++) {   
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgM=$msg;
   
    $bits=$Slave;
   
    $msg="";
    for($i=0; $i<length($bits); $i++) {
        $bit=substr($bits,$i,1);
        if($bit=="0") {
            $msg=$msg.$seqLow;
        } else {
            $msg=$msg.$seqHgh;
        }
    }
my    $msgS=$msg;

    if($action eq "on") {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
    } else {
        $SendData = $HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
    }
my ($socket,$data);
#  We call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>'Deine GatewayIP:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 04 Dezember 2017, 14:52:44
Hallo,

Meine REV Telecontrol haben nur einen Drehschalter  A1 bis A3 .... D1 bis D3. Also insgesamt 12 mögliche Positionen.

Gruß Ralph.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 04 Dezember 2017, 15:10:29
Hallo RKronenberg,

versuche mal:

    master  slave
A1= 11111   11110
A2= 11110   11110
A3= 11111   01110

B1= 01111   11110
B2= 01110   11110
B3= 01111   01110


und dann im Code vom letzten post einsetzen.
IP von deinem Gateway nicht vergessen!

Gruß rippi

Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 04 Dezember 2017, 19:10:35
Hallo Rippi,

danke für deine aufopferungsvolle Hilfe, habe alles so eingebunden wie von dir beschrieben, das Gateway sendet auch irgendetwas, aber die Dosen schalten leider nicht.
noch irgendwelche Ideen?

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 04 Dezember 2017, 20:07:44
Hallo,

noch eins, ich hab mich mal auf der PowerSwitch Seite umgesehen, und dort diese Info's über die Telecontrol Stecker gefunden:

https://github.com/Power-Switch/PowerSwitch_Android/blob/8b4e20859303c5cf225e41e5b1149e4a55aa39dd/Smartphone/src/main/java/eu/power_switch/obj/receiver/device/rev/Telecontrol.java (https://github.com/Power-Switch/PowerSwitch_Android/blob/8b4e20859303c5cf225e41e5b1149e4a55aa39dd/Smartphone/src/main/java/eu/power_switch/obj/receiver/device/rev/Telecontrol.java)

vielleicht hilft das ja weiter, ich hab da mal versucht vergleiche anzustellen, komme aber nicht weiter.

Gruß Ralph


Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 04 Dezember 2017, 22:09:48
Ok das kann man vielleicht umsetzen.

Muss ich mir morgen mal anschauen.


Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Dezember 2017, 09:08:25
Hallo RKronenberg,

hier der erste Versuch:

define LautsprecherBad dummy
attr LautsprecherBad alexaName lautsprecher
attr LautsprecherBad alexaRoom bad
attr LautsprecherBad alias Badlautsprecher
attr LautsprecherBad eventMap BI:on B0:off
attr LautsprecherBad genericDeviceType switch
attr LautsprecherBad group Lautsprecher
attr LautsprecherBad icon audio_volume_low
attr LautsprecherBad room Bad,Sound,alexa
attr LautsprecherBad setList state:on,off

define LautsprecherBad_ntfy notify LautsprecherBad:.* {\
    my $master = "A";;\
    my $slave = "1";;\
    my $v=Value("LautsprecherBad");;\
    if ($v eq "on") {revtele("$master","$slave","on")};;\
    if ($v eq "off") {revtele("$master","$slave","off")};;\
    }


und die 99_revtele.pm

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

sub revtele {
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_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")
{
  system("echo \"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,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
else
{
  system("echo \"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,;\" | nc -u $c_ip $c_port & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
}



Leider vorerst nur mit netcat!

Und natürlich deine IP wieder eintragen.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Dezember 2017, 09:32:36
oder mit udp:


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=>'Deine IPadresse:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}



Gruß rippi

PS: Habe den Code noch einmal verändert. (12:54 Uhr)
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 05 Dezember 2017, 15:06:21
Wenn ich das in meine 99_myUtils.pm einsetze bekomme ich beim speichern folgenden Error:

Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 115. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 116. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 117. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 118. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 120. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 121. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 122. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 127. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 127. Global symbol "$pid" requires explicit package name at ./FHEM/99_myUtils.pm line 127. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 131. Global symbol "@c_bits" requires explicit package name at ./FHEM/99_myUtils.pm line 131. Global symbol "$pid" requires explicit package name at ./FHEM/99_myUtils.pm line 131.


Fehlt da was in meiner Installation?

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Dezember 2017, 15:11:10
Mach eine eigene 99_revteleUtils.pm

oder lasse

use strict;

weg; und eine Klammer war zu viel. (Hab es im Code korrigiert)

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 05 Dezember 2017, 15:46:47
Hallo Rippi,

habe das jetzt in eine 99_revtele.pm gepackt und entsprechend angepasst. nach einem shutdown restart steht im Log:

2017.12.05 15:42:32 0: Server shutdown
2017.12.05 15:42:35 1: reload: Error:Modul 99_revtele deactivated:

2017.12.05 15:42:35 1: Including fhem.cfg


Ich arbeite noch mit fhem 5.7 falls von interesse.

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Dezember 2017, 15:49:17
das alles in eine 99_revteleUtils.pm:

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=>'Deine IPadresse:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}



Wenn die Datei 99_revteleUtils.pm heißt, kannst du sie aus fhem heraus editieren.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 05 Dezember 2017, 16:57:29
Hallo Rippi,

habe ich so gemacht, aber leider:

2017.12.05 16:55:16 0: Server shutdown
2017.12.05 16:55:19 1: reload: Error:Modul 99_revteleUtils deactivated:


>:(
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Dezember 2017, 17:26:41
Ich glaube das kannst du erst mal ignorieren.
Das habe ich nach einem Neustart auch im Log.

Versuche mal eine Dose zu schalten.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 05 Dezember 2017, 18:01:29
Hallo Rippi,

die Dose wird nicht geschaltet, am Gateway keine blaue Kontrolllampe. im Logfile steht dann auch:

2017.12.05 17:51:15 3: Schalter_8_ntfy return value: ERROR in Socket Creation : Das Argument ist ungültig

da die 99_revteleUtils nicht aktiviert wird, kann er mit dem revtele im notify wohl nichts anfangen.

Übrigens danke für deine unermüdliche Hilfe..

Gruß Ralph.



Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 05 Dezember 2017, 19:22:26
Hallo,

ich habe die IPadresse nicht richtig übergeben.

Hier der geänderte Code.

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=>'Deine IPadresse:49880',Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


oder so:

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

sub revtele {
my $SendData="";
my $c_ip = "Deine IPadresse";
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";


$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=>"$c_ip:$c_port",Proto=>'udp') or die "ERROR in Socket Creation : $!\n";
$socket->send($SendData);

$socket->close();

}


IPadresse nicht vergessen

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 05 Dezember 2017, 22:16:03
Hallo Rippi,

wir sind einen Schritt weiter, die blaue Aktivitäts-LED am Gateway sendet jetzt etwas, aber die Dosen schalten noch nicht.

2017.12.05 22:11:16 3: Schalter_8_ntfy return value: 1
2017.12.05 22:11:55 3: Schalter_8_ntfy return value: 1


ich glaube du bist kurz vor dem Ziel.

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 05 Dezember 2017, 22:25:05
Hallo Rippi,

habe beide Versionen ausprobiert, beide sprechen das Gateway an, aber die Dosen schalten noch nicht.

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 06 Dezember 2017, 09:15:09
Hallo RKonenberg,

vielleicht kannst du es noch einmal probieren. Habe vermutlich ein Komma vergessen.

habe den Code im letzten Beitrag geändert.

ich habe als Beispiel auch den direkten Code für A1 für on und off zum testen.

on:$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";

off:$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";

zum Testen einfach die beiden Zeilen in der 99_revteleUtils.pm austauschen, außer es funktioniert so schon

Gruß rippi.
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 06 Dezember 2017, 10:46:13
Hallo Rippi,

Guten Morgen 😄, habe gestern noch bis 2:00 Uhr an dem Problem gesessen. Bei $c_tx433ver="1" habe ich ein Komma angehängt ="1," . War aber noch nicht zielführend. Am Ende von $SendData gehört da nicht hinter $c_speed nicht noch ein ";" ?

Ich habe dann noch mit Wireshark versucht mal zu sehen, ob und was mein Raspi an das Gateway schickt, das war leider nicht von Erfolg gekrönt. Ein Paket von meinem Fire Tablet mit Powerswitch konnte ich aber aufzeichnen. Sitze gerade nicht an meinem Rechner, schicke das aber gleich mal nach...

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg am 06 Dezember 2017, 10:56:11
So, hier der Mitschnitt:

0000  54 58 50 3a 30 2c 30 2c 31 30 2c 35 36 30 30 2c   TXP:0,0,10,5600,
0010  33 35 30 2c 32 35 2c 33 2c 31 2c 33 2c 31 2c 31   350,25,3,1,3,1,1
0020  2c 33 2c 33 2c 31 2c 31 2c 33 2c 33 2c 31 2c 31   ,3,3,1,1,3,3,1,1
0030  2c 33 2c 33 2c 31 2c 33 2c 31 2c 33 2c 31 2c 31   ,3,3,1,3,1,3,1,1
0040  2c 33 2c 33 2c 31 2c 31 2c 33 2c 33 2c 31 2c 31   ,3,3,1,1,3,3,1,1
0050  2c 33 2c 31 2c 33 2c 31 2c 33 2c 33 2c 31 2c 31   ,3,1,3,1,3,3,1,1
0060  2c 33 2c 33 2c 31 2c 31 2c 33 2c 33 2c 31 2c 31   ,3,3,1,1,3,3,1,1
0070  2c 33 2c 33 2c 31 2c 31 2c 31 36 3b               ,3,3,1,1,16;


das ist eine funktionierende Einschaltsequenz.

Gruß Ralph
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 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?
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 06 Dezember 2017, 12:06:19
Dann sollte der Code jetzt auch funktionieren!

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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.
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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...
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 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
Titel: Antw:Connair über FHEM steuern
Beitrag von: RKronenberg 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 (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
Titel: Antw:Connair über FHEM steuern
Beitrag von: Müller am 10 Oktober 2018, 23:23:10
Hallo,
in welches Verzeichnis muß die dateinen (Brematic.pm) ablegen?

Danke
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 11 Oktober 2018, 06:23:45
Hallo

@Müller ,  wenn du diese Konfiguration verwendest, brauchst du kein
Brematic.pm.

Gruss rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Kuehnhackel am 30 Oktober 2018, 22:41:06
Zitat von: ms81 am 28 Februar 2014, 08:31:54
Das geht einwandfrei!

Vielen Dank rippi46!

Wie könnte ich den "Stop" Befehl noch integrieren? Weil so kann ich die Rollläden nur komplett hoch und runterfahren.

EDIT:
Habe es selbst hinbekommen:

In 99_MyUtils.pm sieht es nun so aus:
sub connair_R_WZ {

   
my ($state) = "$_[0]";
if ($state eq "auf")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,4,8,4,8,8,4,4,8,4,8,4,8,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}
if ($state eq "ab")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,4,8,8,4,8,4,4,8,4,8,8,4,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}

if ($state eq "stop")
{
  system("echo \"TXP:0,0,10,10920,91,42,57,18,8,4,4,8,8,4,4,8,4,8,4,8,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,4,8,8,4,4,8,8,4,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,4,8,8,4,8,4,8,4,4,8,8,4,4,8,8,4,4,8,8,4,4,8,8,120,0;\" | nc -u 192.168.178.20 49880 & pid=$! sleep 1 kill $pid 2>/dev/null >/dev/null");
}

}


Und in der fhem.cfg:
#Rolladen Wohnzimmer
define Roll_WZ dummy
attr Roll_WZ alias Rollladen Wohnzimmer
attr Roll_WZ eventMap BI:auf B0:ab BS:stop
attr Roll_WZ room Gartenstr_2
attr Roll_WZ webCmd auf:ab:stop
define Roll_WZ_ntfy notify Roll_WZ:.* {\
    my $v=Value("Roll_WZ");;\
    if ($v eq "auf") {connair_R_WZ("auf")};;\
    if ($v eq "ab") {connair_R_WZ("ab")};;\
    if ($v eq "stop") {connair_R_WZ("stop")};;\
    }


Vielen Dank nochmals!

Hallo zusammen, ich bin absoluter Neuling, was das Programmieren angeht, aber einige Dinge funktionieren schon, wie das obige Beispiel.
Ich würde hier gerne sunset ud sunrise "einbauen" aber meine Fähigkeiten sind doch zu begrenzt.
Vielleicht hat ja einer von euch eine Idee bzw. Vorschlag. Ich würde mich riesig freuen.

LG Ralf
Titel: Antw:Connair über FHEM steuern
Beitrag von: CoolTux am 01 November 2018, 14:46:02
Zitat von: Kuehnhackel am 30 Oktober 2018, 22:41:06
Hallo zusammen, ich bin absoluter Neuling, was das Programmieren angeht, aber einige Dinge funktionieren schon, wie das obige Beispiel.
Ich würde hier gerne sunset ud sunrise "einbauen" aber meine Fähigkeiten sind doch zu begrenzt.
Vielleicht hat ja einer von euch eine Idee bzw. Vorschlag. Ich würde mich riesig freuen.

LG Ralf

Was genau willst Du damit bewirken? Was ist Dein Ziel.
Sollen die Rolläden bei Sunset Sunrise fahren oder soll bei einem Fahrbefehl Sunset und Sunrise abgefragt werden?
Du musst schon ein bisschen konkreter werden.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Kuehnhackel am 01 November 2018, 19:01:50
Ich möchte die Rolladen abfragen, manuell betätigen und ich möchte sie zu einem bestimmten Zeitpunkt automatisch runterfahren bei Sonnenuntergang. Wenn das klappt bei Sonnenaufgang wieder hoch.
Dadurch dass wir hier nur Funkgesteuerte Rolladenschalter haben und ich bis dato über eine Android App, PowerSwitch, dass ganze realisiere, wie eben auch Betätigung von Funksteckdosen, habe ich für die verschiedenen Etagen diese LAN-Gateways.
Im Augenblick steuere ich das ganze über diese App und frage über die Zusatz-App Tasker, meinen Googlekalender ab, in dem ich für ein Jahr im voraus die Sonnenauf- und untergänge, per ICAL eingelesen habe. Umständlich per CSV-Datei erstellt. Nun wollte ich, für unseren Neubau, in FHEM einsteigen. Die Einarbeitung aus Zeitgründen sehr schwierig ist, neben Bauphase, Familie und Job. Deshalb bin ich im Augenblick froh überjeden Tipp und Hilfestellung, dass es nicht nur bei den zwei Aufgaben bleibt.
Mir schweben da noch einige Sachen vor.

In der cfg steht zurzeit folgendes:

###Rolladen Wohnzimmer Manuell###
define Roll_WZ dummy
attr Roll_WZ alias Rollladen Wohnzimmer
attr Roll_WZ eventMap BI:auf B0:ab BS:stop
attr Roll_WZ fp_Grundriss_EG 14,318,7,Roll_WZ
attr Roll_WZ icon edit_sort
attr Roll_WZ room Wohnzimmer
attr Roll_WZ webCmd auf:ab:stop
define Roll_WZ_ntfy notify Roll_WZ:.* {\
    my $v=Value("Roll_WZ");;\
    if ($v eq "auf") {rollo_wz("auf")};;\
    if ($v eq "ab") {rollo_wz("ab")};;\
    if ($v eq "stop") {rollo_wz("stop")};;\
    }

###Rolladen Wohnzimmer zeitabhängig schliessen###
define Roll_WZ_zu at *18:00 set Roll_WZ zu



Um mich der Sache Sunset anzunähern hatte ich Testweise:
define Roll_WZ_zu at *{sunset("CIVIL")} set Roll_WZ zu
eingetragen.

Beides funktioniert aber nicht.

LG Ralf
Titel: Antw:Connair über FHEM steuern
Beitrag von: CoolTux am 01 November 2018, 19:14:43
Zitat von: Kuehnhackel am 01 November 2018, 19:01:50
Ich möchte die Rolladen abfragen, manuell betätigen und ich möchte sie zu einem bestimmten Zeitpunkt automatisch runterfahren bei Sonnenuntergang. Wenn das klappt bei Sonnenaufgang wieder hoch.
Dadurch dass wir hier nur Funkgesteuerte Rolladenschalter haben und ich bis dato über eine Android App, PowerSwitch, dass ganze realisiere, wie eben auch Betätigung von Funksteckdosen, habe ich für die verschiedenen Etagen diese LAN-Gateways.
Im Augenblick steuere ich das ganze über diese App und frage über die Zusatz-App Tasker, meinen Googlekalender ab, in dem ich für ein Jahr im voraus die Sonnenauf- und untergänge, per ICAL eingelesen habe. Umständlich per CSV-Datei erstellt. Nun wollte ich, für unseren Neubau, in FHEM einsteigen. Die Einarbeitung aus Zeitgründen sehr schwierig ist, neben Bauphase, Familie und Job. Deshalb bin ich im Augenblick froh überjeden Tipp und Hilfestellung, dass es nicht nur bei den zwei Aufgaben bleibt.
Mir schweben da noch einige Sachen vor.

In der cfg steht zurzeit folgendes:

###Rolladen Wohnzimmer Manuell###
define Roll_WZ dummy
attr Roll_WZ alias Rollladen Wohnzimmer
attr Roll_WZ eventMap BI:auf B0:ab BS:stop
attr Roll_WZ fp_Grundriss_EG 14,318,7,Roll_WZ
attr Roll_WZ icon edit_sort
attr Roll_WZ room Wohnzimmer
attr Roll_WZ webCmd auf:ab:stop
define Roll_WZ_ntfy notify Roll_WZ:.* {\
    my $v=Value("Roll_WZ");;\
    if ($v eq "auf") {rollo_wz("auf")};;\
    if ($v eq "ab") {rollo_wz("ab")};;\
    if ($v eq "stop") {rollo_wz("stop")};;\
    }

###Rolladen Wohnzimmer zeitabhängig schliessen###
define Roll_WZ_zu at *18:00 set Roll_WZ zu



Um mich der Sache Sunset anzunähern hatte ich Testweise:
define Roll_WZ_zu at *{sunset("CIVIL")} set Roll_WZ zu
eingetragen.

Beides funktioniert aber nicht.

LG Ralf

Mein gut gemeinter Rat. Mach erstmal Haus und Hof und wenn Du mehr Zeit hast kannst Du Dich mit FHEM beschäftigen. Alternativ kann ich noch Qivicon empfehlen für Leute die keine "Zeit" haben sich ein zu arbeiten.
Titel: Antw:Connair über FHEM steuern
Beitrag von: Kuehnhackel am 01 November 2018, 19:16:20
Fehler gefunden bei ###Rolladen Wohnzimmer zeitabhängig schliessen###
define Roll_WZ_zu at *18:00 set Roll_WZ ab


muss ab und nicht zu heißen... Wald und Bäume,

das funktioniert jetzt
Titel: Antw:Connair über FHEM steuern
Beitrag von: Kuehnhackel am 01 November 2018, 19:25:02
Zitat von: CoolTux am 01 November 2018, 19:14:43
Mein gut gemeinter Rat. Mach erstmal Haus und Hof und wenn Du mehr Zeit hast kannst Du Dich mit FHEM beschäftigen. Alternativ kann ich noch Qivicon empfehlen für Leute die keine "Zeit" haben sich ein zu arbeiten.

Und ich dachte, FHEM ist ein eingetragener Verein, da gibt es ein Forum, da wird einem geholfen. Scheint aber nicht ganz so der Fall zu sein.
Eigentlich schade, dass man anderen Leuten nicht aufs Pferd hilft und nur auf das WIKI verweist.
Ich findes das gut, dass euch das in die Wiege gelegt wurde und ihr euch ohne fremde Hilfe, euer Wissen angeeignet habt.

Ich werde demnächst meinen Kunden und Freunden sagen und bitten mich erst um Rat zu fragen, wenn sie die Bedienungsanleitung, einschlägige VDE und EN Normen in Zusammenhang mit der ASR gelesen und verstanden haben.

Daher werde ich nur noch still mitlesen, keine Fragen mehr stellen und nicht Mitglied in diesem Verein werden.

Bei über 20.000 Mitglieder kann an auf den ein oder anderen verzichten.

Ralf
Titel: Antw:Connair über FHEM steuern
Beitrag von: CoolTux am 01 November 2018, 19:48:00
Zitat von: Kuehnhackel am 01 November 2018, 19:25:02
Und ich dachte, FHEM ist ein eingetragener Verein, da gibt es ein Forum, da wird einem geholfen. Scheint aber nicht ganz so der Fall zu sein.
Eigentlich schade, dass man anderen Leuten nicht aufs Pferd hilft und nur auf das WIKI verweist.
Ich findes das gut, dass euch das in die Wiege gelegt wurde und ihr euch ohne fremde Hilfe, euer Wissen angeeignet habt.

Ich werde demnächst meinen Kunden und Freunden sagen und bitten mich erst um Rat zu fragen, wenn sie die Bedienungsanleitung, einschlägige VDE und EN Normen in Zusammenhang mit der ASR gelesen und verstanden haben.

Daher werde ich nur noch still mitlesen, keine Fragen mehr stellen und nicht Mitglied in diesem Verein werden.

Bei über 20.000 Mitglieder kann an auf den ein oder anderen verzichten.

Ralf

Lieber Ralf ich glaube Du verstehst das ganze hier Falsch.
Natürlich darfst Du fragen, wenn Du ein Problem hast. Aber die meisten hier machen das Freiwillig in ihrer Freizeit zwischen Familie und Job. Es wird in den meisten Fällen vorausgesetzt das der Fragende Willens ist sich selbst mit der Materie auseinander zu setzen und Lernwillig ist. Dazu gehört in erster Linie nicht gleich sofort zu fragen sondern sich ein paar Stunden selber damit zu beschäftigen. Alle Deine Fragen die Du bis jetzt gestellt hast hättest Du aus eigener Kraft alleine Beantworten können, hättest Du nur wenigstens das Anfänger PDF gelesen und zu einzelnen Themen die Commandref. Ansonsten kann ich mich als Entwickler auch hinstellen und sagen "Commandref schreiben brauch ich nicht, wozu die verwöhnten User lesen die doch eh nicht und fragen lieber". Du siehst, ich investiere Zeit und Liebe in die Doku, und ich hasse Doku schreiben, und dann kommt einer wie Du und erzählt mir indirekt Du hast kein Bock das zu lesen Anfänger dürfen doch wohl lieber fragen.
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 01 November 2018, 20:04:11
Hallo Kuehnhackel,

warum denn gleich den Kopf in den Sand stecken, ich habe hier im Forum auch sehr lange nur mitgelesen und vieles ausprobiert, bis ich hier meinen ersten Beitrag geschrieben habe. In der Zwischenzeit habe gelernt, dass viele hier im Forum das in ihrer Freizeit machen und jeder noch andere wichtige Aufgaben hat. Ich habe auch schon über mehrere Tage Forumsmitglieder unterstützt, aber manchmal gibt es einfach wichtigere Dinge. Also nicht gleich verzagen wenn man nicht in der nächsten Minute eine Antwort erhält. Und wie CoolTux gesagt hat steht vieles in Doku.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: rippi46 am 01 November 2018, 20:11:28
Hallo,

Internals:
   DEF        ([{sunset(-1800)}-00:00:00])(set KugelWohn on) DOELSE (set KugelWohn off)
   MODEL      FHEM
   NAME       T_KugelWohn
   NR         145
   NTFY_ORDER 50-T_KugelWohn
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-11-01 17:07:04   cmd             1
     2018-11-01 17:07:04   cmd_event       timer_1
     2018-11-01 17:07:04   cmd_nr          1
     2018-11-01 17:07:04   state           cmd_1
     2018-11-01 10:25:18   timer_01_c01    01.11.2018 17:07:04
     2018-11-01 10:25:18   timer_02_c01    02.11.2018 00:00:00
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms)
   days:
   devices:
   do:
     0:
       0          set KugelWohn on
     1:
       0          set KugelWohn off
   helper:
     event      timer_1
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   
     timerevent timer_1
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       state: cmd_1
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1541088424
     1          1541113200
   perlblock:
   readings:
   realtime:
     0          17:07:04
     1          00:00:00
   time:
     0          {sunset(-1800)}
     1          00:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1541113200:
       localtime  1541113200
       hash:
   uiState:
   uiTable:
Attributes:
   room       Timer,Wohnzimmer


hier schalte ich meine Lampe 30 Minuten vor Sonnenuntergang ein und um 0:00 Uhr wieder aus
Nur als kleines Beispiel.

Gruß rippi
Titel: Antw:Connair über FHEM steuern
Beitrag von: Kuehnhackel am 01 November 2018, 20:13:20
So ich antworte noch einmal.

Wenn du das hier freiwillig machst, dann ist dass doch lobenswert. Wenn du dann noch antwortest umso mehr. Wenn jemand mich belehrt, erst komplett zu lesen, dann gibt es eine Antwort, habe ich für diese Antwort keinerlei Verständnis. Wenn ich hier in einem Besserwisserforum gelandet bin, dann tut mir das ganze Leid.

Dann spare dir doch die Antwort, lese nur meine Frage oder der anderen und gut ist. Aber ich möchte und hoffe auf eine Antwort.

Ich hoffe deine Umwelt geht nicht so auch mit dir um, wenn du Sachen nicht verstehst oder nicht weißt, denn belesen kann man sich doch heute dank dem Internet.

Deine Antwort ist so, als wenn mein Anglerkollege mich fragen würde, welche Farben gehen denn so zurzeit beim Zander im Hamburger Hafen. Da ich die Antwort weiß, denn ich habe ja letztens erst einen gefangen, ich ihm sage, sorry habe keine Interesse dir zu helfen, mußt halt probieren oder lese doch mal in der Anglerzeitung, vielleicht findest du ja was.

Wenn du kein Bock hast zu antworten, dann tu es doch nicht und verkneife dir deine Vorhaltungen. Bin auch so alt geworden, ohne dumme Sprüche.
Und wenn ihr keine Lust habt für euer und vielleicht auch mein zukünftiges Hobby "zu Werben", dann ist das so.

Forum = Gleichgesinnte = Hilfe für Alle ohne Einschränkungen.

Stelle mir Deine/Eure Einstellung gerade mal in einem Technik- oder Koch-Forum vor.

Fragen tue ich nicht mehr, eher stampfe ich das hier ein und bleibe bei meinem "System".

Titel: Antw:Connair über FHEM steuern
Beitrag von: Kuehnhackel am 01 November 2018, 20:20:57
Zitat von: rippi46 am 01 November 2018, 20:04:11
Hallo Kuehnhackel,

warum denn gleich den Kopf in den Sand stecken, ich habe hier im Forum auch sehr lange nur mitgelesen und vieles ausprobiert, bis ich hier meinen ersten Beitrag geschrieben habe. In der Zwischenzeit habe gelernt, dass viele hier im Forum das in ihrer Freizeit machen und jeder noch andere wichtige Aufgaben hat. Ich habe auch schon über mehrere Tage Forumsmitglieder unterstützt, aber manchmal gibt es einfach wichtigere Dinge. Also nicht gleich verzagen wenn man nicht in der nächsten Minute eine Antwort erhält. Und wie CoolTux gesagt hat steht vieles in Doku.

Gruß rippi

Hi rippi, ich habe nur eine Frage gestellt, vorgestern! Habe mich doch nicht aufgeregt, dass ich keine Antwort bekommen habe, sondern nur über die Art und Weise wie man mit Newbies umgeht. Dann lieber keine Antwort als so eine Antwort!

Läuft ja jetzt nach dem ich ab mit zu ersetzt habe:
###Rolladen Wohnzimmer zeitabhängig schliessen###
define Roll_WZ_zu at *{sunset(+6600)} set Roll_WZ ab

Ich habe Testweise +6600 zum Testen angegeben um halt gegen 19.30 zu testen  ;D

Auf jeden Fall vielen Dank für deine Vorlagen für das Connair, dass ja baugleich mit dem GWY 433 von Brennenstuhl ist

LG Ralf