Autor Thema: Z-Wave Thermostat Eurotronic Spirit  (Gelesen 11503 mal)

Offline trollmars

  • New Member
  • *
  • Beiträge: 14
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #90 am: 09 November 2018, 11:51:33 »

Sorry, verstehe jedoch Zusammenhang mit dem Zitat von mir nicht. Ich wollte nur klarstellen, dass man auch Temperaturwerte von Nicht-ZWave-Geräten an das Spirit per FHEM schicken kann.

Gruß, Christian

Thx.
Bin als neuling für jede Hilfe sehr dankbar.
Die ventilöffnung funktioniert schonmal  ;)

Jetzt nochmal zur externen Raumtemperatur Möglichkeit :
Hatte das so verstanden das dein link diese Möglichkeit aufzeigt.
Also den temperaturwert eines z. B mqtt items
an das spirit schicken.
Aber das müsste doch ein Befehl mit "Set" sein oder nicht?
Dazu finde ich aber nichts. Bzw verstehe es wohl noch nicht

Thx
« Letzte Änderung: 09 November 2018, 12:46:06 von trollmars »

Offline rcmcronny

  • New Member
  • *
  • Beiträge: 40
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #91 am: 09 November 2018, 13:52:17 »
Schau mal weiter vorn, da ist eine Lösung, wie das zB machbar ist: (Antwort #43)

https://forum.fhem.de/index.php/topic,77598.msg710737.html#msg710737

HTH Ronny

Offline trollmars

  • New Member
  • *
  • Beiträge: 14
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #92 am: 09 November 2018, 21:43:07 »
Wie man es programmatisch aus FHEM heraus setzen kann hatte ich weiter oben in diesem Thread mal beschrieben. Keine Garantie, dass es das tut was es soll, aber bisher verhält sich mein Spirit bei Temperaturänderungen plausibel. So richtig sehen was der Spirit bekommt und was er daraus macht kann man leider nicht, d.h. man findet nicht heraus was er denn nun intern verwendet (sprich ob der gesetzte Wert angekommen ist und auch verwendet wird).

Bei einem Z-Wave Temperaturfühler würde ich erwarten, dass eine direkte Assoziation vom Thermometer zum Spirit automatisch das richtige tut.

Da ich LaCrosse Temperatursensoren nutze habe mir in der 99_myUtils.pm eine Funktion gebaut um die Temperatur am Spirit zu setzen:

sub sendRoomTemperatureToSpirit($$) {
my ($device, $temperature) = @_;
if ($device ne "") {
my $ioDev = AttrVal($device, "IODev", "");
my $nodeIdHex = InternalVal($device, "nodeIdHex", "");
if ($ioDev ne "" && $nodeIdHex ne "") {
my $cmdTemp = substr("0000" . sprintf("%x", $temperature * 10), -4);
my $cmdCallbackId = substr("00" . sprintf("%x", int(rand(256))), -2);
my $fhemCommand = "get " . $ioDev . " raw 13" . $nodeIdHex . "0631050122" . $cmdTemp . "25" . $cmdCallbackId;
Log 3, "Heating Control - Room temperature for " . $device . " is " . $temperature . "°C.";
fhem($fhemCommand);
} else {
Log 3, "Heating Control - No ioDev or nodeIdHex found for " . $device . ".";
}
} else {
Log 3, "Heating Control - No device specified.";
}
}

Beispielaufruf für Spirit-Thermostat "EG.wz.THERM" mit einer Temperatur von 21.5 Grad Celsius wäre:

sendRoomTemperatureToSpirit("EG.wz.THERM", "21.5")
Das ganze wird dann über einen Notify bei Temperaturänderungen von mindestens 0.2 Grad gegenüber dem letzten Wert gesteuert.

Ich brauch da leider etwas hilfe.

Das 99_myUtils.pm ist mit Hilfe der Wiki Seite zu myUtils und dem Code von oben erstellt.

Zwei Fragen dazu:
- Muss ich den Code von oben noch mit meiner nodeIdHex ersetzen?
- Wie sieht der Notify zu dem Pearl Code von oben aus?
 define ?????
mmh

Offline trollmars

  • New Member
  • *
  • Beiträge: 14
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #93 am: 10 November 2018, 13:10:00 »
Also ich antworte mir mal selber.

Ich denke die NodeID habe ich rausgefunden und im Code ersetzt.

Nur wie führe ich den Befehl aus?

wenn ich in der Befehlseingabe

sendRoomTemperatureToSpirit("MEINGERÄTENAME", "21.5")eingebe kommt

Unknown command sendRoomTemperatureToSpirit("MEINGERÄTENAME",, try help.
Hat einer ne kleine Hilfestellung
« Letzte Änderung: 10 November 2018, 13:12:10 von trollmars »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19320
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #94 am: 10 November 2018, 17:47:58 »
Perl Ausdruecke muss man in {} einschliessen, Shell-Befehle in "".
Siehe auch https://fhem.de/commandref_modular.html#command

Offline trollmars

  • New Member
  • *
  • Beiträge: 14
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #95 am: 10 November 2018, 18:17:20 »
Perl Ausdruecke muss man in {} einschliessen, Shell-Befehle in "".
Siehe auch https://fhem.de/commandref_modular.html#command

Danke!! Fhem ist mächtig ...aber für neulinge auch anspruchsvoll  ;D

Ich hatte auch schon mit den Klammern gelesen.
Um auf das ZWave Beispiel in diesen Thread bezug zu nehmen.

ich möchte den sub aus dem Pearl script aufrufen ..um erstmal zu testen ob es läuft.
Also in der Befehl Box:

{sendRoomTemperatureToSpirit(„spirit“,„17“);;}
Bekomme ich :
Unrecognized character \xE2; marked by <-- HERE after eToSpirit(<-- HERE near column 30 at (eval 24) line 1.

sendRoomTemperatureToSpirit ist das sub aus dem Code vom User Mdescher.
spirit ist der Name des Zwave Thermostats.

Auch wenn ich die beiden Semikolons am Ende nicht verwende ist das Ergebniss das gleiche.

Ich gebe nicht auf ;-) ..das muss doch als einsteiger zu machen sein


Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19320
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #96 am: 10 November 2018, 18:30:12 »
Zitat
„spirit“
Die "oben/unten" Anfuehrungszeichen sind falsch, es muessen auf beiden seiten die aus dem ASCII Zeichensatz sein.
Gibt es neben Word auch noch andere Programme, die das automatisch kaputtmachen?

Offline trollmars

  • New Member
  • *
  • Beiträge: 14
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #97 am: 11 November 2018, 20:07:03 »
Danke für die Hilfe!!
...das war es.

Bei mir war es dummheit und der OSX Text-Editor.

Trotzdem nehme ich von dieses Lösung erstmal abstand.
Mir ist jetzt schon zweimal das Spirt Modul "abgeschmiert" mit Timeouts.
Es half nur das Modul zu löschen und neu.

Versuche jetzt doch mal das PID20 mit manual verfahren.


Offline trollmars

  • New Member
  • *
  • Beiträge: 14
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #98 am: 11 November 2018, 21:38:14 »
Hallo  trollmars,

Denke mal kann Deine Frage mit ja beantworten weil ich diese Variante momentan mit 3 Spirit nutze .
Der Umweg ist bei mir das FHEM PID20 Modul in Verbindung mit HeatingControl.
Hat den Vorteil auch nicht ZWave Temperatursensor Fensterkontakt zur Ansteuerung des Spirit zu nutzen.
Natürlich ist hierzu der Spirit vorher in den Stellwertmodus zu versetzen.

hier mal ein List eines PID20

Internals:
   CHANGED   
   DEF        Badsensor:temperature Thermostat_Bad:dim
   NAME       heizung_bad
   NR         304
   NTFY_ORDER 50-heizung_bad
   STATE      processing
   TYPE       PID20
   VERSION    1.0.0.9
   Helper:
     DBLOG:
       actuation:
         myDbLog:
           TIME       1541457564.28846
           VALUE      11
       actuationCalc:
         myDbLog:
           TIME       1541457744.53322
           VALUE      10.8000000000019
       desired:
         myDbLog:
           TIME       1541457624.36823
           VALUE      20.0
       measured:
         myDbLog:
           TIME       1541457684.45655
           VALUE      20.9
       p_i:
         myDbLog:
           TIME       1541457624.36823
           VALUE      56.1600000000018
       p_p:
         myDbLog:
           TIME       1541457684.45655
           VALUE      -44.9999999999999
   READINGS:
     2018-11-05 23:42:24   actuation       11
     2018-11-05 23:42:24   actuationCalc   10.8000000000019
     2018-11-05 23:42:24   delta           -0.899999999999999
     2018-11-05 23:42:24   desired         20.0
     2018-11-05 23:42:24   measured        20.9
     2018-11-05 23:42:24   p_d             0
     2018-11-05 23:42:24   p_i             55.8000000000018
     2018-11-05 23:42:24   p_p             -44.9999999999999
     2018-11-05 23:42:24   state           processing
   helper:
     actor      Thermostat_Bad
     actorCommand dim
     actorErrorAction errorPos
     actorErrorPos 5
     actorInterval 180
     actorKeepAlive 1800
     actorLimitLower 0
     actorLimitUpper 99
     actorThreshold 1
     actorTimestamp 2018-11-05 23:39:24
     actorValueDecPlaces 0
     adjust     
     calcInterval 60
     deltaGradient 0
     deltaOld   -0.899999999999999
     deltaOldTS 2018-11-05 23:40:35
     deltaTreshold 0
     desiredName desired
     disable    0
     factor_D   0
     factor_I   0.2
     factor_P   50
     isWindUP   
     measuredName measured
     reading    temperature
     regexp     ^([\+,\-]?\d+\.?\d*$)
     reverseAction 0
     sensor     Badsensor
     sensorTimeout 7200
     stopped    0
     updateInterval 600
Attributes:
   DbLogExclude state,delta,p_d
   DbLogInclude measured,desired,actuation,p_p,p_i,actuationCalc
   alias      Heizung_Bad
   event-min-interval actuation:300,actuationCalc:300,delta:300,desired:300,measured:300,p_d:300,p_i:300,p_p:300
   event-on-change-reading actuation:1,actuationCalc:0.5,delta:0.2,desired,measured:0.2,p_d:0.1,p_i:1.0,p_p:1.0
   group      Thermostate
   pidActorErrorAction errorPos
   pidActorErrorPos 5
   pidActorInterval 180
   pidActorLimitUpper 99
   pidActorTreshold 1
   pidActorValueDecPlaces 0
   pidFactor_D 0
   pidFactor_I 0.2
   pidFactor_P 50
   pidSensorTimeout 7200
   room       Bad



Eventuell zur Erbauung ein list des zu gehörigen HeatingControl

Internals:
   COMMAND    {fhem("set Thermostat_Bad tmManual"); {fhem("set $NAME desired $EVENT")}}
   CONDITION 
   DEF        heizung_bad mo,di,mi,do,fr,$we|06:00|23 mo,di,mi,do,fr,$we|22:00|20  {fhem("set Thermostat_Bad tmManual"); {fhem("set $NAME desired $EVENT")}}
   DEVICE     heizung_bad
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       HC_Bad
   NR         303
   Profil 0: Sonntag 06:00:00 23, 22:00:00 20
   Profil 1: Montag 06:00:00 23, 22:00:00 20
   Profil 2: Dienstag 06:00:00 23, 22:00:00 20
   Profil 3: Mittwoch 06:00:00 23, 22:00:00 20
   Profil 4: Donnerstag 06:00:00 23, 22:00:00 20
   Profil 5: Freitag 06:00:00 23, 22:00:00 20
   Profil 6: Samstag 06:00:00 23, 22:00:00 20
   Profil 7: Wochenende 06:00:00 23, 22:00:00 20
   STATE      20
   STILLDONETIME 0
   TYPE       Heating_Control
   READINGS:
     2018-11-05 22:00:00   currValue       20
     2018-11-05 08:31:09   disabled        0
     2018-11-05 22:00:00   nextUpdate      2018-11-06 06:00:00
     2018-11-05 22:00:00   nextValue       23
     2018-11-05 22:00:00   state           20
   SWITCHINGTIMES:
     mo,di,mi,do,fr,$we|06:00|23
     mo,di,mi,do,fr,$we|22:00|20
   TIMER:
     HC_Bad_1:
       HASH       HC_Bad
       MODIFIER   1
       NAME       HC_Bad_1
       immerSchalten 1
     HC_Bad_2:
       HASH       HC_Bad
       MODIFIER   2
       NAME       HC_Bad_2
     HC_Bad_SetTimerOfDay:
       HASH       HC_Bad
       MODIFIER   SetTimerOfDay
       NAME       HC_Bad_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     HC_Bad_delayed:
       HASH       HC_Bad
       MODIFIER   delayed
       NAME       HC_Bad_delayed
   dayNumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     SWITCHINGTIME:
       0:
         06:00:00   23
         22:00:00   20
       1:
         06:00:00   23
         22:00:00   20
       2:
         06:00:00   23
         22:00:00   20
       3:
         06:00:00   23
         22:00:00   20
       4:
         06:00:00   23
         22:00:00   20
       5:
         06:00:00   23
         22:00:00   20
       6:
         06:00:00   23
         22:00:00   20
       7:
         06:00:00   23
         22:00:00   20
   longDays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   profil:
     1:
       EPOCH      1541394000
       PARA       23
       TIME       06:00
       TAGE:
         1
         2
         3
         4
         5
         7
     2:
       EPOCH      1541451600
       PARA       20
       TIME       22:00
       TAGE:
         1
         2
         3
         4
         5
         7
   profile_IDX:
     0:
       06:00:00   1
       22:00:00   2
     1:
       06:00:00   1
       22:00:00   2
     2:
       06:00:00   1
       22:00:00   2
     3:
       06:00:00   1
       22:00:00   2
     4:
       06:00:00   1
       22:00:00   2
     5:
       06:00:00   1
       22:00:00   2
     6:
       06:00:00   1
       22:00:00   2
     7:
       06:00:00   1
       22:00:00   2
   shortDays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   DbLogExclude .*
   alias      Bad-Heizung-Solltemp
   commandTemplate set $NAME  $EVENT
   disable    0
   group      Heizung und Temperatur
   icon       sani_heating_automatic
   room       Bad
   sortby     2
   switchInThePast 1

sieht dann ungefähr so aus


 
Gruß
Hans-Jürgen

Hi Hans-Jürgen.

Das PID20 läuft soweit. Danke für den Tipp.
Jetzt wollte ich mich an die Heating Control machen.

Ich schaffe es einfach nicht die Heating Control zu erstellen das die Temperatur Zeitsteurung an das PID20 "desired" geht.
In allen Wiki ist ist beim Heating Control immer nur die rede von desired-temperature (Also direkt an das Device)
Das will ich aber nicht. sonder der Sollwert soll ja vom PID20 kommen.

Hast du einen Tipp?
« Letzte Änderung: 11 November 2018, 21:40:25 von trollmars »

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 351
Antw:Z-Wave Thermostat Eurotronic Spirit
« Antwort #99 am: 11 November 2018, 23:57:39 »
Hallo trollmars,

Zitat
Ich schaffe es einfach nicht die Heating Control zu erstellen das die Temperatur Zeitsteurung an das PID20 "desired" geht.

also wenn ich Deine Frage richtig verstehe habe ich beim HeatingControl am Anfang der DEF als Name des Devices den Namen des PID20 genommen,
wie:        heizung_bad mo,di,mi,do,fr,$we|06:00|23 mo,di,mi,do,fr,$we|22:00|20  {fhem("set Thermostat_Bad tmManual"); {fhem("set $NAME desired $EVENT")}}

Hierbei ist     heizung_bad   der Name des definierten PID20 im zusammen spiel.

Hierbei ist am Ende in dem Command Perlcode geschweifte Klammern das Thermostat_Bad der Name des Spirit welches ich zur Sicherheit immer nochmal in den Stellwertmodus setze
und dann die desired an das PID übergibt.

Und ja ich vermute Du hast auch am Ende der DEF vom PID dim statt default valve? gesetzt.
Auch nicht zu vergessen das attr. beim PID pidActorLimitUpper 99 zu setzen.
   


Habe die Sache u.a. mit DOIFs noch etwas ausgebaut um zu verhindern das jemand bei geöffneten Fenster die von mir ebenfalls mit DOIF abgesenkte Temperatur aus Versehen verstellt.

Gruß
Hans-Jürgen


« Letzte Änderung: Gestern um 00:20:23 von Deckoffizier »
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Cyrus SmartHome USB Dongle Z-Wave Plus

 

decade-submarginal