Hallo Leute,
ich bin gerade an meiner Heizung dran...
Dazu gibts ein ModbusAttr mit div. Readings die per UserReading zusammengepuzzled werden.
FBH_Ergänzung Außentemperatur liegt über der eingestellten Heizgrenze 2020-09-13 21:39:59
FBH_Pumpe Aus 2020-09-13 21:39:59
FBH_Status Bereit 2020-09-13 21:39:59
FBH_Text Bereit (Aus): Außentemperatur liegt über der eingestellten Heizgrenze 2020-09-13 21:40:00
FBH_Text {ReadingsVal("ETA_PU15_Modbus", "FBH_Status", "error")." (".ReadingsVal("ETA_PU15_Modbus", "FBH_Pumpe", "error")."): ".ReadingsVal("ETA_PU15_Modbus", "FBH_Ergänzung", "error")}
Nun sind alle Readings in "event-on-change-reading" damit ich die Datenbank aufgeräumt halte.
Zusätzlich existiert eine ReadingsHistory:
defmod FBH_TextLog readingsHistory ETA_PU15_Modbus:FBH_Text
attr FBH_TextLog alias Fußbodenheizung - Historie
attr FBH_TextLog alwaysTrigger 1
attr FBH_TextLog group Heizung
attr FBH_TextLog room Heizung
Hier tauchen die Zeilen nur auf wenn ich das Reading FBH_Text in event-on-update-reading schiebe - dann aber im 1/10 sek. Takt und ohne Rücksicht auf Änderung.
Das UserReading "FBH_Text" in ETA_PU15_Modbus wird fleißig geupdatet wenn ich die Heizung ein/aus schalte. Die ReadingsHistory lässts aber kalt (Sofern FBH_Text in event-on-change ist)
Was mache ich falsch?
Eine ReadingHistory auf ein anderes Reading des Modbus Devices geht ebenso nicht (wohlgemerkt "on Change").
Greife ich auf ein HTTPMOD Device zu geht es auch mit "on change" und zeigt nur geänderte Werte. Es macht mich schier wahnsinnig.
Gruß Raphael
Ein "list" von ETA_PU15_Modbus wäre hilfreich.
Das ist nicht gerade klein...
Bitteschön :)
Internals:
CFGFN
DEF 1 60 192.168.0.247:502 TCP
DeviceName 192.168.0.247:502
EXPECT idle
FD 11
FUUID 5f57640a-f33f-5fc1-8d07-8586f16b248bf02a
INTERVAL 60
IODev ETA_PU15_Modbus
LASTOPEN 1600064733.3724
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.1.5 - 17.9.2019
NAME ETA_PU15_Modbus
NOTIFYDEV global
NR 4915
NTFY_ORDER 50-ETA_PU15_Modbus
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TRIGGERTIME 1600064760.98696
TRIGGERTIME_FMT 2020-09-14 08:26:00
TRIGGERTIME_SAVED
TYPE ModbusAttr
devioLoglevel 3
lastUpdate 1600064700.98696
nextOpenDelay 60
Helper:
DBLOG:
FBH_Ergänzung:
logdb:
TIME 1599953573.73355
VALUE -
FBH_Mischer:
logdb:
TIME 1599813344.59092
VALUE 0
FBH_Pumpe:
logdb:
TIME 1599813344.48136
VALUE Aus
FBH_Status:
logdb:
TIME 1599813344.25642
VALUE Bereit
FBH_Text:
logdb:
TIME 1599986937.18916
VALUE Bereit (Aus)
FWM_Beimischpumpe:
logdb:
TIME 1599813345.85442
VALUE 0
FWM_Pufferpumpe:
logdb:
TIME 1599813345.74238
VALUE 0
FWM_Status:
logdb:
TIME 1599813345.62871
VALUE Bereit
FWM_Zirkulation:
logdb:
TIME 1599813345.97138
VALUE Aus
Kessel_Kesselpumpe:
logdb:
TIME 1599813344.14562
VALUE 0
Kessel_Pelletsbehälter:
logdb:
TIME 1599813343.99071
VALUE 4200
Kessel_Status:
logdb:
TIME 1599813343.76872
VALUE Bereit
Kesseldruck:
logdb:
TIME 1599813343.65747
VALUE 1.46
Solar_Ertrag_Heute:
logdb:
TIME 1599813345.2242
VALUE 0.1
Solar_Kollektorpumpe:
logdb:
TIME 1599813344.70098
VALUE 23.2
Solar_Ladepumpe:
logdb:
TIME 1599813344.81179
VALUE 20
Solar_Leistung:
logdb:
TIME 1599813345.32741
VALUE 1
Solar_Schichtladeventil:
logdb:
TIME 1599813344.99097
VALUE Mitte
Solar_Solarvorrang:
logdb:
TIME 1599813345.50442
VALUE Mittel
Solar_Status:
logdb:
TIME 1599813345.10253
VALUE Laden
WW_Status:
logdb:
TIME 1599568106.41553
VALUE Bereit
state:
logdb:
TIME 1600064733.38268
VALUE CONNECTED
QUEUE:
READ:
BUFFER
READINGS:
2020-09-14 08:25:01 FBH_Ergänzung -
2020-09-14 08:25:01 FBH_Mischer 0
2020-09-14 08:25:01 FBH_Pumpe Ein
2020-09-14 08:25:01 FBH_Status Heizen
2020-09-14 08:25:03 FBH_Text Heizen (Ein): -
2020-09-14 08:25:03 FWM_Beimischpumpe 0
2020-09-14 08:25:02 FWM_Pufferpumpe 0
2020-09-14 08:25:02 FWM_Status Bereit
2020-09-14 08:25:03 FWM_Zirkulation Aus
2020-09-14 08:25:01 Kessel_Kesselpumpe 0
2020-09-14 08:25:01 Kessel_Pelletsbehälter 4200
2020-09-14 08:25:01 Kessel_Status Bereit
2020-09-14 08:25:01 Kesseldruck 1.5
2020-09-14 08:25:02 Solar_Ertrag_Heute 0
2020-09-14 08:25:02 Solar_Kollektorpumpe 0
2020-09-14 08:25:02 Solar_Ladepumpe 0
2020-09-14 08:25:02 Solar_Leistung 0
2020-09-14 08:25:02 Solar_Schichtladeventil Mitte
2020-09-14 08:25:02 Solar_Solarvorrang Hoch
2020-09-14 08:25:02 Solar_Status Bereit
2020-09-08 14:28:26 WW_Status Bereit
2020-09-14 08:25:33 state opened
REMEMBER:
lid 1
lname ETA_PU15_Modbus
lrecv 1600064703.19273
lsend 1600064703.18587
defptr:
ETA_PU15_Modbus 1
gotReadings:
FWM_Zirkulation Aus
lastRead:
h-1000 1599563982.81209
h-1100 1599563982.64801
h1000 1600064701.03045
h1002 1600064701.19796
h1004 1600064701.30723
h1006 1600064701.41814
h1008 1600064701.5278
h1100 1600064701.63797
h1102 1600064701.74821
h1104 1600064701.86193
h1106 1600064701.97361
h1300 1600064702.08632
h1302 1600064702.19843
h1304 1600064702.30756
h1306 1600064702.41825
h1308 1600064702.52857
h1310 1600064702.63825
h1312 1600064702.74852
h1400 1600064702.85916
h1402 1600064702.9694
h1404 1600064703.08382
h1406 1600064703.19725
Attributes:
event-on-change-reading FBH_Mischer, FBH_Pumpe, FWM_Beimischpumpe, FWM_Pufferpumpe, FWM_Status, FWM_Zirkulation, Kessel_Kesselpumpe, Kessel_Pelletsbehälter, Kessel_Status, Kesseldruck, Solar_Ertrag_Heute, Solar_Kollektorpumpe, Solar_Ladepumpe, Solar_Leistung, Solar_Schichtladeventil, Solar_Solarvorrang, Solar_Status, WW_Status, state, FBH_Ergänzung, FBH_Status, FBH_Text
group Heizung
obj-h1000-expr $val/100
obj-h1000-len 2
obj-h1000-poll 1
obj-h1000-reading Kesseldruck
obj-h1000-unpack N
obj-h1002-len 2
obj-h1002-map 4000:Ausgeschaltet, 4001:Bereit, 4002:Geladen, 4003:Voll, 4004:Entaschen, 4005:Position wechseln, 4006:Spülen, 4007:Startvorgang, 4008:Ein, 4009:In Betrieb, 4010:Fördern, 4011:Heizen, 4012:Absenken, 4013:Laden, 4014:Abstellen, 4015:Glutabbrand, 4016:Störung, 4017:Verriegelt
obj-h1002-poll 1
obj-h1002-reading Kessel_Status
obj-h1002-unpack N
obj-h1004-len 2
obj-h1004-map 1080:Voll, 1081:Nicht Voll, 1082:Verriegelt, 1083:Sicherung defekt, 1084:Keine Klemme zugewiesen, 1085:Keine Antwort des CAN-Knotens
obj-h1004-poll 1
obj-h1004-reading Kessel_Pelletsbehälter
obj-h1004-unpack N
obj-h1006-len 2
obj-h1006-map 4201:Aschebox wurde entfernt, 4202:Emissionsmessung für Nennlast durchführen, 4203:Emissionsmessung für Teillast durchführen, 4204:Entaschung ist fehlgeschlagen, 4205:Entaschung wird anschließend gestartet, 4206:Es liegt eine Störung vor, 4207:Kessel ist zu heiß (Übertemperatur), 4208:Isoliertür ist offen, 4209:Kessel wurde Ausgeschaltet, 4210:Lambdasonde wird kalibriert, 4211:Pelletsbehälter wird aufgefüllt, 4212:Stoker wird entleert, 4213:TWIN Betrieb,4214:Verriegelung ist aktiv, 4215:Verzögerungszeit läuft ab, 4216:Vorbereitung auf Emissionsmessung, 4217:Zündung ist eingeschaltet, 4218:Feuerraumtür ist offen, 4219:Emissionsmessung durchführen, 4220:Außerhalb der Bereitschaftszeiten, 4221:Solltemperatur ist überschritten, 4222:Versorgungsspannung für Pumpe Mischer oder Umschaltventil fehlt
obj-h1006-poll 1
obj-h1006-reading Kessel_Pelletsbehälter
obj-h1006-unpack N
obj-h1008-expr $val/10
obj-h1008-len 2
obj-h1008-poll 1
obj-h1008-reading Kessel_Kesselpumpe
obj-h1008-unpack N
obj-h1100-len 2
obj-h1100-map 4000:Ausgeschaltet, 4001:Bereit, 4002:Geladen, 4003:Voll, 4004:Entaschen, 4005:Position wechseln, 4006:Spülen, 4007:Startvorgang, 4008:Ein, 4009:In Betrieb, 4010:Fördern, 4011:Heizen, 4012:Absenken, 4013:Laden, 4014:Abstellen, 4015:Glutabbrand, 4016:Störung, 4017:Verriegelt
obj-h1100-poll 1
obj-h1100-reading FBH_Status
obj-h1100-unpack N
obj-h1102-len 2
obj-h1102-map 4050:Urlaubsprogramm ist Aktiv, 4051:Erzeuger ist nicht warm Genug, 4052:Berechnete Vorlauftemperatur liegt unter dem Mindestwert, 4053:Raumtemperatur ist überschritten, 4054:Außentemperatur liegt über der eingestellten Heizgrenze, 4055:Warmwasser wird vorrangig geladen, 4056:Raumtemperatur liegt unter der Frostschutzgrenze, 4057:Vorlauftemperatur liegt unter der Frostschutzgrenze, 4058:Restwärme wird abgeführt, 4059:Überschüssige Wärme wird abgeführt, 4060:Estrichausheizprogramm ist aktiv, 4061:Vorlauftemperaturfühler ist defekt, 4062:Externe Freigabe ist nicht aktiv, 4063:Keine Anforderung der Räume vorhanden, 4064:Ventile werden geöffnet, 4065:Mischer wird aufgrund zu hoher Vorlauftemperatur geschlossen, 4066:Handtuchtrockner ist Aktiv, 4067: -
obj-h1102-poll 1
obj-h1102-reading FBH_Ergänzung
obj-h1102-unpack N
obj-h1104-expr $val
obj-h1104-len 2
obj-h1104-map 1040:Aus, 1041:Ein, 1042:Verriegelt, 1043:Sicherung defekt
obj-h1104-poll 1
obj-h1104-reading FBH_Pumpe
obj-h1104-unpack N
obj-h1106-expr $val/10
obj-h1106-len 2
obj-h1106-poll 1
obj-h1106-reading FBH_Mischer
obj-h1106-unpack N
obj-h1300-expr $val/10
obj-h1300-len 2
obj-h1300-poll 1
obj-h1300-reading Solar_Kollektorpumpe
obj-h1300-unpack N
obj-h1302-expr $val/10
obj-h1302-len 2
obj-h1302-poll 1
obj-h1302-reading Solar_Ladepumpe
obj-h1302-unpack N
obj-h1304-len 2
obj-h1304-map 3880:Mitte, 3881:Oben
obj-h1304-poll 1
obj-h1304-reading Solar_Schichtladeventil
obj-h1304-unpack N
obj-h1306-len 2
obj-h1306-map 4000:Ausgeschaltet, 4001:Bereit, 4002:Geladen, 4003:Voll, 4004:Entaschen, 4005:Position wechseln, 4006:Spülen, 4007:Startvorgang, 4008:Ein, 4009:In Betrieb, 4010:Fördern, 4011:Heizen, 4012:Absenken, 4013:Laden, 4014:Abstellen, 4015:Glutabbrand, 4016:Störung, 4017:Verriegelt
obj-h1306-poll 1
obj-h1306-reading Solar_Status
obj-h1306-unpack N
obj-h1308-expr $val/10
obj-h1308-len 2
obj-h1308-poll 1
obj-h1308-reading Solar_Ertrag_Heute
obj-h1308-unpack N
obj-h1310-expr $val/10
obj-h1310-len 2
obj-h1310-poll 1
obj-h1310-reading Solar_Leistung
obj-h1310-unpack N
obj-h1312-len 2
obj-h1312-map 2570:Aus, 2571:Hoch, 2572:Mittel, 2573:Aus - zu kalt, 2574:Deaktiviert
obj-h1312-poll 1
obj-h1312-reading Solar_Solarvorrang
obj-h1312-unpack N
obj-h1400-len 2
obj-h1400-map 4000:Ausgeschaltet, 4001:Bereit, 4002:Geladen, 4003:Voll, 4004:Entaschen, 4005:Position wechseln, 4006:Spülen, 4007:Startvorgang, 4008:Ein, 4009:In Betrieb, 4010:Fördern, 4011:Heizen, 4012:Absenken, 4013:Laden, 4014:Abstellen, 4015:Glutabbrand, 4016:Störung, 4017:Verriegelt
obj-h1400-poll 1
obj-h1400-reading FWM_Status
obj-h1400-unpack N
obj-h1402-expr $val/10
obj-h1402-len 2
obj-h1402-poll 1
obj-h1402-reading FWM_Pufferpumpe
obj-h1402-unpack N
obj-h1404-expr $val/10
obj-h1404-len 2
obj-h1404-poll 1
obj-h1404-reading FWM_Beimischpumpe
obj-h1404-unpack N
obj-h1406-expr $val
obj-h1406-len 2
obj-h1406-map 1040:Aus, 1041:Ein, 1042:Verriegelt, 1043:Sicherung defekt, 1044:Keine Klemme zugewiesen, 1045:Keine Antwort des CAN-Knoten
obj-h1406-poll 1
obj-h1406-reading FWM_Zirkulation
obj-h1406-unpack N
room Heizung
sortUpdate 1
userReadings FBH_Text {ReadingsVal("ETA_PU15_Modbus", "FBH_Status", "error")." (".ReadingsVal("ETA_PU15_Modbus", "FBH_Pumpe", "error")."): ".ReadingsVal("ETA_PU15_Modbus", "FBH_Ergänzung", "error")}
userattr obj-h1000-expr obj-h1000-len obj-h1000-poll obj-h1000-reading obj-h1000-unpack obj-h1002-len obj-h1002-map obj-h1002-poll obj-h1002-reading obj-h1002-unpack obj-h1004-expr obj-h1004-len obj-h1004-map obj-h1004-poll obj-h1004-reading obj-h1004-unpack obj-h1006-len obj-h1006-map obj-h1006-poll obj-h1006-reading obj-h1006-unpack obj-h1008-expr obj-h1008-len obj-h1008-poll obj-h1008-reading obj-h1008-unpack obj-h1100-len obj-h1100-map obj-h1100-poll obj-h1100-reading obj-h1100-unpack obj-h1102-len obj-h1102-map obj-h1102-poll obj-h1102-reading obj-h1102-unpack obj-h1104-expr obj-h1104-len obj-h1104-map obj-h1104-poll obj-h1104-reading obj-h1104-unpack obj-h1106-expr obj-h1106-len obj-h1106-poll obj-h1106-reading obj-h1106-unpack obj-h1300-expr obj-h1300-len obj-h1300-poll obj-h1300-reading obj-h1300-unpack obj-h1302-expr obj-h1302-len obj-h1302-poll obj-h1302-reading obj-h1302-unpack obj-h1304-len obj-h1304-map obj-h1304-poll obj-h1304-reading obj-h1304-unpack obj-h1306-len obj-h1306-map obj-h1306-poll obj-h1306-reading obj-h1306-unpack obj-h1308-expr obj-h1308-len obj-h1308-poll obj-h1308-reading obj-h1308-unpack obj-h1310-expr obj-h1310-len obj-h1310-poll obj-h1310-reading obj-h1310-unpack obj-h1312-len obj-h1312-map obj-h1312-poll obj-h1312-reading obj-h1312-unpack obj-h1400-len obj-h1400-map obj-h1400-poll obj-h1400-reading obj-h1400-unpack obj-h1402-expr obj-h1402-len obj-h1402-poll obj-h1402-reading obj-h1402-unpack obj-h1404-expr obj-h1404-len obj-h1404-poll obj-h1404-reading obj-h1404-unpack obj-h1406-expr obj-h1406-len obj-h1406-map obj-h1406-poll obj-h1406-reading obj-h1406-unpack
Mach im event-on-change-reading Attribut die Leerzeichen weg.
Wobei ich nicht ganz versteh, warum Du alle Readings da auflistest. ein "event-on-change-reading .*" ,hätte gereicht, oder?
Zitat von: amenomade am 14 September 2020, 08:52:14
Mach im event-on-change-reading Attribut die Leerzeichen weg.
Wobei ich nicht ganz versteh, warum Du alle Readings da auflistest. ein "event-on-change-reading .*" ,hätte gereicht, oder?
Sehr cool, das war es :)
Das .* ist mir nicht eingefallen - danke dafür.
Nun gibts nur noch das "Problem" dass das User-Reading immer aktualisiert wird wenn sich etwas ändert - die Readings fliegen aber nach und nach ein. So bekomme ich solche komischen Artefakte:
Fußbodenheizung - Historie
10:54:02 ETA_PU15_Modbus FBH_Text: Bereit (Aus): Außentemperatur liegt über der eingestellten Heizgrenze
10:54:02 ETA_PU15_Modbus FBH_Text: Bereit (Aus): -
10:53:37 ETA_PU15_Modbus FBH_Text: Ausgeschaltet (Aus): -
10:53:37 ETA_PU15_Modbus FBH_Text: Ausgeschaltet (Aus): Außentemperatur liegt über der eingestellten Heizgrenze
Dabei ist das richtig:
Fußbodenheizung - Historie
10:54:02 ETA_PU15_Modbus FBH_Text: Bereit (Aus): Außentemperatur liegt über der eingestellten Heizgrenze
10:53:37 ETA_PU15_Modbus FBH_Text: Ausgeschaltet (Aus): -
Wie bekomme ich das gelöst?
Trigger auf dem userReading definieren.
https://fhem.de/commandref_DE.html#userReadings
Zitat von: amenomade am 14 September 2020, 12:30:00
Trigger auf dem userReading definieren.
https://fhem.de/commandref_DE.html#userReadings
Ich könnte nun herausfinden wierum die Modbus Daten aktualisiert werden und dann auf das Letzte triggern.
Aber ich fände es cooler einen Trigger zu setzen der schaut ob das Device komplett gelesen wurde - nur wie?
Wie finde ich solch informationen ohne zu wissen was man genau sucht? Ich arbeite parallel das Tutorial von m Kleine durch (haus-automatisierung.com).
Zitat von: rspecht am 14 September 2020, 12:48:23
Aber ich fände es cooler einen Trigger zu setzen der schaut ob das Device komplett gelesen wurde - nur wie?
Das gibt es nicht. Aber idR werden die Readings immer in der gleichen Reihenfolge erstellt, entweder als "Packet" oder einzeln. Mit mseclog Attribut kannst Du ggf feststellen, welches das letzte immer ist. Darauf triggern