WLAN Zwischenstecker GWF-S171

Begonnen von falcke, 02 Januar 2017, 16:11:02

Vorheriges Thema - Nächstes Thema

phantom

Ich habe nun auch eine GWF-S171 unter dem Markennamen Stabo. Sie wird mit den WeConn-App gesteuert, läßt sich aber auch mit den Strings aus dem o.g. Link im lokalen LAN schalten.

@Volker K.:  Hattest du schon mal Zeit deine bestellte S171 mit deinem Modul zu testen?
Evtl. Sind nur minimale Änderungen notwendig...

Gruß
Phantom

Volker Kettenbach

Ich habe das Teil rumliegen, aber noch nicht benutzt. Mangels Zeit.
Du kannst es ja selbst mal testen, ob es geht.


TheTrumpeter

#18
Hat sich diesbezüglich jemand weiter mit den Steckdosen beschäftigt?

Vor ein paar Tagen gab es gratis (Gutscheinfehler) folgendes Produkt bei Amazon, das genau wie das hier diskutierte Weconn S171 aussieht: https://www.amazon.de/gp/product/B079L6T7DJ

Ich habe mir das Ding bestellt, es läuft soweit auch über das Handy.
Mit den beiden Modulen TPLinkHS110 und UbiquitiMP läuft es nicht. Ersteres tut gar nichts, letzteres sagt zumindest, dass sich die Verbindung nicht aufbauen lässt, "port 23: Verbindungsaufbau abgelehnt".

Eine Änderung auf Port 9957 wie hier: https://stackoverflow.com/questions/31827645/how-to-control-wifi-plug-gwf-s171using-raspberry-pi# beschrieben liefert dieselbe Fehlermeldung "port 9957: Verbindungsaufbau abgelehnt".

Wie weitermachen?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

Ich habe zwischenzeitig bisschen was herausgefunden...

Kommunikation findet über Port 10000 der Steckdose statt, Protokoll ist wohl TCP (zumindest sagt das Wireshark).
Ich konnte auch rausfinden an welcher Stelle der Antwort der Steckdose die momentane Leistung (in der App als "Echtzeitleistung") übertragen wird:

Dies geschieht jeweils in den Antwort-Botschaften mit 154 Byte Länge, die alle 6 Sekunden von der App angefragt werden. Die letzten 100 Byte sind die Datenbytes, davon ist in Bytes 85 und 86 die momentane Leistung auf 1/1000W gespeichert, Byte-Reihenfolge ist Little-Endian. (Vermutlich gehört auch das 84. Byte dazu, um die Maximalleistung von 3600.000W codieren zu können; Leistungen die mehr als 2 Byte benötigen habe ich bisher aber nicht abgefragt.)

Wie komme ich nun weiter?
(Grundsätzlich bin ich nur am zyklischen Auslesen der Momentanleistung interessiert, Schaltvorgänge oder Timer benötige ich nicht.)
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

cnkru

#20
Hallo allerseits,

habe mir eine Weconn S171 Smart Steckdose angeschafft.
https://www.amazon.de/Weconn-Steckdose-intelligente-Stromverbrauchszähler-Zeitschaltuhr/dp/B01MA49VVO/ref=sr_1_1?s=lighting&ie=UTF8&qid=1538843302&sr=8-1&keywords=Weconn+S171+Smart+Steckdose

Wollte diese Steckdose nun per Perl-Script einbinden. Leider bisher ohne Erfolg. Sehe wohl den Wald vor lauter Bäumen nicht.
Hier mein 99_myWeconn.pm


#
## Beispiel-Aufruf {WeConn("Test","7cdd90e6913e","192.168.178.45","off");;}
#

sub
WeConn($$$$)
{
my ($device,$mac_adr,$ip_adr,$action) = @_;
        if (!$ip_adr) {
                 Log 2, "Error-WeConn Sub. Missing IP Address: $device";
        }
        if (!$mac_adr) {
             Log 2, "Error-WeConn Sub. Missing MAC Address: $device";
        }

my  $SendData="";
my $SET_AS_ADMIN = '0101100148000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000feff0000xxxxxxxxxxxx000000000100';
my $ON_CODE =  '0101010180000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
my $OFF_CODE = '0101010180000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
my $GET_INFO = '0101030138000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000';
my $find = 'xxxxxxxxxxxx';

$SET_AS_ADMIN  =~ s/$find/$mac_adr/g;
$ON_CODE  =~ s/$find/$mac_adr/g;
$OFF_CODE  =~ s/$find/$mac_adr/g;
$GET_INFO  =~ s/$find/$mac_adr/g;

    if($action eq "on") {
        $SendData = $ON_CODE;
    }
   
    if($action eq "off") {
        $SendData = $OFF_CODE;
    }
my $ip_udp = $ip_adr.':9957';
my ($socket,$data);
#  call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>$ip_udp,Proto=>'udp') or die "ERROR $device in Socket Creation : $!\n";
$socket->send($SendData);
$socket->close();
Log 2, "$device : $socket - $SET_AS_ADMIN - $SendData";   
   
}
## end sub


