Script für Abfrage angelassener Lichter funktioniert nicht..

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
spooky82
Beiträge: 5
Registriert: 27.12.2017, 21:07

Script für Abfrage angelassener Lichter funktioniert nicht..

Beitrag von spooky82 » 19.05.2018, 11:32

Hallo zusammen,

mit großer Hilfe aus dem Forum, habe ich mir vor ca. einem halben Jahr ein Script zusammengebastelt, dass bei Abwesenheit prüft, ob noch Lichter an sind, die eingeschalteten Licher in einen String packt und diesen String per PushOver an mein Handy schickt.

Nun habe ich festgestellt, dass die Pushnachricht zwar rausgeht, jedoch der String leer ist, also nicht mit den Namen der eingeschalteten Lichter befüllt wird.

Ich nutze eine CCU 2.

Für jede Hilfe bin ich Euch sehr dankbar.

Das Bild des Programms ist angehängt.
Mein Code:

Code: Alles auswählen

!Ist noch Licht an?...Pushover
!------------------------------

var gLicht = dom.GetObject("Lichter");
string i;
string list = "Licht an: ";
integer cnton;
integer Anzahl;
integer lastLight;

if (gLicht) 
{
	foreach(i, gLicht.EnumIDs()) 
	{
  		var item = dom.GetObject(i);
      	var levl = item.DPByHssDP('LEVEL');
      	if ((levl) && (levl.Value()>0)) 
      	{
      		list=list + item.Name() + ",";
       		cnton=cnton+1;
      	}

      	var stat = item.DPByHssDP('STATE');
      	if ((stat) && (stat.Value()>0)) 
      	{
			list=list + item.Name() + ",";
			cnton=cnton+1;
      	}
	}
}

!Pushover Teil
!--------------------

!__Pushover Keys
string po_api_user="XXX";
string po_api_token="YYY";

!__Nachricht
string po_title="Licht noch an...";
string po_message=list;
string po_sound="pushover";
string po_priority="0";

!___Nur benoetigt wenn Prioritaet auf Emergency (2) gesetzt ist
string po_retry="30";
string po_expires="3600";

!___Erlaeuterungen
! Sounds: pushover, bike, bugle, cashregister, classical, cosmic, falling, gamelan, incoming, intermission, magic, mechanical, pianobar, siren, spacealarm, tugboat, alien, climb, persistent, echo, updown, none
!Prioritaeten: 0=Normal; 1=High (AudioVibration auch waehrend quiet hour); 2=Emergency (Meldung Muss bestätigt werden, solange sound/Vibration); -1=Low ; -2=Lowest
! Bei Prio 2: po_retry gibt an (in sekunden), wie hauefig eine Nachricht vom Server geschickt wird (z.B. alle 30s)
! Bei Prio 2: po_expires gibt an (in Sekunden), wie lange nachrichten geschickt werden sollen. Bestätigt der User, stoppt die Benachrichtigung. Beispiel: Alle 30 sekunden wird eine Nachricht geschickt, das passiert eine Stunde lang (1 Stunde = 3600 sekunden).

!	Ä wird ersetzt durch %C3%84
!	ä  wird ersetzt durch %C3%A4
!	Ö wird ersetzt durch %C3%96
!	ö wird ersetzt durch %C3%B6
!	Ü wird ersetzt durch %C3%9C
!	ü wird ersetzt durch %C3%BC



!------ NICHT MODIFIZIEREN-------
string po_request;
if(po_priority=="2"){
po_request="/usr/local/addons/cuxd/curl -X POST -k -H \"Content-Type: application/x-www-form-urlencoded\" -d \"token=" # po_api_token # "&user=" # po_api_user # "&title=" # po_title # "&priority="# po_priority # "&sound=" # po_sound # "&retry="# po_retry # "&expire=" # po_expires # "&message=" # po_message # "\" https://api.pushover.net/1/messages.json";
}
else{
po_request="/usr/local/addons/cuxd/curl -X POST -k -H \"Content-Type: application/x-www-form-urlencoded\" -d \"token=" # po_api_token # "&user=" # po_api_user # "&title=" # po_title # "&priority="# po_priority # "&sound=" # po_sound # "&message=" # po_message # "\" https://api.pushover.net/1/messages.json";
}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(po_request);


Dateianhänge
Screen Shot 2018-05-19 at 11.30.32.png

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

Re: Script für Abfrage angelassener Lichter funktioniert nic

Beitrag von alchy » 20.05.2018, 22:02

spooky82 hat geschrieben:jedoch der String leer ist
Das Script sollte ja mindestens als Nachricht:

Code: Alles auswählen

Licht an: 
übermitteln. Und zwar egal, ob was wirklich noch irgendwas im durchsuchten Object an ist.
Selbst wenn es das Object mit Namen Lichter nicht gibt, sollte diese Nachricht übermittelt werden zur Laufzeit des Scriptes.


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.

Antworten

Zurück zu „HomeMatic allgemein“