Anbindung Viessmann Heizung mit VCONTROL300

Begonnen von srxp, 23 Februar 2017, 13:15:51

Vorheriges Thema - Nächstes Thema

crispyduck

Hallo,

Habe jetzt wohl einfach zu lange nichts mit FHEM und VCONTROL getan, um wirklich helfen zu können.

Finde es suber das endlich wer eine. Wiki Artikel dazu schreibt/updated, denke aber das ein Wiki artikel kein "anscheinend" oder "wohl" enthalten sollte.

Ausserdem steht da das primär auf VCONTROL300 eingegangen wird, die verlinkten Config Files sind aber von VCONTROL.

Glaube das verwirrt alle, es sollte bitte klar hervorgehen das VCONTROL und VCONTROL300 unterschiedliche config files benutzt.

Steinigt mich bitte nicht falls ich jetzt falsch liege, ha e jetzt lange nichts gemacht und bin es jetzt mehr oder webiger nur überflogen.

Lg
Crispyduck

andies

Wie kann ich das neu anlegen (ich war das), oder soll das der Einfachheit halber in einen Artikel. Das wäre doch sonst doppelt, oder?

Noch eine Frage habe ich. Ich kriege hier im Logfile folgendes
2017.09.28 22:10:15 4: VCONTROL300: Waiting for sync byte...
2017.09.28 22:10:15 4: VCONTROL300: Received sync byte!
2017.09.28 22:10:15 4: VCONTROL300: Init status: 'ok'!
2017.09.28 22:10:18 2: VCONTROL300: Warning while reading parameter 0816. Maybe value is a sync byte? : Retry 0!!!
2017.09.28 22:10:22 2: VCONTROL300: Warning while reading parameter 0816. Maybe value is a sync byte? : Retry 1!!!
2017.09.28 22:10:23 1: Timeout for VCONTROL300_DoUpdate reached, terminated process 14851
2017.09.28 22:10:23 4: VCONTROL300: Update aborted!
2017.09.28 22:10:23 2: VCONTROL300: TCP connection closed

Und ich vermute, dass die Terminierung kommt, weil er mehrfach braucht, um die Bytes zu lesen. Kann man die Zeitspanne bis zum Timeout irgendwie verändern? Das Wort Timeout kommt im Code gar nicht vor...
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#122
 - hat sich erledigt -
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

crispyduck

Hi,

Bitte lies dir mal die kompletten Threads. Ja, sind lang, aber deine Frage zu 1ByteS,... sollte sich beim lesen des ersten Posts schon erledigt haben!
https://forum.fhem.de/index.php/topic,20280.0.html
Versuche vielleicht auch immer alles in einem Post zusammen zu fassen statt 3 posts hintereinander zu machen. Das macht den/die Threads nur noch länger.

@Matthias:

Der Wert für WW oben scheint ja zu passen, würde da eher auf Verbindungsprobleme tippen da es nur manchmal nicht geht.
Ist das ein original Viessmann kabel?

Hast eine Vitodens 343f? Konnte zu der leider auch nichts im openv wiki finden, hast du schon mal probiert ob auch das 300er Protokoll funktioniert?

Lg
Crispyduck


xeenon

Servus zusammen,

Ich Versuche mit vcontrol300 ne Vitotronic 200 kw6b auszulesen. Finde aber keine config dafür. Hat jemand zufällig schon eine fertige?

Grüße

andies

#125
Ich habe zwei Änderungen an der VCONTROL300 vorgenommen und wollte Stephan fragen, ob er das übernehmen will:

  • Es gibt keine hartkodierten Timeouts (bisher: 10s) mehr. Statt dessen wird eine Variable $timeout verwendet.
  • Es gibt ein neues Attribut "timeout", dessen Wert via GUI geändert werden kann. Der Wert dieses Attributs (wenn gesetzt) wird dann statt 10s beim Aufruf des IODev genutzt.
  • Bei der Gelegenheit habe ich die Doku ein wenig erweitert und Kommafehler behoben.

<EDIT> Ich gebe mal alle meine Änderungen hier als Code an, das ist vermutlich leichter zu beurteilen. Ein paar Sachen sind auch Geschmacksache.

Also zuerst habe ich ein Attribut timeout eingeführt. Das geschieht durch

...
  $hash->{ShutdownFn} = "VCONTROL300_Shutdown";
+  $hash->{AttrFn}  = "VCONTROL300_Attr";

...

-  $hash->{AttrList}  = "disable:0,1 updateOnlyChanges:0,1 vitotronicType:".TYPE_200_WO1X.",".TYPE_200_KWX.",".TYPE_200_HOXX." setList cumulationSuffixToday cumulationSuffixTodayStart cumulationSuffixYesterday  ". $readingFnAttributes;
+  $hash->{AttrList}  = "disable:0,1 updateOnlyChanges:0,1 vitotronicType:".TYPE_200_WO1X.",".TYPE_200_KWX.",".TYPE_200_HOXX." setList cumulationSuffixToday cumulationSuffixTodayStart cumulationSuffixYesterday timeout ". $readingFnAttributes;

...

+sub VCONTROL300_Attr($$$$)
+{
+ my ( $cmd, $name, $attrName, $attrVal ) = @_;
+ if ($cmd eq "set") {
+ if ($attrName eq "timeout") {
+ if (!looks_like_number($attrVal)) {
+ Log3 $name, 0, "VCONTROL300 ($name): Invalid number in Timout ($attrVal), use only natural numbers";
+ return "Invalid timeout attribut value: $attrVal $@";
+ }
+ }
+ }
+ return undef;
+}

...

## am Ende von sub VCONTROL300_Poll($)

- $hash->{helper}{RUNNING_PID} = BlockingCall("VCONTROL300_DoUpdate", $devName,"VCONTROL300_UpdateDone",10,"VCONTROL300_UpdateAborted",$devName) unless(exists($hash->{helper}{RUNNING_PID}));

