Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485

Begonnen von StefanStrobel, 12 Juli 2014, 14:50:22

Vorheriges Thema - Nächstes Thema

wthiess

Hallo Stefan!

Hab wieder mal ein Problem mit einem Thermostat. Das blöde Ding zeigt alles x2 an.
Die Anzeige hab ich /2 dividiert. Passt. Aber das senden der Temperatur bekomme ich nicht hin. Hier weis ich nicht wie ich es so hinsenden soll das die angezeigte Temperatur auch eingestellt wird.
In meine Bsp. wird immer statt z.b. 20Grad nur 10 Grad gesendet.
#ist Temperatur
define Temp_Ist ModbusAttr 1 5
attr Temp_Ist IODev beca
attr Temp_Ist dev-h-combine 5
attr Temp_Ist dev-h-defPoll 1
attr Temp_Ist obj-h3-format %.1f Grad
attr Temp_Ist obj-h3-expr $val/2
attr Temp_Ist obj-h3-reading Temperatur
attr Temp_Ist room Modbus
attr Temp_Ist stateFormat Temperatur


#soll Temperatur
define Temp_Soll ModbusAttr 1 5
attr Temp_Soll IODev beca
attr Temp_Soll dev-h-combine 5
attr Temp_Soll dev-h-defPoll 1
attr Temp_Soll dev-h-defUnpack s>
attr Temp_Soll obj-h4-format %.1f Grad
attr Temp_Soll obj-h4-hint slider,5,0.5,25,1
attr Temp_Soll obj-h4-reading Temperatur
attr Temp_Soll obj-h4-set 1
attr Temp_Soll room Modbus
attr Temp_Soll stateFormat Temperatur
attr Temp_Soll webCmd Temperatur


Wie könnte ich bitte 20 Grad senden.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

StefanStrobel

Hallo Wolfgang,

Schau Dir mal setExpr an.

Gruß
     Stefan

wthiess

Hallo Stefan

attr Temp_Soll obj-h4-setexpr $val*2

Bringt keinen Erfolg. Bewirkt nur das der Slider doppelt anzeigt. Es muss der Slider normal zum schieben sein aber der übermittelte Wert verdoppelt werden.

Lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

StefanStrobel

Hallo Wolfgang,

So wie ich das verstehe speichert Dein Gerät die Soll-Temperatur nicht als Float-Wert sondern als verdoppelter Integer-Wert. Dadurch wird eine Auflösung von 0,5 Grad erreicht.
Bei der Anzeige musst Du daher wie bei h3 auch mit obj-h4-expr $val/2 den gespeicherten Wert halbieren und beim Schreiben musst du den echten Wert mit obj-h4-setexpr $val*2 verdoppeln.

So sollte es klappen.
Falls es nicht klappt, hilft evt ein Blick ins Log mit verbose 5

Gruss
    Stefan

wthiess

Hallo Stefan!

Ich bin nun so weit das ich die Temperatur steuern kann aber leider spinnt  der Slider. Egal welche Temperatur ich einstelle der Slider springt immer auf den doppelten Wert oder auf 5Grad. Wenn ich
attr Temp_Soll obj-h4-hint 5,10,15,16,17,18,19,20,21,22,23,24,25
attr Temp_Soll obj-h4-setexpr $val*2
verwende dann gehts. Aber ich hätte gerne einen Slider.

Hier mein fhem.cfg und der log mit verbose 5. Hatte mal ein Ähnliches Problem da habe ich es mit defUnpack .... geschafft. Aber diesmal bringt das nix.
Danke für die Mühe.

lg
Wolfgang

#Thermostat China beca

define beca Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1

#ist Temperatur
define Temp_Ist ModbusAttr 1 5
attr Temp_Ist IODev beca
attr Temp_Ist dev-h-combine 5
attr Temp_Ist dev-h-defPoll 1
attr Temp_Ist group Heizung
attr Temp_Ist obj-h3-expr $val/2
attr Temp_Ist obj-h3-format %.1f Grad
attr Temp_Ist obj-h3-reading Temperatur
attr Temp_Ist room Alexa,Modbus
attr Temp_Ist stateFormat Temperatur


