Daten von Raspberry an CCU3 senden oder empfangen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von Black » 18.02.2019, 15:03

joah, passt, aber s. o.
dann noch:

... die berühmten firewalleinstellungen ?
remote homematik script api ? auf was steht das ? vollzugriff = ok
kein zugriff = wäre schade, dann tut das am jüngsten tag imme rnoch net
eingeschrängt: dann musste die IP des raspi freigegeben haben

dann Firewallrichtlinie, was steht da

ports offen ?
ports blockiert ? dann solltest du den port 8181 auch separat unter portfreigabe freigeben.


hats du authentifizierung bei dir ein ? dann weiss ich net wies mit curl geht. synapse hilft dir in dem moment nicht weiter.

bevor da nu fehler suchst, guck erst mal, dass du den externen scripting weg überhaupt frei hast
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

cityofsilence
Beiträge: 269
Registriert: 14.11.2018, 20:43
System: CCU
Wohnort: Bayern
Hat sich bedankt: 14 Mal
Danksagung erhalten: 17 Mal

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von cityofsilence » 18.02.2019, 17:07

Code: Alles auswählen

http://192.168.xxx.xx:8181/alchy.exe?sagt=(dom.GetObject(ID_SYSTEM_VARIABLES)).Get(14478).State(%2260%22);
funktioniert aber wieso State und nicht Value ????
Habe es im Browser eingegeben und siehe da der Wert steht in der richtigen Variable ???
Keine Ahnung wieso aber es funzt
Gruß André

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von dtp » 19.02.2019, 08:35

cityofsilence hat geschrieben:
18.02.2019, 17:07
aber wieso State und nicht Value ????
Weil "State" einen Wert setzt und "Value" ihn nur ausliest.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

eagleflight
Beiträge: 26
Registriert: 10.05.2013, 08:13

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von eagleflight » 21.02.2019, 12:49

und wie ist der Syntax beim auslesen der Systemvariablen ?
Anstelle .State .Value funktioniert bei mir nicht. Verbindungen und Freigaben funktionieren.

Ich möchte gerne Variablenwerte aus der CCU3-Homematic in ein Python Skript einlesen, das auf einem Raspberry läuft.

Das Schreiben funktioniert. Hier lese ich mit dem Raspberry Bluetooth Pflanzen Sensoren von MiFlora aus um damit das Licht über Homematic zu steuern.

Code: Alles auswählen

# Homematic Adresse
HOMEMATIC_URL_TEMPLATE = (
    'http://192.168.xx.xx:8181/egal.exe?x=dom.GetObject("{}").State({})'
)
def main():
.
    # bluetooth sensoren auslesen
    values, sensors, sender_id = get_bluetooth_sensors(MIFLORA_MAC_ADDRESS_01)
.
    # sensors = Liste mit Systemvariablen für die Sensoren, values = Werte der Sensoren
    responses = save_homematic(sensors, values)

# Funktion zum Schreiben der Sensorwerte in Homematic Variablen.
def save_homematic(sensors,values):
    responses = [
        requests.get(HOMEMATIC_URL_TEMPLATE.format(homematic_name, value))
        for (_, homematic_name), value in zip(sensors, values)
        ]
    return(responses)
------------------------------------------------------------------
107 Kanäle in 38 Geräten:
1x HM-Sec-MDIR, 1x HM-RC-19, 1x HMIP-SWDO, 2x HM-OU-CFM-Pl, 3x HM-CC-TC, 1x HmIP-eTRV-2, 3x HM-CC-VD, 1x HM-WDS40-TH-I, 1x HmIP-WRC6, 5x HM-LC-Sw1-Pl-2, 1x HM-Sen-DB-PCB, 1x HM-RC-P1, 1x HM-Sec-SD, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 3x HmIP-BROLL, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Dim1T-Pl-2, 1x HM-SwI-3-FM, 1x HM-WDS30-OT2-SM-2, 1x HM-Sec-SCo, 2x HM-PB-2-WM55, 1x HM-WDS100-C6-O

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von alchy » 21.02.2019, 14:51

. State() ist zum Schreiben da und nicht. Value()

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

eagleflight
Beiträge: 26
Registriert: 10.05.2013, 08:13

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von eagleflight » 21.02.2019, 16:32

@Alchy

Klar. Das Schreiben funktioniert ja auch problemlos mit .State() -> Homematic Template

