Wochentag in Sysvariable schreiben

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Wochentag in Sysvariable schreiben

Beitrag von Moonrider » 22.01.2018, 22:51

Ich kann es heute nicht lassen.

Ist es möglich den Namen des Wochentages aus der CCU auszulesen ? Ich weiß gar nicht ob der Wochentag überhaupt vorliegt.
Zu diesem Thema hab ich folgendes gefunden.

Code: Alles auswählen

! Prüfung, ob heute Wochenende ist
sWT = system.Date("%a").ToString(); ! abgekürzter Wochentagsname
dom.GetObject("Wochentag").State(sWT); ! Wochentag in der Systemvariablen anzeigen (dient nur zur Kontrolle)
Da ich mich mit Scripten nur wenig auskenne, berichtigt mich bitte. Soweit ich das verstehe wird hier der Wochentag ausgelesen, nur wenn ich das so als Script verwendet kommen nur Fehler.

Hat jemand eine Lösung. Ich würde gerne eine Systemvariable als Liste ( Montag, Dienstag usw) erstellen und dann mittels Scripz diese befüllen.

Schon mal danke
Zuletzt geändert von alchy am 22.01.2018, 23:13, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
So long

Marcus

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

Re: Wochentag in Sysvariable schreiben

Beitrag von Roland M. » 22.01.2018, 23:42

Hallo Marcus,

dein Script ist prinzipiell richtig bzw. kann richtig sein.

Allerdings muss die Systemvariable Wochentag bereits (über die WebUI) angelegt sein und im Script die Variable sWT bereits definiert sein.
Ansonsten einfach ein var voranstellen:

Code: Alles auswählen

var sWT = system.Date("%a").ToString();

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,...

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

Re: Wochentag in Sysvariable schreiben

Beitrag von alchy » 22.01.2018, 23:43

Mehrere Möglichkeiten zur Ermittlung des Wochentages.
Reicht dir der englische abgekürzte Wochentag, dann ist es so richtig.
Naja, fast richtig.
Da du sWT nicht deklarierst ist es natürlich Essig mit dem Script.
Und da deine Abfrage system.Date("%a") schon einen String zurückgibt, musst du auch nicht mehr in einen String mit .ToString() wandeln.
Desweiteren ist es unklug mittels dom.GetObject auf ein Objekt zuzugreifen, da es mehrere Objekte mit dem Namen geben könnte und dann das Script auch nicht funktionieren könnte.

Kurzum:
HMCE_Wochentag.jpg
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
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wochentag in Sysvariable schreiben

Beitrag von Moonrider » 23.01.2018, 07:18

Danke , ich werde es ausprobieren. Was müsste ich tun, um die vollen deutschen Namen zu bekommen ?
Wie gesagt, ich hab mir den Scriptschnipseö auch nur aus einem anderen Script hier im Forum ausgeliehen. Kann ich nicht einfach, den Wochentag wie das Datum oder Sonnenauf und Sonnenuntergang aus der CCU auslesen ?
So long

Marcus

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

Re: Wochentag in Sysvariable schreiben

Beitrag von alchy » 23.01.2018, 08:34

Moonrider hat geschrieben:Kann ich nicht einfach, den Wochentag wie das Datum oder Sonnenauf und Sonnenuntergang aus der CCU auslesen ?
Was denkst du was du mit

Code: Alles auswählen

WriteLine(system.Date("%a"));
machst?

Es gibt ja die Skript Doku (siehe Signatur)
Und wenn du dir dort Teil 1 anschaust, findest du alleine mit der Suche nach Wochentag 5 Möglichkeiten den Wochentag zu ermitteln. :wink:
  • time.Weekday(); Ermittelt die Nummer des Wochentags
über time.Format()
  • %a Abgekürzter Wochentagsname Wed
  • %A Vollständiger Wochentagsname Wednesday
  • %u Wochentag (Montag = 1)
  • %w Wochentag (Sonntag = 0)
Allen gemeinsam ist das sie nicht den deutschen Langnamen für den Wochentag ausgeben. :cry:
Daher oben ja auch mein Hinweis.

Aber dabei hilft dann eine Zeile Code als "Übersetzung"

Code: Alles auswählen

string sWT = ("Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag").StrValueByIndex(",",system.Date("%w").ToInteger());
in das Script von oben eingefügt, ergibt das Script:
HMCE_Wochentag2.jpg

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
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wochentag in Sysvariable schreiben

Beitrag von Moonrider » 25.01.2018, 13:38

Jetzt habe ich etwas gefunden, was funktioniert. Natürlich ist das nicht aus meiner Feder,

Code: Alles auswählen

!Wochentag in Variable Wochentag schreiben
!Script by http://www.homematic-guru.de
integer d = system.Date("%w").ToInteger();
object wochentag = dom.GetObject('Wochentag');
string wd = "Sonntag";
if (d == 1) {wd = "Montag";}
if (d == 2) {wd = "Dienstag";}
if (d == 3) {wd = "Mittwoch";}
if (d == 4) {wd = "Donnerstag";}
if (d == 5) {wd = "Freitag";}
if (d == 6) {wd = "Samstag";}
wochentag.State(wd);
gefunden habe ich es hier. - Dankle dafür

https://homematic-guru.de/homematic-scr ... -schreiben
Zuletzt geändert von alchy am 25.01.2018, 13:45, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
So long

Marcus

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

Re: Wochentag in Sysvariable schreiben

Beitrag von alchy » 25.01.2018, 13:43

Einen Post drüber steht doch eine funktionierende Lösung. :roll:

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.

HMNutzer
Beiträge: 708
Registriert: 24.10.2016, 17:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 150 Mal
Danksagung erhalten: 22 Mal

Re: Wochentag in Sysvariable schreiben

Beitrag von HMNutzer » 01.11.2018, 21:51

Danke Alchy für das Skript.
Viele Grüße

Martin

RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus

Antworten

Zurück zu „HomeMatic allgemein“