Zeitdurchsage mit MP3 Funkgong

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von Herbert_Testmann » 19.10.2016, 09:50

Daimler hat geschrieben:
Herbert_Testmann hat geschrieben:2. kann man(n) so etwas nicht als PN schreiben?
Selbstverständlich - könnte man(n) / ich das - aber wieso?
Ist doch kein 'versteckungswerter' Einwand. :shock:
OT
Es interessiert aber die anderen User nicht. Und muss nicht im Forum aus diskutiert werden, so wie hier grade.
Es sei denn, Du möchtest im richtigen Bereich des Forums ein neues Thema "meine Signatur ist länger als Deine" auf machen?
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

casametti
Beiträge: 213
Registriert: 24.03.2013, 14:20
Wohnort: Weilburg
Hat sich bedankt: 2 Mal

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von casametti » 19.10.2016, 21:16

Besser? :)
CCU2 mit Firmware 2.59.7
361 Kanäle in 123 HM-Geräten :
4 CUxD-Kanäle in 4 CUxD-Geräten:

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von Gluehwurm » 19.10.2016, 21:34

Herbert_Testmann hat geschrieben:Es sei denn, Du möchtest im richtigen Bereich des Forums ein neues Thema "meine Signatur ist länger als Deine" auf machen?
Das Thema gab es schon, wenn ich mich recht erinnere, sogar wegen der gleichen Signatur. Hatte aber nicht lange gehalten. :wink:

Gruß
Bruno

andyb
Beiträge: 156
Registriert: 16.11.2014, 08:09

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von andyb » 30.01.2017, 17:39

Hallo Könner,

mag mir jemand helfen :?
So sieht mein Script für die Angase bisher aus

Code: Alles auswählen

string gongcmd = "1,1,108000";

integer stunde=system.Date("%H").ToInteger();
integer minute=system.Date("%M").ToInteger();

! Es ist ...
gongcmd = gongcmd # ",093";

! ... Stunden ... Uhr ...
gongcmd = gongcmd # "," # (stunde+100).ToString() # ",094";

! Minuten 
gongcmd = gongcmd # "," # (minute+100).ToString();

! Die Aussentemperatur beträgt ...
gongcmd = gongcmd # ",095";
var atemp = dom.GetObject("BidCos-RF.LEQ0029551:1.TEMPERATURE");

real thetemp = atemp.State();

if ( thetemp < 0 ) 
{
     ! minus 
     gongcmd = gongcmd # ",099";
     thetemp = -1.0 * thetemp;
}

integer thetemp2 = 100+(thetemp+0.5).ToInteger();
gongcmd = gongcmd # "," # thetemp2.ToString() # ",092";



dom.GetObject("BidCos-RF.LEQ1003540:2.SUBMIT").State( gongcmd );
Jetzt möchte ich es gerne erweitern, es sollen 4 Systemvariablen abgefragt werden und jeweils wenn wahr, dem String die entsprechende Datei hinzugefügt werdenhinzugefügt werden.
Wie müssten den die Zeilen aussehen?

"IST-Abfall-Blau-Morgen" -> 062
"IST-Abfall-Gelb-Morgen" -> 064
etc

Benutzeravatar
papi
Beiträge: 371
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von papi » 30.01.2017, 20:46

Dafür brauchst Du kein Skript.

Bedingung: Wenn...
Täglich um 18:00 Uhr beginnend am 30.01.2017
UND
IST-Abfall-Blau-Morgen bei WAHR

Aktivität: Dann... Gong PARAMETER

andyb
Beiträge: 156
Registriert: 16.11.2014, 08:09

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von andyb » 31.01.2017, 07:50

So habe ich es im Moment.
Aber die Ansage soll zusammen mit der anderen erfolgen und so wie es jetzt ist krieg ich es mit der Pause nicht in Griff.
In einem Stück klingt besser

Gesendet von meinem SM-T800 mit Tapatalk

echicor
Beiträge: 42
Registriert: 24.09.2016, 06:45
Wohnort: Bad Zwischenahn

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von echicor » 18.02.2017, 06:48

Hallo zusammen,

erstmal vielen Dank für das Script - der Teil mit der Uhrzeit läuft bestens ;-)

Allerdings habe ich ein Problem mit der Temperatur-Ansage. Diese läuft bei nicht. Folgendes Script verwende ich:

Code: Alles auswählen

!Quelle: http://homematic-forum.de/forum/viewtopic.php?f=31&t=9977&sid=44bf6a29255656da3e33e742f7c91668&start=20
string gongcmd = "1,1,108000,4,6";

integer stunde=system.Date("%H").ToInteger();
integer minute=system.Date("%M").ToInteger();

! Es ist ...
gongcmd = gongcmd # ",13";

! ... Stunden ... Uhr ...
gongcmd = gongcmd # "," # (stunde+100).ToString() # ",14";

! Minuten
gongcmd = gongcmd # "," # (minute+100).ToString();

! Die Aussentemperatur beträgt ...
gongcmd = gongcmd # ",17";
var atemp = dom.GetObject("Wetter_Temperatur").Value();

real thetemp = atemp.State();

if ( thetemp < 0 ) 
{
     ! minus 
     gongcmd = gongcmd # ",15";
     thetemp = -1.0 * thetemp;
}

integer thetemp2 = 100+(thetemp+0.5).ToInteger();
gongcmd = gongcmd # "," # thetemp2.ToString() # ",16";

dom.GetObject("BidCos-RF.NEQ0772703:2.SUBMIT").State( gongcmd );
Bitte nicht wundern - meine Dateien haben eine andere Reihenfolge.

So, wenn ich das Script durch den Scripttester laufen lasse kommt folgende Fehlermeldung:

Code: Alles auswählen