#soll Temperatur lesen
define Temp_sollIst ModbusAttr 1 5
attr Temp_sollIst IODev beca
attr Temp_sollIst dev-h-combine 5
attr Temp_sollIst dev-h-defPoll 1
attr Temp_sollIst group Heizung
attr Temp_sollIst obj-h4-expr $val/2
attr Temp_sollIst obj-h4-format %.1f Grad
attr Temp_sollIst obj-h4-reading Temperatur
attr Temp_sollIst room Alexa,Modbus
attr Temp_sollIst stateFormat Temperatur

#soll Temperatur schreiben
define Temp_Soll ModbusAttr 1 5
attr Temp_Soll IODev beca
attr Temp_Soll dev-h-combine 5
attr Temp_Soll dev-h-defPoll 1
attr Temp_Soll group Heizung
attr Temp_Soll obj-h4-format %.1f Grad
attr Temp_Soll obj-h4-reading Temperatur
attr Temp_Soll obj-h4-set 1
attr Temp_Soll room Alexa,Modbus
attr Temp_Soll stateFormat {sprintf("%.0f", ReadingsNum($name,"Temperatur",1) / 2)}
attr Temp_Soll webCmd Temperatur
attr Temp_Soll obj-h4-hint slider,5,0.5,25,1
attr Temp_Soll obj-h4-setexpr $val*2


