Leistungsmessung über neues Modul für FLUKSO

Begonnen von optimizer, 20 November 2014, 14:26:23

Vorheriges Thema - Nächstes Thema

optimizer

Hallo LuckyLuis,

wie groß sind dich Abweichungen? Glaubst du, dass das Rundungsfehler sind, oder stetig steigende Abweichungen? Für stetige Abweichungen könnte ich mir einen weiteren Paramter für einen Korrekturfaktor vorstellen.

LuckyLuis

Hi Optimizer,

entschuldige die späte Antwort. Habe gerade Stück für Stück meine FHEM-Installation auf eine komplett neu eingerichte Raspi Pi 2 Plattform umgezogen und dabei mal alle alten Stricke abgeschnitten ;-).
Die gerechneten Werte bei Gas sind wohl eher "Rundungsfehler aufgrund der lperday-Grundlage (so sehe ich das). Werde die nächsten Tage mal wieder Tabellen anlegen ....
Dazu ist seit heute ein neuer Wasserzähler integriert worden (Sensus HRI Scout A3, Schweineteuer, aber besser als einen Wasserschaden beheben...). Der zeigt mir auf dem lokalen Flukso-Rechner die richtigen Werte an. Allerdings sind sie jetzt in FHEM mit dem Faktor 1000 zu klein.... Was bei Gas passt, passt bei Wasser nicht mehr. Kannst Du den Divisor als Attribut einrichten oder gegebenfalls bei einem erkanntem Wassersensor (wir ja auf der Flukso-Kiste hinterlegt) den Divisor anpassen?

Viele Grüße und nochmals Danke für Deinen Einsatz.

LuckyLuis

optimizer

Hallo LuckyLuis,

Im Flukso kann man unter type zwischen electricity/water/gas auswählen. Für Wasser u. Gas sollte aber die Einheit lperday ausgegeben werden - anscheinend doch nicht durchgehend.
Leider habe ich keinen s0-Wasserzähler um das auszuprobieren.

Ein Divisor oder Korrekturfaktor ist dann wohl die einzige Möglichkeit. Schau ich mir mal an.
Gruß
Karlheinz

LuckyLuis

Hi Optimizer,

