VControl und 2 FHEM-Server

Begonnen von darkness, 10 Dezember 2015, 12:25:40

Vorheriges Thema - Nächstes Thema

darkness

Hallo,

ich möchte meine Heizung nun entgültig in FHEM integrieren. Bisher läuft auf einem Pi ein FHEM-Server, welcher die Heizung mittels des Moduls VCONTROL ausliest bzw. Werte setzt. Klappt soweit.
Jetzt möchte ich aber alles über meinen "Hauptserver (FHEM_Haupt)" steuern.
Ich habe mir FHEM2FHEM angeschaut und vielleicht noch nicht so ganz verstanden. So wie ich das gelesen habe, kann ich nur Werte aus dem Log auslesen bzw. auf dem Hauptserver anzeigen.
Eine RAW-Verbindung wird durch VZCONTROL nicht unterstüzt.
Habe ich das soweit richtig verstanden?

Kann ich denn auf FHEM_Haupt ebenfalls ein VCONTROL-Modul definieren und mich per IP:PORT mit dem VCONTROL auf FHEM_Heizung verbinden und die Daten direkt auslesen?

Bisher fehlt mir da etwas der Ansatz und bin für Tipps dankbar.


AndreasHH

#1
Moin,

Dein Ansatz mittels FHEM2FHEM ist schon OK.

Ich habe es ebenfalls so gelöst, bei gleicher Ausgangsbasis.

VControl läuft bei mir nur auf dem Raspi.

folgend meine Konfigurationen:

1. Raspi


define VDens VCONTROL /dev/ttyAMA0 V200KW1.cfg 120
attr VDens devStateIcon AUS:viessmann_abschalt.png WW:viessmann_ww H\+WW:viessmann_h_ww H\+WW\x20FS:viessmann_h_ww
attr VDens room Heizung
attr VDens setList state:AUS,ABSENK,TAG,HWW,WW,P-ON,P-OFF,S-ON,S-OFF,WWTEMP,SYSTIME
attr VDens verbose 3
# FHEM2FHEM Raspi nach Zentrale
define Zentrale FHEM2FHEM 192.168.1.9:7072 LOG:.*VentileBedarf|Heizung.*
attr Zentrale room System
#
# FHEM2FHEM von Zentrale // zum Absetzen von Befehlen vom Raspi an Server
define forwardH2HZentrale dummy
#
# zum Ausfuehren der Befehle die vom Server abgesetzt werden
define executeFHEM2FHEM notify forwardH2HRaspiB_Hzg $EVENT



2. Server