Nur wie ist der Syntax zu Lesen ?
------------------------------------------------------------------
107 Kanäle in 38 Geräten:
1x HM-Sec-MDIR, 1x HM-RC-19, 1x HMIP-SWDO, 2x HM-OU-CFM-Pl, 3x HM-CC-TC, 1x HmIP-eTRV-2, 3x HM-CC-VD, 1x HM-WDS40-TH-I, 1x HmIP-WRC6, 5x HM-LC-Sw1-Pl-2, 1x HM-Sen-DB-PCB, 1x HM-RC-P1, 1x HM-Sec-SD, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 3x HmIP-BROLL, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Dim1T-Pl-2, 1x HM-SwI-3-FM, 1x HM-WDS30-OT2-SM-2, 1x HM-Sec-SCo, 2x HM-PB-2-WM55, 1x HM-WDS100-C6-O

eagleflight
Beiträge: 26
Registriert: 10.05.2013, 08:13

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von eagleflight » 21.02.2019, 19:11

Die Frage hat sich erledigt.
Der Aufruf ist:

Code: Alles auswählen

http://meine.CCU.IP/config/xmlapi/state.cgi?datapoint_id=
Die Datenpunkte der Variablen kann man sich mit:

Code: Alles auswählen

http://meine.ccu.ip/config/xmlapi/sysvarlist.cgi
anzeigen lassen.
Das Python Skript dazu post ich sobald ich es auisgetestet habe.
------------------------------------------------------------------
107 Kanäle in 38 Geräten:
1x HM-Sec-MDIR, 1x HM-RC-19, 1x HMIP-SWDO, 2x HM-OU-CFM-Pl, 3x HM-CC-TC, 1x HmIP-eTRV-2, 3x HM-CC-VD, 1x HM-WDS40-TH-I, 1x HmIP-WRC6, 5x HM-LC-Sw1-Pl-2, 1x HM-Sen-DB-PCB, 1x HM-RC-P1, 1x HM-Sec-SD, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 3x HmIP-BROLL, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Dim1T-Pl-2, 1x HM-SwI-3-FM, 1x HM-WDS30-OT2-SM-2, 1x HM-Sec-SCo, 2x HM-PB-2-WM55, 1x HM-WDS100-C6-O

eagleflight
Beiträge: 26
Registriert: 10.05.2013, 08:13

Re: Daten von Raspberry an CCU3 senden oder empfangen

Beitrag von eagleflight » 21.02.2019, 21:01

Die Abfrage in Python auf die Schnelle :
Geht nur mit SysVars, da bei Geräten der Rückgabestring etwas anders aussieht.

Code: Alles auswählen

# Homematic Adresse
HOMEMATIC_GET_TEMPLATE = ('http://meine.ccu.ip/config/xmlapi/state.cgi?datapoint_id={}')

def main():
    datapoint = "SysvarID"                      # id der SysVar aus http://meine.ccu.ip/config/xmlapi/sysvarlist.cgi
    value = get_homematic(datapoint)   # Rückgabe als String (True, False, Text oder Zahl im float format
    .
    .
    # print(value)                                 # oder was auch immer 
                                                         # falls Rückgabe als Zahl -> zu int konvertieren mit: wert = int(float(value))
 
# Funktion um Systemvariablen von Homematic holen
def get_homematic(datapoint):
    responses = requests.get(HOMEMATIC_GET_TEMPLATE.format(datapoint))
    result = responses.text                 # Rückgabe von CCU  als string
                # im Format responses.text = '<?xml version="1.0" encoding="ISO-8859-1" ?><state><datapoint ise_id='18719' value='21.600000'/></state'
                # daraus dann den Wert extrahieren
    value= result[result.find('value') +7 : result.find('/') -1]  # suche nach value +7 zeichen und / -1 Zeichen und das dazwischen ausgeben
    return(value)
 
------------------------------------------------------------------
107 Kanäle in 38 Geräten:
1x HM-Sec-MDIR, 1x HM-RC-19, 1x HMIP-SWDO, 2x HM-OU-CFM-Pl, 3x HM-CC-TC, 1x HmIP-eTRV-2, 3x HM-CC-VD, 1x HM-WDS40-TH-I, 1x HmIP-WRC6, 5x HM-LC-Sw1-Pl-2, 1x HM-Sen-DB-PCB, 1x HM-RC-P1, 1x HM-Sec-SD, 3x HM-Sec-SD-2, 1x HM-Sec-SD-2-Team, 3x HmIP-BROLL, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Dim1T-Pl-2, 1x HM-SwI-3-FM, 1x HM-WDS30-OT2-SM-2, 1x HM-Sec-SCo, 2x HM-PB-2-WM55, 1x HM-WDS100-C6-O

Antworten

Zurück zu „HomeMatic allgemein“