Vielleicht hat jemand die zündende Idee.

Gruß
Carsten

Nachtrag:
Eine Nacht drüber schlafen hilft immer ...
Danke auch an ..

https://github.com/loki29pl/homebridge-weconn

Hier die Lösung:

## Aufruf {WeConn("Test","7cdd90e6913e","192.168.178.45","off");;}

sub
WeConn($$$$)
{
use IO::Socket;
use strict;
my ($device,$mac_adr,$ip_adr,$action) = @_;
        if (!$ip_adr) {
                 Log 2, "Error-WeConn Sub. Missing IP Address: $device";
        }
        if (!$mac_adr) {
             Log 2, "Error-WeConn Sub. Missing MAC Address: $device";
        }

my  $SendData="";
my $SET_AS_ADMIN = '0101100148000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000feff0000xxxxxxxxxxxx000000000100';
my $ON_CODE =  '0101010180000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
my $OFF_CODE = '0101010180000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
my $GET_INFO = '0101030138000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000';
my $find = 'xxxxxxxxxxxx';

$SET_AS_ADMIN  =~ s/$find/$mac_adr/g;
$ON_CODE  =~ s/$find/$mac_adr/g;
$OFF_CODE  =~ s/$find/$mac_adr/g;
$GET_INFO  =~ s/$find/$mac_adr/g;


    if($action eq "on") {
        $SendData = StreamPrepare($ON_CODE);
    }
   
    if($action eq "off") {
        $SendData = StreamPrepare($OFF_CODE);
    }
my $ip_udp = $ip_adr.':9957';
my ($socket,$data);
#  call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>$ip_udp,Proto=>'udp') or die "ERROR $device in Socket Creation : $!\n";

$socket->send($SendData);
$socket->close();
Log 2, "$device : $socket - $SendData";   
   
}
## end sub
#####################
sub StreamPrepare($)
{
my ($data) = @_;
my $stream = "";
my$num="";
    $l = length($data);
for ($i=0; $i<$l; $i+=2) {
$num = hex('0x'.substr($data,0,2));
#$stream=$stream.$num.",";
$stream=$stream.chr($num);
$data = substr($data,2,$l-$i);
}
return $stream;
}
# end Sub StreamPrepare
######################
RPi4, Razberry, ZWAVE (Thermostate, Dimmer, Schalter, Multisensor), Milight-LED, Wifi (IPCAM, Fritz!DECT, Sonoff), alexa, Hombridge, Velux-Rollos, Viessman-API, iobroker, SENEC

Markus Hermann

#21
Hallo Carsten,

wenn ich den Code in 99_myUtills.pm eingebe, dann erhalte ich die u. g. Fehlermeldung.

Bei "sudo npm install -g homebridge-weconn" von https://github.com/loki29pl/homebridge-weconn gab es kein Fehler. Oder brauchte das gar nicht installiert werden?

ERROR:
Global symbol "$l" requires explicit package name (did you forget to declare "my $l"?) at ./FHEM/99_myUtils.pm line 164.
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at ./FHEM/99_myUtils.pm line 165.
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at ./FHEM/99_myUtils.pm line 165.
Global symbol "$l" requires explicit package name (did you forget to declare "my $l"?) at ./FHEM/99_myUtils.pm line 165.
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at ./FHEM/99_myUtils.pm line 165.
Global symbol "$l" requires explicit package name (did you forget to declare "my $l"?) at ./FHEM/99_myUtils.pm line 169.
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at ./FHEM/99_myUtils.pm line 169.


Kannst Du helfen? Oder hat jemand andere eine Idee?

EDIT: Nachtrag: Habe die Variablen unter sub StreamPrepare($) deklariert:

my $i = 0;
my $l = 0;


Jetzt erhalte ich keine Fehlermeldungen mehr, aber wenn ich:

{WeConn("Schalter 1","68D63A98DA97","192.168.9.118","on");;} in Fhem eingebe passiert gar nichts.


Danke & Gruß
Markus


CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

cnkru

#22
Hallo Markus,