2017.04.13 21:52:06 5: Temp_Ist: GetUpdate called
2017.04.13 21:52:06 4: Temp_Ist: update timer modified: will call GetUpdate in 5.0 seconds at 2017-04-13 21:52:11 - Interval 5
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate objects from attributes: h3
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate full object list: h3
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate check h3 => Temperatur, poll = 1, last = 1492113121.22767
2017.04.13 21:52:06 4: Temp_Ist: GetUpdate will request Temperatur
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate tries to combine read commands
2017.04.13 21:52:06 4: Temp_Ist: Send called with h3, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.04.13 21:52:06 4: Temp_Ist: Send queues fc 3 to 1, for h3 (Temperatur), reqLen 1
2017.04.13 21:52:06 4: beca: HandleSendQueue sends fc 3 to id 1, tid 85 for Temperatur (h3), len 1, device Temp_Ist (RTU), pdu 0300030001, V 3.5.21 - 12.3.2017
2017.04.13 21:52:06 5: SW: 010300030001740a
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate called
2017.04.13 21:52:06 4: Temp_Soll: update timer modified: will call GetUpdate in 5.0 seconds at 2017-04-13 21:52:11 - Interval 5
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate objects from attributes: h4
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate full object list: h4
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate check h4 => Temperatur, poll = 1, last = 1492113121.25388
2017.04.13 21:52:06 4: Temp_Soll: GetUpdate will request Temperatur
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate tries to combine read commands
2017.04.13 21:52:06 4: Temp_Soll: Send called with h4, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.04.13 21:52:06 4: Temp_Soll: Send queues fc 3 to 1, for h4 (Temperatur), reqLen 1
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate called
2017.04.13 21:52:06 4: Temp_sollIst: update timer modified: will call GetUpdate in 5.0 seconds at 2017-04-13 21:52:11 - Interval 5
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate objects from attributes: h4
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate full object list: h4
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate check h4 => Temperatur, poll = 1, last = 1492113121.28053
2017.04.13 21:52:06 4: Temp_sollIst: GetUpdate will request Temperatur
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate tries to combine read commands
2017.04.13 21:52:06 4: Temp_sollIst: Send called with h4, objLen 1 / reqLen 1 to id 1, op read, qlen 1
2017.04.13 21:52:06 4: Temp_sollIst: Send queues fc 3 to 1, for h4 (Temperatur), reqLen 1
2017.04.13 21:52:06 5: beca: raw read: 0103020030b850
2017.04.13 21:52:06 5: beca: ParseFrames got: 0103020030b850
2017.04.13 21:52:06 4: beca: ParseFrames got fcode 3 from 1, values 0030HeaderLen 2, ActualLen 2, request was for h3 (Temperatur), len 1 for module Temp_Ist
2017.04.13 21:52:06 5: Temp_Ist: ParseObj called with 0030 and start 3, op read
2017.04.13 21:52:06 5: Temp_Ist: ParseObj ObjInfo for h3: reading=Temperatur, unpack=n, expr=$val/2, format=%.1f Grad, map=
2017.04.13 21:52:06 5: Temp_Ist: ParseObj unpacked 0030 with n to hex 3438 (48)
2017.04.13 21:52:06 5: Temp_Ist: ParseObj evaluates expr for Temperatur, val=48, expr $val/2
2017.04.13 21:52:06 5: Temp_Ist: ParseObj eval result is 24
2017.04.13 21:52:06 5: Temp_Ist: ParseObj for Temperatur does sprintf with format %.1f Grad value is 24
2017.04.13 21:52:06 5: Temp_Ist: ParseObj for Temperatur sprintf result is 24.0 Grad
2017.04.13 21:52:06 4: Temp_Ist: ParseObj for Temperatur assigns 24.0 Grad
2017.04.13 21:52:06 5: Starting notify loop for Temp_Ist, 1 event(s), first is Temperatur: 24.0 Grad
2017.04.13 21:52:06 5: End notify loop for Temp_Ist
2017.04.13 21:52:06 5: beca: ParseFrames got 1 readings from ParseObj
2017.04.13 21:52:06 4: beca: HandleSendQueue sends fc 3 to id 1, tid 115 for Temperatur (h4), len 1, device Temp_Soll (RTU), pdu 0300040001, V 3.5.21 - 12.3.2017
2017.04.13 21:52:06 5: SW: 010300040001c5cb
2017.04.13 21:52:06 5: beca: raw read: 01030200123849
2017.04.13 21:52:06 5: beca: ParseFrames got: 01030200123849
2017.04.13 21:52:06 4: beca: ParseFrames got fcode 3 from 1, values 0012HeaderLen 2, ActualLen 2, request was for h4 (Temperatur), len 1 for module Temp_Soll
2017.04.13 21:52:06 5: Temp_Soll: ParseObj called with 0012 and start 4, op read
2017.04.13 21:52:06 5: Temp_Soll: ParseObj ObjInfo for h4: reading=Temperatur, unpack=S>, expr=, format=%.1f Grad, map=
2017.04.13 21:52:06 5: Temp_Soll: ParseObj unpacked 0012 with S> to hex 3138 (18)
2017.04.13 21:52:06 5: Temp_Soll: ParseObj for Temperatur does sprintf with format %.1f Grad value is 18
2017.04.13 21:52:06 5: Temp_Soll: ParseObj for Temperatur sprintf result is 18.0 Grad
2017.04.13 21:52:06 4: Temp_Soll: ParseObj for Temperatur assigns 18.0 Grad
2017.04.13 21:52:06 5: Starting notify loop for Temp_Soll, 1 event(s), first is Temperatur: 18.0 Grad
2017.04.13 21:52:06 5: End notify loop for Temp_Soll
2017.04.13 21:52:06 5: beca: ParseFrames got 1 readings from ParseObj
2017.04.13 21:52:06 4: beca: HandleSendQueue sends fc 3 to id 1, tid 201 for Temperatur (h4), len 1, device Temp_sollIst (RTU), pdu 0300040001, V 3.5.21 - 12.3.2017
2017.04.13 21:52:06 5: SW: 010300040001c5cb
2017.04.13 21:52:06 5: beca: raw read: 01030200123849
2017.04.13 21:52:06 5: beca: ParseFrames got: 01030200123849
2017.04.13 21:52:06 4: beca: ParseFrames got fcode 3 from 1, values 0012HeaderLen 2, ActualLen 2, request was for h4 (Temperatur), len 1 for module Temp_sollIst
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj called with 0012 and start 4, op read
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj ObjInfo for h4: reading=Temperatur, unpack=n, expr=$val/2, format=%.1f Grad, map=
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj unpacked 0012 with n to hex 3138 (18)
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj evaluates expr for Temperatur, val=18, expr $val/2
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj eval result is 9
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj for Temperatur does sprintf with format %.1f Grad value is 9
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj for Temperatur sprintf result is 9.0 Grad
2017.04.13 21:52:06 4: Temp_sollIst: ParseObj for Temperatur assigns 9.0 Grad
2017.04.13 21:52:06 5: Starting notify loop for Temp_sollIst, 1 event(s), first is Temperatur: 9.0 Grad
2017.04.13 21:52:06 5: End notify loop for Temp_sollIst
2017.04.13 21:52:06 5: beca: ParseFrames got 1 readings from ParseObj
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

