Anleitung zum auslesen von Homematic IP (AccessPoint) mit FHEM

Begonnen von RHanspach, 21 Januar 2018, 19:56:51

Vorheriges Thema - Nächstes Thema

RHanspach

Hallo,

ich möchte euch auf diesem Weg mitteilen wie es mir gelungen ist die HomematicIP Komponenten direkt mit FHEM auszulesen.
Ihr benötigt lediglich den Python wrapper für die HomematicIP REST API (von coreGreenberet [github]) ich hoffe das ich das hier teilen darf.

Nach der Einrichtung der HomematicIP-REST-API habe ich die Daten mittels Python ausgelesen und den Rückgabewert passend aufbereitet.

"devicevalue.py"

# coding=utf-8
import os.path
from operator import attrgetter

import config
import homematicip
from homematicip.home import Home

home = Home()
home.init(config.ACCESS_POINT)
home.set_auth_token(config.AUTH_TOKEN)

home.get_current_state()

sortedDevices = sorted(home.devices, key=attrgetter('deviceType', 'label'))

def show_shutter(device):
        print (u"{}_{}:\nBatterie-{}_{}:".format(d.label,d.windowState, d.label, d.lowBat))

def show_heatingthermostat(device):
        print (u"{}_{}:\nBatterie-{}_{}:".format(d.label,(d.valvePosition*100), d.label, d.lowBat ))

def show_wallmountedthermostatpro(device):
        print (u"Temperatur-{}_{}:\nLuftfeuchte-{}_{}:\nBatterie-{}_{}:".format(d.label,d.actualTemperature,d.label,d.humidity, d.label, d.lowBat))

for d in sortedDevices:
        if isinstance(d, homematicip.device.ShutterContact):
                show_shutter(d)
        elif isinstance(d, homematicip.device.HeatingThermostat):
                show_heatingthermostat(d)
        elif isinstance(d, homematicip.device.WallMountedThermostatPro) or isinstance(d, homematicip.device.TemperatureHumiditySensorDisplay):
                show_wallmountedthermostatpro(d)


In der FHEM.cfg habe ich dann einen Dummy angelegt für das Device und ein Notify um den Rückgabewert in einzelne Readings aufzuteilen.

FHEM.cfg

define HomematicIP dummy
define HomematicIPAnDummy at +*00:00:05 { my $reading =homematicip();;}
define n_HomematicIP notify HomematicIP {readingSplit($NAME,$EVENT)}


Um das Python-Script auszuführen und die Reading aufzuteilen habe ich der 99_myUtils.pm noch Subroutinen erstellt.

99_myUtils.pm

#---------------------------------------
# Homematic-Funktion
#---------------------------------------
sub homematicip(){
  my $returnCode = qx(python3 /home/pi/homematicip-rest-api/devicevalues.py);
  fhem("setReading HomematicIP HomematicIP $returnCode");
}

#---------------------------------------
# Reading Split-Funktion @_;
#---------------------------------------
sub readingSplit($$) {
   my ($name,$event) = @_;
   my @paare = split(/:/,$event);
   foreach my $p (@paare){
      my ($r,$v) = split(/_/,$p);
      fhem("setreading $name $r $v");
   }}


Ich hoffe das euch das hilft bis jetzt lese ich die Werte nur man kann aber auch Werte schreiben mithilfe der HomematicIP-REST-API

Thorsten Pferdekaemper

Hi,
ich hatte mich etwas gewundert, warum das plötzlich so einfach gehen sollte, die HM-IP Teile direkt anzusprechen. Nach ein klein wenig Suche habe ich jetzt den Eindruck, dass das nur mit dem "Access Point" geht, was auch bedeutet, dass es immer über die Cloud geht. ...oder?
In dem Fall wäre mir die CCU2 lieber, da das meines Wissens nach auch lokal funktioniert.
Gruß,
   Thorsten
FUIP

RHanspach

Ja richtig also die Daten holt man sich von der Cloud und nicht direkt von den einzelnen Geräten.

zap

Ich überlege gerade, ob es Sinn macht, HMCCU so zu erweitern, dass es neben einer CCU2 auch den Accesspoint unterstützt.

Das Cloud-Thema halte ich eher für einen Nachteil, vor allem wenn man sich an das EQ-3 Cloud-Disaster Ende letzten Jahres erinnert. Da ging gar nichts mehr. Da habe ich lieber eine CCU2 (egal ob jetzt als "Box" oder auf einem Raspi). Das funktioniert auch ohne Internet.

