Connair über FHEM steuern

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

Vorheriges Thema - Nächstes Thema

CarstenF

#30
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.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

rippi46

#31
Hallo CartenF,

probiere doch mal folgende pm-Datei:

Neustart danach nicht vergessen.
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

CarstenF

#32
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.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

CarstenF

 :'(
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.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

rippi46

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

}
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

CarstenF

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.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

CarstenF

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..... :)
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

rippi46

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

CarstenF

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
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

MrStonedfire

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

rippi46

Hallo MrStonedfire,

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

Gruß
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

MrStonedfire

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

rippi46

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

MrStonedfire

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


AB1970

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 :-)