EMail Addon - leichte Script-Verständnis-Probleme ;-)
Moderator: Co-Administratoren
-
- Beiträge: 29
- Registriert: 07.05.2016, 08:24
- Hat sich bedankt: 8 Mal
EMail Addon - leichte Script-Verständnis-Probleme ;-)
Hab mich jetzt mehr als 2 Tage mit dem Thema auseinandergesetzt und studenlang die Beispielprogramme hier im Forum studiert (kein Witz), aber ich komme einfach nicht weiter. *seufz*
Ich möchte einen Wert aus einer Schalt-und Messsteckdose auslesen und diesen per eMail verschicken.
Das Verschicken der eMail klappt problemlos, aber ich kriege keinen Wert, immer nur "Null".
Was mache ich falsch ?
Ist bestimmt irgend so ein blöder Anfängerfehler, aber ich komm nicht dahinter.
Grüße
Electronixs
Ich möchte einen Wert aus einer Schalt-und Messsteckdose auslesen und diesen per eMail verschicken.
Das Verschicken der eMail klappt problemlos, aber ich kriege keinen Wert, immer nur "Null".
Was mache ich falsch ?
Ist bestimmt irgend so ein blöder Anfängerfehler, aber ich komm nicht dahinter.
Grüße
Electronixs
Zuletzt geändert von alchy am 14.05.2016, 18:20, insgesamt 1-mal geändert.
Grund: Titel geändert, jetzt mit Verweis auf Mailaddon
Grund: Titel geändert, jetzt mit Verweis auf Mailaddon
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Leichte Script-Verständnis-Probleme ;-)
Bitte HIER lesen
Den Datenpunkt gibt es nicht, weil du es verkehrt geschrieben hast. Deshalb erhältst du immer null als Ausgabe
Richtig sollte es so sein über die Serial:
Natürlich kannst du den Datenpunkt auch über den Namen des Kanales abfragen.
Obiger Link sollte dir weitere Infos bringen.
Es sieht bei dir verwirrend aus, weil du den Namen auf Standard gelassen hast.
PS: Du hast deine Frage schon fast perfekt gestellt.
Noch den Code statt als Bild noch per Copy & Paste hier einfügen und ich wäre begeistert.
Den Datenpunkt gibt es nicht, weil du es verkehrt geschrieben hast. Deshalb erhältst du immer null als Ausgabe
Richtig sollte es so sein über die Serial:
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject("HmIP-RF.0001D3C990BEB6:6.POWER").Value();
} ]
set v1 $values(v1)
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject("HMIP-PSM0001D3C990BEB6:6").DPByHssDP("POWER").Value();
} ]
set v1 $values(v1)
Es sieht bei dir verwirrend aus, weil du den Namen auf Standard gelassen hast.
PS: Du hast deine Frage schon fast perfekt gestellt.
Noch den Code statt als Bild noch per Copy & Paste hier einfügen und ich wäre begeistert.
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.
Re: Leichte Script-Verständnis-Probleme ;-)
Ohne groß in die Doku zu schauen und nur der Fehler, welcher mir gleich ins Auge gesprungen ist:
Der Datenpunkt des Kanal6 heißt definitiv nicht "Power".
.
[EDIT] zu langsam
Der Datenpunkt des Kanal6 heißt definitiv nicht "Power".
.
[EDIT] zu langsam
-
- Beiträge: 29
- Registriert: 07.05.2016, 08:24
- Hat sich bedankt: 8 Mal
Re: Leichte Script-Verständnis-Probleme ;-)
Den Datenpunkt gibt es nicht, weil du es verkehrt geschrieben hast. Deshalb erhältst du immer null als Ausgabe
Richtig sollte es so sein über die Serial:
Großes Dankeschön an Alchy, prinzipiell erscheint mir das Ganze jetzt etwas logischer, obwohl es funktioniert noch immer nicht.
Hab jetzt mit den verschiedenen Datenpunkten rumexperimentiert und auch bewusst jenen mit der Frequenz genommen obwohl ioch den gar nicht brauche da er in dem Beispiel in dem Link verwendet wurde.
Alleine es klappt noch immer nicht.
Ich programiere jetzt schon seit über 20 Jahren Microcontroller in Maschinenspache aber dafür bin ich scheinbar echt zu blöde. *amkopfkratz*
Hier der Code:
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject("HMIP-RF.0001D3C990BEB6:6.POWER").Value();
var v2 = dom.GetObject("HmIP-RF.0001D3C990BEB6:6.FREQUENCY").Value();
} ]
set v1 $values(v1)
set v2 $values(v2)
Bist Du sicher dass "Power" hier falsch ist ? Grüße
Electronixs
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Leichte Script-Verständnis-Probleme ;-)
HMIP-RF. ist nicht das, was ich geschrieben habe.
Casesensitiv bitte.
Ich habe doch extra alles von deinem Bild abgeschrieben, warum nimmst du nicht gleich das?
Ich denke mal, mehr kann ich nicht machen. Wahrscheinlich ist es eher wieder zu viel.
Und nebenbei hast du noch einen weiteren Beweis dessen angetreten, was ich schon zig mal gepostet habe.
Obwohl du in deiner Abfrage des Frequenz Datenpunktes den Fehler nicht eingebaut hast, bekommst trotzdem
auch dort eine null um die Ohren gehauen. Abfrage in der v1 Zeile falsch, ab dort alles null obwohl richtig geschrieben.
Aber das nur nebenbei zur Ergänzung.
Was die Frage an Badenpower angeht, da ist es das selbe Problem
Power ist eben genaus sowenig richtig, da eben POWER verlangt wird.
Alchy
Casesensitiv bitte.
Ich habe doch extra alles von deinem Bild abgeschrieben, warum nimmst du nicht gleich das?
Ich denke mal, mehr kann ich nicht machen. Wahrscheinlich ist es eher wieder zu viel.
Und nebenbei hast du noch einen weiteren Beweis dessen angetreten, was ich schon zig mal gepostet habe.
Obwohl du in deiner Abfrage des Frequenz Datenpunktes den Fehler nicht eingebaut hast, bekommst trotzdem
auch dort eine null um die Ohren gehauen. Abfrage in der v1 Zeile falsch, ab dort alles null obwohl richtig geschrieben.
Aber das nur nebenbei zur Ergänzung.
Was die Frage an Badenpower angeht, da ist es das selbe Problem
Power ist eben genaus sowenig richtig, da eben POWER verlangt wird.
Alchy
Zuletzt geändert von alchy am 14.05.2016, 09:22, insgesamt 2-mal geändert.
Grund: Colortag verschoben um es deutlicher zu machen
Grund: Colortag verschoben um es deutlicher zu machen
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.
-
- Beiträge: 29
- Registriert: 07.05.2016, 08:24
- Hat sich bedankt: 8 Mal
Re: Leichte Script-Verständnis-Probleme ;-)
@ alchy
Jaja ist ja schon gut. Kein Grund Dich aufzuregen.
Ich bin halt ein blutiger Anfänger auf dem Gebiet HomeMatic und die CaseSensivität war mir (leider) nicht bewusst, sorry und Asche über mein Haupt , ich gelobe Besserung.
Übrigens weiß ich mittlerweile auch wie das zuszande gekommen ist.
Ich hab mämlich in der Weboberfläche der CCU ==> Erstes Bild im ersten Posting in diesem Thread, die Seriennummer markiert und über die Zwischenablage kopiert und im Script eingefügt.
Wer bitteschön kann den ahnen das die dort falsch geschrieben ist (HMIP anstatt HmIP).
(Meinem 68HC12 Assembler ist übrigens völlig Wurscht ob ich "CPHX #$3CE" oder "cphx #$3ce" schreibe.)
Und auch die Tatsache, dass der Teil rechts neben dem Bindestrich, konkret also "PSM" mit "RF" ersetzt werden muss, konnte ich nirgends in der Dokumentation beschrieben finden.
Ist das eigentlich bei allen HomeMatic Komponeten so ?
Auf jeden Fal möchte ich allen hier und im speziellen auch alchy danken die hier ihre Zeit opfern und uns Newbees die Anfängerfehler "austreiben".
Eventuell kommt da noch ein wenig Nachsicht für unsere anfängliche "Unfähigkeit" dazu, damit wir nicht immer gleich ein schlechtes Gewissen haben müssen, wenn wir Fehler machen.
In diesem Sinne, vielen Dank nochmal.
Grüße
Electronixs
Jaja ist ja schon gut. Kein Grund Dich aufzuregen.
Ich bin halt ein blutiger Anfänger auf dem Gebiet HomeMatic und die CaseSensivität war mir (leider) nicht bewusst, sorry und Asche über mein Haupt , ich gelobe Besserung.
Übrigens weiß ich mittlerweile auch wie das zuszande gekommen ist.
Ich hab mämlich in der Weboberfläche der CCU ==> Erstes Bild im ersten Posting in diesem Thread, die Seriennummer markiert und über die Zwischenablage kopiert und im Script eingefügt.
Wer bitteschön kann den ahnen das die dort falsch geschrieben ist (HMIP anstatt HmIP).
(Meinem 68HC12 Assembler ist übrigens völlig Wurscht ob ich "CPHX #$3CE" oder "cphx #$3ce" schreibe.)
Und auch die Tatsache, dass der Teil rechts neben dem Bindestrich, konkret also "PSM" mit "RF" ersetzt werden muss, konnte ich nirgends in der Dokumentation beschrieben finden.
Ist das eigentlich bei allen HomeMatic Komponeten so ?
Auf jeden Fal möchte ich allen hier und im speziellen auch alchy danken die hier ihre Zeit opfern und uns Newbees die Anfängerfehler "austreiben".
Eventuell kommt da noch ein wenig Nachsicht für unsere anfängliche "Unfähigkeit" dazu, damit wir nicht immer gleich ein schlechtes Gewissen haben müssen, wenn wir Fehler machen.
In diesem Sinne, vielen Dank nochmal.
Grüße
Electronixs
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Leichte Script-Verständnis-Probleme ;-)
Ich mich aufgeregt? Hab ich nicht.
Aber ich hatte dir alles mundgerecht gepostet (was auch schon kritisiert wurde) und *IMHO* auch hinlänglich erklärt.
Und dann erwarte ich auch, das Du es so umsetzt.
Da bin ich noch weit von Aufregen entfernt. Leider passiert das eben häufiger, das Anleitungen nicht so umgesetzt werden, wie sie geschrieben wurden.
Ich hatte dir oben geschrieben, das es bei dir verwirrend aussieht, da der Name FAST wie die Serial aussieht.
Warum standardmäßig solche Eventual-Probleme eingebaut werden, musst du die Programmierer fragen. Du hast einfach Teile aus dem Namen des Kanales kopiert. In der Abfrage wird aber bei Abfrage eines Datenpunktes über die Serial der Adaptername verlangt. (siehe schön bunt gemacht im verlinktem Thread)
Das die sich ähnlich sehen ist ein Problem, was ich nicht lösen kann.
Tipp: Benenn die Kanäle nach einem Schema was dir passt.
Spätestens bei Benutzung einer anderen Visualisierung und/oder vielen Aktoren macht das dann auch Sinn. Wenn dir eine APP anbietet den Kanal HMIP-RF.0001D3C990BEB6:6 zu schalten, brauchst du ein gutes Gedächtnis, um welchen Kanal es sich handelt.
Aber dabei beachten, das kein Objekt wie ein anderes Objekt heißen darf!
Ich weiß ja selber auch, das nicht jedes System casesensitiv arbeitet. Es interessiert aber wie ein Sack Reis - die CCU macht es so. Wie ich oben schrieb, wenn du eine null als Ausgabe erhältst liegt es daran, daß es den Datenpunkt SO nicht gibt, wie du ihn geschrieben hast. Ob es ein Zahlendreher ist, oder ein falsch geschriebener Adapter, oder u.U. auch ein doppelt vorhandenes Objekt, spielt keine Rolle.
Nur sind manche Schreibfehler auch nach dem xten Mal Lesen nicht offensichtlich.
Ich habe auch eine Weile gebraucht, deinen Fehler auf dem Handy zu entdecken.
Ob das alles so dokumentiert ist, kann ich dir nicht sagen. Da aber so mancher seine Probleme hat, versuchte ich ja, es als Hilfe zu dokumentieren.
Alchy
Aber ich hatte dir alles mundgerecht gepostet (was auch schon kritisiert wurde) und *IMHO* auch hinlänglich erklärt.
Und dann erwarte ich auch, das Du es so umsetzt.
Da bin ich noch weit von Aufregen entfernt. Leider passiert das eben häufiger, das Anleitungen nicht so umgesetzt werden, wie sie geschrieben wurden.
Ich hatte dir oben geschrieben, das es bei dir verwirrend aussieht, da der Name FAST wie die Serial aussieht.
Warum standardmäßig solche Eventual-Probleme eingebaut werden, musst du die Programmierer fragen. Du hast einfach Teile aus dem Namen des Kanales kopiert. In der Abfrage wird aber bei Abfrage eines Datenpunktes über die Serial der Adaptername verlangt. (siehe schön bunt gemacht im verlinktem Thread)
Das die sich ähnlich sehen ist ein Problem, was ich nicht lösen kann.
Tipp: Benenn die Kanäle nach einem Schema was dir passt.
Spätestens bei Benutzung einer anderen Visualisierung und/oder vielen Aktoren macht das dann auch Sinn. Wenn dir eine APP anbietet den Kanal HMIP-RF.0001D3C990BEB6:6 zu schalten, brauchst du ein gutes Gedächtnis, um welchen Kanal es sich handelt.
Aber dabei beachten, das kein Objekt wie ein anderes Objekt heißen darf!
Ich weiß ja selber auch, das nicht jedes System casesensitiv arbeitet. Es interessiert aber wie ein Sack Reis - die CCU macht es so. Wie ich oben schrieb, wenn du eine null als Ausgabe erhältst liegt es daran, daß es den Datenpunkt SO nicht gibt, wie du ihn geschrieben hast. Ob es ein Zahlendreher ist, oder ein falsch geschriebener Adapter, oder u.U. auch ein doppelt vorhandenes Objekt, spielt keine Rolle.
Nur sind manche Schreibfehler auch nach dem xten Mal Lesen nicht offensichtlich.
Ich habe auch eine Weile gebraucht, deinen Fehler auf dem Handy zu entdecken.
Ob das alles so dokumentiert ist, kann ich dir nicht sagen. Da aber so mancher seine Probleme hat, versuchte ich ja, es als Hilfe zu dokumentieren.
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.
-
- Beiträge: 29
- Registriert: 07.05.2016, 08:24
- Hat sich bedankt: 8 Mal
Re: EMail Addon - leichte Script-Verständnis-Probleme ;-)
Noch ne (sicher ziemlich simple) Aufgabe bei deren Realisierung ich de facto gescheitert bin:
Also wenn ich in dem Mail jetzt auch noch den Wert einer Variablen (sagen wir es ist ein Zählvariable) mitübertragen haben möchte, wie müsste ich da vorgehen ?
Was ich gemacht habe ist eine Systemvariable mit dem Namen "Counter" anzulegen: Dann habe ich dieses Script erstellt (besser gesagt aus einem anderem Beitrag hier im Forum kopiert)
und es (im Moment zu Testzwecken) mittels periodischen Timer getriggert.
Später soll das dann über einen Bewegungsmelder erfolgen.
Bis hierher scheint auch alles zu funzen denn er Zähler wird bei jedem periodischen Auslösen korrekt inkrementiert. Woran ich bis dato scheitere (trotz der Tatsache das ich änhliche Beispiele hier im Forum gefunden habe)
ist der Trick wie man den Inhalt der Variablen in's Mail kriegt.
Die Defintion im TCL bzw. eMail ist höchst wahrscheinlich falsch.
Hier mal wie ich es probiert habe.
Hat irgendjemand ne Idee wo ich hier den Fehler eingebaut habe ?
Und die zweite Frage:
Einen aktuellen Zeitstempel müsste doch mit "system.Date" realisierbar sein, oder ?
Muss man dazu auch extra eine Variable anlegen oder geht das direkt ?
Wenn ja wie ?
Grüße
Electronixs
Also wenn ich in dem Mail jetzt auch noch den Wert einer Variablen (sagen wir es ist ein Zählvariable) mitübertragen haben möchte, wie müsste ich da vorgehen ?
Was ich gemacht habe ist eine Systemvariable mit dem Namen "Counter" anzulegen: Dann habe ich dieses Script erstellt (besser gesagt aus einem anderem Beitrag hier im Forum kopiert)
Code: Alles auswählen
integer n = dom.GetObject("Counter").Value();
dom.GetObject("Counter").State(n+1);
Später soll das dann über einen Bewegungsmelder erfolgen.
Bis hierher scheint auch alles zu funzen denn er Zähler wird bei jedem periodischen Auslösen korrekt inkrementiert. Woran ich bis dato scheitere (trotz der Tatsache das ich änhliche Beispiele hier im Forum gefunden habe)
ist der Trick wie man den Inhalt der Variablen in's Mail kriegt.
Die Defintion im TCL bzw. eMail ist höchst wahrscheinlich falsch.
Hier mal wie ich es probiert habe.
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject("HmIP-RF.0001D3C990BEB6:6.POWER").Value();
var v2 = dom.GetObject("HmIP-RF.0001D3C990BEB6:6.FREQUENCY").Value();
var v3 = dom.GetObject("HmIP-RF.000915698D6231:1.ILLUMINATION").Value();
var v4 = dom.GetObject("Counter").Value();
} ]
set v1 $values(v1)
set v2 $values(v2)
set v3 $values(v3)
set v4 $values(v4)
Code: Alles auswählen
Bewegungsmelder Parterre hat ausgelöst !!!
Leistung Steckdose01: $v1 Watt
Frequenz Steckdose01: $v2 Hertz
Helligkeit Bewegungsmelder01: $v3
Zähler: $v4
Und die zweite Frage:
Einen aktuellen Zeitstempel müsste doch mit "system.Date" realisierbar sein, oder ?
Muss man dazu auch extra eine Variable anlegen oder geht das direkt ?
Wenn ja wie ?
Grüße
Electronixs
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: EMail Addon - leichte Script-Verständnis-Probleme ;-)
die Variable sollte so gehen.
Da du nichts dazu postest, wo dein Problem liegt, lass ich das Raten sein.
in den Tcl Reiter
bringt dir Datum und Uhrzeit in die Variable $Datum
Alchy
Da du nichts dazu postest, wo dein Problem liegt, lass ich das Raten sein.
in den Tcl Reiter
Code: Alles auswählen
set Datum [clock format [clock seconds] -format "%d.%m.%Y %H:%M]
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.
Re: EMail Addon - leichte Script-Verständnis-Probleme ;-)
Hallo,
wollt jetzt kein neuen Beitragn aufmachen, dewegen hänge ich mich mal hier an.
Ich hab auch das Problem das kein Systemvariabel übertragen wird per Email.
Im Programm hab ich folgenden Aufruf-Script:
In der TCL ist folgendes drin:
Wenn ich in der Mail die Wert von $v4 mit einfüge bekomm ich als Email aber nicht den Wert wo im System steht sonder das Wort "null"
So sieht die E-Mail in der Konifg aus:
Im Email-Postfach landet dann:
Die Systemvariable ist gefüllt mit einer Zahl die in moment den Wert 19.20 hat.
Was mach ich falsch?
Danke schon mal
Gruß
Mugel
wollt jetzt kein neuen Beitragn aufmachen, dewegen hänge ich mich mal hier an.
Ich hab auch das Problem das kein Systemvariabel übertragen wird per Email.
Im Programm hab ich folgenden Aufruf-Script:
Code: Alles auswählen
string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 04", &stdout, &stderr);
Code: Alles auswählen
set Datum [clock format [clock seconds] -format "%d.%m.%Y %H:%M"]
load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject("EmailEmpfaenger").Value();
var v2 = dom.GetObject("EmailBetreff").Value();
var v3 = dom.GetObject("EmailText").Value();
var v4 = dom.GetObject("HeizungBetriebsstunden).Value();
} ]
set v1 $values(v1)
set v2 $values(v2)
set v3 $values(v3)
set v4 $values(v4)
Wenn ich in der Mail die Wert von $v4 mit einfüge bekomm ich als Email aber nicht den Wert wo im System steht sonder das Wort "null"
So sieht die E-Mail in der Konifg aus:
Code: Alles auswählen
Hallo,
der Aschebehälter wurde heute $Datum ausgeleert.
$v4
Gruß
Homematic
Code: Alles auswählen
Hallo,
der Aschebehälter wurde heute 04.01.2017 19:34 ausgeleert.
null
Gruß
Homematic
Die Systemvariable ist gefüllt mit einer Zahl die in moment den Wert 19.20 hat.
Was mach ich falsch?
Danke schon mal
Gruß
Mugel