+ #wenn das Attribut gesetzt ist, nimm den AttrVal-Wert als timeout; sonst uebergebenen Wert
+ my $timeout = AttrVal($devName, "timeout", 10);
+ $hash->{helper}{RUNNING_PID} = BlockingCall("VCONTROL300_DoUpdate", $devName,"VCONTROL300_UpdateDone",$timeout,"VCONTROL300_UpdateAborted",$devName) unless(exists($hash->{helper}{RUNNING_PID}));

...

sub VCONTROL300_ExpectFromDevice($$$) {
my ($hash,$sendbuf,$timeout) = @_;

- my $buf = DevIo_Expect($hash,$sendbuf,$timeout);
+ #wenn das Attribut gesetzt ist, nimm den AttrVal-Wert als timeout; sonst uebergebenen Wert
+     my $my_timeout = AttrVal($hash->{NAME}, "timeout", $timeout);
+ my $buf = DevIo_Expect($hash,$sendbuf,$my_timeout);
   

Dann habe ich noch einen Punkt geändert: Ich habe das selbst gebaute "Optolink"-Kabel, das anscheinend etwas unzuverlässig sendet. Gerade dann, wenn ich Polls händisch auslöse, gibt es sehr viele Fehlermeldungen (deshalb das timeout-Attribut). Ich möchte insbesondere nicht, dass gepollt wird, nachdem Werte gesetzt wurden. Das habe ich wie folgt umgesetzt. Es müssen am Ende von sub VCONTROL300_Set($@) die folgenden Zeilen ausgeblendet werden

# unless(exists($hash->{helper}{RUNNING_PID})) {
# RemoveInternalTimer($hash);
# VCONTROL300_Poll($hash);
# }


Die ganze Hilfsdatei füge ich auch mal an, das ist für mich persönlich immer wichtig, weil ich mir bestimmte Dinge nie merken kann und dann einfach weiß, da steht es:
<h3>VCONTROL300</h3>
<ul>
    VCONTROL300 is a fhem-Modul to control a and read information from a VIESSMANN heating via Optolink-adapter.<br>
    <br>
   
    An Optolink-Adapter is necessary (USB or LAN), information is available here:<br>
    <a href="http://openv.wikispaces.com/">http://openv.wikispaces.com/</a><br><br>
   
    You need to know the memory addresses for your heating type (e.g. V200KW1, VScotHO1, VPlusHO1 ....),<br>
    where the actual information is stored or where the actual state can be set.<br>
    Additional information can be found at <a href="http://forum.fhem.de/index.php/topic,20280.0.html">http://forum.fhem.de/index.php/topic,20280.0.html</a> as well as <a href="http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29">http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29</a><br><br><br>
   
    <a name="VCONTROL300define"><b>Define</b></a>
    <ul>
        <code>define &lt;name&gt; VCONTROL &lt;serial-device/LAN-Device:port&gt; &lt;configfile&gt; [&lt;intervall&gt;] </code><br>
        <br>
        <li><b>&lt;serial-device/LAN-Device:port&gt;</b><br>
        USB Port (e.g. com4, /dev/ttyUSB3) or TCPIP:portnumber<br>
        </li>

        <li><b>&lt;configfile&gt;</b><br>
        Path to the configuration file, containing the memory addresses<br>
        </li>

<li><b>&lt;intervall&gt;</b><br>
        Poll interval in seconds. Default value is 180 seconds.<br>
        </li>
       
<li><b>&lt;protocol&gt;</b><br>
        Defines which protocol should be used. Possible values are 300 and KW (Default).<br>
        </li>

<li><b>&lt;protocolparam&gt;</b><br>
        Defines additional parameters for the protocol.<br/>
Default value is 0.<br>
        </li>


<br>
        <b>Example:</b><br><br>
       
        Optolink is connected to the serial device com4, every 3 minutes shall be polled, configuration file name is VCONTROL.cfg located in the fhem root directory<br><br>

        For Windows use:<br>
        define Heizung VCONTROL com4 VCONTROL.cfg 180 kw<br><br>
       
        For Linux use:<br>
        define Heizung VCONTROL /dev/ttyUSB3 VCONTROL.cfg 180 kw<br>

    </ul>
    <br><br>

    <a name="VCONTROL300set"><b>Set</b></a>
    <ul>
        There are several set-commands that are configured in the configuration file. The usual format is<br>
<code>set &lt;devicename&gt; &lt;readingname&gt; &lt;value&gt; </code><br>
    Note that some of the values must fulfill formatting restrictions:<ul><li> Any date must be given as  21.03.2014_21:35:00.</li>
<li>Any timer value must be given as  06:10,12:00,16:00,23:00,--,--,--,-- and the minutes must be a
multiple of 10 (a value of 23:05 is not allowed). There must be exactly eight time values in a row; mark a missing value as --.
</li></ul>
</ul>
    <br><br>
    <a name="VCONTROL300get"><b>Get</b></a>
    <ul>
Currently there are two get-commands. <br><br>

        <code>get &lt;devicename&gt; readConfigFile</code><br>
        reloads the configfile<br><br>

        <code>get &lt;devicename&gt; getTimers</code><br>
        reloads the timers of the Viessmann-device<br><br>

    </ul>
    <br><br>

    <a name="VCONTROL300parameter"><b>configfile</b></a>
    <ul>
       Example configuration files for the heating types V200KW1, VScotHO1, VPlusHO1 are available on the wiki page <a href="http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29">http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29</a>.<br><br>

       A configuration file has the following structure:<br><br>

       <li>lines beginning with "#" are comments<br></li>
       <li>polling Commands (POLL) will read values<br></li>
       <li>set Commandos (SET) will set values<br></li>
       <br>
       <b>Polling Commands have the following structure:<br><br></b>

       POLL, ADDRESS, ADDRESSTYPE, DIVISOR, READINGNAME, CUMULATION<br><br>
       
       <ul>
        <li><b>POLL</b><br>
        Indicates that the command is for polling values (do not change that word)<br>
        </li>
        <br>
        <li><b>ADDRESS</b><br>
        Memory address of the parameter, will be read out from the heatings memory.<br>
        <br>
        <li><b>ADDRESSTYPE</b><br>
        Indicates the type and length of the databytes to read, respectively.<br>
        Types so far:<br>
        <ul>
          <li>1ByteU        :<br> Read value is 1 Byte without algebraic sign (if column Divisor set to state -> only 0/1 or off/on)<br></li>
          <li>1ByteS        :<br> Read value is 1 Byte with algebraic sign (if column Divisor set to state -> only 0/1 or off/on)<br></li>
          <li>2ByteU        :<br> Read value is 2 Byte without algebraic sign<br></li>
  <li>2ByteS        :<br> Read value is 2 Byte with algebraic sign<br></li>
          <!--<li>2BytePercent  :<br> Read value is 2 Byte in percent<br></li>-->
          <li>4Byte         :<br> Read value is 4 Byte<br></li>
          <li>mode          :<br> Read value is the actual operating status<br></li>
          <li>timer         :<br> Read value is an 8 Byte timer value<br></li>
          <li>date          :<br> Read value is an 8 Byte timestamp<br></li>
          POLL Commands using the method "timer" will not be polled permanently. They have to be read by a GET Commando explicitly.<br>
          GET &lt;devicename&gt; TIMER<br>
        </ul>
        </li>
        <br>
        <li><b>DIVISOR</b><br>
        Shall the parsed value be multiplied by a factor you can configure this number here. For example, a temperature of 21.6&deg;C will be passed as 216 - hence, a divisor of 10 is recommended.<br>
        Additionally, for values that just deliver 0 or 1 the DIVISOR &quot;state&quot; will ensure that the submitted value is either &quot;on&quot; or &quot;off&quot; instead of 0 or 1.<br>
        </li>
        <br>
        <li><b>READINGNAME</b><br>
        This is name of the reading that will store the corresponding value.
        </li>
        <br>
        <li><b>CUMULATION</b><br>
        Accumulated day values will be automatically stored for polling commands with the value day in the column CUMULATION.<br>
        Futhermore,  the values of the last day will be stored in additional readings after 00:00.<br>
        So you have the opportunity to plot daily values.<br>
        The reading names will be supplemented by DayStart, Today and LastDay!<br>
        </li>
       
       <br>
       Examples:<br><br>
       <code>POLL, 0804, 2ByteS, 10, Temp-WarmWater-Actual, -<br></code>
       <code>POLL, 088A, 2ByteU,  1, BurnerStarts, day<br></code>
        </ul>

       <br><br>
       <b>Set Commands have the following structure:<br><br></b>

       SET, ADDRESS, ADDRESSTYPE, MULTIPLICATOR, SETNAME, NEXTSET or DAY<br><br>
       
       <ul>
        <li><b>SET</b><br>
        Indicates that the command is for setting values<br>
        </li>
        <br>

        <li><b>ADDRESS</b><br>
Memory Address where the value has to be written in the memory of the heating.<br>
<br>
There are two Address versions:<br>
<li>Version 1: Value to be set is fix, e.g. Spar Mode on is fix 01<br>
</li>
<li>Version 2: Value has to be passed, e.g. warm water temperature<br></li>
        </li>
        <br>

        <li><b>ADDRESSTYPE</b><br>
        The type of the address, i.e. how many databytes the to set address will expect.<br>
        <ul>
          <li>1ByteU        :<br> Value to be written in 1 Byte without algebraic sign<br>with Version 2 it has to be a number<br></li>
  <li>1ByteUx10     :<br> Same as 1ByteU, however the to be sent value is multiplied with a factor 10<br></li>
          <li>1ByteS        :<br> Value to be written in 1 Byte with algebraic sign<br>with Version 2 it has to be a number<br></li>
          <li>1ByteSx10     :<br> Same as 1ByteS, however the to be sent value is multiplied with a factor 10<br></li>
  <li>2ByteU        :<br> Value to be written in 2 Byte without algebraic sign<br>with Version 2 it has to be a number<br></li>
  <li>1ByteUx10     :<br> Same as 1ByteU, however the to be sent value is multiplied with a factor 10<br></li>
  <li>2ByteS        :<br> Value to be written in 2 Byte with algebraic sign<br>with Version 2 it has to be a number<br></li>
          <li>2ByteSx10     :<br> Same as 2ByteS, however the to be sent value is multiplied with a factor 10<br></li>
  <li>timer         :<br> Value to be written in an 8 Byte timer value<br>with Version 2 it has to be a string with this structure:<br>
                                  8 times of day comma separeted.  (ON1,OFF1,ON2,OFF2,ON3,OFF3,ON4,OFF4)<br>
                                  no time needed ha to be specified with -- .<br>
                                  Minutes must be a multiple of 10: 00,10,20,30,40 or 50<br>
                                  Example: 06:10,12:00,16:00,23:00,--,--,--,--</li>
          <li>date          :<br> Value to be written is an 8 Byte timestamp<br>with Version 2 it has to be a string with this structure:<br>
                                  format specified is DD.MM.YYYY_HH:MM:SS<br>
                                  Example: 21.03.2014_21:35:00</li>
        </ul>
        </li>
        <br>

<li><b>SETNAME</b><br>
SETNAME is the command that will be used in FHEM to set a value of a device<br>
set &lt;devicename&gt; &lt;setcmd&gt;<br>
e.g. SET &lt;devicename&gt; WW to set the actual operational status to Warm Water processing<br>
        </li>
        <br>

        <li><b>NEXTSET or DAY</b><br>
        This column has two functions:
        <ul>
        <li> If this column is set to a name of another SETNAME, this SETNAME will be processed directly afterwards.<br>
            Example: after setting 'Spar Mode on (S-ON)', you have to set 'Party Mode off (P-OFF)'<br>
</li>
        <li>Using timer as ADDRESSTYPE, so a week day has to be specified in this column.<br>
            possible values: MO DI MI DO FR SA SO<br>
        </li>
        <br>
        </ul>
        Examples:<br><br>
        <code>SET, 230101, 1ByteU, state, WarmwasserEinmalig, -<br></code>
        <code>SET,  230201, 1ByteU, state, SparmodusEin, PartymodusAus<br></code>
        <code>SET, 6300, 1ByteU, 1, WarmwasserTemperatur, -<br></code>
        <code>SET, 2000, timer, 1, Timer_Warmwasser_MO, MO<br></code>
        </ul>
    </ul>
</ul>

=end html
=begin html_DE

<a name="VCONTROL300"></a>
<h3>VCONTROL300</h3>
<ul>
    VCONTROL300 ist ein fhem-Modul um eine VIESSMANN Heizung via Optolink-Schnittstelle auszulesen und zu steuern.<br><br>
   
    Notwendig ist dazu ein Optolink-Adapter (USB oder LAN), zu dem hier Informationen zu finden sind:<br>
    <a href="http://http://openv.wikispaces.com/">http://openv.wikispaces.com/</a><br><br>
   
    Zus&auml;tzlich m&uuml;ssen f&uuml;r die verschiedenen Heizungstypen (z.B. V200KW1, VScotHO1, VPlusHO1 ....) Speicher-Adressen bekannt sein,<br>
    unter denen die Messwerte abgefragt oder aber auch Stati gesetzt werden k&ouml;nnen.<br>
    Informationen hierzu findet man im Forum <a href="http://http://openv.wikispaces.com/">http://openv.wikispaces.com/</a> und auf der wiki Seite <a href="http://http://openv.wikispaces.com/">http://openv.wikispaces.com/</a><br><br><br>
   
    <a name="VCONTROL300define"><b>Define</b></a>
    <ul>
        <code>define &lt;name&gt; VCONTROL300 &lt;serial-device/LAN-Device:port&gt; &lt;configfile&gt; [&lt;intervall&gt;] [&lt;protocol&gt;] [&lt;protocolparam&gt;]</code><br>
        <br>
        <li><b>&lt;serial-device/LAN-Device:port&gt;</b><br>
        USB Port (z.B. com4, /dev/ttyUSB3) oder aber TCPIP:portnummer<br>
        </li>

        <li><b>&lt;configfile&gt;</b><br>
        Pfad zur Konfigurationsdatei f&uuml;r das Modul , die die Adressen enthält<br>
        </li>

<li><b>&lt;intervall&gt;</b><br>
        Anzahl an Sekunden, wie oft die Heizung ausgelesen werden soll. Der Standardwert ist 180 Sekunden.<br>
        </li>

<li><b>&lt;protocol&gt;</b><br>
        Gibt an, welches Protokoll verwendet werden soll. Möglich Werte sind 300 und KW (Standardwert).<br>
        </li>

<li><b>&lt;protocolparam&gt;</b><br>
        Gibt zus&umla;tzliche Parameter für das Protokoll an.<br/>
Der Standardwert ist 0.<br>
        </li>


        <br>
        <b>Beispiel:</b><br><br>
       
        serielle Schnittstelle &uuml;ber com4, alle 3 Minuten wird gepollt, configfile heisst VCONTROL.cfg und liegt im fhem root Verzeichnis<br><br>

        Windows:<br>
        define Heizung VCONTROL300 com4 VCONTROL.cfg 180 kw<br><br>
       
        Linux:<br>
        define Heizung VCONTROL300 /dev/ttyUSB3 VCONTROL.cfg 180 kw<br>

    </ul>
    <br><br>

    <a name="VCONTROL300set"><b>Set</b></a>
    <ul>
        Diese m&uuml;ssen &uuml;ber das configfile konfiguriert werden.
    </ul>
    <br><br>
    <a name="VCONTROL300get"><b>Get</b></a>
    <ul>
        get &lt;name&gt; CONFIG<br><br>
        Mit diesem Befehl wird das Modul spezifische configfile nachgeladen.<br><br>
         
        Diese anderen Befehler m&uuml;ssen &uuml;ber das configfile konfiguriert werden.
    </ul>
    <br><br>

    <a name="VCONTROL300parameter"><b>configfile</b></a>
    <ul>
       Im configfile hat man nun die folgenden Konfigurations M&ouml;glichkeiten.<br><br>
       
       Beispieldateien f&uml;r die Ger&auml;te-Typen V200KW1, VScotHO1, VPlusHO1 sind auf der wiki Seite <a href="http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29">http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29</a> zu finden.<br><br>

       <li>Zeilen die mit "#" beginnen sind Kommentare<br></li>
       <li>polling Commandos (POLL) zum Lesen von Werten k&ouml;nnen konfiguriert werden.</li>
       <li>set Commandos (SET) zum setzen von Werten k&ouml;nnen konfiguriert werden.<br></li>
       <br>
       <b>Polling Commandos haben den folgenden Aufbau:<br><br></b>

       POLL, ADDRESS, ADDRESSTYPE, DIVISOR, READINGNAME, CUMULATION<br><br>
       
       <ul>
        <li><b>POLL</b><br>
        Gibt an, dass das Kommando zum Pollen von Werten ist<br>
        </li>
        <br>
        <li><b>ADDRESS</b><br>
        Adresse, an der der auszulesende Wert im Speicher zu finden ist.<br>
        <br>
        <li><b>ADDRESSTYPE</b><br>
        Gibt den Type bzw. die Länge der zu lesenden Datenbytes an.<br>
        Bisher m&ouml;gliche Typen:<br>
        <ul>
          <li>1ByteU        :<br> Empfangener Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)<br></li>
          <li>1ByteS        :<br> Empfangener Wert in 1 Byte mit Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)<br></li>
          <li>2ByteU        :<br> Empfangener Wert in 2 Byte ohne Vorzeichen<br></li>
  <li>2ByteS        :<br> Empfangener Wert in 2 Byte mit Vorzeichen<br></li>
          <!--<li>2BytePercent  :<br> Empfangener Wert in 2 Byte als Prozent Wert<br></li>-->
          <li>2ByteH        :<br> Empfangener Wert in 2 Byte als Hex Wert<br></li>
          <li>4Byte         :<br> Empfangener Wert in 4 Byte<br></li>
          <li>mode          :<br> Empfangener Wert ist der Betriebsstatus<br></li>
          <li>timer         :<br> Empfangener Wert ist ein 8 Byte Timer Werte<br></li>
          <li>date          :<br> Empfangener Wert ist ein 8 Byte Zeitstempel<br></li>
          POLL Commandos, die die Parsemethode &quot;timer&quot; enthalten, werden nicht ständig gelesen, sondern müssen mit einem GET Commando geholt werden.<br>
          GET &lt;devicename&gt; getTimers<br>
        </ul>
        </li>
        <br>
        <li><b>DIVISOR</b><br>
        Wenn der interpretierte Wert noch um einen Faktor zu hoch ist, kann hier ein Divisor angegeben werden.<br>
        Zus&auml;tzlich hat man hier bei Werten, die nur 0 oder 1 liefern, die Möglichkeit &quot;state&quot; einzutragen.<br>
        Dies f&uuml;hrt dazu, dass das Reading mit &quot;off&quot; (0) und &quot;on&quot; (1) und nicht dem Zahlenwert belegt wird.<br>
        </li>
        <br>
        <li><b>READINGNAME</b><br>
        Der gelesene und interpretierte Wert wird unter diesem Reading abgelegt.
        </li>
        <br>
        <li><b>CUMULATION</b><br>
        Bei den Polling Commandos mit dem Wert day bei der Spalte CUMULATION werden Tageswerte kumuliert.<br>
        Es werden dann jeweils nach 00:00 Uhr die Werte des letzten Tages ebenfalls als Readings im Device eingetragen,<br>
        so dass man die Werte pro Tag auch plotten oder auswerten kann.<br>
        Beim Readingnamen wird dann jeweils &quot;DayStart&quot;,&quot;Today&quot; und &quot;LastDay&quot; angehangen!<br>
        </li>
       
       <br>
       Beispiel:<br><br>
       <code>POLL, 0804, 2ByteS, 10    , Temp-WarmWasser-Ist , -<br></code>
       <code>POLL, 088A, 2ByteU, 1     , BrennerStarts       , day<br></code>
       </ul>

       <br><br>
       <b>Set Commandos haben den folgenden Aufbau:<br><br></b>

       SET, ADDRESS, ADDRESSTYPE, MULTIPLICATOR, SETNAME, NEXTSET or DAY<br><br>
       
       <ul>
        <li><b>SET</b><br>
        Gibt an, dass das Kommando zum Setzen von Werten ist<br>
        </li>
        <br>

       
     
        <li><b>ADDRESS</b><br>
        Adresse, an der der zu setzende Wert im Speicher zu schreiben ist.<br>
        Es gibt zwei Varianten bei den Adressen:<br>
        <li>Variante 1: Wert steht bereits fest, z.B. &quot;Spar-Modus einschalten&quot; ist fix 01<br>
    <li>Variante 2: Wert muss &uumlbergeben werden, z.B. Warm Wasser Temperatur<br></li>
        </li>
