HMCCU 5.0 im SVN verfügbar

Begonnen von zap, 26 Oktober 2021, 19:01:00

Vorheriges Thema - Nächstes Thema

zap

Zitat von: tommitiger75 am 22 Dezember 2021, 20:26:52
@Zap hast du dir das schon mal anschauen können. Nach dem letzten Update bekomme ich immer noch diese Einträge im LogFile.

2021.12.22 19:36:13 2: HMCCU [d_ccu] Can't get device description for CUX2801001:1  HMCCU_DetectDevice:8025 HMCCU_SetDefaultSCDatapoints:8142 HMCCU_GetSCDatapoints:4654 HMCCU_UpdateParamsetReadings:4865

Danke für deine Arbeit und deine Unterstützung!

Ein paar Beiträge vorher hatte jemand das gleiche Problem mit CUxD und einer CCU2. Hast Du auch eine CCU2? Leider ist CUxD etwas langsam. Suche das HMCCURPCPROC Device für den CUxD und setze einen etwas höheren Timeout, z.B.

attr myCUxDRPC rpcReadTimeout 0.01

Der Default ist 0.005. Das ist auf einer CCU2 zu wenig.

Falls immer noch Fehlermeldungen kommen, weiter erhöhen (in kleinen Schritten, also z.B. auf 0.03).
Hinweis: Je höher der Wert, desto länger dauert der Start von FHEM, v.a. wenn man viele CUxD Devices hat.

ACHTUNG! Die RPC Server müssen neu gestartet werden, damit die Änderung greift!
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

zap

Zitat von: juemuc am 22 Dezember 2021, 22:18:56
Hallo zap,
ich habe dazu nun zwei Variablen in der CCU defininiert, die ich jeweils um 00:01 Uhr neu setzen und dann in FHEM per "at" um 00:02 Uhr auslese.

In der CCU sehen beide Werte identisch aus. In FHEM kommt aber nur der Wert der zweiten Variable (Version_neu) an. Es sieht so aus, als ob der Wert der ersten Variable (ersion_aktuell) aus der CCU in FHEM zum Problem wird.


Hast Du Beispiel-Inhalte für die Variablen?

Tipp: HMCCU kann inzwischen Systemvariablen im I/O Device automatisch regelmäßig auslesen. Siehe commandref zum Attribut ccuGetVars.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

zap

#332
@meier81, Ryker

Die CCU schickt leider keine Push-Nachricht an FHEM, wenn sich eine Variable ändert. Die Push Benachrichtigung läuft auf RPC Ebene. Diese Ebene kennt keine Systemvariablen (diese liegen eine Ebene höher in der ReGA Schicht).

Aber es gibt eine Möglichkeit ... wenn auch eine etwas komplizierte. Einmal eingerichtet, kann man damit beliebige Befehle von der CCU aus in FHEM ausführen, also auch z.B. mit "setreading" ein reading setzen.

Zunächst definiert man (sofern nicht vorhanden) ein Telnet Device in FHEM:

define telnetPort telnet 7072 global

Das "global" ist wichtig, sonst akzeptiert FHEM nur Verbindungen von localhost.

Dann muss man auf der CCU das Tool "netcat" bzw. "nc" installieren bzw. ablegen. Einfach mal mit Google suchen, das lässt sich finden. Ich habe es in /usr/bin auf der CCU abgelegt. Darauf achten, dass es ausgeführt werden kann:

chmod 755 /usr/bin/nc

Nun kann man auch schon per command shell Befehle an FHEM schicken. Das sieht z.B. so aus:

echo -e "setreading myCCU version 12345\nquit\n" | /usr/bin/nc fhem-ip-adresse 7072

Das "quit" sollte man immer anhängen.

Ich habe mir ein Shell-Script gebaut:


#!/bin/sh

FHEM_SERVER="192.168.100.20"
FHEM_PORT=7072

