API zum lesen/schreiben von Programmen

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Antworten
hiran
Beiträge: 29
Registriert: 16.09.2015, 08:23

API zum lesen/schreiben von Programmen

Beitrag von hiran » 04.11.2020, 09:48

Hallo allerseits.

Sicher ist dies das eine oder andere Mal schon gefragt worden, und die Lösung muss im SDV (viewtopic.php?f=31&t=47049&p=615586&hil ... up#p615586) ja schon umgesetzt worden sein:

Wie kann man die Programme (Homematic Script) per API aus der CCU2 auslesen bzw wieder einspeichern? Ich würde sie gerne in Git versionieren.

Hiran
CCU2 mit Firmware 2.61.7

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

Re: API zum lesen/schreiben von Programmen

Beitrag von Black » 06.11.2020, 15:12

eine fertige Api für diese Funktionalität gibts nicht.

der Weg, wenn du es selber schreiben willst , geht über die remote Api der rega. Ein programm anlegen kannst du über die remote Api, die WebUI macht ja auch nix anderes.

Für deinen Use case gibt es die 2 möglichkeiten:

1. Du schreibst ein Script, welches dir ein programm in seiner kompetten Objektstruktur IseID unabhängig als generisch erzeugtes HMScript ausgibt (inkl aller logischen Überprüfungen wir: existens und Typkonsistenz der Referenzierten. Dieses erzeugte HM Scriupt legt dieses Programm beim Ausführen in einem Scripteditor wieder an.

2. Du schreibst ein Script, welches dir ein programm in seiner Kompletten Objectstructur in einem allgemein üblichen Exportformat (JSON, XML oder ähnliches) ausgibt. Dieses Ausgegebene File wird in Pass 2 von deinem Programm in ein HM Script umgerechnet und dabei zum einen die IseID Unabhängigkeit hergestellt und sowie die tests auf Existenz, Typkonsistenz erzeugt. Dieses erzeugte HM Scriupt legt dieses Programm beim Ausführen in einem Scripteditor wieder an.

Das ganze ist eine sportliche Aufgabe, dabei sind noch die spassig witzigen Zeichensatz umkonvertierungen zu berücksichtigen sowie böse fallen wie die braking Changes der rega (Ohne deren berücksichtigung du mit Sicherheit kein Script, welches von Excaping gebrauch macht, aus der rega abgezogen, geschweige wieder angelegt bekommst).

Black
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

hiran
Beiträge: 29
Registriert: 16.09.2015, 08:23

Re: API zum lesen/schreiben von Programmen

Beitrag von hiran » 27.11.2020, 22:44

Oh, danke für den Hinweis.

Ich habe keine Angst vor dem Programmieren oder vor Encodings.

Du sprichst von Skripten - ist das irgendein Code, der übers Netz auf die Rega API zugreift, oder muss dieser Code auf der CCU selber laufen? Ah, remote API sagt ja eigentlich schon, dass ersteres gelten sollte. Finde ich gut.

Ise-ID und Referenzen: Sieht so aus, als habe ein Skript doch Geräte IDs? Kommen die in den Metadaten oder im Code selber vor? Da müsste man das Skript evtl parsen, die IDs im Syntaxbaum ersetzen und dann versionieren. Beim Upload in die CCU dann wieder andersherum. Also müsste ich wohl die ganzen Ise-Ids auch mit auslesen. Was ein Jammer, dass der vielgelobte Editor nicht unter Linux läuft.

Wo kann ich denn mehr zur benötigten API erfahren? Gibt es da irgendeine Dokumentation?
CCU2 mit Firmware 2.61.7

hiran
Beiträge: 29
Registriert: 16.09.2015, 08:23

Re: API zum lesen/schreiben von Programmen

Beitrag von hiran » 30.11.2020, 12:00

Um zukünftige Leser (mich eingeschlossen) nicht leer dastehen zu lassen...
Ich habe gerade dies zur CCU Dokumentation gefunden: https://homematic.simdorn.net/dokumentation/

Wie komplett oder aktuell das ist, kann ich noch nicht sagen. Jedoch vermute ich, dass die Rega Remote API von oben offiziell die XML-RPC Schnittstelle ist und hier das PDF dazu liegt: https://homematic.simdorn.net/wp-conten ... 02__2_.pdf
CCU2 mit Firmware 2.61.7

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

Re: API zum lesen/schreiben von Programmen

Beitrag von alchy » 30.11.2020, 20:55

Und wieso gehst du nicht zum Hersteller EQ-3 und lädst dir dort die Doku aus dem >> Downloadbereich << . :roll:

Die bieten diese Doku nämlich auch an.
Mit dem Vorteil , das du dort u.U. auch aktuellere Files erhältst wie die auf deiner leider verlinkten Seite.

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.

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

Re: API zum lesen/schreiben von Programmen

Beitrag von Black » 02.12.2020, 08:51

hiran hat geschrieben:
30.11.2020, 12:00
Um zukünftige Leser (mich eingeschlossen) nicht leer dastehen zu lassen...
Ich habe gerade dies zur CCU Dokumentation gefunden

Wie komplett oder aktuell das ist, kann ich noch nicht sagen. Jedoch vermute ich, dass die Rega Remote API von oben offiziell die XML-RPC Schnittstelle ist und hier das PDF dazu liegt
naja zukünftige leser müssen nicht leer dastehen. Wie Alchy auch schon darlegte, die aktelleren Anleitungen als die verlinkten findest du auch direkt bei EQ3.

Die remote Api ist nicht das gleiche wie die XML-RPC. Die remote Api ist quasi die Script-Schnittstelle zur rega, während die XML-PRC schnittstellen die Zugangspunkt zu den Geräten an sich ist. (datenaustausch, mastersets, Linkssets etc)
Wenn du auch eine version zum programmbackup proggen willst, wirst du die remoteApi brauchen, über die xmlprc der schnittstellenprozesse siehst du keine Programme, keine namen, eigentlich nix von der regadom.
Die benötigeten Objekjttypen und methoden dazu findest du allerdings nicht in der offiziellen Scriptdokumentation.
Hilfreich ist, sich mal den möglichen Sprachschatz der Rega anzusehen (die regahss.exe in notepad+ zu laden ist der schnellste und einfachste weg, irgendwo ab zeile 13000 findest du dann die stringtables, mit etwas mehr erfahrung nimmt man nicht nodepad+ sondern den IDApro von hexware (ist allerdings wiedermal ein Windows programm und man sollte X86 Assembler und c++ können).
Wie die methoden sinnig von EQ3 selber angewendet werden, findest du in der firmware der ccu selber unter www/rega/esp. EIn Blick in programs.fn, sico.fn und side.fn (Funktionen in HMScript von EQ3) bzw rule.inc zeigt dir die generelle Vorgehensweise.

Mit dem Wissen bist du dann eigentlich ausgestattet, die Objectstruktur eines Programmes auszulesen in einem von dir präferierten Format bzw auch wieder synthetisch anzulegen.

Black
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

hiran
Beiträge: 29
Registriert: 16.09.2015, 08:23

Re: API zum lesen/schreiben von Programmen

Beitrag von hiran » 02.12.2020, 23:45

Black hat geschrieben:
02.12.2020, 08:51
naja zukünftige leser müssen nicht leer dastehen. Wie Alchy auch schon darlegte, die aktelleren Anleitungen als die verlinkten findest du auch direkt bei EQ3.
Schade, dass Du keinen Link zur Hand hattest. Ich such mir gerade einen Wolf auf https://www.eq-3.com/service/downloads.html.
Black hat geschrieben:
02.12.2020, 08:51
Wenn du auch eine version zum programmbackup proggen willst, wirst du die remoteApi brauchen, über die xmlprc der schnittstellenprozesse siehst du keine Programme, keine namen, eigentlich nix von der regadom.
"auch" - gibt es das schon? In einer Form, in der ich es auch verwenden kann? Der wundersame Supereditor, der hier immer wieder erwähnt wird hilft mich nicht, da ich mich nicht unter Windows bewege.
Black hat geschrieben:
02.12.2020, 08:51
Die benötigeten Objekjttypen und methoden dazu findest du allerdings nicht in der offiziellen Scriptdokumentation.
Hilfreich ist, sich mal den möglichen Sprachschatz der Rega anzusehen (die regahss.exe in notepad+ zu laden ist der schnellste und einfachste weg, irgendwo ab zeile 13000 findest du dann die stringtables, mit etwas mehr erfahrung nimmt man nicht nodepad+ sondern den IDApro von hexware (ist allerdings wiedermal ein Windows programm und man sollte X86 Assembler und c++ können).
Wo kommt denn regahss.exe her?

Code: Alles auswählen

hiran@silver:~$ ssh root@ccu2
root@ccu2's password: 
# find / -name "*.exe"
find: /proc/476/task/596/fdinfo/66: No such file or directory
# 
Black hat geschrieben:
02.12.2020, 08:51
Wie die methoden sinnig von EQ3 selber angewendet werden, findest du in der firmware der ccu selber unter www/rega/esp. EIn Blick in programs.fn, sico.fn und side.fn (Funktionen in HMScript von EQ3) bzw rule.inc zeigt dir die generelle Vorgehensweise.

Mit dem Wissen bist du dann eigentlich ausgestattet, die Objectstruktur eines Programmes auszulesen in einem von dir präferierten Format bzw auch wieder synthetisch anzulegen.
Da liegen ein Haufen .fn und .htm Dateien. Selbsterklärend ist etwas anderes. Ich hatte gedacht, dass es wenigstens eine vernünftige API mit Dokumentation gibt und nicht alles per Reverse-Engineering rausgefunden werden muss. :?
CCU2 mit Firmware 2.61.7

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

Re: API zum lesen/schreiben von Programmen

Beitrag von Black » 03.12.2020, 12:56

du findest in einer RMatik die executable der Rega in /bin/ReGaHss. je nach vorlieben kannst du das Arm compilierte oder das x86 compilierte nehmen. (installiert oder du nimmst das Image von GitHub)

Ohne reverse Engeneering wirst du aber nicht weiterkommen, Das Wissen hier in diesem Forum entstand dadurch, dass sich die verschiedensten Leute in dem letzten Jahrzehnt sich der Firmware mal rückwärts angenommen haben ^^. Vernünftige Doku ist da eher heres Wunschdenken.

Black
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

[sprotte80]
Beiträge: 331
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 23 Mal

Re: API zum lesen/schreiben von Programmen

Beitrag von [sprotte80] » 03.12.2020, 18:44

Hi,

Das bleibt kein Wunsch.
Gibt es bald online.
Bin gerade dabei ein Wiki zu machen.

viewtopic.php?f=31&t=63093

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“