Connair über FHEM steuern

Begonnen von rippi46, 06 November 2013, 20:04:17

Vorheriges Thema - Nächstes Thema

MrStonedfire


Niko_K

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!!

AB1970

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")};;\
    }




thoffma3

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

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?

Stepha1983

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

rippi46

#50
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.
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

Stepha1983

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??

rippi46

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
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

Stepha1983

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.

rippi46

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"

FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

Stepha1983

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

rippi46

FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

Chridd

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

rippi46

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
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

Chridd

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?