sorry lange nicht mehr online gewesen....
Bitte Kleinbuchstaben in der MAC-Adresse verwenden, zumindest funktioniert es bei mir so.
Weitere mögliche Fehlerursache - Leerzeichen im Device-Namen - Ich verwende Unterstrich statt Leerzeichen.

Habe am Coding weiter gearbeitet - InfoStatus ob an/aus, wenn manuell bedent wurde.


Abgespeichert unter 99_myWeconn.pm

package main;

use strict;
use warnings;
use POSIX;
use Time::Local;

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


## Aufruf {WeConn("d_WeConn1","7cdd90e6913e","192.168.178.45","info");;}

sub
WeConn($$$$)
{
use IO::Socket;
use strict;
my ($device,$mac_adr,$ip_adr,$action) = @_;
        if (!$ip_adr) {
                 Log 2, "Error-WeConn Sub. Missing IP Address: $device"; return;
        }
        if (!$mac_adr) {
             Log 2, "Error-WeConn Sub. Missing MAC Address: $device"; return;
        }

my  $SendData="";
my $RecvInfo ="";
my $SET_AS_ADMIN = '0101100148000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000feff0000xxxxxxxxxxxx000000000100';
my $ON_CODE =  '0101010180000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000000000000000000001000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
my $OFF_CODE = '0101010180000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
my $GET_INFO = '0101030138000000010000005c6c5c6c0000000000000000000000000000000000000000000000000000000000000000xxxxxxxxxxxx0000';
my $find = 'xxxxxxxxxxxx';

$SET_AS_ADMIN  =~ s/$find/$mac_adr/g;
$ON_CODE  =~ s/$find/$mac_adr/g;
$OFF_CODE  =~ s/$find/$mac_adr/g;
$GET_INFO  =~ s/$find/$mac_adr/g;


    if ($action eq "on") {
        $SendData = prepareStream($ON_CODE);
    }
   
    elsif ($action eq "off") {
        $SendData = prepareStream($OFF_CODE);
    }
    elsif ($action eq "info") {
        $SendData = prepareStream($GET_INFO);
    }
    else {
        return;
    }
   
my $ip_udp = $ip_adr.':9957';
my ($socket,$data);
my $data = "";
my $status = "switch";
#  call IO::Socket::INET->new() to create the UDP Socket
$socket = new IO::Socket::INET(PeerAddr=>$ip_udp,Proto=>'udp') or die "ERROR $device in Socket Creation : $!\n";   
$socket->send($SendData);
#Log 2, "WeConn Sub. Socket-Data: $device:: Senddata";
if ($action eq "info") {
      # blockade verhindern bei read info durch setzen timeout (can_read)
      my $select = new IO::Select(); # create handle set for reading
      $select->add($socket);        # add the main socket to the set

      my @ready = $select->can_read(1);
       if (@ready) {
      $socket->recv($data,128);
      #Log 2, "decodeStream-WeConn Sub. Socket-Data: $device:: Start";
      $RecvInfo = decodeStream($data);
      #Log 2, "decodeStream-WeConn Sub. Socket-Data: $device:: Ende";
         } #end if ready
         
      if($data ne "") {
         $status =  ord(substr($data,56,1));
         fhem("setreading $device active_state online");
         #Log 2, "decodeStream-WeConn Sub. Socket-Data: $device:: $RecvInfo";
         }
      else {
         $status = "offline";
         fhem("setreading $device active_state $status");
         #Log 2, "decodeStream-WeConn Sub. Socket-Data: $device:: no Data";
         } #end if data
    } #end if action

$socket->close();

my $dev_state = ReadingsVal($device, "state", "0");
if ($action eq "info") {
      # Status-Anzeige in fhem synchronisieren
      if ($status eq "1" && $dev_state eq "off" ) { fhem("setreading $device state on");}
      if ($status eq "0" && $dev_state eq "on") { fhem("setreading $device state off");}
      }

Log 2, "WeConn Sub $device: $socket :: Action: $action :: Status: $status/$dev_state :: $RecvInfo";   
   
}
## end sub
#####################
sub prepareStream($)
{
my ($data) = @_;
my $stream = "";
my $num="";
my $i =0;
my $l=0;
    $l = length($data);
for ($i=0; $i<$l; $i+=2) {
$num = hex('0x'.substr($data,0,2));
#$stream=$stream.$num.",";
$stream=$stream.chr($num);
$data = substr($data,2,$l-$i);
}
return $stream;
}
# end Sub prepareStream
######################
sub decodeStream($)
{
my ($data) = @_;

my $stream = "";
my $num="";
my $i =0;
my $l=0;
$l = length($data);
for ($i=0; $i<$l; $i++) {
$num = ord(substr($data,0,1));
$stream=$stream.$num.",";

$data = substr($data,1,$l-$i);
}
return $stream;
}
# end Sub StreamEncode
######################
#################
# Ende
#################
1;