Ich notiere mir das mal für "zukünftige Erweiterungen". Ich glaube, die meisten HMIP Nutzer haben eine CCU2.

2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

subseven

#4
Danke für deine Umsetzung, die API konnte ich soweit anbinden deine Notifys und Dummys habe ich auch übernommen, sowie die Subrutine in der 99_myUtils.

Ich habe nur das Problem, dass bei mir Teile der Namen mit im Reading stehen.
So sehen meine Werte auf der API nach deiner devicevalues.py aus:

Heizkörperthermostat Kinderzimmmer _34.0:
Batterie-Heizkörperthermostat Kinderzimmmer _False:
Temperatur-Wanthermostat Wohnzimmer _22.3:
Luftfeucht-Wanthermostat Wohnzimmer _48:
usw.


Wie muss ich deine Subrutine anpassen, damit das zerlegen in einzelne Reading passend funktioniert?

DIK

Zitat von: zap am 22 Januar 2018, 18:26:32
Ich überlege gerade, ob es Sinn macht, HMCCU so zu erweitern, dass es neben einer CCU2 auch den Accesspoint unterstützt.

Das Cloud-Thema halte ich eher für einen Nachteil, vor allem wenn man sich an das EQ-3 Cloud-Disaster Ende letzten Jahres erinnert. Da ging gar nichts mehr. Da habe ich lieber eine CCU2 (egal ob jetzt als "Box" oder auf einem Raspi). Das funktioniert auch ohne Internet.

Ich notiere mir das mal für "zukünftige Erweiterungen". ....

Gibt es da Neuigkeiten?

zap

Nein. Bin momentan mit der HMCCU Version 4.4 beschäftigt. Das ist sehr aufwändig.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

DIK

Okay, klar, das kann ich verstehen - gerne würde ich helfen, aber sorry, das ist leider weit über meinen Fähigkeiten.
Aber wenn es irgendwann mit dem Accesspoint klappen sollte, ich wäre bestimmt nicht der einzige Begeisterte.
Gruß und vielen Dank

ersthelfer

#8
Hallo,

kann mir bitte jemand erklären, wie ich die "Homematic IP Rest API" installieren muss?

Ich bin noch Anfänger und komme mit der Installation nicht klar.
In der Anleitung steht
Just run pip3 install -U homematicip in the command line to get the package.

Das sagt mir aber leider nix. Wenn ich mich per SSH einlogge erhalte ich auf:

pi@raspberrypi:~ $ pip3 install -U homematicip
-bash: pip3: Kommando nicht gefunden.


pi@raspberrypi:~ $ install -U homematicip
install: Ungültige Option -- U
,,install --help" liefert weitere Informationen.


Linux und ich sind nicht wirklich Freunde ;)

Hat jemand einen Tipp für mich?
Vielen Dank...


[Edit]: Ich habe ein Homematic IP System mit einem Access Point und würde die Geräte gern in FHEM sehen (steuern wäre nicht ganz so wichtig). Ich habe keine CCU und möchte auch nicht unbedingt ein RaspberryMatic benutzen da FHEM an sich schon alles tut, was ich will.
Wäre nur schön die Daten von den Homematic IP Geräten auch in FHEM zu haben. Oder gibt es da mittlerweile einen besseren Weg?

MadMax-FHEM

Zitat
-bash: pip3: Kommando nicht gefunden.

naja da hast du wohl eben pip3 nicht installiert...

Und das hat nix mit Linux zu tun ;)

Wenn du auf Windows Word verwenden willst, muss es auch installiert sein ;)

https://www.raspberrypi.org/documentation/linux/software/python.md

Wenn du ein Raspbian OS LITE hast, musst du pip erst installieren...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

#10
@ersthelfer: Brauchst du den AP wirklich als AP?

Zum Hintergrund der Frage:
Du scheinst Einsteiger zu sein. Diese Lösung hier würde ich als experimentell bezeichnen, was sich nicht gut mit dem "Einsteiger" verträgt, zumal dir wohl auch diverse Linux-Basics fehlen, und auch die Implementierung in "Senderichtung" hier nur angedeutet ist, also auch entsprechende Einarbeitung verlangt.
Afaik kann man den AP auch "umflashen" und als IO für eine (virtuelle) CCU (für die Module HMCCU.*) verwenden. Eventuell ist das der einfachere Weg... (gibt eine aktuelle Diskussion dazu, ein großer Discounter hatte da jüngst was dazu im Angebot, bitte da bei Interesse weitersuchen)
Kommt aber ggf. auch darauf an, was du schon über den AP am laufen hast. Wenn es wenig ist, müßten eventuell die Devices abgelernt werden usw.. Viel mehr kann ich zu dem ganzen aber nicht beitragen, wollte nur den Hinweis loswerden.