Bei Variante 1 wird einfach der jeweilige Werte also z.B. 01 hinten an die Adresse angehängt also 230101.
        <br>

        <li><b>ADDRESSTYPE</b><br>
        Der Typ der Adresse d.h. wieviel Datenbytes die zu setzende Adresse erwartet.<br>
        Bisher m&ouml;gliche Typen:<br>
        <ul>
          <li>1ByteU        :<br> Zu sendender Wert in 1 Byte ohne Vorzeichen<br>bei Variante 2 muss eine Zahl &uuml;bergeben werden<br></li>
  <li>1ByteUx10     :<br> Gleich wie 1ByteU, allerdings wird der zu sendende Werte mit dem Faktor 10 multipliziert</li>
          <li>1ByteS        :<br> Zu sendender Wert in 1 Byte mit Vorzeichen<br>bei Variante 2 muss eine Zahl &uuml;bergeben werden<br></li>
          <li>1ByteSx10     :<br> Gleich wie 1ByteS, allerdings wird der zu sendende Werte mit dem Faktor 10 multipliziert</li>
  <li>2ByteU        :<br> Zu sendender Wert in 2 Byte ohne Vorzeichen<br>bei Variante 2 muss eine Zahl &uuml;bergeben werden<br></li>
          <li>2ByteUx10     :<br> Gleich wie 2ByteU, allerdings wird der zu sendende Werte mit dem Faktor 10 multipliziert</li>
  <li>2ByteS        :<br> Zu sendender Wert in 2 Byte mit Vorzeichen<br>bei Variante 2 muss eine Zahl &uuml;bergeben werden<br></li>
  <li>2ByteSx10     :<br> Gleich wie 2ByteS, allerdings wird der zu sendende Werte mit dem Faktor 10 multipliziert</li>
  <li>timer         :<br> Zu sendender Wert ist ein 8 Byte Timer Werte<br>bei Variante 2 muss folgender String uebergeben werden:<br>
                                  8 Uhrzeiten mit Komma getrennt.  (AN1,AUS1,AN2,AUS2,AN3,AUS3,AN4,AUS4)<br>
                                  Keine Uhrzeit muss als -- angegeben werden.<br>
                                  Minuten der Uhrzeiten dürfen nur 00,10,20,30,40 oder 50 sein<br>
                                  Beispiel: 06:10,12:00,16:00,23:00,--,--,--,--</li>
          <li>date          :<br> Zu sendender Wert ist ein 8 Byte Zeitstempel<br>bei Variante 2 muss folgender String uebergeben werden:<br>
                                  es muss das Format DD.MM.YYYY_HH:MM:SS eingehalten werden<br>
                                  Beispiel: 21.03.2014_21:35:00</li>
        </ul>
        </li>
        <br>