Hoffe es hilft Dir weiter.
RPi4, Razberry, ZWAVE (Thermostate, Dimmer, Schalter, Multisensor), Milight-LED, Wifi (IPCAM, Fritz!DECT, Sonoff), alexa, Hombridge, Velux-Rollos, Viessman-API, iobroker, SENEC

swatkris

Hallo Carsten,

ich habe mir vor ein paar Tagen auch die Steckdosen geholt. Gabs bei Voelk... zu einem guten Kurs im Doppelpack.
Leider habe ich gerade div. Schwierigkeiten die Geräte in FHEM zu definieren.
Wenn ich den Befehl {WeConn("Schalter 1","xxxxxxxx","192.168.150.120","on");;} in der FHEM Befehlszeile eingebe funktioniert das, auch mit dem "off" Befehl.
Aber mit der Definition und ansprechen da haperts gerade.
Wäre nett, wenn Du mir etwas auf die Sprünge helfen könntest.
Vielen Dank
Kristian
System1 (Standort 1) : Lenovo Thinkpad T60, DEBIAN, FHEM, Node-Red, 1Wire, RS485 / ModBus
System2 (Standort 2) : Raspberry Pi, FHEM, Node-Red, 1Wire, NodeMCU m. ESPEasy per MQTT, Verbindung zwischen den Standorten per VPN über LANCOM Router
System3 (Standort 2, Reserve) : Cubietruck, FHEM, Node-Red

cnkru

Hallo Kristian,

hier meine Definition in der fhem.cfg

#
# Schalter 1 definieren
#
define d_WeConn1 dummy
attr d_WeConn1 room WeConn
attr d_WeConn1 setList on off
define notify_WeConn1 notify d_WeConn1:.* {my $ev=$EVENT;;WeConn("d_WeConn1","7xxxxxxxxe","192.168.178.45",$ev);;}
attr notify_WeConn1 room WeConn
#
# check alle 5 Minuten, ob WeConn ggf. per Hand bedient wurde -> Status updaten
#
define Check_WeConn1 at +*00:15:00  {WeConn("d_WeConn1","7xxxxxxxxe","192.168.178.45","info");;;;}
attr Check_WeConn1 room WeConn
#


Gruß
Carsten
RPi4, Razberry, ZWAVE (Thermostate, Dimmer, Schalter, Multisensor), Milight-LED, Wifi (IPCAM, Fritz!DECT, Sonoff), alexa, Hombridge, Velux-Rollos, Viessman-API, iobroker, SENEC

swatkris

Hallo Carsten,

vielen Dank. Ich werde das mal probieren und mich wieder melden.

Gruß

Kristian
System1 (Standort 1) : Lenovo Thinkpad T60, DEBIAN, FHEM, Node-Red, 1Wire, RS485 / ModBus
System2 (Standort 2) : Raspberry Pi, FHEM, Node-Red, 1Wire, NodeMCU m. ESPEasy per MQTT, Verbindung zwischen den Standorten per VPN über LANCOM Router
System3 (Standort 2, Reserve) : Cubietruck, FHEM, Node-Red

swatkris

#26
Hallo Carsten,
ich habe folgendes gemacht. Aus dem vorherigen Post habe ich den Code für die 99_myWeconn verwendet.
Leider wirft mir FHEM folgenden Fehler im Log :

2018.10.30 15:48:58 3: Check_SchukoWiFi01: Can't locate object method "new" via package "IO::Select" at ./FHEM/99_myWeconn.pm line 68.

Ansonsten habe ich an dem Code nichts verändert. lediglich die Definition habe ich an meine Bedürfnisse angepasst :

#
# Schalter 1 definieren
#
define SchukoWiFi01 dummy
attr SchukoWiFi01 room Küche
attr SchukoWiFi01 setList on off
define notify_SchukoWiFi01 notify SchukoWiFi01:.* {my $ev=$EVENT;;WeConn("SchukoWiFi01","7xxxxxxxxxx1","XXX.XXX.XXX.220",$ev);;}
attr notify_SchukoWiFi01 room Küche
define Check_SchukoWiFi01 at +*00:15:00  {WeConn("SchukoWiFi01","7xxxxxxxxxx1","XXX.XXX.XXX.220","info");;;;}
attr Check_SchukoWiFi01 room Küche
#


