Versenden festgelegter Variablen per Mail

diverse Zusatzsoftware

Moderator: Co-Administratoren

Benutzeravatar
Rohrzange
Beiträge: 23
Registriert: 01.11.2021, 21:04
System: CCU und Access Point
Wohnort: 06188 Landsberg
Hat sich bedankt: 6 Mal

Re: Versenden festgelegter Variablen per Mail

Beitrag von Rohrzange » 08.02.2022, 09:26

@Michael, @Baxxy
Ich habe es so ausprobiert und es war in der Tat das Problem! :D
Werde jetzt meine Variablen Umbenennen und dann kann ich weiter "Spielen"

Gesamt nochmal Danke an alchy, Micahel und baxxy für eure Hilfe!
Die von mir hier Veröffentlichten Rechtschreib- und Grammatikfehler können von jedem, der sie findet, behalten, abgeändert und / oder weiterverwendet werden! :lol:

Benutzeravatar
Rohrzange
Beiträge: 23
Registriert: 01.11.2021, 21:04
System: CCU und Access Point
Wohnort: 06188 Landsberg
Hat sich bedankt: 6 Mal

Re: Versenden festgelegter Variablen per Mail

Beitrag von Rohrzange » 08.02.2022, 14:05

So, jetzt klappt das alles soweit Super.
Nun habe ich in meinem Übermut gedacht, ich Programmier mal schnell das Internet um! :lol:
NEIN!
Ich habe mir die Variablen für die Sonnenscheindauer und die Regenmengen geholt. Die Sonnenscheindauer ist jedoch in der Variable "svHmIPSunshineCounterToday_3108" und "svHmIPSunshineCounterYesterday_3108" in Minuten "hinterlegt". Also habe ich hier im Forum gestöbert und mir da was ( nach meinem Quarkschädel! ) tolles zusammengeschnippelt. :D

Denkste, das geht so nicht. das Original-Script mit der Zeilenausgabe klappt :

Code: Alles auswählen