<li><b>MULTIPLICATOR</b><br>
Wenn der zu sendende Wert noch um einen Faktor zu niedrig ist, kann hier ein Multiplikator angegeben werden.<br>
        Zus&auml;tzlich hat man hier bei Werten, die nur 0 oder 1 liefern, die Möglichkeit &quot;state&quot; einzutragen.<br>
        Dies f&uuml;hrt dazu, dass das Reading mit off (0) und on (1) belegt wird, statt mit dem Wert.<br>
        </li>

<li><b>SETNAME</b><br>
        Der SETNAME ist das Commandos welches man in FHEM zum Setzen angeben muss<br>
        set &lt;devicename&gt; &lt;setcmd&gt;<br>
        z.B. SET &lt;devicename&gt; WW zum setzen auf den Status nur Warm Wasser Aufbereitung<br>
        </li>
        <br>

        <li><b>NEXTSET or DAY</b><br>
        Diese Spalte erf&uuml;llt zwei Funktionen:
        <ul>
        <li>Gibt man in dieser Spalte einen anderen konfigurierten SETNAME an, so wird dies anschließend ausgeführt.<br>
            Beispiel: nach dem Spar Modus (S-ON) gesetzt wurde, muss der Party Modus (P-OFF) ausgeschaltet werden<br>
        </li>
       
        <li>Ist als ADDRESSTYPE der Wert 'timer' angegeben, so muss man in dieser Spalte den Wochentag angeben, für den der Timer gilt.<br>
            M&ouml;gliche Werte: MO DI MI DO FR SA SO<br>
        </li>
        <br>
        </ul>
        Beispiele:<br><br>
        <code>SET, 230101, 1ByteU, state, WarmwasserEinmalig, -<br></code>
        <code>SET,  230201, 1ByteU, state, SparmodusEin, PartymodusAus<br></code>
        <code>SET, 6300, 1ByteU, 1, WarmwasserTemperatur, -<br></code>
        <code>SET, 2000, timer, 1, Timer_Warmwasser_MO, MO<br></code>
      </ul>
    </ul>
    <br>
    <a name="VCONTROL300readings"><b>Readings</b></a>
    <ul>Die eingelesenen Werte werden wie oben beschrieben in selbst konfigurierten Readings abgelegt.</ul>