Error 1 at row 20 col 22 near ^.State();

if ( thetemp < 0 ) 
{
     ! minus 
     gongcmd = gongcmd # ",15";
 
Parse following code failed:
!Quelle: http://homematic-forum.de/forum/viewtopic.php?f=31&t=9977&sid=44bf6a29255656da3e33e742f7c91668&start=20
string gongcmd = "1,1,108000,4,6";

integer stunde=system.Date("%H").ToInteger();
integer minute=system.Date("%M").ToInteger();

! Es ist ...
gongcmd = gongcmd # ",13";

! ... Stunden ... Uhr ...
gongcmd = gongcmd # "," # (stunde+100).ToString() # ",14";

! Minuten
gongcmd = gongcmd # "," # (minute+100).ToString();

! Die Aussentemperatur beträgt ...
gongcmd = gongcmd # ",17";
var atemp = dom.GetObject("Wetter_Temperatur").Value();

real thetemp = atemp.State();

if ( thetemp < 0 ) 
{
     ! minus 
     gongcmd = gongcmd # ",15";
     thetemp = -1.0 * thetemp;
}

integer thetemp2 = 100+(thetemp+0.5).ToInteger();
gongcmd = gongcmd # "," # thetemp2.ToString() # ",16";

dom.GetObject("BidCos-RF.NEQ0772703:2.SUBMIT").State( gongcmd );
An dieser Stelle komme ich nicht weiter. Meine Außentemperatur liegt der Systemvariable "Wetter_Temperatur" da ich keinen Wettersensor habe (abgerufen wird das über Wonderground).

Hoffe mir kann einer Helfen, damit auch die Temperatur angesagt werden kann ;-)

LG
echicor

BadenPower

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von BadenPower » 18.02.2017, 21:21

echicor hat geschrieben:So, wenn ich das Script durch den Scripttester laufen lasse kommt folgende Fehlermeldung:
So, dann schauen wir uns doch einfach einmal die Zeile 20 an:

Code: Alles auswählen

real thetemp = atemp.State();
Und jetzt schauen wir einmal, was denn "atemp" für eine Variable ist.
Das finden wir in Zeile 18:

Code: Alles auswählen

var atemp = dom.GetObject("Wetter_Temperatur").Value();
In "atemp" wird also schon der Wert der Systemvariable "Wetter_Temperatur"gespeichert, welcher durch .Value() ausgelesen wird und nicht nur das Objekt.

Daher muss die Zeile 20 so lauten:

Code: Alles auswählen

real thetemp = atemp;
Den Rest des Codes habe ich mir nicht mehr angeschaut, da es mich beim Lesen schon schaudert. :mrgreen:

echicor
Beiträge: 42
Registriert: 24.09.2016, 06:45
Wohnort: Bad Zwischenahn

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von echicor » 19.02.2017, 20:45

Hallo BadenPower,

zunächst Danke für die Unterstützung.

Mit der von Dir vorgeschlagenen Änderung sieht der Code nun folgend aus:

Code: Alles auswählen

!Quelle: http://homematic-forum.de/forum/viewtopic.php?f=31&t=9977&sid=44bf6a29255656da3e33e742f7c91668&start=20
string gongcmd = "1,1,108000,4,6";

integer stunde=system.Date("%H").ToInteger();
integer minute=system.Date("%M").ToInteger();

! Es ist ...
gongcmd = gongcmd # ",13";

! ... Stunden ... Uhr ...
gongcmd = gongcmd # "," # (stunde+100).ToString() # ",14";

! Minuten
gongcmd = gongcmd # "," # (minute+100).ToString();

! Die Aussentemperatur beträgt ...
gongcmd = gongcmd # ",17";
var atemp = dom.GetObject("Wetter_Temperatur").Value();

real thetemp = atemp;

if ( thetemp < 0 ) 
{
     ! minus 
     gongcmd = gongcmd # ",15";
     thetemp = -1.0 * thetemp;
}

integer thetemp2 = 100+(thetemp+0.5).ToInteger();
gongcmd = gongcmd # "," # thetemp2.ToString() # ",16";

dom.GetObject("BidCos-RF.NEQ0772703:2.SUBMIT").State( gongcmd );
Der Fehler von oben ist nun weg, allerdings wird abermals für Zeite 20 eine Fehler angezeigt:

Code: Alles auswählen

Error 1 at row 20 col 22 near ^;

if ( thetemp < 0 ) 
{
     ! minus 
     gongcmd = gongcmd # ",15";
     thet
Wieso schauderts Dir bei dem Code? ;-)
Solltest Du eine Version des Codes haben wären wir alle sicher daran interessiert ;-)

Danke und LG
echicor

BadenPower

Re: Zeitdurchsage mit MP3 Funkgong

Beitrag von BadenPower » 20.02.2017, 09:45

echicor hat geschrieben:Der Fehler von oben ist nun weg, allerdings wird abermals für Zeite 20 eine Fehler angezeigt:
Der Code muss so funktionieren, vorausgesetzt, dass die Systemvariable "Wetter_Temperatur" auch existiert und tatsächlich so heißt und vom Typ Zahl ist und auf der CCU kein anderes Objekt "Wetter_Temperatur" heißt.

Führe einmal diesen Code aus und Poste das Ergebnis.

Code: Alles auswählen

object lObj = dom.GetObject("Wetter_Temperatur");
if(lObj)
{
  WriteLine(lObj.Type());
}
else
{
  WriteLine("kein Objekt");
}

Nimm auch einmal das Skript zum Variablezählen aus meiner Signatur und poste das Ergebnis.
echicor hat geschrieben:Wieso schauderts Dir bei dem Code? ;-)
Dies verate ich Dir, wenn der Fehler gefunden ist.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“