StefanStrobel

Hallo Wolfgang,

Mit der Aufteilung auf mehrere Fhem-Devices tust Du Dir keinen Gefallen. Dass das Holding-Register 4 dann auch noch von zwei Devices verwendet wird, macht die Sache noch unschöner.
Das Hauptproblem wird aber vermutlich das fehlende obj-h4-expr im Device Temp_Soll sein.
Der Slider verwendet für die Anzeige ein Reading. Das wird beim automatischen Lesen nach dem Schreiben erzeugt. Da fehlt dann aber die Division durch 2.
Einfacher, weniger redundant und effizienter wäre es wenn alles in einem gemeinsamen Device stehen würde.

Gruß
    Stefan

wthiess

Hallo Stefan!

Geschaft Danke habs jetzt total umgebaut.
#ist Temperatur
define Temp_Ist ModbusAttr 1 5
attr Temp_Ist userattr IODev dev-h-combine dev-h-defPoll obj-h3-expr obj-h3-format obj-h3-reading stateFormat
attr Temp_Ist IODev beca
attr Temp_Ist dev-h-combine 5
attr Temp_Ist dev-h-defPoll 1
attr Temp_Ist group Heizung
attr Temp_Ist obj-h3-expr $val/2
attr Temp_Ist obj-h3-format %.1f Grad
attr Temp_Ist obj-h3-reading Temperatur
attr Temp_Ist room Alexa,Modbus
attr Temp_Ist stateFormat Temperatur


#soll Temperatur
define Temp_Soll ModbusAttr 1 5
attr Temp_Soll IODev beca
attr Temp_Soll dev-h-combine 5
attr Temp_Soll dev-h-defPoll 1
attr Temp_Soll group Heizung
attr Temp_Soll obj-h4-expr $val/2
attr Temp_Soll obj-h4-format %.1f Grad
attr Temp_Soll obj-h4-reading Temperatur
attr Temp_Soll room Alexa,Modbus
attr Temp_Soll obj-h4-hint slider,5,0.5,25,1
attr Temp_Soll obj-h4-set 1
attr Temp_Soll obj-h4-setexpr $val*2
attr Temp_Soll stateFormat {sprintf("%.1f", ReadingsNum($name,"Temperatur",1))}
attr Temp_Soll webCmd Temperatur



lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Tomsc1984

Hallo Stefan,

ich habe jetzt schon viel gelesen, aber komme einfach nicht weiter.  Ich habe ein Gerät an einem RS485 auf Wifi Adapter hängen. Wenn ich die IP in deinem Modul eingebe, bekomme ich den Satus connectet. Aber ich bekomme keinerlei Werte. Kannst du mir dabei helfen? Habe ich das Modul vielleicht falsch installiert? Es Handelt sich um pdf http://www.ecs-online.org/media/content/Bedienungsanleitung_greenController_de.pdf. Wäre nett, denn ich komme absolut nicht weiter. Installiert habe ich fhem auf einem Raspi 3 . Version 5.8