</ul>
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#126
Noch ein Hinweis. Ich habe eine Vitodens 222-F mit einer Steuerung Vitotronic 200 (HO1A), mit Gas; zwei Heizkreise (M2 ist Fußboden) und Warmwasser. Ich habe mehrere Tage gebraucht, um die Steuerungsbefehle herauszubekommen, ich hänge daher meine Steuerungsdatei an. Auch habe ich bemerkt, dass die Timerzeiten nur dann ausgelesen werden können, wenn in der Steuerung selbst keine Automatic gesetzt ist: Die Werte müssten im Zweifel also für jeden Tag individuell gesetzt werden. Geschieht das nicht und kreuzt in der Steuerung "Automatic" oder "Mo-Fr identisch" an, erhalte ich als Rückmeldung eine leere Zeichenkette, die nicht ausgewertet werden kann (und einen Timeout).

Vielen Dank an Stephan, das ist ein tolles Modul.

Ich füge mal, falls das jemanden interessiert, meine list noch an.
Internals:
   DEF        192.168.2.105:3002 /opt/fhem/FHEM/VScotHO1_300.cfg 3600 kw
   DeviceName 192.168.2.105:3002
   INTERVAL   3600
   NAME       Viessmann
   NR         137
   PROTOCOL   kw
   STATE      WW & Heizung (zeitgest.)
   TYPE       VCONTROL300
   UPDATESTATUS INACTIVE
   READINGS:
     2017-10-01 07:01:44   Aussentemperatur 13.1
     2017-10-01 07:01:44   Betriebsart_Fussb 3
     2017-10-01 07:01:44   Betriebsart_Fussb_party off
     2017-10-01 07:01:44   Betriebsart_Fussb_spar off
     2017-10-01 07:01:44   Betriebsart_Haus 3
     2017-10-01 07:01:44   Betriebsart_Haus_party off
     2017-10-01 07:01:44   Betriebsart_Haus_spar off
     2017-10-01 07:01:43   Betriebsstunden 15696.36
     2017-10-01 06:01:43   Brenner         off
     2017-10-01 07:01:43   BrennerStarts   32494
     2017-10-01 00:01:44   BrennerStarts_BisGestern 32485.00
     2017-10-01 00:01:44   BrennerStarts_Gestern 18.00
     2017-10-01 07:01:43   BrennerStarts_Heute 9.00
     2017-10-01 07:01:44   Frostgrenze     2
     2017-10-01 07:01:43   Geraetekennung  20CB
     2017-10-01 07:01:44   Kennlinie_Fussb_Neigung 0.6
     2017-10-01 07:01:44   Kennlinie_Fussb_Niveau 0
     2017-10-01 07:01:43   Kennlinie_Haus_Neigung 1.4
     2017-10-01 07:01:44   Kennlinie_Haus_Niveau 0
     2017-10-01 07:01:44   Kesseloffset    20
     2017-10-01 07:01:43   Kesseltemperatur 65
     2017-10-01 07:01:43   Pumpendrehzahl  0
     2017-10-01 07:01:43   Pumpendrehzahl_intern 100
     2017-10-01 07:01:44   Pumpennachlauf  2
     2017-10-01 07:01:44   Pumpenstatus    off
     2017-10-01 07:01:44   Pumpenstatus_intern on
     2017-10-01 07:01:43   Solltemperatur_Fussb 21
     2017-10-01 07:01:43   Solltemperatur_Fussb_reduz 17
     2017-10-01 07:01:44   Solltemperatur_Haus 20
     2017-10-01 07:01:43   Solltemperatur_Haus_Vorlauf 36.9
     2017-10-01 07:01:44   Solltemperatur_Haus_reduz 15
     2017-10-01 07:01:43   Speicherladepumpe on
     2017-10-01 07:01:44   Speichertemperatur 38.7
     2017-10-01 07:01:43   Systemzeit      So,01.10.2017 07:01:40
     2017-10-01 07:52:34   Timer_Fussb_DI  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:34   Timer_Fussb_DO  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Fussb_FR  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Fussb_MI  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Fussb_MO  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Fussb_SA  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Fussb_SO  06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Haus_DI   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Haus_DO   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Haus_FR   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:34   Timer_Haus_MI   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:34   Timer_Haus_MO   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:34   Timer_Haus_SA   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Haus_SO   06:20,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Wasser_DI 05:50,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Wasser_DO 05:50,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:34   Timer_Wasser_FR 05:50,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Wasser_MI 05:50,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Wasser_MO 06:00,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:34   Timer_Wasser_SA 07:10,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   Timer_Wasser_SO 07:00,22:00,--,--,--,--,--,--,--,--,--,--,--,--,
     2017-10-01 07:52:35   UpdateStatus    Inactive
     2017-10-01 07:52:35   UpdateTime      2017-10-01_07:52:35
     2017-10-01 07:01:43   Urlaubs-Beginn  Do,01.01.1970 00:00:00
     2017-10-01 07:01:44   Urlaubs-Ende    Do,01.01.1970 00:00:00
     2017-10-01 07:01:43   Vorlauftemperatur 31.5
     2017-10-01 07:01:44   Warmwasser      38.7
     2017-10-01 07:01:44   Warmwasser-Soll 60
     2017-10-01 07:01:44   Zirkulationspumpe on
   helper:
