Richtige Verwendung von $src$

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Re: Richtige Verwendung von $src$

Beitrag von Tyfys » 15.11.2022, 09:56

Hab ich auch mal getestet.
Klappt auch auf der CCU2.

Wär ja eine Form von Parameterübergabe oder ?
Gruß
Harry

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Richtige Verwendung von $src$

Beitrag von jp112sdl » 15.11.2022, 09:56

Cool. Dann macht "Skript testen" also nicht das selbe, was sonst im Hintergrund passiert. Auch interessant. :o

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Richtige Verwendung von $src$

Beitrag von MichaelN » 15.11.2022, 10:07

Baxxy hat geschrieben:
15.11.2022, 09:48
Setzen:
RM_lokale_Scriptvariable_setzen.JPG

Auslesen:
RM_lokale_Scriptvariable_auslesen.JPG

Kein Problem, läuft. :mrgreen:
Und wenn Du das Auslese Programm nicht vom Setzen Programm starten lässt, sondern manuell startest?
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 +++

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Richtige Verwendung von $src$

Beitrag von Xel66 » 15.11.2022, 10:25

Tyfys hat geschrieben:
15.11.2022, 09:56
Wär ja eine Form von Parameterübergabe oder ?
Würde ich im Realbetrieb nicht empfehlen. Für solche Zwecke schreibe ich das in eine Systemvariable und lese es wieder aus. Ich benutzte in verschiedenen Scripten auch die gleichen Scriptvariablennamen (sind in einzelenen Bestandteilen nur kopierte Scripte für unterschiedliche Aufgaben z.B. Push, Mail oder TTS, und die nutzen alle die Scriptvariable "nachricht"). Da die Scriptingengine immer nur einen gleichzeitigen Schriptlauf zulässt, kommt sich das nicht in Gehege. Aber die Scriptläufe nacheinander kann man teils nicht beeinflussen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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

Re: Richtige Verwendung von $src$

Beitrag von Baxxy » 15.11.2022, 13:24

jp112sdl hat geschrieben:
15.11.2022, 09:56
Dann macht "Skript testen" also nicht das selbe, was sonst im Hintergrund passiert.
Irgendwo hatten das Black und/oder Jens mal erklärt.
"Script testen" arbeitet anders wie der Editor im "offenem Programm". Mit letzterem müsste man mal testen ob das funktioniert.
Tyfys hat geschrieben:
15.11.2022, 09:56
Wär ja eine Form von Parameterübergabe oder ?
Kann man machen.
Aber wie Xel schon schrieb kann das zu Komplikationen führen.

Schön wäre es wenn man die (gecached-ten?) Scriptvariablen samt Wert irgendwie auslesen könnte, aber da ist mir nix bekannt.

Die Scriptvariablen in jedem Script frisch zu deklarieren ist m.E. immer noch die beste und sauberste Option.

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Richtige Verwendung von $src$

Beitrag von MichaelN » 15.11.2022, 20:35

MichaelN hat geschrieben:
15.11.2022, 10:07
Und wenn Du das Auslese Programm nicht vom Setzen Programm starten lässt, sondern manuell startest?
Ei der Daus, das geht auch.
Aber Reboot-fest ist das nicht.
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 +++

Benutzeravatar
Black
Beiträge: 5480
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: Richtige Verwendung von $src$

Beitrag von Black » 15.11.2022, 20:53

Es gibt 2 Ausführungsebenen auf der CCU, das eine ist die Rega interne Abarbeitung der CCU Programme und zum anderen die Script API auf :8181
Die beiden Ebenen wissen nix voneinander, heisst, Scriptvariablen, die in den "normalen" CCU Programmen definiert und verwendet wurden, sieht die Scripr API Abene nicht, und umgekehrt.

Script Testen der CCU oder auf Editoren wie der SDV benutzen die Script API. über eine Hintertür könntest du auch von der Script API aus die in der Programmebene verwendeten Variablen auslesen, das geht aber nur durch die Hintertür: Script aus der Script API erzeugt ein Synthetisches Programm in der Programmebene der CCU und startet dieses und geht dann erstmal in Warteschleife. Das Programm in der Programmebene läuft nun und schreibt sein ergebnis z.b. in eine neu erzeugte sysvar, in eine Datei oder sonstwo hin. das programm kommt dann aus der warteschleife und wertet die AUsgabe aus.
kann man machen.. kann man auch lassen

die auch von EQ3 verwendete Methode von "Parameterübergaben" geschieht über Scriptvariablen.

diese weden aber so ausgewertet: (es exitiere eine Scriptvariable mit namen n vom Typ Integer, die immo den Wert 10 enthalte)

WriteLine (system.IsVar("n"));

AUsgabe: true

system.IsVar(Varname[string]) --> [boolean]

-------------------

wenn diese Variable also existiert ist der saube Weg des Zugriffes dann

WriteLine (system.GetVar ("n"))

Ausgabe: 10

system.GetVar (Varname[string]) -->[variant]

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

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“