#            von RaspiB_Hzg per FHEM2FHEM
define RaspiB_Hzg FHEM2FHEM 192.168.1.171:7072 LOG:.*VDens|Zentrale.*
attr RaspiB_Hzg group RasPi
attr RaspiB_Hzg room Presence
#
define executeFHEM2FHEM notify forwardH2HZentrale $EVENT
#
define forwardH2HRaspiB_Hzg dummy
#
#
#
#
#
define Therme_Status dummy
attr Therme_Status group Therme
attr Therme_Status icon sani_heating
attr Therme_Status room Keller,Heizung
#
#
define ThermeStatus1_notify notify VDens { if ("$EVENT" eq "ABSCHALT" ) { fhem("set Therme_Status AUS") }}
define ThermeStatus2_notify notify VDens { if ("$EVENT" eq "WW" ) { fhem("set Therme_Status WW") }}
define ThermeStatus3_notify notify VDens { if ("$EVENT" eq "H+WW" ) { fhem("set Therme_Status HWW") }}
# define ThermeStatus3_notify notify VDens { if ("$EVENT" eq "H+WW FS" ) { fhem("set Therme_Status HWW") }}
#
define Therme_Brenner dummy
attr Therme_Brenner group Therme
attr Therme_Brenner room Keller,Heizung
#
define Therme_BrennerLeistung dummy
attr Therme_BrennerLeistung group Therme
attr Therme_BrennerLeistung room Keller,Heizung
attr Therme_BrennerLeistung stateFormat state %
#
define Therme_BrennerStarts dummy
attr Therme_BrennerStarts group Therme
attr Therme_BrennerStarts room Keller,Heizung
#
define Therme_BrennerStartsLastDay dummy
attr Therme_BrennerStartsLastDay group Therme
attr Therme_BrennerStartsLastDay room Keller,Heizung
#
define Therme_BrennerStartsToday dummy
attr Therme_BrennerStartsToday group Therme
attr Therme_BrennerStartsToday room Keller,Heizung
#
define Therme_BrennerStufe dummy
attr Therme_BrennerStufe group Therme
attr Therme_BrennerStufe room Keller,Heizung
#
define Therme_BrennerStunden dummy
attr Therme_BrennerStunden group Therme
attr Therme_BrennerStunden room Keller,Heizung
attr Therme_BrennerStunden stateFormat state h
#
define Therme_BrennerStundenLastDay dummy
attr Therme_BrennerStundenLastDay group Therme
attr Therme_BrennerStundenLastDay room Keller,Heizung
attr Therme_BrennerStundenLastDay stateFormat state h
#
define Therme_BrennerStundenToday dummy
attr Therme_BrennerStundenToday group Therme
attr Therme_BrennerStundenToday room Keller,Heizung
attr Therme_BrennerStundenToday stateFormat state h
#
define Therme_WW_Ist dummy
attr Therme_WW_Ist group Therme
attr Therme_WW_Ist room Keller,Heizung
attr Therme_WW_Ist stateFormat state °C
define SVG_Therme.WW SVG DbLog:SVG_Therme.WW:HISTORY
attr SVG_Therme.WW label "Therme.WW Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_Therme.WW room Keller,Heizung
##
define Therme_Neigung dummy
attr Therme_Neigung group Therme
attr Therme_Neigung room Keller,Heizung
#
define Therme_Niveau dummy
attr Therme_Niveau group Therme
attr Therme_Niveau room Keller,Heizung
#
define Therme_WW_Soll dummy
attr Therme_WW_Soll group Therme
attr Therme_WW_Soll room Keller,Heizung
attr Therme_WW_Soll stateFormat state °C
#
define Therme_PumpeZirkulation dummy
attr Therme_PumpeZirkulation group Therme
attr Therme_PumpeZirkulation room Keller,Heizung
#
define Therme_PumpeHeizkreis dummy
attr Therme_PumpeHeizkreis group Therme
attr Therme_PumpeHeizkreis room Keller,Heizung
#
define Therme_PumpeSpeicher dummy
attr Therme_PumpeSpeicher group Therme
attr Therme_PumpeSpeicher room Keller,Heizung
define SVG_Therme.Brenner SVG DbLog:SVG_Therme.Brenner:HISTORY
attr SVG_Therme.Brenner label "Therme Kessel Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_Therme.Brenner room Keller,Heizung
#
#
define Therme_Stoerung dummy
attr Therme_Stoerung group Therme
attr Therme_Stoerung room Keller,Heizung
#
define Therme_Temp_Abgas dummy
attr Therme_Temp_Abgas group Therme
attr Therme_Temp_Abgas room Keller,Heizung
attr Therme_Temp_Abgas stateFormat state °C
#
define Therme_Temp_Aussen dummy
attr Therme_Temp_Aussen group Therme
attr Therme_Temp_Aussen room Keller,Heizung
attr Therme_Temp_Aussen stateFormat state °C
#
define Therme_Temp_Kessel_Ist dummy
attr Therme_Temp_Kessel_Ist group Therme
attr Therme_Temp_Kessel_Ist room Keller,Heizung
attr Therme_Temp_Kessel_Ist stateFormat state °C
#
define Therme_Temp_Kessel_Soll dummy
attr Therme_Temp_Kessel_Soll group Therme
attr Therme_Temp_Kessel_Soll room Keller,Heizung
attr Therme_Temp_Kessel_Soll stateFormat state °C
#
define Therme_Temp_Nacht_Soll dummy
attr Therme_Temp_Nacht_Soll group Therme
attr Therme_Temp_Nacht_Soll room Keller,Heizung
attr Therme_Temp_Nacht_Soll stateFormat state °C
#
define Therme_Temp_Party_Soll dummy
attr Therme_Temp_Party_Soll group Therme
attr Therme_Temp_Party_Soll room Keller,Heizung
attr Therme_Temp_Party_Soll stateFormat state °C
#
define Therme_Temp_Raum_Soll dummy
attr Therme_Temp_Raum_Soll group Therme
attr Therme_Temp_Raum_Soll room Keller,Heizung
attr Therme_Temp_Raum_Soll stateFormat state °C
#
#
define Therme_Temp_Rueck dummy
attr Therme_Temp_Rueck group Therme
attr Therme_Temp_Rueck room Keller,Heizung
attr Therme_Temp_Rueck stateFormat state °C
#
define Therme_Temp_Vor dummy
attr Therme_Temp_Vor group Therme
attr Therme_Temp_Vor room Keller,Heizung
attr Therme_Temp_Vor stateFormat state °C
#
define Therme_Temp_Vor_Soll dummy
attr Therme_Temp_Vor_Soll group Therme
attr Therme_Temp_Vor_Soll room Keller,Heizung
attr Therme_Temp_Vor_Soll stateFormat state °C
#
define Therme_Events_notify notify VDens.* {\
my ($param,$wert) = split(": ", "$EVENT");;\
   if("$param" eq "Brenner") {fhem "set Therme_Brenner $wert"};;\
   if("$param" eq "BrennerLeistung") {fhem "set Therme_BrennerLeistung $wert"};;\
   if("$param" eq "BrennerStarts") {fhem "set Therme_BrennerStarts $wert"};;\
   if("$param" eq "BrennerStartsLastDay") {fhem "set Therme_BrennerStartsLastDay $wert"};;\
   if("$param" eq "BrennerStartsToday") {fhem "set Therme_BrennerStartsToday $wert"};;\
   if("$param" eq "BrennerStufe") {fhem "set Therme_BrennerStufe $wert"};;\
   if("$param" eq "BrennerStunden") {fhem "set Therme_BrennerStunden $wert"};;\
   if("$param" eq "BrennerStundenLastDay") {fhem "set Therme_BrennerStundenLastDay $wert"};;\
   if("$param" eq "BrennerStundenToday") {fhem "set Therme_BrennerStundenToday $wert"};;\
   if("$param" eq "Heizkreispumpe") {fhem "set Therme_PumpeHeizkreis $wert"};;\
   if("$param" eq "Neigung") {fhem "set Therme_Neigung $wert"};;\
   if("$param" eq "Niveau") {fhem "set Therme_Niveau $wert"};;\
   if("$param" eq "Stoerung") {fhem "set Therme_Stoerung $wert"};;\
   if("$param" eq "Temp-WarmWasser-Ist") {fhem "set Therme_WW_Ist $wert"};;\
   if("$param" eq "Temp-WarmWasser-Soll") {fhem "set Therme_WW_Soll $wert"};;\
   if("$param" eq "Temp-Abgas") {fhem "set Therme_Temp_Abgas $wert"};;\
   if("$param" eq "Temp-Aussen") {fhem "set Therme_Temp_Aussen $wert"};;\
   if("$param" eq "Temp-Kessel-Ist") {fhem "set Therme_Temp_Kessel_Ist $wert"};;\
   if("$param" eq "Temp-Kessel-Soll") {fhem "set Therme_Temp_Kessel_Soll $wert"};;\
   if("$param" eq "Temp-Nacht-Soll") {fhem "set Therme_Temp_Nacht_Soll $wert"};;\
   if("$param" eq "Temp-Party-Soll") {fhem "set Therme_Temp_Party_Soll $wert"};;\
   if("$param" eq "Temp-Raum-Soll") {fhem "set Therme_Temp_Raum_Soll $wert"};;\
   if("$param" eq "Temp-Rueck") {fhem "set Therme_Temp_Rueck $wert"};;\
   if("$param" eq "Temp-Vor") {fhem "set Therme_Temp_Vor $wert"};;\
   if("$param" eq "Temp-Vor-Soll") {fhem "set Therme_Temp_Vor_Soll $wert"};;\
   if("$param" eq "Speicherladepumpe") {fhem "set Therme_PumpeSpeicher $wert"};;\
   if("$param" eq "Zirkulationspumpe") {fhem "set Therme_PumpeZirkulation $wert"};;\
}
#