Attributes:
   cumulationSuffixToday _Heute
   cumulationSuffixTodayStart _BisGestern
   cumulationSuffixYesterday _Gestern
   group      Messung
   room       Info
   stateFormat {my %Betriebsarten = ("0" => "nur WW","3" => "WW & Heizung","5" => "Frostschutz");
my $zusatz = " (zeitgest.)";
if (ReadingsVal($name, "Betriebsart_Haus_party","off") eq "on") {$zusatz = " (voll)"};
if (ReadingsVal($name, "Betriebsart_Haus_spar","off") eq "on") {$zusatz = " (reduz.)"};
return $Betriebsarten{ReadingsVal($name, "Betriebsart_Haus","0")}.$zusatz}
   timeout    600
   verbose    5
   vitotronicType 200_HOxx
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#127
Zitat von: KarlHeinz2000 am 13 März 2017, 22:56:16
Bei mir (KW) geht es mit:

SET,  2311,   date,      1,        Urlaub-Ende, -
SET,  2309,   date,      1,        Urlaub-Beginn, -

Ich habe bei Ferienprogramm dann noch einen Haken, der gesetzt werden muss. Geschieht das bei Dir automatisch? Angeblich ist der entsprechende Code in 2535, aber das gibt bei mir (unabhängig vom gesetzten Haken) immer 18 zurück und die Doku sagt, das sei readonly.

