API zum lesen/schreiben von Programmen
Moderator: Co-Administratoren
API zum lesen/schreiben von Programmen
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
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
- Black
- Beiträge: 5508
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 427 Mal
- Danksagung erhalten: 1088 Mal
- Kontaktdaten:
Re: API zum lesen/schreiben von Programmen
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
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
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
Re: API zum lesen/schreiben von Programmen
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?
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
Re: API zum lesen/schreiben von Programmen
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
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
-
- Beiträge: 10757
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: API zum lesen/schreiben von Programmen
Und wieso gehst du nicht zum Hersteller EQ-3 und lädst dir dort die Doku aus dem >> Downloadbereich << .
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
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.
- Black
- Beiträge: 5508
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 427 Mal
- Danksagung erhalten: 1088 Mal
- Kontaktdaten:
Re: API zum lesen/schreiben von Programmen
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.hiran hat geschrieben: ↑30.11.2020, 12:00Um 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
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
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
Re: API zum lesen/schreiben von Programmen
Schade, dass Du keinen Link zur Hand hattest. Ich such mir gerade einen Wolf auf https://www.eq-3.com/service/downloads.html.
"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.
Wo kommt denn regahss.exe her?Black hat geschrieben: ↑02.12.2020, 08:51Die 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).
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
#
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.Black hat geschrieben: ↑02.12.2020, 08:51Wie 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.
CCU2 mit Firmware 2.61.7
- Black
- Beiträge: 5508
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 427 Mal
- Danksagung erhalten: 1088 Mal
- Kontaktdaten:
Re: API zum lesen/schreiben von Programmen
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
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
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
-
- Beiträge: 336
- Registriert: 05.10.2020, 18:37
- System: CCU
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 25 Mal
Re: API zum lesen/schreiben von Programmen
Hi,
Das bleibt kein Wunsch.
Gibt es bald online.
Bin gerade dabei ein Wiki zu machen.
viewtopic.php?f=31&t=63093
Thomas
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.
Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.