Variablen Zahlenwerte umbenennen in Namen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
Pixeladler
Beiträge: 11
Registriert: 24.12.2016, 23:24

Variablen Zahlenwerte umbenennen in Namen

Beitrag von Pixeladler » 07.10.2017, 16:19

Hallo alle zusammen,
ich habe folgendes vor:
Ich möchte den Zeichenketten Wert einer Systemvariable umschreiben in eine andere Variable mit Namen.

Beispiel:
Ich bin zu Hause, dann geht Variable 1 auf Zeichenketten Wert= "1"
danach soll Variable 2 auf Zeichenketten Wert: "Martin ist Zuhause" ändern.

Kann mir da jemand sagen wie der Script aussehen muss, wenn ich z.b. Werte von 1-50 habe und diese dann umbenannt werden ?

Ich würde mich riesig freuen, vielen Dank im Voraus

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von AndiN » 07.10.2017, 16:32

Hallo,

keine Ahnung, ob ich Dich richtig verstanden habe. Aber

Variable 1: 1,2,3,4,5,6 .... 50
Variable 2: Martin zu Hause, Martin am Kühlschrank, Martin auf Arbeit..... 50ter Wert

Nach dem Motto: Wenn Variable 1 =1 , dann änder bitte Variable 2 auf "Martin zu Hause"
Wenn Variable 1 = 3, dann änder bitte Variable 2 auf "Martin auf Arbeit"

Meinst Du das?

Dann wäre meines Erachtens der Code für ein Skript:

Code: Alles auswählen

dom.GetObject("Variable 2").State(dom.GetObject("Variable 1").Value());
Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Pixeladler
Beiträge: 11
Registriert: 24.12.2016, 23:24

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von Pixeladler » 07.10.2017, 16:43

Ja super, vielen Dank für die schnelle und richtig verstandene Antwort :D

Ist das dann so richtig mit den Zahl von Variable 1 und dem Namen der Variable 2 ? :?

Code: Alles auswählen

dom.GetObject("Variable 2").1(dom.GetObject("Variable 1").Martin ist Zuhause());
Vielen Dank :D

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von AndiN » 07.10.2017, 16:55

Hallo,

probier mal aus, was passiert, wenn Du die Variable 1 auf "2" setzt und dann über Skript testen

Code: Alles auswählen

WriteLine(dom.GetObject("Variable 1").Value());
ausführst. en.

P.S. Dito, wenn Du mal Variable 2 auf "Martin ist unterwegs" drehst und o.a. Code mit der Variable 2 testest.

Das sollte meines Erachtens Licht ins Dunkel bringen und Deine Frage beantworten.

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Pixeladler
Beiträge: 11
Registriert: 24.12.2016, 23:24

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von Pixeladler » 07.10.2017, 17:32

Hallo Andi,
scheinbar ist heute nicht so mein Tag, ich bekomme es leider nicht zum laufen.
Ich habe unter "Programme und Verknüpfungen" ein Programm, was wie folgt aussieht:

WENN Variable 1 = größer als 1 bei Aktualisierung
DANN = folgenden Script

Code: Alles auswählen

dom.GetObject("Variable 2").Martin ist Zuhause(dom.GetObject("Variable 1").1());
WriteLine(dom.GetObject("Variable 1").Value());
Und 2x Systemvariablen:
Variable 1 = Variablentyp: Zahl / Min:1 max: 50 (1)
Variable 2 = Zeichenkette (Martin ist zu Hause)

Beim o.g. Script kommt folgender Fehler:

Code: Alles auswählen