<EDIT> Auf die Idee hätte ich auch selbst kommen können. Als ich zwei Termine wählte, die so liegen, dass heute genau dazwischen lag, wurde der Haken automatisch gesetzt. Das ist vermutlich nur eine Readonly-Anzeige.

<EDIT2> Inzwischen habe ich eine Subroutine in 99_myUtils.pm, die mir den Betriebszustand ausgibt. Das war (für mich) irgendwie anstrengend, weil es mit der Hand gerechnet werden musste:
sub Betriebszustand($){
    my ($devname) = @_; #devicename holen

my $now_tstamp = TimeNow(); #aktuelles Datum als epoch-Variable, https://wiki.fhem.de/wiki/DevelopmentModuleAPI#fhemTimeLocal
my @now      = split(" ",$now_tstamp);
my @now_day  = split("-",$now[0]);
my @now_time = split(":",$now[1]);
my $now_time_epoch = fhemTimeLocal($now_time[2],$now_time[1],$now_time[0],$now_day[2],$now_day[1],$now_day[0]);

    my $UrlBeginn = ReadingsVal($devname, "Urlaubs-Beginn", "Do, 01.01.1970 00:00:00"); #Beginn Ferienzeit steht in diesem Reading
my @UrlBeginn_split = split(" ",$UrlBeginn);
my @UrlBeginn_day    = split(".",$UrlBeginn_split[1]);
my @UrlBeginn_time   = split(":",$UrlBeginn_split[2]);
my $UrlBeginn_epoch  = fhemTimeLocal($UrlBeginn_time[2],$UrlBeginn_time[1],$UrlBeginn_time[0],$UrlBeginn_day[0],$UrlBeginn_day[1],$UrlBeginn_day[2]);

    my $UrlEnde = ReadingsVal($devname, "Urlaubs-Ende", "Do, 01.01.1970 00:00:00");  #Ende Ferienzeit steht in diesem Reading
my @UrlEnde_split = split(" ",$UrlEnde);
my @UrlEnde_day    = split(".",$UrlEnde_split[1]);
my @UrlEnde_time   = split(":",$UrlEnde_split[2]);
my $UrlEnde_epoch  = fhemTimeLocal($UrlEnde_time[2],$UrlEnde_time[1],$UrlEnde_time[0],$UrlEnde_day[0],$UrlEnde_day[1],$UrlEnde_day[2]);

if (($now_time_epoch > $UrlBeginn_epoch) && ($now_time_epoch < $UrlEnde_epoch)){ #TimeNow in der Ferienzeit?
return "kein WW, reduz. Heizung (Ferien)";
} else {
my %Betriebsarten = ("0" => "nur Warmwasser","3" => "WW & Heizung","5" => "Frostschutz"); #sonst drei Betriebsarten moeglich
my $zusatz = " (zeitgest.)";

if (ReadingsVal($devname, "Betriebsart_Haus_party","off") eq "on") { # die Betriebsarten stehen in diesen drei Readings
$zusatz = " (voll)"
};
if (ReadingsVal($devname, "Betriebsart_Haus_spar","off") eq "on") {
$zusatz = " (reduz.)"
};
return $Betriebsarten{ReadingsVal($devname, "Betriebsart_Haus","0")}.$zusatz;
}
}

