Connair über FHEM steuern

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

Vorheriges Thema - Nächstes Thema

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

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

rippi46

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

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

rippi46

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

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

rippi46

#66
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


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

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


Chridd

...dennoch habe ich keine Ahnung, wie es jetzt weitergeht.

Das Gateway reagiert definitiv, was schon mal toll ist. Die Steckdosen sagen allerdings noch nix.  :-\

rippi46

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

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!

rippi46

#71
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
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

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

rippi46

#73
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
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

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.