Neues (altes) Modul: Homematic CCU mit XML-RPC an FHEM, HMRPC reborn

Begonnen von henryk, 14 September 2015, 00:36:49

Vorheriges Thema - Nächstes Thema

Ralli

Hallo zusammen,

anbei nun eine Version 0.6, die auch mit der RPC-XML API für HmIP zurecht kommt. Folgende Änderungen und Ergänzungen wurden vorgenommen:


  • Anpassungen für die Kommunikation mit RPC-XML API für HmIP auf Port 2010
  • Spezieller Befehl dim-with-timer für Dimmer; Beispiel:
    set DIMMER_CHANNEL dim-with-timer ON_TIME 30.0 RAMP_TIME 5.0 LEVEL 50
    ... setzt einen Dimmer auf 50% für 30 Sekunden und nimmt als Rampenzeit 5 Sekunden; diese Reihenfolge ist einzuhalten!
  • Es können nun Paramsets mit mehr als einem Wertepaar abgesetzt werden, sowohl für MASTER als auch für VALUES; Beispiel:
    set MEIN_DEVICE VALUES ON_TIME 10.0 STATE true
    ... schaltet bspw. eine Steckdose für 10 Sekunden ein
  • Die in fhem definierten Geräte bekommen nun mehr Informationen in den Internals, sobald das erste mal ein Event für ein solches Gerät eingegangen ist
  • Auf der definierten CCU könnnen unmittelbar die Befehle updateBidcosInterfaces,getServiceMessages und rssiInfo abgesetzt werden.
    1) set CCU updateBidcosInterfaces
        ... versorgt alle der CCU zugeordneten, aber in fhem definierten HM-CFG-LAN und LAN-Gateways mit zusätzlichen Informationen insbesondere mit den RSSI-Werten der Devices, mit denen die Schnittstellen Kontakt hatten
    2) set CCU rssiInfo
        ... gibt im Log eine Liste mit aktuellen RSSI-Werten aus
    3) set CCU getServiceMessages
        ... protokolliert im Log die aktuellen Servicemeldungen der CCU
  • Da die CCU keine Möglichkeit bietet, über die RPC-XML API Systemvariablen zu lesen oder zu ändern oder Programme zu starten, wurde die Möglichkeit über einen Zugriff auf die HomeMatic-Script API eingebaut. Es können unmittelbar auf die CCU daher die Befehle run,setvar und getvar abgesetzt werden (kleine Anleihe aus dem Modul HMCCU ;-)).
    1) set CCU run MEINPROGRAMM
        ... lässt das Programm MEINPROGRAMM auf der CCU ausführen
    2) set CCU setVar VARIABLE WERT
        ... setzt die Variable VARIABLE auf der CCU mit dem Wert WERT
    3) set CCU getVar VARIABLE
        ... liefert den Wert der Variable VARIABLE zurück
  • Auf einem Device können die Spezialbefehle getConfig, statusRequest und rssiInfo abgesetzt werden.
    1) set MEINDEVICE statusRequest
        ... liest das Paramset VALUES des definierten Devices (Channels) komplett aus und setzt es in Readings um
        Außerdem wird aus dem Paramset MASTER vom Master-Channel (:0) der Datenpunkt UNREACH ausgelesen und in den Readings gesetzt
    2) set MEINDEVICE getConfig
        ... liest das Paramset VALUES des Master-Channels (:0) und setzt es in Readings um
        ... liest das Paramset MASTER des definierten Devices (Channels) und setzt es in Readings um
        ... liest das Paramset LINK des definierten Devices (Channels) und setzt es in Readings um
        ... führt ein getLinks auf dem definierten Device (Channel) aus und setzt es in Readings um
    3) set MEINDEVICE rssiInfo
        ... fragt die RSSI-Informationen der CCU ab und trägt die für das Device in Frage kommenden in den dortigen Readings ein

Für eine CCU mit "normalen" Homematic-Komponenten ist wie gehabt die CCU mit

define CCU2 IP_MEINER_CCU 2001

zu definieren.

Für HmIP-Komponenten ist zusätzlich noch

define HMIP IP_MEINER_CCU 2010

zu definieren.

