CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
Baxxy
Beiträge: 10769
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 602 Mal
Danksagung erhalten: 2201 Mal

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von Baxxy » 11.02.2023, 00:01

Aktuell ist es unmöglich SET_STATES mittels Remote-Script z.B. über die Browser-Eingabezeile zu beschreiben.
(zumindest habe ich es bisher nicht geschafft)

Problemkind ist das "&" was ja ein spezielles Steuerzeichen ist.
Ich weiß jetzt nicht ob der Browser da schon hakelt oder die Script-Engine.

Betrifft jetzt nicht explizit das CUxD-Gerät sondern auch z.B. SysVars.

Das:

Code: Alles auswählen

http://192.168.1.27:8181/cuxd.exe?value=dom.GetObjectSET_STATES("CURRENT=50&VOLTAGE=240.5")
klappt mit der SysVar nicht und auch nicht mit dem CUxD-Gerät.

Hast da jemand ne Lösung (mittels Escaping vielleicht) oder könnte man beim CUxD-Gerät ein anderes Zeichen als "Verbinder" nutzen?

Siehe auch:
viewtopic.php?f=19&t=77895&p=756354#p756323

Benutzeravatar
uwe111
Beiträge: 4819
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von uwe111 » 11.02.2023, 01:06

Baxxy hat geschrieben:
11.02.2023, 00:01
Hast da jemand ne Lösung (mittels Escaping vielleicht) oder könnte man beim CUxD-Gerät ein anderes Zeichen als "Verbinder" nutzen?
Ich habe jetzt das Trennzeichen in ; geändert.
Teste bitte mal die CUxD-Testversion 2.10.2 hier: https://cuxd.de/download/
Das bedeutet aber, dass alle bisherigen Anwendungen das Zeichen von '&' auf ';' ändern müssten. :roll:

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Benutzeravatar
Baxxy
Beiträge: 10769
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 602 Mal
Danksagung erhalten: 2201 Mal

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von Baxxy » 11.02.2023, 09:19

Moin Uwe.

Das ; statt & macht die Sache bezüglich "Web-Send" wesentlich einfacher und funktioniert hier nach dem Test auch problemlos.

Ich persönlich würde das also ändern da man so einen weiteren funktionierenden Weg hat SET_STATES zu beschreiben.

Ja ist ein "Breaking Change" und daher unschön, mit entsprechendem Hinweis im Changelog aber leicht handhabbar.

I.d.R. hat man ja pro Gerät nur eine Stelle (Script, Web-Send) die man anpassen muss.

Deine Entscheidung. :wink:

regedit
Beiträge: 55
Registriert: 11.11.2018, 23:24
Hat sich bedankt: 6 Mal
Danksagung erhalten: 14 Mal

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von regedit » 11.02.2023, 16:10

Moin,
negative Werte funktionieren problemlos mit der Beta :)

Beim Websend schreibt er die Werte als Kette noch immer nicht.

Code: Alles auswählen

geht:
16:11:08.916 Script: performs "WebSend [192.168.123.20:8181] /hm.exe?value=dom.GetObject("CUxD.CUX2804001:1.SET_STATES").State("POWER=210.00")"

geht nicht:
16:06:09.156 Script: performs "WebSend [192.168.123.20:8181] /hm.exe?value=dom.GetObject("CUxD.CUX2804001:1.SET_STATES").State("ENERGY_COUNTER=3324073.00&POWER=183.00&CURRENT=800.00&VOLTAGE=227.77")"

Benutzeravatar
Baxxy
Beiträge: 10769
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 602 Mal
Danksagung erhalten: 2201 Mal

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von Baxxy » 11.02.2023, 16:17

regedit hat geschrieben:
11.02.2023, 16:10
Beim Websend schreibt er die Werte als Kette noch immer nicht.

Na weil du noch das "alte" Trennzeichen nutzt.

Für die Testversion nimmst du das ;

Code: Alles auswählen

("CUxD.CUX2804001:1.SET_STATES").State("ENERGY_COUNTER=3324073.00;POWER=183.00;CURRENT=800.00;VOLTAGE=227.77")

Benutzeravatar
uwe111
Beiträge: 4819
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von uwe111 » 11.02.2023, 22:58

Hallo Baxxy,
Baxxy hat geschrieben:
11.02.2023, 09:19
Das ; statt & macht die Sache bezüglich "Web-Send" wesentlich einfacher und funktioniert hier nach dem Test auch problemlos.
Nachdem ich mir das ganze nochmal überlegt habe, sind mit dem heutigen Update beide Varianten möglich. Aber nicht gemischt!
Also wenn '&' im String vorhanden ist, dann wird '&' als Trennzeichen verwendet, sonst ';'.