Wärst Du so nett und würdest mir helfen ?

Vielen Dank :-)

Kristian

EDIT:
Nach einem Reboot funktioniert das Schalten über FHEM, jedoch die Statusabfrage scheint nicht zu funktionieren.
Vielleicht kannst Du Dich der Sache jedoch noch annehmen.

Danke Dir
Kristian
System1 (Standort 1) : Lenovo Thinkpad T60, DEBIAN, FHEM, Node-Red, 1Wire, RS485 / ModBus
System2 (Standort 2) : Raspberry Pi, FHEM, Node-Red, 1Wire, NodeMCU m. ESPEasy per MQTT, Verbindung zwischen den Standorten per VPN über LANCOM Router
System3 (Standort 2, Reserve) : Cubietruck, FHEM, Node-Red

cnkru

Hallo Kristion,

Zum Testen brauche ich folgende Infos

Was steht den in deinem LOGFile?
Führe dein at-Befehl in der Komandozeile aus.

set Check_SchukoWiFi01 execNow

schalte jetzt das S171 manuell 1mal (also wenn AN, dann auf AUS oder umgekehrt)

Führe wieder den Befehl  set ... nochmal aus

und schaue auf die letzten Einträge im LOGFile

da müsste so etwas stehen ...

2018.10.30 hh:mm:ss 2: WeConn Sub SchukoWiFi01: IO::Socket::INET=GLOB(0x5f8c8c0) :: Action: info :: Status: 1/on :: 1,2,3,0,188,3,0,0,1,0,0,0,92,108,92,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,221,144,230,145,62,0,0,1,0,0,.....

Schicke mir die beiden LOG-Einträge

Gruß
Carsten
RPi4, Razberry, ZWAVE (Thermostate, Dimmer, Schalter, Multisensor), Milight-LED, Wifi (IPCAM, Fritz!DECT, Sonoff), alexa, Hombridge, Velux-Rollos, Viessman-API, iobroker, SENEC

swatkris

Hallo Carsten,

erstmal Danke, dass Du Dir die Zeit nimmst.

Du findest das "Master" Logfile als Anhang an diesen Eintrag.

Deine Schritte habe ich genau so ausgeführt. Beim Set Befehl kam auch kein Fehler. Allerdings finde ich im Logfile keinen EIntrag, der dem entspricht, was Du beschrieben hattest.
Hier sind die Zeilen nach den Befehlen :
2018.10.31 07:09:54 3: Check_SchukoWiFi01: Can't locate object method "new" via package "IO::Select" at ./FHEM/99_myWeconn.pm line 68.

2018.10.31 07:13:38 1: ERROR evaluating {WeConn("SchukoWiFi01","7CDD90EE80B1","192.168.151.220","info");;}: Can't locate object method "new" via package "IO::Select" at ./FHEM/99_myWeconn.pm line 68.

2018.10.31 07:13:38 3: Check_SchukoWiFi01: Can't locate object method "new" via package "IO::Select" at ./FHEM/99_myWeconn.pm line 68.

2018.10.31 07:14:35 1: ERROR evaluating {WeConn("SchukoWiFi01","7CDD90EE80B1","192.168.151.220","info");;}: Can't locate object method "new" via package "IO::Select" at ./FHEM/99_myWeconn.pm line 68.

2018.10.31 07:14:35 3: Check_SchukoWiFi01: Can't locate object method "new" via package "IO::Select" at ./FHEM/99_myWeconn.pm line 68.


Mehr steht halt im Logfile nicht drinne.

Gruß

Kristian
System1 (Standort 1) : Lenovo Thinkpad T60, DEBIAN, FHEM, Node-Red, 1Wire, RS485 / ModBus
System2 (Standort 2) : Raspberry Pi, FHEM, Node-Red, 1Wire, NodeMCU m. ESPEasy per MQTT, Verbindung zwischen den Standorten per VPN über LANCOM Router
System3 (Standort 2, Reserve) : Cubietruck, FHEM, Node-Red

cnkru

Hallo Kristian,

das Select Modul wird nicht geladen ...
Versuche mal die Zeile nachzutragen in der Sub WeConn:
#
sub
WeConn($$$$)
{
use IO::Socket;
use IO::Select;
use strict;


Wurde bei mir global geladen ...

Gruß
Carsten
RPi4, Razberry, ZWAVE (Thermostate, Dimmer, Schalter, Multisensor), Milight-LED, Wifi (IPCAM, Fritz!DECT, Sonoff), alexa, Hombridge, Velux-Rollos, Viessman-API, iobroker, SENEC