warte mal mit dem schauen. Ich habe auch schon ein Attribut FLUKSO_divisor eingebaut und per Default auf 1000 gesetzt. Ich analysiere das noch bis zum Wochenende (auch die Abweichungen mit dem Gas, Tendenz: Es wird immer etwas zu wenig ausgewiesen). Im Anhang findest Du meine Version (alle Änderungen mit #AB gekennzeichnet).

Danke!

Viele Grüße

LuckyLuis

LuckyLuis

Hallo Optimizer,

meine Analyse zeigt, dass für Gas und Wasser die Verbrauchswerte zu niedrig im Counter berücksichtigt werden.
Aufgrund eines anderen Problemes habe ich mit mal mit der MQTT-Technik des Flukso beschäftigt (ab Firmware 246) und bin darüber über die FHEM-Module MQTT und MQTT-DEVICE gestolpert. Damit kann ich jetzt den Flukso-eigenen Counter (auf dem lokalen Flukso-Gerät) abfragen. Die Werte in Flukso sind richtig. Gerne kann ich bei Bedarf mein Setup zur Verfügung stellen.

Trotzdem vielen Dank für Deinen Einsatz.

Viele Grüße

LuckyLuis

optimizer

#35
Hallo LuckyLuis,

schön dass du einen Weg gefunden hast, es wäre nett, wenn du mir noch bei der Fehlersuche behilflich sein könntest, damit andere auch davon profitieren.

Kannst du die Daten die mein Modul über
http://flukso:8080/sensor/12345?version=1.0&interval=minute&jsonp_callback=realtime&unit=lperday
ausliest im Vergleich zu MQTT posten (flukso u. 12345 musst du mit deinen Werten ersetzen)?

Gruß
Karlheinz

LuckyLuis

Hi Optimizer,

werde mich am Wochende mal dran machen.

Gruß

LuckyLuis

LuckyLuis

Hi Optimizer,

habe soeben mal einen Vergleich gemacht. Der Gaszähler hat sich gerade mal 10 Liter bewegt. Anschließend die nächste Messung noch wegen der Veränderung.

1. Ausgabe mit Deinem angebenenen Link:


1. Messung:
realtime([[1446407838,924],[1446407839,924],[1446407840,924],[1446407841,924],[1446407842,924],[1446407843,924],[1446407844,924],[1446407845,924],[1446407846,924],[1446407847,924]
,[1446407848,924],[1446407849,924],[1446407850,924],[1446407851,924],[1446407852,924],[1446407853,924],[1446407854,924],[1446407855,924],[1446407856,924],[1446407857,924]
,[1446407858,924],[1446407859,924],[1446407860,924],[1446407861,924],[1446407862,924],[1446407863,924],[1446407864,924],[1446407865,924],[1446407866,"nan"],[1446407867,"nan"]
,[1446407868,"nan"],[1446407869,"nan"],[1446407870,"nan"],[1446407871,"nan"],[1446407872,"nan"],[1446407873,"nan"],[1446407874,"nan"],[1446407875,"nan"],[1446407876,"nan"]
,[1446407877,"nan"],[1446407878,"nan"],[1446407879,"nan"],[1446407880,"nan"],[1446407881,"nan"],[1446407882,"nan"],[1446407883,"nan"],[1446407884,"nan"],[1446407885,"nan"]
,[1446407886,"nan"],[1446407887,"nan"],[1446407888,"nan"],[1446407889,"nan"],[1446407890,"nan"],[1446407891,"nan"],[1446407892,"nan"],[1446407893,"nan"],[1446407894,"nan"]
,[1446407895,"nan"],[1446407896,"nan"],[1446407897,"nan"]]);

2. Messung:
realtime([[1446408428,1428],[1446408429,1428],[1446408430,1428],[1446408431,1428],[1446408432,1428],[1446408433,1428],[1446408434,1428],[1446408435,1428],[1446408436,1428],[1446408437,1428]
,[1446408438,1428],[1446408439,1428],[1446408440,1428],[1446408441,1428],[1446408442,1428],[1446408443,1428],[1446408444,1428],[1446408445,1428],[1446408446,1428],[1446408447,1428]
,[1446408448,1428],[1446408449,1428],[1446408450,1428],[1446408451,1428],[1446408452,1428],[1446408453,1428],[1446408454,1428],[1446408455,1428],[1446408456,1428],[1446408457,1428]
,[1446408458,1428],[1446408459,1428],[1446408460,1428],[1446408461,1428],[1446408462,1428],[1446408463,1428],[1446408464,1428],[1446408465,1428],[1446408466,1428],[1446408467,1428]
,[1446408468,1428],[1446408469,1428],[1446408470,1428],[1446408471,1428],[1446408472,"nan"],[1446408473,"nan"],[1446408474,"nan"],[1446408475,"nan"],[1446408476,"nan"],[1446408477,"nan"]
,[1446408478,"nan"],[1446408479,"nan"],[1446408480,"nan"],[1446408481,"nan"],[1446408482,"nan"],[1446408483,"nan"],[1446408484,"nan"],[1446408485,"nan"],[1446408486,"nan"],[1446408487,"nan"]]);



Ausgabe der MQTT-Messages:


1. Messung
1446407865: /sensor/12345/gauge ~> [1446407865,924,"L/day"]
1446407865: /sensor/12345/counter ~> [1446407865,398690,"L"]

2. Messung
1446408471: /sensor/12345/gauge ~> [1446408471,1428,"L/day"]
1446408471: /sensor/12345/counter ~> [1446408471,398700,"L"]


Gauge ist der aktuelle Verbrauchswert, counter der Flukso-interne Zähler ( den benutze ich jetzt).

Hoffe, das hilft weiter.

Viele Grüße

LuckyLuis

optimizer

Hallo LuckyLuis,

deine Auswertung hat mir weitergeholfen.
In der 2. Messung wird zwischen 20:07:08 - 20:07:51 Uhr imho ein Liter verbraucht (1428*44/24/60/44). Wenn die 10 Minuten vorher den gleichen Verbrauch hatten, macht das 10 Liter.
Änderung folgt.

Gruß
Karlheinz

optimizer

Hallo,

mit der neuen Version 0.7 wurde einiges geändert:
- neuer Korrekturfaktor: Die Werte können dadurch z.B. durch einen Faktor v. "1.05" um 5% erhöht werden.
- lperday-Fix: Ausgabe in Liter, anstatt m³.
- neue reading-Namen (energy) zur besseren Unterstützung des statistics-Moduls. Die alten (Power*) werden beim nächsten Mal gelöscht.
- Attribute überarbeitet: unit mit Auswahlmöglichkeit. userattr nicht mehr nötig.


Gruß
Karlheinz

Christoph

Zitat von: LuckyLuis am 25 Oktober 2015, 21:46:39
Gerne kann ich bei Bedarf mein Setup zur Verfügung stellen.

Ich hätte Interesse daran  :)