Der stateformat sieht dann so aus:
stateFormat
{return Betriebszustand($name);#siehe 99_myUtils.pm
}
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#128
Zitat von: ToJu am 31 März 2017, 20:29:20
Beim Schreiben  SET,   2100,    timer,  1,       TimerWW_1Montag,           MO bekomme ich die Fehlermeldung.

<EDIT3> Noch eine bessere Variante. Es handelt sich um die Funktion  VCONTROL300_addSetParameterToList, die mögliche nachfolgende SET-Kommandos aufruft. Da an der gleichen Stelle aber auch Wochentage stehen können, missversteht VCONTROL300 diese Wochentage als SET-Befehl, sucht sie und wirft eine Fehlermeldung heraus. Man muss also, immer dann wenn statt SET-Befehlen Wochentage stehen, den Fehlerauswurf unterbinden. Am besten gelingt dies so:

sub VCONTROL300_addSetParameterToList($$$$) {
...
- Log3 $devName, 2, "VCONTROL300: Error! Set name '$arg' does not exist!";
+ if ($arg !~ m/^(MO|DI|MI|DO|FR|SA|SO)$/){
+ Log3 $devName, 2, "VCONTROL300: Error! Set name '$arg' does not exist!";
+ }


Muss Stephan was zu sagen.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

crispyduck

Wow, da ist aber gerade wer fleißig!

Falls du vor hast eine neue Version mot dei en Änderungen zu machen, könntest du vielleicht auch meine Änderungen mit rein nehmen das es mit der config db funktioniert?

Andere Frage, wenn ich mich recht erinnere ist in dem code eigentlich kein GET Befehl für einzelnen readings vorgesehen, oder?

Lg,
Crispyduck

andies

Zitat von: crispyduck am 02 Oktober 2017, 06:35:47
Falls du vor hast eine neue Version mot dei en Änderungen zu machen, könntest du vielleicht auch meine Änderungen mit rein nehmen das es mit der config db funktioniert?
Ich habe das jetzt so gemacht, dass ich alle Änderungen (bis auf die oben mit dem MO|DI|MI usw) hier explizit dokumentiert habe
https://forum.fhem.de/index.php/topic,67744.msg692307.html#msg692307
Da ich kein Programmierer bin, sorry wenn die Darstellung nicht korrekt ist. Ich weiß nicht recht, wie man das genau macht.

Zitat von: crispyduck am 02 Oktober 2017, 06:35:47
wenn ich mich recht erinnere ist in dem code eigentlich kein GET Befehl für einzelnen readings vorgesehen, oder?
Ich hole die Readings entweder mit INTERVALL, also automatisch, oder indem ich die Config neu lade. Aber das könnte man sicher ändern mit "Hole Daten". Dann sollte das polling aber bei den anderen raus, finde ich.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Zitat von: Tobias am 15 Mai 2017, 09:29:40
Beim SET klappt allerdings nur die Raum-Soll-Temp Korrekt. Die Betriebsart kann ich nicht umstellen.

Edit:
ich habs rausbekommen, war wohl eine Read-only Adresse, mit der Adresse 3323 funktioniert es nun :)
Wo hast Du diese Adresse dann herbekommen? Ich habe das gleiche Problem, senden klappt - aber die Betriebsart wird nicht umgestellt, wie man unten sieht. Ich habe eine HO1A, Vitotronic 100 und Typ:VScotHO1, ID:20CB, Protokoll:P300.


2017.10.02 10:49:06 0: VCONTROL300-DEBUG: arg: Betrieb_Haus_Frost #Vorbereitungen
2017.10.02 10:49:06 0: VCONTROL300-DEBUG: value:
2017.10.02 10:49:06 5: VCONTROL300: Add value '05' for parameter '2301' to set list!
...
2017.10.02 10:49:09 4: VCONTROL300: Set value 01F423010105 #jetzt wird gesendet
2017.10.02 10:49:09 5: VCONTROL300: Send 01F423010105
2017.10.02 10:49:09 5: SW: 01f423010105
2017.10.02 10:49:09 5: VCONTROL300: Read '00'
2017.10.02 10:49:09 5: VCONTROL300: Received response
2017.10.02 10:49:09 4: VCONTROL300: End of setting values! Duration: 2.92
...
2017.10.02 10:49:12 5: VCONTROL300: Set sendstr 01F7230101 #aber der Wert ist 3
2017.10.02 10:49:12 5: VCONTROL300: Delete prefix 01 of sendstr
2017.10.02 10:49:12 5: VCONTROL300: Send F7230101
2017.10.02 10:49:12 5: SW: f7230101
2017.10.02 10:49:12 5: VCONTROL300: Read '03'
2017.10.02 10:49:12 5: VCONTROL300: Data '03'
2017.10.02 10:49:12 5: VCONTROL300: Parsed 'Betriebsart_Haus : 3'
2017.10.02 10:49:12 5: VCONTROL300: Update reading 'Betriebsart_Haus : 3'

Auch die 2323 liefert kein neues Ergebnis bei mir. Angeblich soll aber 2301 beim HO1A read/write sein.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

amenomade

Bei mir 20CB funktioniert:
SET, 230100, 1ByteU, state      ,WW        , -
SET, 230103, 1ByteU, state      ,HWW       , -
SET, 230105, 1ByteU, state      ,AUS       , -


Die Adressen 33xx sind nw. für den 2. Heizkreis.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andies

FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

crispyduck

Zitat von: srxp am 16 Mai 2017, 12:52:58
So hab jetzt  mal mein Fhem upgedated und hab keine Problem...funkt nach wie vor.
meine DevIO.pm ist vom 25.04.2017. hab ihr eine neuere?

lg

Hi,

Hab heute aus einem anderen Grund mal ein alte Backup eingespielt.

Mir ist dabei dann zufällig aufgefallen das VCONTROL300 ohne Probleme lief bis ich ein apt-get update ausführte.

Das Problem kommt demnach also höchst wahrscheinlich von einer Änderung in perl.

Lg
Crispyduck