Eingang Wired IO12/14 als Impulszähler Wasserzähler Skript

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

Antworten
pruse
Beiträge: 223
Registriert: 03.02.2012, 22:41

Eingang Wired IO12/14 als Impulszähler Wasserzähler Skript

Beitrag von pruse » 03.07.2017, 18:15

Hallo,
ich suche schon seit Stunden ein Skript für das Wired IO12/14 um einen Eingang (I1-I7 GND) als Impulszähler für einen Wasserzähler zu nutzen und den Tages,Monats und Jahresverbrauch zu loggen.
Ich habe einen Wasserzähler vor eine Brauchwasserwärmepumpe installiert und auf dem Zähler eine Sunx EX-26A Lichtschranke montiert um den 1 Liter Zeiger zu überwachen was auch ohne Probleme funktioniert.Wenn ich den Wasserhahn ganz öffne bekomme ich ca. alle 3-5 Sekunden ein Signal.Jetzt möchte ich noch das Signal über den Wired IO12/14 auswerten und den Tages,Monats und Jahresverbrauch in der CCU anzeigen.Wenn möglich sollten die Daten nach einem Neustart der CCU noch vorhanden sein.Schon einmal vielen Dank für die Hilfe.

Gruß Jens
LXCCU im Standby,Yahm auf Raspberry Pi3, 3xHomeduino, 1xHM-Sen-LI-O, 1xHM-WDS10-TH-O, 1xHM-PBI-4-FM, 4xHM-LC-Bl1-FM, 3xHM-LC-Sw1-FM, 2xHM-WDS40-TH-I,
2x HM-Sen-MDIR-O, 6xHMW-IO-12-Sw14-DR, 1xHM-RC-4-2, 1xHM-LC-Sw4-PCB, 1xHM-ES-PMSw1-Pl, 1xHM-WDS30-OT2-SM,
1xHM-LC-Bl1PBU-FM, 1xHM-WDS30-T-O, 1xHM-TC-IT-WM-W-EU, 1xHM-Sen-MDIR-WM55, 1xHM-LC-Bl1PBU-FM

Benutzeravatar
Wortmann30
Beiträge: 1353
Registriert: 21.03.2014, 21:39
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 11 Mal

Re: Eingang Wired IO12/14 als Impulszähler Wasserzähler Skri

Beitrag von Wortmann30 » 03.07.2017, 20:16

Hi
Habe genau sowas am laufen an einem meiner 14/12 wired Modulen:
Programm 1 Hochzählen:
Wasser 0.JPG

Code: Alles auswählen

var tmpW = dom.GetObject("Wasser");
tmpW.State(tmpW.Value() + 0.1)
Mit den Einheiten Musst du Spielen ich lese hier alle 100 Liter aus. Das gibt meine Wasser Uhr aus.

Programm 2
Wasser 1.JPG

Code: Alles auswählen

! Script Start 
!! alle Variablen in Objekte lesen
!! Die automatische Zählvariable
var tmpT1 = dom.GetObject("Wasser");
!! Der Zwischenspeicher
var tmpU1 = dom.GetObject("Wasser_save");
!! die Variable für Heute
var tmpV1 = dom.GetObject("Wasser_tag_counter");
!! die Variable für Heute
var tmpW1 = dom.GetObject("Wasser_60min_counter");

integer tmpX1 = tmpT1.State();

integer tmpY1 = tmpU1.State();

integer tmpZ1 = tmpV1.State();

!! Differenz wird berechnet

integer tmpS1 = 0;

!! alter Wert kleiner als aktueller Wert -> Nulldurchlauf

if (tmpX1<tmpY1) {

  tmpS1 = (65535-tmpY1)+tmpX1;

} else {

  tmpS1 = tmpX1-tmpY1;

}

!! Jetzt Wert zur Countervariable addieren

tmpZ1 = tmpZ1 + (tmpS1);

!! und alles wieder in Variablen speichern