LuckyLuis

Hallo Christoph,

gerne! ;-)

Zuerst eine Verbindung zum FLUKSO-Server (der Kiste daheim) aufbauen ("flukso" ist der hostname):

define MQTTFlukso MQTT flukso:1883

Dann für jeden Sensor eine Queque aufbauen, z.B.:

define MQTTFluksoStrom MQTT_DEVICE MQTTFlukso

Jetzt die entsprechenden Nachrichten "abonnieren". Hier die Flusko-internen Zählerstandswerte ("id-des-sensors" gegen entsprechende ID austauschen. Zu finden über die Einstellungen im Flukso-Web-Portal. Statt counter geht auch "gauge"; das sind die aktuellen Werte.):

attr MQTTFluksoStrom subscribeReading_counter /sensor/id-des-sensors/counter

Jetzt noch Gedanken über das Logging machen. Da kommen eine Menge Daten drüber.

Weiterhin habe ich noch folgende UserReadings definiert:

Für den aktuellen Zählerstand laut Zähler folgendes user-Attribut anlegen:

attr MQTTFluksoStrom userattr offset
attr MQTTFluksoStrom offset "Zählerstand abzüglich Flukso-Zählerstand"

(Flukso-Zählerstand abzulesen nach dem ersten Erhalten der Nachrichten aus dieser Verbindung)

und dann

attr MQTTFluksoStrom userReadings FluksoZaehler {sprintf("%u",(split(",",ReadingsVal($name,"counter",0)))[1])},Zaehler {sprintf("%u",(split(",",ReadingsVal($name,"counter",0)))[1]+AttrVal($name,"offset",0))}

Ein anschließendes

attr MQTTFluksoStrom stateFormat Zaehler

gibt den Zählerwert als State-Reading aus.

Ich hoffe, ich habe die Befehle richtig wiedergegeben. Viel Erfolg beim Umsetzen.

Viele Grüße

LuckyLuis

Christoph

#42
Hallo LuckyLuis,

danke für die Anleitung funktioniert problemlos  :D
Kann es sein das Flukso nur den ersten Sensor per mqtt überträgt?
Oder muss ich hier noch am Flukso was einstellen damit alle meine 3 Sensoren übertragen werden?
Im Webinterface von Flukso unter mqtt wird auch nur der erste Sensor ausgegeben.

Gruß Christoph

LuckyLuis

Hi Christoph,

ich nutze 3 Sensoren und die kann ich alle abonnieren (mache ich auch ;-)). Hast Du die Erweiterung von GebhardtM (siehe Flukso-Forum) installiert? Da kann man unter Panel alle Sensoren auch sehen. Ich musste (und ich glaube kann man auch nicht) etwas besonderes für MQTT einrichten. Du brauchst aber Firmware 247.

Viele Grüße
LuckyLuis

Christoph

Hallo LuckyLuis,

danke habs jetzt auch hinbekommen, hatte bei meinem Flukso irgendwie eingestellt gehabt das nur eine Phase aktiv ist.  :P


Gruß Christoph