EMail Addon - leichte Script-Verständnis-Probleme ;-)

diverse Zusatzsoftware

Moderator: Co-Administratoren

Electronixs
Beiträge: 29
Registriert: 07.05.2016, 08:24
Hat sich bedankt: 8 Mal

EMail Addon - leichte Script-Verständnis-Probleme ;-)

Beitrag von Electronixs » 13.05.2016, 21:56

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. :-(
Screenshot1.jpg
Screenshot2.jpg
Screenshot2.jpg (23.42 KiB) 4146 mal betrachtet
Screenshot3.jpg
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

alchy
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 ;-)

Beitrag von alchy » 13.05.2016, 22:19

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:

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)
Natürlich kannst du den Datenpunkt auch über den Namen des Kanales abfragen.

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)
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. :mrgreen:

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.

BadenPower

Re: Leichte Script-Verständnis-Probleme ;-)

Beitrag von BadenPower » 13.05.2016, 22:22

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

Electronixs
Beiträge: 29
Registriert: 07.05.2016, 08:24
Hat sich bedankt: 8 Mal

Re: Leichte Script-Verständnis-Probleme ;-)

Beitrag von Electronixs » 14.05.2016, 00:50

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)
und der Screenshot des eMails:
Screenshot5.jpg
Screenshot5.jpg (3.37 KiB) 4081 mal betrachtet
@BadenPower:
Bist Du sicher dass "Power" hier falsch ist ?
Screenshot4.jpg
Grüße
Electronixs

alchy
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 ;-)

Beitrag von alchy » 14.05.2016, 09:04

HMIP-RF. ist nicht das, was ich geschrieben habe. :twisted:
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. :cry: 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

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.

Electronixs
Beiträge: 29
Registriert: 07.05.2016, 08:24
Hat sich bedankt: 8 Mal

Re: Leichte Script-Verständnis-Probleme ;-)

Beitrag von Electronixs » 14.05.2016, 10:49

@ 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

alchy
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 ;-)

Beitrag von alchy » 14.05.2016, 13:01

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. :P
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. :lol: 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.

Electronixs
Beiträge: 29
Registriert: 07.05.2016, 08:24
Hat sich bedankt: 8 Mal

Re: EMail Addon - leichte Script-Verständnis-Probleme ;-)

Beitrag von Electronixs » 21.05.2016, 08:24

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:
Screenshot1.jpg
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);
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.
Screenshot2.jpg
Screenshot2.jpg (17.54 KiB) 3872 mal betrachtet
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
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

alchy
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 ;-)

Beitrag von alchy » 21.05.2016, 22:09

die Variable sollte so gehen.
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]
bringt dir Datum und Uhrzeit in die Variable $Datum

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.

Mugel
Beiträge: 11
Registriert: 02.01.2017, 09:45
Wohnort: 92266

Re: EMail Addon - leichte Script-Verständnis-Probleme ;-)

Beitrag von Mugel » 04.01.2017, 19:47

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:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 04", &stdout, &stderr);
In der TCL ist folgendes drin:

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
Im Email-Postfach landet dann:

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

Antworten

Zurück zu „Sonstige Addons“