!! dabei den aktuellen Stand in der _save Variable speichern

tmpU1.State(tmpX1);

!! den neuen Tages Counter speichern

tmpV1.State(tmpZ1);

!! den neuen 60Min Counter speichern

tmpW1.State(tmpS1);

!! We are done

!! Script Ende
Programm 3
Wasser 2.JPG

Code: Alles auswählen

dom.GetObject("Wasser_tag_counter").State(0);
Variablen erstellen:
Variablen.JPG
Und das ganze Per CUDxd Timer starten. ich lasse es alle 60 min laufen.

Ich hoffe das Hilft.
Grüsse


To be continued...

pruse
Beiträge: 223
Registriert: 03.02.2012, 22:41

Re: Eingang Wired IO12/14 als Impulszähler Wasserzähler Skri

Beitrag von pruse » 05.07.2017, 22:18

Hallo,

vielen Dank werde es am Wochenende testen wenn mir noch bei den Monats und Jahresverbrauch geholfen wir ist es Perfekt.

Gruß Jens
LXCCU im Standby,Yahm auf Raspberry Pi3, 3xHomeduino, 1xHM-Sen-LI-O, 1xHM-WDS10-TH-O, 1xHM-PBI-4-FM, 4xHM-LC-Bl1-FM, 3xHM-LC-Sw1-FM, 2xHM-WDS40-TH-I,
2x HM-Sen-MDIR-O, 6xHMW-IO-12-Sw14-DR, 1xHM-RC-4-2, 1xHM-LC-Sw4-PCB, 1xHM-ES-PMSw1-Pl, 1xHM-WDS30-OT2-SM,
1xHM-LC-Bl1PBU-FM, 1xHM-WDS30-T-O, 1xHM-TC-IT-WM-W-EU, 1xHM-Sen-MDIR-WM55, 1xHM-LC-Bl1PBU-FM

Benutzeravatar
Wortmann30
Beiträge: 1353
Registriert: 21.03.2014, 21:39
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 11 Mal

Re: Eingang Wired IO12/14 als Impulszähler Wasserzähler Skri

Beitrag von Wortmann30 » 06.07.2017, 12:11

Hi

einfach bei Programm Wasser 2 die Aktivierungszeit anpassen auf Monat und Jahr was immer.

Die Entsprechend Variablen erstellen wie jetzt ist
Wasser_tag_counter wird zusätzlich Wasser_monat_counter...
Wasser wird zu Wasser_monat
Wasser_save wird zu Wasser_save_monat
Wasser_60min_counter wird zuwasser_60min_counter_monat

Dann die Skripte im Programm Wasser 1 anpassen im Bezug auf die Variablen anpassen und mehrfach durch den gleichen Trigger laufen lassen also hier der Teil nur:

Code: Alles auswählen

! Script Start 
!! alle Variablen in Objekte lesen
!! Die automatische Zählvariable
var tmpT1 = dom.GetObject("Wasser_monat");
!! Der Zwischenspeicher
var tmpU1 = dom.GetObject("Wasser_save_monat");
!! die Variable für Heute
var tmpV1 = dom.GetObject("Wasser_monat_counter");
!! die Variable für Heute
var tmpW1 = dom.GetObject("Wasser_60min_counter_monat");
Natürlich wenn du verschiedene Anzeigen willst musst du auch alle variablen anlegen. Ich hoffe das ist Verständlich.

Mit Sicherheit gibt's nen eleganteren weg aber ich als Laie würde den beschreiten.
Grüsse


To be continued...

bibo09
Beiträge: 165
Registriert: 30.03.2015, 17:34

Re: Eingang Wired IO12/14 als Impulszähler Wasserzähler Skript

Beitrag von bibo09 » 07.08.2018, 19:32

Hi,
habe das Projekt auch so umgesetzt.
Ich habe einen Wasserzähler der liefert über einen Impulsausgang 1 Impuls je Liter.
Wie sieht da die Berechnung aus?


Gruß
bibo

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“