if [ $# -ne 1 ]; then
echo "Usage: fhem.sh Command"
exit 1
fi

echo -e "$1\nquit\n" | /usr/bin/nc $FHEM_SERVER $FHEM_PORT


Abspeichern z.B. unter /usr/local/bin/fhem.sh und Execute-Rechte mit chmod 755 setzen.

Dann:

fhem.sh "setreading myCCU version 12345"
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

juemuc

Zitat von: zap am 23 Dezember 2021, 15:11:34
Hast Du Beispiel-Inhalte für die Variablen?

Tipp: HMCCU kann inzwischen Systemvariablen im I/O Device automatisch regelmäßig auslesen. Siehe commandref zum Attribut ccuGetVars.

Hallo zap,

in beiden Variablen steht laut WebUI der CCU 3.61.7 Wenn ich in die erste Variable einen Wert "manuell" eintrage, passt alles. Es scheint so zu sein, dass das Skript hier ein unsichtbares Zeichen überträgt.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

juemuc

#334
Hallo zap,

ich habe nun weitere Tests in der CCU durchgeführt und die Daten dort mit WriteLine() ausgegeben. Hierbei ist mir aufgefallen, dass bei der zweiten Variablen nach dem Wert wohl nur ein CRLF stattfindet, da der Cursor in der nächsten Zeile steht. In der ersten Variablen ist noch eine zusätzlicher CRLF enthalten, sodass der Cursor zwei Zeilen tiefer steht.

Kann dies einen Einfluss auf die Übertragung haben?

Hallo zap. Das war das Problem. Ich konnte das zusätzliche CRLF in der CCU entfernen und schon passt es. Trotzdem wäre es gut, wenn Du prüfen könntest, warum im anderen Fall die Variable nicht mehr übertragen wird.

Viele Grüße
Jürgen 
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

zap

Also der wget Befehl gibt bei mir sowas aus:

homematic.com.setLatestVersion('3.61.7', 'HM-CCU3');

Wenn Du hingegen das ausführst:

wget -qO- 'https://update.homematic.com/firmware/download?cmd=js_check_version&version=1234&product=HM-CCU3&serial=xxxxx' | sed -r 's/^[^0-9]+([0-9\.]+).+$/\1/'

Kommt 3.61.7 raus.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Ryker

@Zap Danke für den Tipp mit Telnet. Da hatte ich ja gar nicht mehr dran gedacht, dass FHEM ja auch noch das Interface hat. Klar dann setze ich die Readings direkt aus der CCU.

Ryker

Ryker

Ich hab noch ein Problem. Hab mir nun für den System-Exec CUxD auf der CCU installiert, weil schöner funktioniert. Das HMCCU auf dem FHEM erkennt, dass da nun ein neues RPC-Device für CUxD da ist und er will das automatisch erstellen, aber das klappt nicht, weil er auf irgendeinen Timeout kommt. Muss man noch irgendwas spezeilles dafür irgendwo einstellen ?


Ryker

Ryker

Habs gefunden. Damit HMCCU den CUxD ansprechen kann muss in der CCU-Firewall "Ports offen" engestellt werden. Ich dachte immer, der bindet sich auch ins RPC-Interface ein, aber scheinbar wird der über dessen eigenen Port angesprochen.

Entweder ich habs wiedermal in der Doku überlesen oder es fehlt wirklich. Könnte man dann in dem Fall mit ins Wiki aufnehmen.

Ryker

zap

@Ryker mit dem nächsten Update kommen die Readings version, platform und ccutyp. Sie werden dann beim Start von FHEM gesetzt, allerdings nicht regelmäßig. Dafür gibt es dann ein internes Homematic Script, das per "set hmscript" ausgeführt werden kann.

Jede RPC Schnittstelle hat einen eigenen Port, also Bidcos, wired, hmip, cuxd usw usw
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

Ryker

Yep. Klappt nun alles.
Die Rückmeldung in Echtzeit läuft nun bei mir über netcat (nc ist standardmäßig auf der ccu3 über busybox mit dabei) innerhalb vom CUxD als TasterDevice. Das setzt dann direkt Readings in FHEM.
Das ist soo cool, da kann ich sogar noch anderes vereinfachen und mir auch noch ein paar Notifies im FHEM einsparen, die bisher Tastendrücke übern HM-RCV-50 abgefangen haben und dann Readings gesetzt haben.

Aber weil wir gerade bei dem Thema sind - weil das war glaube ich ein paar Posts zuvor untergegangen @zap: planst du beim HM(IP)_RCV_50 auch noch PRESS_LONG mit ins GUI einzubauen, also über datapoint geht es ja. Nur als controldatapoint und statedatapoint kann man es nicht so einfach setzen.

Ryker

juemuc

Zitat von: zap am 23 Dezember 2021, 17:53:11
Also der wget Befehl gibt bei mir sowas aus:

homematic.com.setLatestVersion('3.61.7', 'HM-CCU3');

Wenn Du hingegen das ausführst:

wget -qO- 'https://update.homematic.com/firmware/download?cmd=js_check_version&version=1234&product=HM-CCU3&serial=xxxxx' | sed -r 's/^[^0-9]+([0-9\.]+).+$/\1/'

Kommt 3.61.7 raus.

Hallo zap,
dieser Wert war ja nicht das Problem. Die Bereinigung erfolgt bei mir ein Schritt später mit V_n = V_n.StrValueByIndex("'",1);
Das Problem hatte die erste Variable mit string V_a;

system.Exec("grep VERSION= /VERSION | cut -d= -f2", &V_a);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Version_aktuell").State (V_a);
Hier ist ein zusätzliches CRLF enthalten. Dadurch wird die Variable nicht an FHEM übertragen.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Mave

Moin zusammen,

sorry, falls ich in diesem Thread falsch bin.

Ich habe gestern - nach sehr langer Zeit - mal wieder mein FHEM und meine RaspberryMatic upgedatet.

Im Großen und Ganzen läuft noch alles wie gewohnt.

Nur das Schalten der HomeMatic IP Steckdosen funktioniert nicht mehr.

Im Log finde ich diese Fehlermeldung: "HMCCUDEV: ku_Kaffeemaschine No control channel defined"

Vielen Dank für Eure Unterstützung.

Grüße Mave

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Mave

Servus Otto,

vielen Dank für Deine Rückmeldung.

Ich habe es durch Ergänzen der Kanalnummer in der Definition hinbekommen.

Vielen Dank.

Grüße Mave