Error 1 at row 1 col 40 near ^ ist Zuhause(dom.GetObject("Variable1").1());
WriteLine(dom.GetObject("Variable1").Value()
Parse following code failed:
dom.GetObject("Variable2").Martin ist Zuhause(dom.GetObject("Variable1").1());
WriteLine(dom.GetObject("Variable1").Value());
Liebe Grüße
Martin

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von AndiN » 07.10.2017, 19:02

Hallo Martin,

jetzt bin ich baff. Ich dachte Du hättest ein paar Programme die die Variable 1 auf 1-50 setzen und Du wolltest nur eine Skriptzeile dafür, dass eine Variable 2 (auch Werteleiste) gleich gesetzt wird.

Fangen wir mal so an:

Du hast eine Variable 1 mit Werten zwischen 0-50?
Du hast eine Varriable 2 mit 50 Werten (Martin zu Hause, Martin.... usw)?

Wenn Du das hast, dann kannst Du per Skript testen mal

Code: Alles auswählen

dom.GetObject("Variable 1").State(3);
dom.GetObject("Variable 2").State(3);
eingeben und schaust unter Systemvariablen.

Du wirst sehen, dass Varialbe 1 auf 2 steht und Variable 2 auf dem Wert, den Du bei der Werteleiste auf Position 3 stehen hast.

Es wird nämlich von 0 gezählt.
Variable 1:
0 = 1
1 = 2
2 = 3
....
50=49

Variable 2:
0 = Martin zu Hause
1 = Martin....
2 =

Wenn Du das verstande hast weißt Du auch was der Code hier bewirkt:

Code: Alles auswählen

dom.GetObject("Variable 2").State(dom.GetObject("Variable 1").Value());
dom.GetObject("Variable 1").State(WERT);
WERT: dom.GetObject(dom.GetObject("Variable 2").Value() => der aktuelle Wert der Variable 2 soll oben bei Variable 1 gesetzt werden.

Ich hoffe Du kommst jetzt etwas besser klar. Ruhig Blut ;-)

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Pixeladler
Beiträge: 11
Registriert: 24.12.2016, 23:24

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von Pixeladler » 07.10.2017, 19:46

Guten Abend,
und vielen vielen Dank für deine Geduld.
Ich werde mal in "Kurzform" erklären, was ich mir vorgestellt habe und hoffe so, das mein Anliegen verständlicher wird. :D

Also, meine Frau und ich möchten über die Geofency App. (iPhone) den Standort an die CCU senden und über mediola irgendwann auf einem Tablet im Flur darstellen.
Über das XML-API Addon auf der CCU wird mir folgender Code vom Handy gesendet:

Code: Alles auswählen

http://#####.meine-homematic.de:8181/config/xmlapi/statechange.cgi?ise_id=Variable2&new_value=1
Da ich nur Zahlen oder Wörter mit: "Das_gefällt_mir nicht" Unterstrichen senden kann, hatte ich die Idee eine Systemvariable anzulegen die nur Zahlen empfängt.

Und da kommst Du/Ihr ins Spiel :D

Die Idee (vielleicht hast du eine bessere) ist, die Variable1 als ZAHLENempfänger (1-50) zu nehmen (funktioniert bereits) und die Variable2 für die vernünftig, ohne Unterstrich geschriebenen Ortsangaben zu verwenden.
Wie ich jetzt "Martin ist Zuhause", "Martin ist auf Arbeit" etc. in eine Variable bekomme, ist mir egal, ich dachte nur, das es mit einem Programm und einem Script wo "Martin ist zu Hause..." usw. funktionieren könnte, oder ?

Ich wünsche noch einen angenehmen Abend und freue mich auf deinen Lösungsansatz :D

Liebe Grüße
Martin

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von DrTob » 07.10.2017, 20:23

Nimm einfach eine Systemvariable vom Typ werteliste. Diese kannst du direkt auf 0 bis n setzen, was dem n-ten Werteeintrag entspricht,

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Variablen Zahlenwerte umbenennen in Namen

Beitrag von JRiemann » 07.10.2017, 20:23

Und warum so kompliziert mit einem Skript usw?
Das geht doch auch einfach per Programm. Es ist nur eine Fleißarbeit beim Programm erstellen.

Wenn > Variable 1 > Wert 1 > bei Änderung auslösen
Dann > Variable 2 > zu Hause
Sonst Wenn > Variable 1 > Wert 2 > nur prüfen
Dann > Variable 2 > bei der Arbeit
Sonst Wenn > Variable 1 > Wert 3 > nur prüfen
Dann > Variable 2 > in der Stadt
Sonst Wenn > ......
Viele Grüße!
Jörg

Antworten

Zurück zu „HomeMatic allgemein“