Plausibilisierung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 1: | Zeile 1: | ||
== Motivation == | == Motivation == | ||
* Verhinderung von Fehleingaben (Zahlendreher, Stellen vergessen, Komma falsch gesetzt) | * Verhinderung von Fehleingaben beim Zählerstand des Ausbauzählers (Zahlendreher, Stellen vergessen, Komma falsch gesetzt) | ||
== Funktionsweise == | == Funktionsweise == |
Aktuelle Version vom 14. Juni 2023, 10:39 Uhr
Motivation
- Verhinderung von Fehleingaben beim Zählerstand des Ausbauzählers (Zahlendreher, Stellen vergessen, Komma falsch gesetzt)
Funktionsweise
- Intern speichert OrgaMon für jeden Auftrag nur 3 Felder für ein einziges Zählwerk
VERBRAUCH_DATUM VERBRAUCH_ZAEHLER_STAND VERBRAUCH_PRO_JAHR
- damit ist eine Prognose für den Ablesewert für den heutigen Ablesetag möglich
- Die Genauigkeit der Prognose wird verbessert, in dem verschiedene Lastkurven für Gas/Strom/Wasser verwendet werden
Import
Dazu braucht man im Import die 3 Werte
Verbrauch_Datum()
Datum einer AblesungVerbrauch_Zähler_Stand()
der Ablesewert an dem DatumVerbrauch_Pro_Jahr()
der Jahresverbrauch
alternativ aber auch 4 Werte
- OrgaMon berechnet den Jahresverbrauch dann selbst
- ACHTUNG: Die Import-Reihenfolge muss genau wie angegeben eingehalten werden
Verbrauch_Datum()
Datum einer AblesungVerbrauch_Zähler_Stand()
der Ablesewert an dem DatumVerbrauch_0_Datum()
2. Datum einer AblesungVerbrauch_0_Zähler_Stand()
der Ablesewert an dem 2. Datum
- in diesem Fall wird der Jahresverbrauch selbst durch OrgaMon berechnet:
VERBRAUCH_PRO_JAHR = ((Verbrauch_Zähler_Stand - Verbrauch_0_Zähler_Stand) / TageZwischen(Verbrauch_0_Datum, Verbrauch_Datum)) * 365
Lastkurve
Transaktionen
siehe Transaktionen#HA7
Qualitätssicherung
in der OrgaMon-App
- der Transport erfolgt über Zähler-Infos (bitte testen!)
ZaehlerInfo.values['P0'] := inttostr(round(ZaehlerstandExact - Toleranzband)); ZaehlerInfo.values['P1'] := inttostr(round(ZaehlerstandExact + Toleranzband));
vor der Ergebnismeldung
Toleranzband-Methode
Toleranzband := JahresVerbrauch * (3.0 / 12.0);
Grenz-Methode
v := sZaehlerInfo.values['v1'] b := sZaehlerInfo.values['b1'] a := sZaehlerInfo.values['a1'] s := Zählerstand( / 'ET' / HT) E2 v := sZaehlerInfo.values['v2'] b := sZaehlerInfo.values['b2'] a := sZaehlerInfo.values['a2'] s := Zählerstand('E2') if (V < 0) then begin Log('[Q16] keine "Untere Grenze" definiert' + MoreInfo); end; if (b < 0) then begin Log('[Q17] keine "Obere Grenze" definiert' + MoreInfo); end; if (a < 0) then begin Log('[Q18] kein "Letzter Stand" definiert' + MoreInfo); end; // if (ZWS < 0) then begin Log('[Q01] Ablesestand fehlt' + MoreInfo); break; end; if (a > 0) and (ZWS < a) then begin if (ZWS + 10 >= a) then Log('[Q13] Ablesestand unterschreitet leicht letzten Stand' + MoreInfo) else Log('[Q19] Ablesestand kleiner als letzter Stand' + MoreInfo); break; end; if (b - V < 0) then begin Log('[Q06] Zählwerk-Überlauf erwartet' + MoreInfo); end; BandErweiterung := max((b - V) * 3, 1000); if (ZWS < V) then begin if (ZWS < V - BandErweiterung) then Log('[Q07] Ablesestand unterschreitet massiv untere Grenze' + MoreInfo) else Log('[Q08] Ablesestand unterschreitet leicht untere Grenze' + MoreInfo); break; end; if (ZWS > b) then begin if (ZWS > b + BandErweiterung) then Log('[Q09] Ablesestand überschreitet massiv obere Grenze' + MoreInfo) else Log('[Q10] Ablesestand überschreitet leicht obere Grenze' + MoreInfo); break; end;