Ausserdem kann man über den zusätzlichen Geräteparameter MAX_ENERGY_COUNTER den Maximalwert setzen, damit die Berechnung des CCU-Zählers per HM-Script beim Umlauf des Wertes passt.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Silverstar
Beiträge: 367
Registriert: 11.02.2020, 12:14
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 94 Mal
Danksagung erhalten: 68 Mal

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von Silverstar » 15.02.2023, 08:33

Kann man das & in diesen Fällen nicht URL enkodieren? -> %26

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von jp112sdl » 15.02.2023, 08:57

Silverstar hat geschrieben:
15.02.2023, 08:33
Kann man das & in diesen Fällen nicht URL enkodieren? -> %26
Nein, geht nicht. Es liegt nicht am Encoding.

Sobald man der ReGa ein & unterjubeln will, kommen Error-Meldungen in der messages.log.

Code: Alles auswählen

 curl "http://localhost:8181/a.exe?val=dom.GetObject('SV_Text').Value('A%26B')"
führt zu

Code: Alles auswählen

 homematic-raspi local0.err ReGaHss: ERROR: ScriptRuntimeError: val=dom.GetObject('SV_Text').Value('A&B') [ExecError():iseESPexec.cpp:12882]

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Cord_112
Beiträge: 5
Registriert: 17.02.2023, 21:49
System: CCU

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von Cord_112 » 17.02.2023, 22:19

Hallo zusammen,

ich bin neu hier, wie ihr sicher seht.

Ich weiß nicht weiter mit der Einbindung von Shellys in die CCU3.

Ich habe es geschafft, die Shelly Werte mittels Node Red in Systemvariablen zu schreiben.
Es funktioniert auch, die Shellys zu schalten und auch die Rückmeldungen in dem CUxD-Gerät (2804xxx) auf der CCU anzuzeigen.
Ich kann auch sowohl über die URL als auch über ein Skript FESTE Werte in das Gerät schreiben.
Nach etlichen Stunden lesen und probieren bin ich jetzt aber mit meinem Latein am Ende und bitte um Hilfe.

Mit dieser Zeile kann ich erfolgreich feste Werte in das Gerät schreiben:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2804001:1.SET_STATES").State("VOLTAGE=123&CURRENT=81&POWER=21&FREQUENCY=37");
Egal welche Syntax ich verwende, ich bekomme die Messwerte in den Systemvariablen nicht für die festen Beispielwerte eingesetzt. Ich möchte meine unzähligen Varianten gar nicht aufschreiben.
Ich möchte die Systemvariablen auf die Parameter des Gerätes schreiben.

Code: Alles auswählen

var sv_voltage= dom.GetObject("sv_PV_HM800_U");
var sv_current= dom.GetObject("sv_PV_HM800_I");
var sv_power= dom.GetObject("sv_PV_HM800_P");
var sv_energy= dom.GetObject("sv_PV_HM800_Q");
var sv_temp= dom.GetObject("sv_PV_HM800_T");

dom.GetObject("CUxD.CUX2804001:1.SET_STATES").State("VOLTAGE=123&CURRENT=81&POWER=21&FREQUENCY=37");
Es ist sicher einfach zu lösen, ich habe es bisher aber nirgends gefunden.
Hilfe, Bitte.

Cord
CCU3, Shellys, Tesla Powerwall, Wärmepumpe, ETA-Pelletheizung, Lastmanagement; ab 2024 Tibber

Benutzeravatar
Baxxy
Beiträge: 10769
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 602 Mal
Danksagung erhalten: 2201 Mal

Re: CUxD Schalter mit Leistungsmessung (HM-ES-PMSw1-Pl)

Beitrag von Baxxy » 17.02.2023, 23:03

Welchen Weg deine Daten aus dem Shelly in die CCU3 nehmen habe ich nicht ganz verstanden...
Der Rest ist Tipp-Fleiß (hoffentlich habe ich mich nicht vertippt)... :wink:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2804001:1.SET_STATES").State("ENERGY_COUNTER="# sv_energy.Value() #"&POWER="# sv_power.Value() #"&CURRENT="# sv_current.Value() #"&VOLTAGE="# sv_voltage.Value() #"&FREQUENCY="# sv_temp.Value());
Ne Frequenz geben die Shelly's m.W nicht aus, daher habe ich deine "sv_temp" als FREQUENCY reingenommen.
Oder du lässt das weg.

Code: Alles auswählen

dom.GetObject("CUxD.CUX2804001:1.SET_STATES").State("ENERGY_COUNTER="# sv_energy.Value() #"&POWER="# sv_power.Value() #"&CURRENT="# sv_current.Value() #"&VOLTAGE="# sv_voltage.Value());

Antworten

Zurück zu „CUxD“