Gruß Thomas

StefanStrobel

Hallo Thomas,

der Status "opened" bedeutet nur dass die lokale serielle Schnittstelle geöffnet ist. Ich vermute Du meinst "opened" oder?
Leider hat das keine Aussagekraft zur Verbindung mit dem abzufragenden Gerät. Es kann also sein, dass Baudrate, Parity etc. falsch sind oder dass die Modbus-ID nicht stimmt oder dass ein Problem bei der Verkabelung existiert o.ä.

Gruss
   Stefan

StefanStrobel

Hier eine neue Version für die Helios-Nutzer.
es gibt ein neues Attribut mit Namen nonPrioritizedSet. Wenn das auf 1 steht, dann wird der Modbus-Request für einen Set-Befehl nicht mehr priorisiert sondern hinten an die Request-Queue angehängt. Fhem blockiert damit auch bei einem Set und dem anschließenden Lesen nicht.

Soweit ich es verstanden habe, wird bei der Helios Modbus in einer eher unschönen Form verwendet. Statt Objekte über einzelne Register anzusprechen, wird Register 1 mit einer Objektnummer beschrieben und der Wert kann danach wieder über ein Register 1 ausgelesen werden.

Um das asynchron tun zu können, könnte man mit dem neuen Attribut viele Sets schnell in die Queue stellen.
Aber Vorsicht: durch die asynchrone Abarbeitung steht nach dem Set der gelesene Wert evt. noch nicht zur Verfügung. Der kommt erst in Fhem an, wenn der entsprechende Request tatsächlich abgearbeitet wurde.
Um dann die Werte in einzelne Readings zu bekommen, könnte man für Register 1 eine expr basteln, die selbst Reading setzt.

z.B. mit

attr PWP obj-h777-expr {if ($inCheckEval) {readingsBulkUpdate($hash, 'testReading', 3);; Log3 $name, 5, 'set reading testReading in expr'};; return $val;;}


Man beachte die doppelten Semikolons bei der Eingabe über Fhemweb. Ein einfaches Semikolon würde sonst als Ende der Eingabe gewertet.

Gruss
   Stefan

crispyduck

#535
Hallo,

Ich habe eine Frage zum Status von Zusatzmodulen.

Ich verwende momentan das 98_ModbusSDM630M.pm Zusatzmodul von Roger.

Sehe hier immer bei allen die ein Zusatzmodul im Einsatz haben den STATE auf opened, bei mir ist der STATE allerdings immer ???.

Wie kann der Status des Devices abhängig davon ob die Verbindung auch funktioniert gesetzt werden?

define configDatenbank weblink cmdList configdb_info:Info:configdb+info configdb_list:List:configdb+list
attr configDatenbank room Datenbanken
attr configdb deleteimported 1
attr configdb maxversions 3
attr configdb private 1
attr global userattr DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global logdir ./log
attr global logfile %L/fhem-%Y-%m-%d.log
attr global modpath .
attr global verbose 5
define Heizung VCONTROL300 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AL00AKYZ-if00-port0 ./FHEM/89_VCONTROL300.cfg 180 kw
attr Heizung room Heizung
define logDBlong DbLog /opt/fhem/logDBlong.conf .*:.*
attr logDBlong DbLogSelectionMode Include
attr logDBlong DbLogType Current/History
attr logDBlong room Datenbanken
define logDBshort DbLog /opt/fhem/logDBshort.conf .*:.*
attr logDBshort DbLogSelectionMode Include
attr logDBshort DbLogType Current/History
attr logDBshort room Datenbanken
define Logfile FileLog %L/fhem-%Y-%m-%d.log fakelog
define ModbusAdapter Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
define StromHeizung ModbusSDM630M 1 60
attr StromHeizung userattr IODev
attr StromHeizung IODev ModbusAdapter
define telnetPort telnet 7072 global
define web FHEMWEB 8083 global
attr web stylesheetPrefix dark



