Umzug vom RPI auf Windows - Wie spreche ich die Com-Schnittstellen dort an??

Begonnen von 300P, 04 Februar 2018, 09:59:09

Vorheriges Thema - Nächstes Thema

300P

Nach einiger Zeit möchte ich / bin ich ich mit meinem FHEM vom RPI auf Windows10 umziehen.
Wirkliche Nutzung bislang in der Hauptsache war für die Heizungssteuerung mit dem Modul Vcontrol300 Statistik und Einstellungen vornehmen.

Mein Problem:
Unter Linux habe ich per

define KELLERHEIZUNG VCONTROL300 /dev/ttyUSB0 ./FHEM/89_VCONTROL300.cfg 300 300

alles erreicht was ich möchte.
USB-Anschluss - Schnittstelle zur Heizung  =>>>       /dev/ttyUSB0@4800,8,E,2

Unter Windows10 ist das gleiche USB-Schnitttstellengerät eingebunden und lässt sich mit der Herstellersoftware einwandfrei ansprechen und bedienen.

Bei der FHEM-Installierung bzw. der Perlinstallierung bin ich nach dieser Anleitung vorgegangen und habe StrawberryPerl installiert.

siehe auch ->     https://wiki.fhem.de/wiki/Windows_-_FHEM_installieren

Auch habe ich die dort angezogenen manuell notwendigen Einstellung für StrawberryPerl

perl -MCPAN -e "install Win32::SerialPort"
cd /D "C:\Strawberry\cpan\build\Win32-SerialPort-0.22-xx"
perl makefile.pl TESTPORT=COM4


wie beschrieben vorgenommen.

Alles soweit auch okay und gut. FHEM läuft dort auch sauber als Dienst mit den anderen defines, aber mit dem COM4 hab ich so richtige "Anfänger"-schwierigkeiten.

Der Comport "4" ist in Windows dem FDI-Treiber/USB-Gerät zugeordnet:
Wie ist die richtige Syntax ?  COM4   COM4:   COM4@4800,8,E,2  ?????

Oder Übersehe ich was ?

Grüße am Sonntagmorgen

300P
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

LuckyDay

<serial-device/LAN-Device:port>    USB Port (z.B. com4, /dev/ttyUSB3) oder aber TCPIP:portnummer

define KELLERHEIZUNG VCONTROL300 com4 ./FHEM/89_VCONTROL300.cfg 300 300

so hat es Adam in der 89_VCONTROL angegeben

herrmannj

Zitat von: 300P am 04 Februar 2018, 09:59:09
Nach einiger Zeit möchte ich / bin ich ich mit meinem FHEM vom RPI auf Windows10 umziehen.
ich rate vom Wechsel ab, linux ist die bessere Plattform!

300P

Bislang sind alle "Lebensversuche" für die Schnittstelle im Mißerfolgt geendet.

Versuch wurde :
define KELLERHEIZUNG VCONTROL300 com ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 COM ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 COM: ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 COM: ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 com4 ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 COM4 ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 com4: ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 COM4: ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 /dev/ttyUSB0 ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 /dev/ttyUSB1 ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 /dev/ttyUSB2 ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 /dev/ttyUSB3 ./FHEM/89_VCONTROL300.cfg 300 300
define KELLERHEIZUNG VCONTROL300 /dev/ttyUSB4 ./FHEM/89_VCONTROL300.cfg 300 300



Evtl. ist aber auch hier der Hund begraben worden...., denn da ist etwas auskomentiert was aus der Original "ADAM" 89_VCONTROL.PM kommt und in 89_VCONTROL300.PM nicht noch umgeschrieben ist...:
Codeauszug aus der  "89_VCONTROL300.PM"    -Version-26.01.2018-V09   
->siehe Dateianhang


