Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 06.04.2021, 12:46

Hallo Nils,

dann hat sich meine Vermutung mit dem Abbruch bestätigt.

Aber im Log wird immer der komplette Anfang des Scriptes bis 1000 Zeichen oder so ausgegeben und leider nicht die Stelle, an der der Fehler wirklich auftrat.

Ich vermute, die Ursache liegt an dieser Stelle:

Code: Alles auswählen

      ! * Wenn es der Wasser- oder Gartewasserzähler ist, dann berechnen wir noch den Tagesverbrauch
      ! * in l
      if (( type == "Wasser") || ( type == "GartenWasser"))
      {
        oVerbrauch_heute_l.State(oVerbrauch_heute.Value() * vFaktor_l);
      }



Weil irgendwas mit der Variable "GartenWasser Verbrauch heute l" nicht stimmt und daher der Wert nicht geschrieben werden kann.

Kommentiere die 4 Zeilen mal aus, um zu sehen, ob "GartenWasser Aktualisierung" nun gesetzt wird.

Viele Grüße,
Hütte

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Xel66 » 06.04.2021, 12:55

Ich kann nur das Gleiche mit anderen Worten schreiben. Wenn das Programm gestartet wird, ist es möglich, den Trigger über $src$ einzulesen und dort eben von diesem abhängige Aktionen auszuführen. Wenn also ein Zählerstand aktualisiert wurde und das als Trigger hinterlegt wurde, kann das Script eben feststellen, wer das war und den Namen auslesen und folglich diesen auch verwenden (u.a. zur Identifizierung der zu beschreibenden Systemvariablen). Wird das Programm nun manuell oder per Zeitmodul gestartet, gibt es erstens eben keinerlei auszuwertenden Namen, der mit vorhandenen Systemvariable u.ä. in Verbindung gebracht werden kann. Und wenn zweitens z.B. eine Systemvariable oder ein Gerät nicht exakt so bezeichnet ist, wie es das Script erwartet, hagelt es eben auch Fehler.

Du hast also zwei Baustellen. Das Script/Programm nur über die auszuwertenden Zähler triggern und die Benennung prüfen (incl. unsichtbarer Leerzeichen). Das Script als solches muss ja laufen, sonst würde es bei den anderen Zählern auch nicht funktionieren.

Gruß Xel66
Zuletzt geändert von Xel66 am 06.04.2021, 12:58, insgesamt 1-mal geändert.
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 06.04.2021, 12:57

Xel66 hat geschrieben:
06.04.2021, 12:34
Das Scipt liest $src$ aus. Das ist der Trigger, der das Programm angestoßen hat. Wenn Du wie oben dargstellt, das Programm manuell oder über das Zeitmodul startest, dann hat dieser Wert den falschen Inhalt und es kann nicht ordnungsgemäß abgearbeitet werden, weil der Zähler, dessen Werte aktuell behandelt werden sollen, nicht ermittelt werden kann. Ansonsten braucht das Script exakte Geräte- bzw. Variablenbezeichungen incl. enthaltener Leerzeichen (auch am Ende!).

Gruß Xel66
Die Stelle passt schon, da danach dann geprüft wird, ob es sich um einen Datenpunkt handelt. Falls ja, dann wird der nächste Teil ausgeführt und ansonsten wird davon ausgegangen, dass das Script durch das Zeitmodul getriggert wird. Und bei drei weiteren Zählern läuft das Script ja auch einwandfrei durch. Nur eben nicht beim 4. Zähler.

Gluehwurm
Beiträge: 12432
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Gluehwurm » 06.04.2021, 13:14

Habe das nicht im Einzelnen geprüft, "übersetze" nur das von Xel geschriebene :wink:
NilsG hat geschrieben:
06.04.2021, 12:43
Hmm, übersetz das mal bitte für Laien ;)
1. Das Programm darf wohl nicht

- per Ausführen (manuell) oder
- per Zeitmodul Siehe Hinweis von Hütte, habe keine Ahnung :cry:

gestartet werden.


2. Geräte- bzw. Variablenbezeichungen müssen in der CCU und im erstellten Skript GENAU gleich sein. Um es anhand Deines Namens zu verdeutlichen ...

"Nils" entspricht nicht "Ni ls", " Nils" oder "Nils " (jeweils zwei Leerzeichen für die deutlichere Darstellung).

Es gibt innerhalb der Skriptfunktion keinerlei Rateprozess sondern es wird das genommen, was dort steht. Das ist dann entweder da oder eben nicht.

Gruß
Bruno

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Xel66 » 06.04.2021, 13:26

Ich habe das ganze Script (von der ersten Seite) nur mal in einen Editor eingefügt. Und die obere if-Abfrage (if counter) öffnet die Klammer und der Block zieht sich runter bis zu letzten schließenden Klammer. Wenn counter leer ist (kein $src$), dann läuft das Script m.E. nicht.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 06.04.2021, 13:31

Deshalb kann man es auch nicht über Script Testen ausführen, sondern nur innerhalb eines Programmes, dass entweder die Zähler oder ein Zeitmodul als Trigger benutzt.. Auf der ersten Seite des Beitrages wird auf das Script von Jens verwiesen und dort wird genauso vorgegangen.

Und meine Vermutung ist, dass eine Variable falsch ist. Entweder ist irgendwo ein Leerzeichen zuviel, wie Bruno schon schrieb, oder statt einem "l" für Liter hat sie eine "1" am Ende.

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Xel66 » 06.04.2021, 14:55

Mit "Script testen" kann man es schon laufen lassen, wenn man das Feld für $src$ mit der korrekten iseID füllt. Diese bekommt man z.B. über devconfig raus. Aber auf einen falschen geschriebenen Namen irgendeiner Variablen (mein Tip) wurde nun ja schon oft genug hingewiesen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 06.04.2021, 16:16

OK, gebe zu, den Trick mit $src$ und der iseID, den kannte ich bisher nocht nicht. Danke dafür.

Benutzeravatar
NilsG
Beiträge: 1685
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 381 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von NilsG » 07.04.2021, 14:36

Moin zusammen!

So, ich habe nochmal einiges probiert. Um es vorweg zu nehmen: OHNE ERFOLG

1.) Zähler umbenannt; Variablen umbenannt
ohne Erfolg
Wasser (im Garten) laufen lassen. Richtige Werte kamen in den Variablen an
Ausser eben "Aktualisierung" und "Liter heute"
2.) besagte Stelle mit "!" ausgeklammert
ohne Erfolg
Wasser (im Garten) laufen lassen. FALSCHE Werte kamen in den Variablen an!!! (Wasseruhr zeigt richtig an)

Ich checke es nicht, sorry!
Was zum Teufel :evil: läuft da in dem Script schief???
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Benutzeravatar
NilsG
Beiträge: 1685
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 381 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von NilsG » 07.04.2021, 15:01

Mir sind im Original-Script drei verschieden Klammersetzungen aufgefallen:

a)
if ( type == ( "Gas" ) )
b)
if ( type == "Strom" )
und

c)
if ( (type == "Wasser") || (type == "Garten"))

Ist das alles korrekt?!?
Speziell a) bzw b)
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“