Lg,
Crispyduck

StefanStrobel

Hallo Crispyduck,

Bei Modulen, die selbst eine Verbindung öffnen, wird der Status typischerweise von den DevIO-Routinen von Fhem automatisch gesetzt. Beim Modbus-Modul ist das für Deinen "ModbusAdapter" der Fall. Auch wenn ein Gerät über Modbus-TCP kommuniziert, dann kommt der Status von DevIO.
Allerdings bedeutet ein "opened" hier auch nur dass die serielle Schnittstelle geöffnet ist. Ob am anderen Ende der Leitung auch jemand erreichbar ist, bleibt unklar.

In Deinem Fall geht Dein Fhem-Gerät "Stromheizung" über das Gerät "ModbusAdapter". Deshalb setzt niemand den Status.
Üblicherweise setzt man den Status nach Belieben mit dem Attribut stateFormat. Da könnte dann zum Beispiel eine Vorlauf-Temperatur drinstehen.

Gruss
   Stefan

crispyduck

Hallo Stefan,

Danke, das der Status von DevIo kommt habe ich mir nachdem ich deinen code mal genauer durchgesehen habe schon gedacht.
Habe den Status jetzt auch mit stateFormat gesetzt.

So bekomme ich aber nicht mit wenn die Verbindung gestört ist.

Timeout oder falsche Antwort wird ja vom Modul erkannt, könnte man den Status auch irgendwie abhängig vom erfolgreichen pollen machen?

Oder zumindest abhängig davon ob es in einem definierten Intervall updates eines Readings gibt?

Hatte Anfangs etwas Probleme mit meinem Bus, da ich es gut gemeint habe und auf meinen 10m CAT7 Kabel brav 120Ohm Abschlusswiderstände gesetzt habe.
Ohne diese geht jetzt alles ohne Probleme.  ;)

Lg,
Crispyduck

StefanStrobel

Hallo,

Readings haben ja einen Zeitstempel. Mit einem DoIF o.ä. könntest Du sicher den Status neu setzen wenn zu lange kein Update mehr gekommen ist.

Gruss
    Stefan

crispyduck

Will aufgrund der Daten zur Photovoltaik Eigenverbrauchspptimierung die Warmwasserbereitung triggern und auch die Temperatur anpassen. Werde da dann die aktualität der Readings überprüfen.

Da ich wohl auch nur ein paar Readings vom Stromzähler brauche werde ich entweder das Modul von Roger anpassen oder überhaupt mit ModbusAttr arbeiten.

Hast du eventuell schon mal daran gedacht oder spricht was dagegen die Konfiguration der Register statt mit Attribute n zu definieren in ein config file auszulagern?

Dann könnte man nicht benötigte einfach auskpmmentieren. Könnte man zwar auch in der fhem.cfg, geht aber nicht bei configdb und würde wohl auch sehr unübersichtlich werden.

Nutze das auch so beim 89_VCONTROL300.pm Modul und habe mir dies jetzt auch geändert damit es auch mit configdb funktioniert.

Ich habe bei mir FHEM auf einer, eventuell mal auf mehreren RPi2 laufen und configDB als auch DBLog auf einer NAS.
Idealerweise hätte ich die RPi2 gerne mal quasi "dumm" mit einer FHEM standardconfiguration mit RO Filesystem und den Rest in der DB.
Da wäre es super für alle Module/Devices wo es einen Haufen Adressen, Register,... gibt jeweils ein cfg File in der DB zu haben.

Ist mal so eine Idee die ich mir in den Kopf gesetzt habe.

Lg
Crispyduck