3. meine VControl-cfg


######################################################################################
# Polling Commands
######################################################################################
#POLL,SENDCMD   , PARSE, DIVISOR, READING-NAME        , KUMULATION
######################################################################################
# POLL, 01F700F802, 2ByteU, 1     , ID-Vito              , -
POLL, 01F7080802, 2ByteU, 10    , Temp-Abgas          , -
# POLL, 01F7089F02, 2ByteU, 10    , Temp-Abgas-Max      , -
POLL, 01F7080002, 2ByteS, 10    , Temp-Aussen         , -
POLL, 01F7552702, 2ByteS, 10    , Temp-Aussen-Ged     , -

POLL, 01F7080402, 2ByteS, 10    , Temp-WarmWasser-Ist , -
POLL, 01F7630001, 1ByteU, 1     , Temp-WarmWasser-Soll, -
POLL, 01F7080202, 2ByteS, 10    , Temp-Kessel-Ist     , -
POLL, 01F7555A02, 2ByteU, 10    , Temp-Kessel-Soll    , -
POLL, 01F7080802, 2ByteU, 10    , Temp-Rueck          , -
POLL, 01F7290002, 2ByteU, 10    , Temp-Vor            , -
POLL, 01F7254402, 2ByteU, 10    , Temp-Vor-Soll       , -
POLL, 01F755D301, 1ByteU, state , Brenner             , -
POLL, 01F7088A02, 2ByteU, 1     , BrennerStarts       , day
POLL, 01F7A38F01, 1ByteU, 2     , BrennerLeistung     , -
POLL, 01F7551E01, 1ByteU, 2     , BrennerStufe        , -
# POLL, 01F7757404, 4Byte,  1000  , Oelverbrauch        , day
# POLL, 01F7084501, 1ByteU, state , Warmwasserpumpe     , -
POLL, 01F7651301, 1ByteU, state , Speicherladepumpe   , -
POLL, 01F7290601, 1ByteU, state , Heizkreispumpe      , -
POLL, 01F7651501, 1ByteU, state , Zirkulationspumpe   , -
POLL, 01F7230101, mode,   10    , state               , -
POLL, 01F7084701, 1ByteU, state , Stoerung            , -
# POLL, 01F7230301, 1ByteU, state , state_party         , -
# POLL, 01F7230201, 1ByteU, state , state_spar          , -
POLL, 01F708A704, 4Byte,  3600  , BrennerStunden      , day
# POLL, 01F708AB04, 4Byte,  3600  , BrennerStunden2     , -
POLL, 01F7230601, 1ByteU, 1     , Temp-Raum-Soll      , -
POLL, 01F7230701, 1ByteU, 1     , Temp-Nacht-Soll     , -
POLL, 01F7230801, 1ByteU, 1     , Temp-Party-Soll     , -
# POLL, 01F7572602, 2ByteU, 10    , Oelverbrauch-Codierung, -
# POLL, 01F7088E08, date,   1     , SystemZeit          , -
# POLL, 01F7230908, date,   1     , Urlaub-Beginn       , -
# POLL, 01F7231108, date,   1     , Urlaub-Ende         , -
# POLL, 01F7253501, 1ByteU, state , Urlaub-Betrieb      , -
POLL, 01F7230501, 1ByteU, 10    , Neigung             , -
POLL, 01F7230401, 1ByteS, 1     , Niveau              , -
# POLL, 01F7750701, 1ByteU, 1     , Fehler1             , -
# POLL, 01F7750808, date,   1     , Fehlerzeit1         , -
# POLL, 01F7751001, 1ByteU, 1     , Fehler2             , -
# POLL, 01F7751108, date,   1     , Fehlerzeit2         , -
# POLL, 01F7751901, 1ByteU, 1     , Fehler3             , -
# POLL, 01F7752201, 1ByteU, 1     , Fehler4             , -
# POLL, 01F7752B01, 1ByteU, 1     , Fehler5             , -
# POLL, 01F7753401, 1ByteU, 1     , Fehler6             , -
# POLL, 01F7753D01, 1ByteU, 1     , Fehler7             , -
# POLL, 01F7754601, 1ByteU, 1     , Fehler8             , -
# POLL, 01F7754F01, 1ByteU, 1     , Fehler9             , -
# POLL, 01F7755801, 1ByteU, 1     , Fehler10             , -
#####################################################################################
# M1 Possible TIMER Get commands
#####################################################################################
#POLL,SENDCMD   , PARSE, DIVISOR, READING-NAME        , KUMULATION
POLL, 01F7200008, timer,  1     , TIMER_2_MO          , -
POLL, 01F7200808, timer,  1     , TIMER_3_DI          , -
POLL, 01F7201008, timer,  1     , TIMER_4_MI          , -
POLL, 01F7201808, timer,  1     , TIMER_5_DO          , -
POLL, 01F7202008, timer,  1     , TIMER_6_FR          , -
POLL, 01F7202808, timer,  1     , TIMER_0_SA          , -
POLL, 01F7203008, timer,  1     , TIMER_1_SO          , -
#####################################################################################
# M1 Possible Warm Water TIMER Get commands
#####################################################################################
#POLL,SENDCMD   , PARSE, DIVISOR, READING-NAME        , KUMULATION?
POLL, 01F7210008, timer,  1     , TIMER_WW_2_MO       , -
POLL, 01F7210808, timer,  1     , TIMER_WW_3_DI       , -
POLL, 01F7211008, timer,  1     , TIMER_WW_4_MI       , -
POLL, 01F7211808, timer,  1     , TIMER_WW_5_DO       , -
POLL, 01F7212008, timer,  1     , TIMER_WW_6_FR       , -
POLL, 01F7212808, timer,  1     , TIMER_WW_0_SA       , -
POLL, 01F7213008, timer,  1     , TIMER_WW_1_SO       , -
#####################################################################################
# M1 Possible Set commands which are complete
#####################################################################################
#SET,SETCMD    ,    SENDCMD       , CONV     , NEXT_CMD or DAY for timer
#####################################################################################
SET, WW        ,    01F423230101, state      , -
# SET, ABSENK    ,    01F423230101, state      , -
# SET, TAG       ,    01F423230102, state      , -
SET, HWW       ,    01F423230102, state      , -
SET, AUS       ,    01F423230100, state      , -
SET, S-OFF     ,    01F423020100, state_spar , -
SET, S-ON      ,    01F423020101, state_spar , P-OFF
SET, P-OFF     ,    01F423030100, state_party, -
SET, P-ON      ,    01F423030101, state_party, S-OFF
SET, TAGTEMP   ,    01F4230601  , 1ByteU     , -
SET, NACHTTEMP ,    01F4230701  , 1ByteU     , -
SET, PARTYTEMP ,    01F4230801  , 1ByteU     , -
SET, WWTEMP    ,    01F4630001  , 1ByteU     , -
SET, K26       ,    01F4572602  , 2ByteU     , -
SET, URLON     ,    01F4230908  , date       , -
SET, URLOFF    ,    01F4231108  , date       , -
SET, SYSTIME   ,    01F4088E08  , date       , -
SET, Neigung   ,    01F4230501  , 1ByteU     , -
SET, NIVEAU    ,    01F4230401  , 1ByteS     , -
SET, Warmwasserpumpe, 01F7084501, 1ByteU     , -
SET, Zirkulationspumpe, 01F7084601, 1ByteU   , -
#####################################################################################
# M1 Possible TIMER Set commands prefix
#####################################################################################
SET, TIMER_2_MO,    01F4200008  , timer      , MO
SET, TIMER_3_DI,    01F4200808  , timer      , DI
SET, TIMER_4_MI,    01F4201008  , timer      , MI
SET, TIMER_5_DO,    01F4201808  , timer      , DO
SET, TIMER_6_FR,    01F4202008  , timer      , FR
SET, TIMER_0_SA,    01F4202808  , timer      , SA
SET, TIMER_1_SO,    01F4203008  , timer      , SO
######################################################################################
# M1 Possible Warm Water Timer Set commands prefix
######################################################################################
SET, TIMER_WW_2_MO, 01F4210008  , timer      , MO
SET, TIMER_WW_3_DI, 01F4210808  , timer      , DI
SET, TIMER_WW_4_MI, 01F4211008  , timer      , MI
SET, TIMER_WW_5_DO, 01F4211808  , timer      , DO
SET, TIMER_WW_6_FR, 01F4212008  , timer      , FR
SET, TIMER_WW_0_SA, 01F4212808  , timer      , SA
SET, TIMER_WW_1_SO, 01F4213008  , timer      , SO
######################################################################################