Bei der Definition von Devices ist dann darauf zu achten, dass das Attribut IODev auf die passende Schnittstelle verweist - also normale Homematic-Devices hier im Beispiel auf CCU2, HmIP-Devices auf HMIP.

Die weitere Definition einer weiteren Schnittstelle für HMW auf Port 2000 ist davon unberührt.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Raymund

Hallo Ralli,

die Version 0.6 ist ein echter Fortschritt und ersetzt erfolgreich meine "Eigenentwicklung".

SetVar müllt allerdings ziemlich das Logfile zu. Ich kann das Modul gerne gelegentlich auf Log3 umstellen oder möchtest Du das selbst machen in einer eventuellen Weiterentwicklung?

Danke jedenfalls und Grüße
Raymund

Ralli

Hallo Raymund,

freut mich.

Was genau meinst Du mit "SetVar müllt ziemlich das Logfile zu" ? Standard ist ja Loglevel 3 und wenn Du viel dieses Methode nutzt, dann ist jedes mal ein Eintrag im Log. Da wäre in Zeile 365 lediglich


Log 3,"HMRPC getVar URL=$url";


durch


Log 4,"HMRPC getVar URL=$url";


zu ersetzen. Oder was meinst Du?
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Raymund

Hallo Ralli,

ja genau, das meine ich. Habe es auch schon auf 4 gesetzt, wie Du schreibst. Aber ich denke, es wäre sinnvoll, solche häufigen Info-Ausgaben generell auf 4 zu setzen um dann per verbose im HMRPC-Objekt einstellen zu können, ob man sie sehen will oder nicht. So ist nach meinem Verständnis Log3 ja gedacht!? Natürlich nur, wenn Du das Modul noch weiter entwickeln willst. Sonst wäre es ja mit der einmaligen Änderung (3->4) auch erledigt.

Ich habe eine ganze Reihe von HM-Teilen und das klappt so wunderbar und zuverlässig mit FHEM. Ich hatte quick and dirty kleine Korrekturen in das alte Modul eingebaut, speziell für die Rollladensteuerung. Aber jetzt mit der 0.6 geht das auch und es gibt sogar mehr Internals. Was will man(n) mehr ;-)

Grüße
Raymund

Ralli

Hallo zusammen,

anbei nun eine Version 0.7, die speziell im Modul HMDEV weiter entwickelt wurde. Bspw. wurde ein grundsätzliches State-Handling eingebaut. Das Modul HMRPC wurde modifiziert, so dass der Status der RPC-XML-Schnittstelle nun als Reading zur Verfügung steht; damit sind Event-gesteuerte Maßnahmen möglich. Folgende Änderungen und Ergänzungen wurden vorgenommen:


  • Befehl on-for-timer für Typ SWITCH eingebaut; alternativ "set MEIN_SWITCH on 30" schaltet für 30 Sekunden ein.
  • Befehl "set MEIN_DIMMER 50 30 [10]" schaltet einen Dimmer für 30 Sekunden auf 50% mit einer Rampe für 10 Sekunden
  • In der Web-Oberfläche werden nun die Standard-Befehle per Dropdown angeboten.
  • In der Web-Oberfläche werden nun für Dimmer, Rolladenaktoren und Thermostate über das automatisch gesetzte Attribut widgetOverride Slider angeboten, wenn das Attribut noch nicht definiert wurde.
  • Bei der Definition eines HMDEV-Devices kann nun optional noch der Type (hmdevtype) mit angegeben werden.
  • Für manche Devices werden nun anhand des Internals hmdevtype (auf Grund von der o.a. Definition oder nachdem die Info von der CCU eingeht) die Attribute event-on-change-reading, event-on-update-reading und webCmd automatisch gesetzt, wenn diese Attribute noch nicht definiert wurden.
  • Es wurde das Attribut stateReading eingeführt. Wird dieses mit dem Namen eines Datenpunktes (Reading) gesetzt, wird dessen Wert in das Reading (!) state übernommen und dafür ein Trigger ausgelöst. Mit dem Standard-Attribut stateFormat kann nach wie vor das Internal (!) STATE modifiziert werden.
  • Es wurde ein grundsätzliches State-Handling für Devices vom Typ Thermostat, Dimmer, Switch, Rolladenaktor, Wetter, LED-Status-Display (KEY), Fenstersensoren und Bewegungsmelder eingeführt. Hier wird nun automatisch das Readings state - und damit auch das Internal STATE - gesetzt, wenn stateFormat nicht definiert ist und kein userReading für state existiert.
  • Im Rahmen des o.a. State-Handlings werden manche Datenpunkte/Readings nur noch ohne Trigger geupdatet - es sei denn, man setzt das neue Attribut event-filter-for-state-off auf 1.
  • Dieses neue Attribut wird automatisch für Devices vom Typ Wetter, Thermostat und Mess-Steckdose gesetzt, da die hier generierten Events meistens zum Logging für Diagramme genutzt werden.
  • Die Datenpunkte/Readings LOWBAT, BATTERY_STATE und BatteryVoltage werden nun ausgewertet und im Reading battery "übersetzt".
  • Der/das Datenpunkt/Reading FAULT_REPORTING wird in das Reading deviceErr "übersetzt".
  • Manche Log-Aufrufe wurden auf Log-Level 4 gesetzt.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Ralli

