[Erledigt] HTTPMOD Auslesen von Temeraturdaten des Embedded Sytems OWServer_v2

Begonnen von Pnemenz, 06 Mai 2019, 00:09:07

Vorheriges Thema - Nächstes Thema

Pnemenz

Hallo,

Ich versuche mittels HTTPMOD aus einem Embedded Systems OWServer_v2 die Temperatur Daten auszulesen. Irgendwie bekomme ich die Regex nicht hin.
die Device Definition sieht so aus:
defmod temperatursensoren HTTPMOD http://192.168.178.208/details.xml 30
attr temperatursensoren userattr reading01Name reading01Regex
attr temperatursensoren reading01Name Sensor
attr temperatursensoren reading01Regex <ROMId>([\s\S]*)<\/ROMId>.*<Temperature Units=\"Centigrade\"\>(\d*.\d*)<\/Temperature>


Der URL liefert diese XML Daten zurück (gekürzt).
<Devices-Detail-Response>
<PollCount>136529</PollCount>
<DevicesConnected>7</DevicesConnected>
<LoopTime>36.535</LoopTime>
<DevicesConnectedChannel1>0</DevicesConnectedChannel1>
<DevicesConnectedChannel2>0</DevicesConnectedChannel2>
<DevicesConnectedChannel3>7</DevicesConnectedChannel3>
<DataErrorsChannel1>0</DataErrorsChannel1>
<DataErrorsChannel2>0</DataErrorsChannel2>
<DataErrorsChannel3>1</DataErrorsChannel3>
<VoltageChannel1>4.87</VoltageChannel1>
<VoltageChannel2>4.89</VoltageChannel2>
<VoltageChannel3>4.85</VoltageChannel3>
<VoltagePower>5.11</VoltagePower>
<DeviceName>OWServer_v2-Enet</DeviceName>
<HostName>OWSERVER</HostName>
<MACAddress>D8:80:39:35:F3:36</MACAddress>
<DateTime>2019-05-05 22:22:07</DateTime>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>1B000005113A6C28</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>32014B467FFF0E101EFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>19.1250 Deg C</PrimaryValue>
<Temperature Units="Centigrade">19.1250</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>200000051152D228</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>6A014B465FFF06102FFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>22.6250 Deg C</PrimaryValue>
<Temperature Units="Centigrade">22.6250</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>11</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
...
</Devices-Detail-Response>


Die Seite regex101 gibt mir als Match Information sieben Matches mit je 2 Gruppen. Die erste Gruppe ist jeweils die ROMId, die zweite die Temperatur.

Ich hätte gerne je ein Reading mit dem Namen <ROMId> und dem Wert <Temperatur>.

Was muss ich machen, damit ich das bekomme?

Danke

Peter

amenomade

Du kannst meines Wissens keinen dynamischen ReadingsName generieren.
Was Du aber machen kannst, ist folgende Readings generien zu lassen:
SensorName-1 1B000005113A6C28
SensorWert-1 19.1250
SensorName-2 200000051152D228
SensorWert-2 22.6250
...
SensorName-7
SensorWert-7

Dafür reading01Name SensorName mit reading01Regex für ROMId, und reading02Name SensorWert mit reading02Regex für Temp definieren.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Pnemenz

Danke für deinen Hinweis. Wie muss nur die Regex aussehen? Ich schaffen es nicht, eine Regex zu definieren, die den ersten Wert <Temperature Units="Centigrade"> nach der ROMId ausliest. Meine Regex findet immer den Wert des letzten Sensors.

amenomade

Namen:
reading01Regex <ROMId>(\w+)

Temperaturen:
reading02Regex Centigrade">([\d\.]+)

Wenn man deine Regex als Basis nehmen will, die Suche "gierig" machen: z.B. statt .* eher .*?


* = match as many times as possible
*? = match as few times as possible

Auf https://regex101.com/ wird jedes Teil von der Regex erklärt => gut zum Lernen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Pnemenz