(EDIT: Das mit dem Umflashen bezieht sich insbesondere auf den Hinweis von Jamo in diesem Beitrag: https://forum.fhem.de/index.php/topic,105016.msg1095684.html#msg1095684. Vermutlich braucht man nur die CCU-Software (z.B. virtualisiert auf einem Pi), um diesen Anlernvorgang ggf. anstoßen zu können, also keine weitere Hardware. Ist aber nur eine Vermutung...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ersthelfer

Zitat von: Beta-User am 05 November 2020, 09:48:11
@ersthelfer: Brauchst du den AP wirklich als AP? .....
...(... ein großer Discounter hatte da jüngst was dazu im Angebot...)

Genau das versuche ich ja gerade herauszufinden.
Ich habe beim erwähnten Discounter ;) ein Set mit AP, Thermostat und Türkontakt gekauft und möchte die jetzt in meinem FHEM benutzen.

Bei mir läuft FHEM auf einem PI. Meine meisten Geräte sprechen MQTT und auch Alexa spielt mit meinem FHEM.
Des Weiteren habe ich einem MAX-Cube über den Thermostate und Türkontakte laufen und alles ist gut.

In der letzten Zeit sterben mir aber immer mehr MAX Komponenten weg und EQ3 hat diese Linie ja eingestellt. Deshalb gibt es da wohl auf lange Sicht Beschaffungsprobleme.

Also dachte ich mir, gut CUL-Stick in den PI und auf Homematic IP umstellen. Wenn ich das jedoch richtig verstanden habe, kann der CUL-Stick kein HM I, oder?

Deshalb bin ich jetzt auf der Suche wie ich den AP mit meinem FHEM verbinden kann. Wenn ich den AP umflashen kann, wäre das vermutlich genau das was ich brauche.
Ich möchte jetzt nicht zusätzlich noch eine CCU laufen haben, da meine komplette Steuerung ja wunderschön von dem PI und FHEM erledigt wird.

Ich hoffe diese Erklärung beschreit mein Problem ordentlich....

Danke für Eure Antworten...

Beta-User

Na ja, meine persönliche Meinung zu eQ-3 ist zwischenzeitlich: Hände weg von allem, was irgendwie propretär ist, es gibt auf längere Sicht anderswo tendenziell mind. gleichwertige Alternativen... Die sind (nur & noch) nicht so weit hier im Forum verbreitet.

Back to topic:
Dein "Problem" war naheliegend, daher habe ich das auch entsprechend formuliert ;D .

In dem Edit in meinem vorherigen Post findest du einen Link mit einer Anleitung, wie man das Ding unter die Kontroller einer CCU bringen kann und meine Vermutung, was dazu (nicht) erforderlich ist. Also teste es aus, berichte und bring' es ins Wiki...

Ich werde mich derweil mit anderem beschäftigen, ich habe da z.B. grade ein paar interessante ZigBee-Devices aus China im Zulauf, z.B. zwei (1 und 2-Kanal-) UP-Aktoren, die man scheinbar in europ. UP-Dosen hinter bestehende Schalter OHNE Nullleiter unterbringen kann (Stück <20 Euro). Da kannst du bei eQ-3 lange warten, bis die sowas in HM-IP anbieten... (Aber bei solchen Experimenten weiß man nie, ob es läuft und wenn ja, wie lange bzw. wie lange es dauert, bis der betr. Aktor in den Interface-Dienst integriert ist).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ersthelfer

Zitat von: Beta-User am 05 November 2020, 12:00:49
...wie man das Ding unter die Kontroller einer CCU bringen kann...

So wie ich das gelesen habe brauche ich wieder eine CCU dafür, oder?
Und die wollte ich ja jetzt nicht zusätzlich  :-[

Beta-User

...eigentlich hätte ich ja wetten können, dass die Frage kommt....

piVCCU? Oder eine andere virtualisierte Lösung?

(Es gibt mehrere Varianten dafür und sowas findet man u.a. alles auch - zumindest in Stichworten, daher der Hinweis, dass an der Stelle Aktionsbedarf besteht, falls es funktioniert (...!) - im Wiki, aber das liest ja heutzutage keiner mehr)...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files