Zeilen 251 ....289 im unteren Bereich ->> Beginnen mit (#)



sub VCONTROL300_Define($$)
{
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
#my $po;

if (@a != 4 && @a != 5 && @a != 6 && @a != 7) {
my $msg = "wrong syntax: define <name> VCONTROL300 <port> <command_config> [<interval>] [<protocol>] [<protocolparam>]";
Log3 undef, 2, $msg;
return $msg;
}

my $devName = $a[0];
my $dev = $a[2];

#Determine if USB device or TCP Connection is used
#if (index($dev, ':') >= 0) { #Does not work for /dev/<USB Device with ":" in name>
if (index($dev, '/') == -1) {
###TCP Connection
Log3 $devName, 2,"VCONTROL300: Using TCP device";
$connectionType = "tcp";
}
else {
###USB
Log3 $devName, 2,"VCONTROL300: Using USB device";
$connectionType = "usb";
#delete $hash->{USBDev};
#delete $hash->{FD};

if (index($dev, '@') == -1) {
$dev=$dev."\@4800,8,E,2";
}
}

  #Close Device to initialize properly
  #DevIo_CloseDev($hash);



  #schauen welches protocol verwendet wird.
  if($a[5]){
     my $protocol = lc($a[5]);
if ($protocol eq "300") {
$hash->{PROTOCOL} = PROTOCOL_300;
}
elsif ($protocol eq "kw") {
$hash->{PROTOCOL} = PROTOCOL_KW;
}
  }
  else {
     $hash->{PROTOCOL} = $defaultProtocol;
  }

  #protocol params laden
  #if($a[6]){
# if ($hash->{PROTOCOL} eq "kw") { $hash->{FASTPOLLSIZE} = lc($a[6]); }
#  }
#  else {
# if ($hash->{PROTOCOL} eq "kw") { $hash->{FASTPOLLSIZE} = $defaultFastPollSize; }
#  }


  #load config_file
  if($a[3]){
     $command_config_file = $a[3];
     my ($error, @cmdconfigfilecontent) = FileRead($command_config_file);
     return $error if $error;
     VCONTROL300_CmdConfig(@cmdconfigfilecontent,$hash,$command_config_file);
  }

  #use configured Pollinterval if given
  if($a[4]){
     $hash->{INTERVAL} = $a[4];
  }
  else {
     $hash->{INTERVAL} = $defaultPollInterval;
  }



  Log3($devName, 3, "VCONTROL300: Using protocol $hash->{PROTOCOL}");

  $hash->{STATE} = "defined";
  $hash->{DeviceName} = $dev;
  #$hash->{PARTIAL} = "";

  ###Opening Device
  #Log3($name, 3, "VCONTROL300: Opening device $dev ...");

  #if ($connectionType eq "usb") {
  #   ###USB
  #   if ($^O=~/Win/) {
  #      require Win32::SerialPort;
  #      $po = new Win32::SerialPort ($dev);
  #   } else  {
  #      require Device::SerialPort;
  #      $po = new Device::SerialPort ($dev);
  #   }
  #   if(!$po) {
  #       my $msg = "Can't open $dev: $!";
  #       Log3($name, 3, $msg) if($hash->{MOBILE});
  #       return $msg if(!$hash->{MOBILE});
  #       $readyfnlist{"$name.$dev"} = $hash;
  #       return "";
  #   }
  #   #Log3($name, 3, "VCONTROL300: Opened USB device $dev");

  #   $hash->{USBDev} = $po;
  #   if( $^O =~ /Win/ ) {
  #      $readyfnlist{"$name.$dev"} = $hash;
  #   } else {
  #      $hash->{FD} = $po->FILENO;
  #      delete($readyfnlist{"$name.$dev"});
  #      $selectlist{"$name.$dev"} = $hash;
  #   }
  #}
  #else {
     #TCP Connection
  #}


#set Internal Timer
my $timer = gettimeofday()+1;
Log3($devName, 5, "VCONTROL300: Set InternalTimer to $timer");

InternalTimer($timer, "VCONTROL300_Poll", $hash, 0);

  return undef;
}





Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.