leider funktioniert es noch immer nicht, egal was ich mache  :-[ :(.
ich bekomme im Log immer:
Read response to update didn't match any Reading

Ich habe jetzt folgende Regex:
attr temperatursensoren SensorName-1 <ROMId>(\w+)
attr temperatursensoren SensorWert-1 Centigrade">([\d\.]+)


Auf regex101 kommt diese Antwort für SensorName:
Match 1
Full match 19-42 <ROMId>1B000005113A6C28
Group 1. 26-42 1B000005113A6C28
Match 2
Full match 601-624 <ROMId>200000051152D228
Group 1. 608-624 200000051152D228


und diese für die Temperatur:
Match 1
Full match 313-332 Centigrade">19.1250
Group 1. 325-332 19.1250
Match 2
Full match 895-914 Centigrade">22.6250
Group 1. 907-914 22.6250


es werden keine Readings angelget, daher auch keine Werte angezeigt :(

amenomade

Bitte ein "list" von deinem HTTPMOD Device und Log-Auszug mit verbose 5
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Pnemenz

hier das list:
Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.178.208/details.xml 30
   FUUID      5ccf5c84-f33f-1390-34c8-af888dda1313e237
   Interval   30
   LASTSEND   1557128752.11884
   MainURL    http://192.168.178.208/details.xml
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       temperatursensoren
   NOTIFYDEV  global
   NR         13
   NTFY_ORDER 50-temperatursensoren
   STATE      ???
   TRIGGERTIME 1557128782.11865
   TRIGGERTIME_FMT 2019-05-06 09:46:22
   TYPE       HTTPMOD
   addr       http://192.168.178.208:80
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.208/details.xml
   header     
   host       192.168.178.208
   httpheader HTTP/1.1 200 OK
Connection: close
Content-Type: text/xml
Cache-Control: no-cache
   httpversion 1.0
   hu_blocking 0
   hu_filecount 261
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /details.xml
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.208/details.xml
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.208/details.xml
     value      0
   sslargs:
Attributes:
   SensorName-1 <ROMId>(\w+)
   SensorWert-1 Centigrade">([\d\.]+)
   userattr   SensorName-1 SensorWert-1SensorName-2 SensorWert-2


und hier das LogFile:
2019.05.06 07:44:50 4: temperatursensoren: GetUpdate called (update)
2019.05.06 07:44:50 4: temperatursensoren: update timer modified: will call GetUpdate in 30.0 seconds at 2019-05-06 07:45:20
2019.05.06 07:44:50 4: temperatursensoren: AddToQueue adds update, initial queue len: 0
2019.05.06 07:44:50 5: temperatursensoren: AddToQueue adds type update to URL http://192.168.178.208/details.xml, no data, no headers, retry 0
2019.05.06 07:44:50 5: temperatursensoren: HandleSendQueue called, qlen = 1
2019.05.06 07:44:50 4: temperatursensoren: HandleSendQueue sends request type update to URL http://192.168.178.208/details.xml, No Data, No Header
timeout 2
2019.05.06 07:44:50 5: HttpUtils url=http://192.168.178.208/details.xml
2019.05.06 07:44:50 4: IP: 192.168.178.208 -> 192.168.178.208
2019.05.06 07:44:50 5: HttpUtils request header:
GET /details.xml HTTP/1.0
Host: 192.168.178.208
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2019.05.06 07:44:50 4: http://192.168.178.208/details.xml: HTTP response code 200
2019.05.06 07:44:50 5: HttpUtils http://192.168.178.208/details.xml: Got data, length: 5189
2019.05.06 07:44:50 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/xml
Cache-Control: no-cache
2019.05.06 07:44:50 4: temperatursensoren: Read callback: request type was update retry 0,
Body: <?xml version="1.0" encoding="UTF-8"?>
<Devices-Detail-Response xmlns="http://www.embeddeddatasystems.com/schema/owserver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PollCount>138210</PollCount>
<DevicesConnected>7</DevicesConnected>
<LoopTime>7.780</LoopTime>
<DevicesConnectedChannel1>0</DevicesConnectedChannel1>
<DevicesConnectedChannel2>0</DevicesConnectedChannel2>
<DevicesConnectedChannel3>7</DevicesConnectedChannel3>
<DataErrorsChannel1>0</DataErrorsChannel1>
<DataErrorsChannel2>0</DataErrorsChannel2>
<DataErrorsChannel3>1</DataErrorsChannel3>
<VoltageChannel1>4.87</VoltageChannel1>
<VoltageChannel2>4.89</VoltageChannel2>
<VoltageChannel3>4.87</VoltageChannel3>
<VoltagePower>5.11</VoltagePower>
<DeviceName>OWServer_v2-Enet</DeviceName>
<HostName>OWSERVER</HostName>
<MACAddress>D8:80:39:35:F3:36</MACAddress>
<DateTime>2019-05-06 07:44:50</DateTime>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>1B000005113A6C28</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>2A014B467FFF061016FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>18.6250 Deg C</PrimaryValue>
<Temperature Units="Centigrade">18.6250</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>200000051152D228</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>6C014B465FFF04102DFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>22.7500 Deg C</PrimaryValue>
<Temperature Units="Centigrade">22.7500</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>11</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>7000000807AFB928</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>5E014B467FFF02108DFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>21.8750 Deg C</PrimaryValue>
<Temperature Units="Centigrade">21.8750</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>700000051146F528</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>67014B467FFF09103BFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>22.4375 Deg C</PrimaryValue>
<Temperature Units="Centigrade">22.4375</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>02000005AF61C328</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>75004B467FFF0B1045FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>7.3125 Deg C</PrimaryValue>
<Temperature Units="Centigrade">7.3125</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>73000005AF1BCB28</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>6B004B467FFF051074FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>6.6875 Deg C</PrimaryValue>
<Temperature Units="Centigrade">6.6875</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>2C000005AF6D3F28</ROMId>
<Health>7</Health>
<Channel>3</Channel>
<RawData>5E014B465FFF0210FD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>21.8750 Deg C</PrimaryValue>
<Temperature Units="Centigrade">21.8750</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>11</Resolution>
<PowerSource>0</PowerSource>
</owd_DS18B20>
</Devices-Detail-Response>

2019.05.06 07:44:50 5: temperatursensoren: ExtractSid called, context reading, num
2019.05.06 07:44:50 4: temperatursensoren: CheckAuth decided no authentication required
2019.05.06 07:44:50 5: temperatursensoren: Read starts parsing response to update with defined readings:
2019.05.06 07:44:50 3: temperatursensoren: Read response to update didn't match any Reading
2019.05.06 07:44:50 5: temperatursensoren: HandleSendQueue called, qlen = 0


und zum Sbschluss die RAWdefinition:
defmod temperatursensoren HTTPMOD http://192.168.178.208/details.xml 30
attr temperatursensoren userattr SensorName-1 SensorWert-1SensorName-2 SensorWert-2
attr temperatursensoren SensorName-1 <ROMId>(\w+)
attr temperatursensoren SensorWert-1 Centigrade">([\d\.]+)

DeeSPe

defmod temperatursensoren HTTPMOD http://192.168.178.208/details.xml 30
attr temperatursensoren enableControlSet 1
attr temperatursensoren reading01-10Name TemperaturE
attr temperatursensoren reading01-11Name SensorF
attr temperatursensoren reading01-12Name TemperaturF
attr temperatursensoren reading01-13Name SensorG
attr temperatursensoren reading01-14Name TemperaturG
attr temperatursensoren reading01-1Name SensorA
attr temperatursensoren reading01-2Name TemperaturA
attr temperatursensoren reading01-3Name SensorB
attr temperatursensoren reading01-4Name TemperaturB
attr temperatursensoren reading01-5Name SensorC
attr temperatursensoren reading01-6Name TemperaturC
attr temperatursensoren reading01-7Name SensorD
attr temperatursensoren reading01-8Name TemperaturD
attr temperatursensoren reading01-9Name SensorE
attr temperatursensoren reading01RegOpt gm
attr temperatursensoren reading01Regex ROMId>([\d\w]{16})[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})


Bitte die Readingnamen noch entsprechend den eigenen Bedürfnissen anpassen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pnemenz

Vielen Dank das funktioniert bestens.

Hab ich das richtig Verstanden: für jeden Sensor müssen in meinem Fall zwei Readings nagelegt werden, die durch die Regex befüllt werden?

D.h. wenn ich weitere Sensoren anschließe muss ich je zwei weitere Readings anlegen.

Wenn ich einen Aktor am Bus anschließe muss ich entweder das Regex erweitern, damit die relevanten Readings erfasst werden, oder ein weiteres HTTPMOD anlegen?

DeeSPe

Zitat von: Pnemenz am 06 Mai 2019, 20:58:54
Hab ich das richtig Verstanden: für jeden Sensor müssen in meinem Fall zwei Readings nagelegt werden, die durch die Regex befüllt werden?

D.h. wenn ich weitere Sensoren anschließe muss ich je zwei weitere Readings anlegen.

Ja, aber müssen nicht unbedingt.
Ich weiß nicht ob Du die ROMId wirklich in FHEM als Reading benötigst. Du könntest auch nur die Temperaturwerte auslesen und die Readings entsprechend der Sensoren benennen. Dass der Wert eine Temperatur darstellt weißt Du ja selbst. ;)

Zitat von: Pnemenz am 06 Mai 2019, 20:58:54
Wenn ich einen Aktor am Bus anschließe muss ich entweder das Regex erweitern, damit die relevanten Readings erfasst werden, oder ein weiteres HTTPMOD anlegen?

Dieser RegEx ist global über alle Zeilen, d.h. wenn der HTML Code zukünftig mehrere matchende Ergebnisse liefert (durch mehr Sensoren) und diese dem selben Schema im HTML Code entsprechen, werden diese automatisch von diesem RegEx gefunden, Du musst nur die Attribute "reading01-14Name TemperaturG" erweitern.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pnemenz

Zitata, aber müssen nicht unbedingt.
Ich weiß nicht ob Du die ROMId wirklich in FHEM als Reading benötigst. Du könntest auch nur die Temperaturwerte auslesen und die Readings entsprechend der Sensoren benennen. Dass der Wert eine Temperatur darstellt weißt Du ja selbst. ;)
Woher weiß ich aber, dass mir der 1-wire Server die Sensoren immer in der selben Reihenfolge zurück gibt? Eigentlich müsste ich alle Sensoren mit dem Schlüssel ROMId als Reading anlegen und beim Update der Readings die Werte dementsprechend zuordnen.
Geht das mit HTTPMOD?