Kleine Änderung im Modul HMRPC:

- Beim statusRequest werden keine unmittelbaren Updates der Readings mehr durchgeführt, sondern stattdessen werden die abgefragten Werte durch das Modul HMDEV geparsed (state-handling).
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

mveltrup

Hallo zusammen,

ich hab das HMRPC Modul aus dem Git Repo installiert und läuft prima.
Jetzt wollte ich die neuste Version installieren, und hab die beiden .pm Dateien ins FHEM reinkopiert,
jedoch sagt fhem dann:
2016.05.08 11:49:02 1: configfile: Cannot load module HMRPC
HMDEV_MEQ0058214: unknown IODev specified
...

Meine Config:
define hmrf HMRPC 192.168.2.11 2001

Mach ich da was falsch?

Ralli

Das Modul HMDEV wird offensichtlich korrekt geladen, aber nicht das Modul HMRPC - und darum finden die HMDEVICES das IODev nicht. Warum das Modul HMRPC nicht geladen wird, ist aber aus Deinem Post nicht erkennbar, hier fehlen die wichtigen Infos aus dem Log.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

mveltrup

Ah im git repo heisst die 60_hmdev.pm  61_hmdev.pm und bleibt im FHEM verzeichnis.
Muss ich die vielleicht löschen?

hofer

Ich bekomme folgende Fehlermeldung.

2016.05.10 21:52:43 1: reload: Error:Modul 60_HMRPC deactivated:
Type of arg 1 to keys must be hash or array (not private variable) at ./FHEM/60_HMRPC.pm line 396, near "$ret)

Was mache ich falsch?


Ralli

Kann ich nicht nachvollziehen, die Zeilennummer passt auch nicht mit der aktuellen Version zusammen.

Bitte immer beide Module austauschen. Und kein reload sondern ein shutdown restart machen!
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

mveltrup

hm da fehlt ihm die switch.pm



2016.05.20 21:59:06 1: reload: Error:Modul 60_HMDEV deactivated:
Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/60_HMDEV.pm line 19, <$fh> line 466.
BEGIN failed--compilation aborted at ./FHEM/60_HMDEV.pm line 19, <$fh> line 466.

2016.05.20 21:59:06 0: Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/60_HMDEV.pm line 19, <$fh> line 466.
BEGIN failed--compilation aborted at ./FHEM/60_HMDEV.pm line 19, <$fh> line 466.

2016.05.20 21:59:07 1: Including ./log/fhem.save
2016.05.20 21:59:08 1: configfile: Cannot load module HMRPC

Ralli

Was fehlt, muss man rein machen :-).

apt-get install libswitch-perl

oder

cpan -i Switch
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

mveltrup

Danke.
Dachte switch.pm wäre zur steuerung der HM Switches für das Modul.
Jetzt gibts nur noch ein warning beim start:

2016.05.21 14:31:13 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/60_HMDEV.pm line 227.

Jetzt werd ich erstmal testen. Danke.