!Minuten umrechnen in StundeMinute
var tmpStartTime = dom.GetObject("svHmIPSunshineCounterToday_3108").State().ToInteger();
var tmpStd;var tmpMin;
tmpStd = (tmpStartTime%3600)/60;
tmpMin = tmpStartTime%60;
WriteLine(tmpStartTime#" Minuten sind: "#tmpStd #" h und "#tmpMin #" min");
aber meine tolle "Ausgabeumleitung" in meine Wunschvariable leider nicht. :(

das Script habe ich so:

Code: Alles auswählen

!Minuten umrechnen in StundeMinute
var tmpStartTime = dom.GetObject("svHmIPSunshineCounterToday_3108").State().ToInteger();
var tmpStd;var tmpMin;
tmpStd = (tmpStartTime%3600)/60;
tmpMin = tmpStartTime%60;
dom.GetObject("Sonnenschein heute").State(tmpStartTime#" Minuten sind: "#tmpStd #" h und "#tmpMin #" min");
Umgebastelt.
Wenn mir da jemand von euch den Richtigen Weg zeigen könnte, wäre das Super!
Danke schon im voraus!
Zuletzt geändert von alchy am 08.02.2022, 20:57, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Die von mir hier Veröffentlichten Rechtschreib- und Grammatikfehler können von jedem, der sie findet, behalten, abgeändert und / oder weiterverwendet werden! :lol:

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

Re: Versenden festgelegter Variablen per Mail

Beitrag von MichaelN » 08.02.2022, 14:27

Rohrzange hat geschrieben:
08.02.2022, 14:05
Sonnenschein heute
Ist keine Systemvariable Typ Text?

btw Code bitte in Code-Tags (</> Button) posten
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
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: Versenden festgelegter Variablen per Mail

Beitrag von Baxxy » 08.02.2022, 14:28

Rohrzange hat geschrieben:
08.02.2022, 14:05
den Richtigen Weg
Ich sehe jetzt auf die Schnelle keinen Fehler.
Ist die SysVar "Sonnenschein heute" vom Typ Text und deren Name einzigartig im ganzen System?

Hilfreich ist es auch wenn man alles Step by Step macht...
(z.B. deine letzte Zeile gegen folgendes austauschen)

Code: Alles auswählen

string output = tmpStartTime#" Minuten sind: "#tmpStd #" h und "#tmpMin #" min";
WriteLine("Ausgabe: "# output);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Sonnenschein heute").State(output);
Achja, Codes bitte in Codetags (Button oberhalb des Textfeldes </> ) posten.

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

Re: Versenden festgelegter Variablen per Mail

Beitrag von MichaelN » 08.02.2022, 14:28

:lol: :lol: :lol:
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
Rohrzange
Beiträge: 23
Registriert: 01.11.2021, 21:04
System: CCU und Access Point
Wohnort: 06188 Landsberg
Hat sich bedankt: 6 Mal

Re: Versenden festgelegter Variablen per Mail

Beitrag von Rohrzange » 08.02.2022, 17:08

Baxxy hat geschrieben:
08.02.2022, 14:28
Ich sehe jetzt auf die Schnelle keinen Fehler.
Ist die SysVar "Sonnenschein heute" vom Typ Text und deren Name einzigartig im ganzen System?
Da war auch ein Fehler drinne, ddie Variable war auf Zahl->hab ich geändert.
Baxxy hat geschrieben:
08.02.2022, 14:28
Hilfreich ist es auch wenn man alles Step by Step macht...
(z.B. deine letzte Zeile gegen folgendes austauschen)

Code: Alles auswählen

string output = tmpStartTime#" Minuten sind: "#tmpStd #" h und "#tmpMin #" min";
WriteLine("Ausgabe: "# output);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Sonnenschein heute").State(output);
Das habe ich in meinem Script erledigt und erfolgreich getestet. Das Fertige Script sieht jetzt so aus:

Code: Alles auswählen

!Umrechnung Hiddenvariable zu Variable
var tmpStartTime = dom.GetObject("svHmIPSunshineCounterToday_3108").State().ToInteger();
var tmpStd;var tmpMin;
tmpStd = (tmpStartTime%3600)/60;
tmpMin = tmpStartTime%60;string output = ""#tmpStd #" h und "#tmpMin #" min";
WriteLine(""# output);
dom.GetObject("Sonnenschein heute").State(output);
(Cool, wieder was gelernt -> nutzbare Scripte einfügen -> Danke @Baxxy

Das Ganze habe ich dann noch für den Sonnenschein gestern gemacht und ins Programm noch einen "Variablenumrechner" für die Regenmengen integriert.
Das Programm heißt: Wettermeldung und wird mit Timer getriggert. Es setzt die Variablen Regen und Sonnenscheindauer von heute und gestern (ausgelesen aus den Versteckten Variablen der Wetterstation), und Startet dann Zeitversetzt den mailversand. Im Mailversand habe ich dann meine Wetterdaten von heute und gestern eingescriptet.

Code: Alles auswählen

set serviceliste [encoding convertfrom utf-8 [lindex $argv 1]]
load tclrega.so
array set values [rega_script {
var v1  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Aussentemperatur Max").Value().ToString(1); 
var v2  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Uhrzeit Maximum").Value(); 
var v3  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Aussentemperatur Min").Value().ToString(1); 
var v4  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Uhrzeit Minimum").Value(); 
var v5  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Aussentemperatur Max_gestern").Value().ToString(1); 
var v6  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Aussentemperatur Min_gestern").Value().ToString(1); 
var v7  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Wind Max").Value().ToString(1); 
var v8  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Uhrzeit Wind Max").Value(); 
var v9  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Wind Min").Value().ToString(1); 
var v10  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Uhrzeit Wind Min").Value(); 
var v11  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Wind Max gestern").Value().ToString(1); 
var v12  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Wind Min gestern").Value().ToString(1); 
var v13  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Sonnenschein heute").Value().ToString(1); 
var v14  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Sonnenschein gestern").Value().ToString(1);
var v15  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Regen heute").Value().ToString(1); 
var v16  = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Regen gestern").Value().ToString(1); 

} ]

set v1 $values(v1)
set v2 $values(v2)
set v3 $values(v3)
set v4 $values(v4)
set v5 $values(v5)
set v6 $values(v6)
set v7 $values(v7)
set v8 $values(v8)
set v9 $values(v9)
set v10 $values(v10)
set v11 $values(v11)
set v12 $values(v12)
set v13 $values(v13)
set v14 $values(v14)
set v15 $values(v15)
set v16 $values(v16)
Hier nochmals Danke an alchy für den Starttip! ps.: ja, ich fand den Weg besser als ein Fertiges Script, so konnte ich wieder etwas lernen!

Das Programm zum Mailversand:
Mail-programm-Wetter Fertig.jpg
Das Programm zur Datenübergabe nach Mitternacht (wechseln der Daten heute und gestern) der Temperaturen:
Wetterdatenübergabe.jpg
Jetzt sollte alles so Funktionieren, wie ich es mir gewünscht habe! :D
Großes Dankeschön noch mal an alle, die mir hier geholfen haben! Ihr seid Spitze!
Die von mir hier Veröffentlichten Rechtschreib- und Grammatikfehler können von jedem, der sie findet, behalten, abgeändert und / oder weiterverwendet werden! :lol:

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

Re: Versenden festgelegter Variablen per Mail

Beitrag von MichaelN » 08.02.2022, 17:24

Und wenn du dir jetzt noch angewöhnst Systemvariablen richtig referenziert anzusprechen, dann brauchst du auch keine angst vor Namensgleichheit haben :

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("sysvarname").State(Daten);
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 +++

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

Re: Versenden festgelegter Variablen per Mail

Beitrag von alchy » 08.02.2022, 21:26

Rohrzange hat geschrieben:
08.02.2022, 17:08
Hier nochmals Danke an alchy für den Starttip! ps.: ja, ich fand den Weg besser als ein Fertiges Script, so konnte ich wieder etwas lernen!
In deinem Fehlerprotokoll steht ja das Problem aufgeführt mit den Sonderzeichen.
Ein ewiges Thema, aber hier gibt es ja auch genug User die angeblich keine Probleme mit Sonderzeichen haben.
Interessant wäre es gewesen, wenn die Anordnung anders gewesen wäre.
Da jedoch Außentemperatur Max die erste Variable war hast du überall null erhalten.
Das soll ein Tipp sein. Erhältst du null dann ist mit der Variable oberhalb der null ein Problem.


Die Umrechnung von Minuten in Stunden hätte auch mit deinem selber "umgebastelten " Script funktioniert, wenn du statt einer Systemvariable Typ Zahl eine Typ Zeichenkette benutzt hättest für Sonnenschein heute.
Leider gibt das wiederum keinen Eintrag ins Fehlerprotokoll, wenn ich mich recht erinnere. Was man als Bug bezeichnen könnte. :roll:

BTW. Du hast auch noch andere Scriptprobleme wenn ich mir dein Fehlerprotokoll so anschaue.
Aber vielleicht waren das nur "Spielereien" und keine Scripte die im produktiven Einsatz sind.

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
Rohrzange
Beiträge: 23
Registriert: 01.11.2021, 21:04
System: CCU und Access Point
Wohnort: 06188 Landsberg
Hat sich bedankt: 6 Mal

Re: Versenden festgelegter Variablen per Mail

Beitrag von Rohrzange » 08.02.2022, 22:03

alchy hat geschrieben:
08.02.2022, 21:26
Du hast auch noch andere Scriptprobleme wenn ich mir dein Fehlerprotokoll so anschaue.
Aber vielleicht waren das nur "Spielereien" und keine Scripte die im produktiven Einsatz sind.
Da war ich gestern Abend auch drüber gestolpert, als ich in das Protokoll geschaut habe. Da aber alles soweit lief (außer die Probleme von gestern) habe ich das erst mal als gegeben hingenommen. Ich bin ja noch ein paar Tage Krank, da nehme ich mir die Zeit und versuche mal die Probleme aus dem Protokoll zu eroieren. Wenn ich nicht weiter komme, kann ich ja hier wieder ganz lieb Fragen.
Jetzt gehe ich erst mal in die Federn. :D
Die von mir hier Veröffentlichten Rechtschreib- und Grammatikfehler können von jedem, der sie findet, behalten, abgeändert und / oder weiterverwendet werden! :lol:

Antworten

Zurück zu „Sonstige Addons“