DeeSPe

Zitat von: Pnemenz am 07 Mai 2019, 06:31:51
Woher weiß ich aber, dass mir der 1-wire Server die Sensoren immer in der selben Reihenfolge zurück gibt? Eigentlich müsste ich alle Sensoren mit dem Schlüssel ROMId als Reading anlegen und beim Update der Readings die Werte dementsprechend zuordnen.
Geht das mit HTTPMOD?

Mit dem von mir vorgeschlagenen RegEx sollte es schon immer die selbe Reihenfolge sein.
Wenn Du es genauer haben willst, dann geht natürlich auch das, nur nicht mit diesem RegEx.

Hier das define mit benannten Sensoren:
define temperatursensoren HTTPMOD http://192.168.178.208/details.xml 30
attr temperatursensoren userattr reading01Name reading01OExpr reading01Regex reading02Name reading02OExpr reading02Regex reading03Name reading03OExpr reading03Regex reading04Name reading04OExpr reading04Regex reading05Name reading05OExpr reading05Regex reading06Name reading06OExpr reading06Regex reading07Name reading07OExpr reading07Regex
attr temperatursensoren enableControlSet 1
attr temperatursensoren reading01Name Sensor1
attr temperatursensoren reading01OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading01Regex >1B000005113A6C28<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})
attr temperatursensoren reading02Name Sensor2
attr temperatursensoren reading02OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading02Regex >200000051152D228<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})
attr temperatursensoren reading03Name Sensor3
attr temperatursensoren reading03OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading03Regex >7000000807AFB928<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})
attr temperatursensoren reading04Name Sensor4
attr temperatursensoren reading04OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading04Regex >700000051146F528<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})
attr temperatursensoren reading05Name Sensor5
attr temperatursensoren reading05OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading05Regex >02000005AF61C328<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})
attr temperatursensoren reading06Name Sensor6
attr temperatursensoren reading06OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading06Regex >73000005AF1BCB28<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})
attr temperatursensoren reading07Name Sensor7
attr temperatursensoren reading07OExpr sprintf("%.1f C",$val)
attr temperatursensoren reading07Regex >2C000005AF6D3F28<[\d\D]{250,300}"Centigrade">(-?\d\d?.\d{4})


Die Namen in den Attributen readingXXName musst Du natürlich noch an Deine Namen anpassen, habe diese hier nur beispielhaft Sensor1-7 gewählt.
Damit hast Du eine eindeutige Zuordnung der ROMId zu den jeweiligen Werten und auch im Falle dass sich die Reihenfolge der Sensoren im HTML Code ändert muss nichts angepasst werden.
Allerdings musst Du beim Hinzufügen neuer Sensoren weitere Attribute (readingXXName, readingXXOExpr, readingXXRegex) anlegen und bei readingXXRegex die ROMId des/der neuen Sensor(en) hinterlegen.
Übrigens das von mir vergebene Attribut readingXXOExpr ist dafür da die Werte auf eine Stelle nach dem Komma zu runden und noch das "C" hinten dran zu hängen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pnemenz

Vielen Dank, du bist Großartig.
Ich denke ich habe das jetzt Verstanden.