Kann man alles bestimmt geschickter lösen, aber funktioniert.

Gruß

Andreas
FHEM 5.8, FB7490, FB7390, Linux-Server, Raspi 1, Raspi 2, FHEM2FHEM, div. FS20, div. FHT, div. HMS, div. Homematic, MQTT, ESP8266, Arduino

darkness

Hey,

vielen Dank für deine Antwort. Werde mir mal alles in Ruhe anschauen und mal versuchen es bei mir auch einzurichten.

yokoyoko

Moin AndreasHH,

vielen Dank für deine cfg! Habe diese 1:1 bei mir übernommen, da ich eine identische Ausgangslage habe. Kam mir als Fhem-Einsteiger auch sehr gelegen - bzw. hätte ich ohne deine Vorarbeit so auf die schnelle niemals hinbekommen.

Das Übertragen der Readings aus VDens am RPi auf den auf den Hauptserver klappt tadellos. Leider scheitere ich auch nach langer Wiki und commandref Lektüre am Absetzen eines Befehls vom Server aus um den state von VDens am RPi zu ändern.

Müsste mit dem Dummy am Hauptserver ""forwardH2HRaspiB_Hzg"" nicht der state von HWW auf z.B. WW änderbar sein? Also
set forwardH2HRaspiB_Hzg WW
den state von VDens auf WW ändern...
Habe schon probiert das notify anzupassen - leider ohne Erfolg.

Wäre nett wenn du mich kurz in die richtige Richtung leiten könntest.  :D