Systemvariable an eine zweite CCU senden

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

MarkusSchickaneder
Beiträge: 21
Registriert: 15.04.2021, 15:24
System: CCU und Access Point
Hat sich bedankt: 4 Mal

Systemvariable an eine zweite CCU senden

Beitrag von MarkusSchickaneder » 20.06.2022, 11:15

Leider finde ich keinen Ansatz wie ich hier weiter kommen soll.
Ich möchte Systemvariablen von einer CCU zur andern schicken.
Beide befinden sich im selben Netzwerk. Hat von euch schon mal Jemand sowas Gemacht?
Gruß Markus

MichaelN
Beiträge: 9656
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von MichaelN » 20.06.2022, 11:22

Versuch es mit :

Code: Alles auswählen

http://IP.der.CCU.2:8181/x.exe?senden=dom.GetObject("SV-Name").State("String")
http://IP.der.CCU.2:8181/x.exe?senden=dom.GetObject("SV-Name").State(Zahl)
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Tyfys
Beiträge: 544
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 123 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von Tyfys » 20.06.2022, 11:35

sollte man sich das nicht gleich besser so angewöhnen:

Code: Alles auswählen

http://IP.der.CCU.2:8181/x.exe?senden=dom.GetObject (ID_SYSTEM_VARIABLES).Get("SV-Name").State("String");
http://IP.der.CCU.2:8181/x.exe?senden=dom.GetObject (ID_SYSTEM_VARIABLES).Get("SV-Name").State(Zahl);
Gruß
Harry

MarkusSchickaneder
Beiträge: 21
Registriert: 15.04.2021, 15:24
System: CCU und Access Point
Hat sich bedankt: 4 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von MarkusSchickaneder » 20.06.2022, 11:37

Sorry funzt nicht:

Error 1 at row 2 col 5 near ^://30.4.78.245:8181/x.exe?senden=dom.GetObject("PV-Test").State("String")
http:/
Parse following code failed:

http://30.4.78.245:8181/x.exe?senden=do ... te("String")
http://30.4.78.245:8181/x.exe?senden=do ... tate(Zahl)

Gruß Markus

MarkusSchickaneder
Beiträge: 21
Registriert: 15.04.2021, 15:24
System: CCU und Access Point
Hat sich bedankt: 4 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von MarkusSchickaneder » 20.06.2022, 11:42

Tyfys hat geschrieben:
20.06.2022, 11:35
sollte man sich das nicht gleich besser so angewöhnen:

Code: Alles auswählen

http://IP.der.CCU.2:8181/x.exe?senden=dom.GetObject (ID_SYSTEM_VARIABLES).Get("SV-Name").State("String");
http://IP.der.CCU.2:8181/x.exe?senden=dom.GetObject (ID_SYSTEM_VARIABLES).Get("SV-Name").State(Zahl);
Hallo Tyfys

Kommt leider die selbe Fehlermeldung

Benutzeravatar
Roland M.
Beiträge: 9787
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1374 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von Roland M. » 20.06.2022, 11:49

Hallo!
MarkusSchickaneder hat geschrieben:
20.06.2022, 11:37
Sorry funzt nicht:

Error 1 at row 2 col 5 near ^://30.4.78.245:8181/x.exe?senden=dom.GetObject("PV-Test").State("String")
Du musst den Befehl natürlich als Script noch in ein system.Exec() "verpacken", zum Test kannst du den Befehl aber direkt in einem Browser ausführen.

Allerdings habe ich meine Zweifel an der IP! Das ist eine öffentliche IP (30.0.0.0/8 DoD Network Information Center, Columbus, Ohio), ich hoffe, du hast deine CCU nicht per Portforwarding exponiert - wenn ja, dann sofort löschen!. Nimm da die IP-Adresse im lokalen Netzwerk.


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von Baxxy » 21.06.2022, 00:19

MarkusSchickaneder hat geschrieben:
20.06.2022, 11:37
Sorry funzt nicht:
Roland M. hat geschrieben:
20.06.2022, 11:49
als Script noch in ein system.Exec() "verpacken"
Na dann machen wir doch mal Nägel mit Köpfen... :wink:

Code: Alles auswählen

!- SysVar-Inhalt von Zentrale A auf Zentrale B "kopieren"
!- v1.1 by Baxxy 14.06.23
!- https://homematic-forum.de/forum/viewtopic.php?f=19&t=74606#p722724

string remote_user_name	  = "Admin";
string remote_user_pw	  = "admin";
string local_sysvar_name  = "A_Test_SysVar_Text"; !- Name der lokalen SysVar
string remote_sysvar_name = "SysVar_Remote_Text"; !- Name der remote SysVar
string remote_ip_addr     = "192.168.1.96";     !- IP-Adresse remote Zentrale
boolean write_remote      = true;                 !- Daten übertragen ja (true) / nein (false)

!- Testdaten falls die lokale SysVar nicht existent ist
var data_value            = "test123";            !- Testdaten als String: "test123" / Zahl: 123.45 / Logik: true | false

!- ####################################################
object source_sysvar = dom.GetObject (ID_SYSTEM_VARIABLES).Get (local_sysvar_name);
boolean use_basic_auth; string url; var vartype; string auth_string;

if (( remote_user_name ) && ( remote_user_pw )) { auth_string = remote_user_name #":"# remote_user_pw #"@"; }
 if ( source_sysvar ) { data_value = source_sysvar.Value(); }
      vartype = data_value.Type();
  if ( vartype == "string" ) { data_value = '"'# data_value #'"'; }
      url = 'http://'# auth_string # remote_ip_addr #':8181/bx.exe?y=dom.GetObject("'# remote_sysvar_name #'").State('# data_value #')';
      WriteLine("Daten-Format: "# vartype #"\nAusgabe-URL -kann im Browser getestet werden- : "# url);
   if ( write_remote ) { system.Exec("wget --tries=2 --timeout=2 -q '" # url # "' &"); WriteLine("Daten gesendet!"); }
Sollte soweit selbsterklärend sein.
Getestet nur mit Text/Zahl/Logik - SysVars.
Die "Remote-SysVar" wird nicht auf Vorhandensein und Typ geprüft!
Wer z.B. eine Zahl in eine Text-SysVar schreibt ist selbst schuld. :mrgreen:
Zuletzt geändert von Baxxy am 14.06.2023, 19:22, insgesamt 2-mal geändert.

Tyfys
Beiträge: 544
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 123 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von Tyfys » 25.06.2022, 18:55

Hallo Baxxy


Wer eine schliessende Klammer verbummelt ist auch selbst Schuld..... :mrgreen:

Code: Alles auswählen

WriteLine("Daten-Format: "# vartype #"\nAusgabe-URL: "# url;
Hast du nicht sogar den SDV ?
Gruß
Harry

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

Re: Systemvariable an eine zweite CCU senden

Beitrag von Black » 25.06.2022, 19:09

Joah, so ein WriteLine braucht auch eine schliessende Klammer.

der SDV zeigt den Fehler übrigens an ^^

Baxxy1.png

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

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Systemvariable an eine zweite CCU senden

Beitrag von Baxxy » 25.06.2022, 20:17

Ja sowas aber auch... wer hat die Klammer gemopst? :oops:
Habe das Script korrigiert.

Ja, wurde mit dem SDV produziert. Aber im "Hardcore-Modus" ohne jegliche Hilfsfunktionen. 8)

Grüße, Baxxy

Antworten

Zurück zu „HomeMatic allgemein“