Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
AndiN
Beiträge: 2425
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 10.08.2016, 15:21

Zufallszahl (http://homematic-forum.de/forum/viewtop ... 97#p154366) umgeschrieben von homematic-fan.

Code: Alles auswählen

!Version  2014.06.02 ;  Verfasser :Eugen Stall, auf tmp-Variablen umgeschrieben von Homematic-Fan
!zwei Systemvariablen "random_zahl"  und "random_tp" als Zahl mit Wertebereich -2.0 bis 2.0 anlegen
!Skript speichert  Zufallszahl zwischen 0.0 und 1.0 ungefiltert auf "random_zahl und gemittelt auf "random_tp"
!############################################## 
real tmpA1 = 65536.0 * dom.GetObject("random_zahl").State();
tmpA1 = tmpA1.ToInteger();
if ((tmpA1 <1) || (tmpA1 > 65535)) {tmpA1= 3757;} !um saubere Startposition sicherzustellen
integer tmpB1 = tmpA1;
!##############################################
string tmpC1 = "";
integer tmpD1 ;
integer tmpE1;
!hier wird ein 16bit-Schieberegister mit XOR-Rückkopplungen simuliert
if (tmpA1 > 32767) {tmpC1 = tmpC1 + "1"; tmpA1 = tmpA1 - 32768; tmpE1 = 1;} else    {tmpC1 = tmpC1 + "0";  tmpE1 = 0;}
tmpD1 = tmpE1;   
if (tmpA1 > 16383) {tmpC1 = tmpC1 + "1"; tmpA1 = tmpA1 - 16384;} else    {tmpC1 = tmpC1 + "0";}
if (tmpA1 > 8191) {tmpC1 = tmpC1 + "1";  tmpA1 = tmpA1 - 8192; tmpE1 = 1;} else    {tmpC1 = tmpC1 + "0"; tmpE1 = 0;}
if ((tmpD1 + tmpE1) ==1) {tmpD1 = 1;} else {tmpD1 = 0;}
if (tmpA1 > 4095) {tmpC1 = tmpC1 + "1"; tmpA1 = tmpA1 - 4096; tmpE1 = 1;} else    {tmpC1 = tmpC1 + "0"; tmpE1 = 0;}
if ((tmpD1 + tmpE1) ==1) {tmpD1 = 1;} else {tmpD1 = 0;}
if (tmpA1 > 2047) {tmpC1 = tmpC1 + "1"; tmpA1 = tmpA1 - 2048 ;} else    {tmpC1 = tmpC1 + "0";}
if (tmpA1 > 1023) {tmpC1 = tmpC1 + "1"; tmpA1 = tmpA1 - 1024 ; tmpE1 = 1;} else    {tmpC1 = tmpC1 + "0"; tmpE1 = 0;}
if ((tmpD1 + tmpE1) ==1) {tmpD1 = 1;} else {tmpD1 = 0;}
!niedrigstes neues bit einschieben
tmpA1 = tmpB1 * 2;
if (tmpA1 > 65535) {tmpA1 = tmpA1 - 65536;}
tmpA1 = tmpA1 + tmpD1;
!auf 1 normieren und auf Systemvariable random_zahl  speichern  ############
tmpA1 = 0.0000152590219* tmpA1;  !zahl / 65536
dom.GetObject("random_zahl").State(tmpA1);
!Mittelwertbildung : der Faktor 0.2 bestimmt die Mittelungsstärke. ###########
!Je kleiner, desto "ruhiger" das Rauschsignal  ########################
real tmpF1 = dom.GetObject("random_tp").State();
tmpF1 =  tmpF1 + (0.2 * (tmpA1 - tmpF1));
dom.GetObject("random_tp").State(tmpF1);
tmpF1 = dom.GetObject("random_tp").State();
!####################################################
Greenhorn

Letzter Reboot: 23.06.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.45.7.20190622, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.1 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
AndiN
Beiträge: 2425
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 10.08.2016, 15:29

Bestimmte Gewerke ausschalten von Alchy

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Räumen/Gewerken/Favoriten (trennen mit \t )
! Ausgabe der Anzahl und Namen der > x Sekunden eingeschalteten Lichter an tts Gerät
! v 0.1 by Alchy
! von AndiN auf tmp-Variablen umgeschrieben v2.0.0 (Stand: 25.11.2015)
! Systemvariable SV_Schwellwert_Lichter_werden_ausgeschaltet") Zahl anlegen und die Minuten angeben wenn ausgeschaltet werden soll. Das Programm kann im Intervall X laufen

string tmpA = "Licht";
var tmpB = (dom.GetObject("SV_Schwellwert_Lichter_werden_ausgeschaltet").State()*60); ! Zeitspanne in Sekunden die nach Einschaltzeitpunkt zur Meldung führen

! Dont touch behind this Line

integer tmpZ=0;
string tmpL;
string tmpM;
string tmpN;
integer tmpO = system.Date("%F %T").ToTime().ToInteger();
integer tmpQ= 0;
foreach (tmpN, tmpA) {
object tmpR = dom.GetObject(""#tmpN#"");
string tmpS;
var tmpT = (tmpB/60).ToInteger() ;
foreach(tmpS, tmpR.EnumUsedIDs()) {
var tmpU = dom.GetObject(tmpS);
if (tmpU.IsTypeOf(OT_CHANNEL)) {
var tmpW = tmpU.HssType();
integer tmpV = tmpU.LastTimestamp().ToInteger();
integer tmpC = tmpO - tmpV;
if ( (tmpW == "SWITCH") && (tmpU.State()) && (tmpC > tmpB) ) {
tmpU.State(0);
tmpZ=tmpZ+1;
}
if ( (tmpW == "DIMMER") && (tmpU.State()) && (tmpC > tmpB) ) {
tmpU.State(0.00);
tmpZ=tmpZ+1;
}
}
}
}

! Dies kann gelöscht werden. Für jemanden der TTS nutzt interessant ;-)
if (tmpZ>0){
string tmpA="'http://IP-Adresse Android Gerät:50000/tts=Es wurden Lichter ausgeschaltet. Diese waren viel zu lange an.'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#tmpA);
}
Greenhorn

Letzter Reboot: 23.06.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.45.7.20190622, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.1 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
AndiN
Beiträge: 2425
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 10.08.2016, 15:33

Hallo zusammen,

da ich befürchte das mit den Skripten auf der ersten Seite wird zu übersichtlich und... dass ich permanent vorne neue Versionen einpflege und irgendwann mal was zerschieße....

ich habe vorne jetzt ein Inhaltsverzeichnis eingepflegt und würde dann einfach dort auf neue Beiträge hier verlinken. So kann jeder seine Skripts pflegen und Änderungen vornehmen. Außerdem ist es wohl übersichtlicher.

Wünsche Euch was

Andi
Greenhorn

Letzter Reboot: 23.06.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.45.7.20190622, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.1 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

chka
Beiträge: 1625
Registriert: 13.02.2012, 20:23

Re: Script Probleme (überarbeitete Skripts)

Beitrag von chka » 10.08.2016, 17:26

JPS hat geschrieben: Das war eher meine Vermutung, weil ich früher sehr häufig zunehmende Probleme mit nicht mehr laufenden Programmen festgestellt habe, nachdem ich Skripte dort getestet hatte. Wenn dies nicht so ist, um so besser. :D
Das Empfinden habe ich leider auch :roll:
Watchdog Watchdog2- CuL V2 868mHz- CuxDemon - PioTek Tracker - Veluxe und Somfy Anbinung- io.Broker aufm ESX 6.5
Keine Support PNs Danke!

Benutzeravatar
JPS
Beiträge: 1019
Registriert: 07.08.2010, 22:51
Kontaktdaten:

Re: Script Probleme (überarbeitete Skripts)

Beitrag von JPS » 10.08.2016, 17:39

chka hat geschrieben:Das Empfinden habe ich leider auch :roll:
Ja, aber BadenPower meinte, das liegt nur an der Fehlerprüfung, guckst du... http://homematic-forum.de/forum/viewtop ... 10#p299897
SMART WOHNEN by sTeRn AV | Meine Lösungen, um das Leben zuhause "smarter" zu machen.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

chka
Beiträge: 1625
Registriert: 13.02.2012, 20:23

Re: Script Probleme (überarbeitete Skripts)

Beitrag von chka » 10.08.2016, 17:41

ich prüfe aber das script nicht wenn ich weiß das es geht :D
Watchdog Watchdog2- CuL V2 868mHz- CuxDemon - PioTek Tracker - Veluxe und Somfy Anbinung- io.Broker aufm ESX 6.5
Keine Support PNs Danke!

BadenPower

Re: Script Probleme (überarbeitete Skripts)

Beitrag von BadenPower » 10.08.2016, 17:45

chka hat geschrieben:ich prüfe aber das script nicht wenn ich weiß das es geht :D
Mußt Du ja auch nicht, aber Du könntest es unter "Startseite > Programme und Verknüpfungen > Programme > Skript testen" bedenkenlos machen. :mrgreen:

Benutzeravatar
koppenho
Beiträge: 219
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland

Re: Script Probleme (überarbeitete Skripts)

Beitrag von koppenho » 10.08.2016, 21:18

AndiN hat geschrieben:ich habe vorne jetzt ein Inhaltsverzeichnis eingepflegt und würde dann einfach dort auf neue Beiträge hier verlinken. So kann jeder seine Skripts pflegen und Änderungen vornehmen. Außerdem ist es wohl übersichtlicher.
Finde ich eine gute Idee.

Bei der Gelegenheit muss ich mal etwas anderes loswerden:
Abgesehen von der Lösung des 200-Variablen-Problems (genauer: dessen Vermeidung) finde ich diesen Thread als eine interessante Quelle von Skripten. Viele davon sind mir vorher nicht bekannt gewesen.
Danke an Alle!
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 288 Kanäle in 100 Geräten und 132 CUxD-Kanäle in 32 CUxD-Geräten
Zweitwohnung: CCU2 mit 16 Kanäle in 6 Geräten und 12 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Benutzeravatar
JPS
Beiträge: 1019
Registriert: 07.08.2010, 22:51
Kontaktdaten:

Re: Script Probleme (überarbeitete Skripts)

Beitrag von JPS » 11.08.2016, 14:38

Das Skript um Push-Benachrichtigungen aufs Handy in HomeKey einzurichten von Jürgen Weiß umgeschrieben von JPS:

Code: Alles auswählen

! Geräte ID (mehrere IDs getrennt durch \t)
string tmpA = "registration_id1 \t registration_id2";

! Benachrichtigungsquelle
var tmpB = dom.GetObject("$src$");
var tmpC;
string tmpD;
if (tmpB != null) {
  var tmpC = dom.GetObject(tmpB.Channel());
  tmpD = tmpC.Name();
}

! Benachrichtigung
string tmpE = "EEQXXXXXXX";
string tmpF = "Klingel Haustür";
string tmpG = tmpD  # " am " # system.Date("%d.%m.%Y %H:%M:%S") # " Uhr";

string tmpH = "";
string tmpI;
foreach(tmpI, tmpA) {
    if (tmpH != "") {
        tmpH = tmpH # '\\",\\"';
    }
    tmpH = tmpH # tmpI;
}
string cmd = 'wget -q -T 5 -O /dev/null --no-check-certificate --header="Authorization: key=AIzaSyBrxU9-PayDHgmGPhiBfS-yDHlhwQTaDL8" --header="Content-Type: application/json" --post-data="{\\"registration_ids\\":[\\"' # tmpH # '\\"],\\"data\\":{\\"title\\":\\"' # tmpF # '\\",\\"message\\":\\"' # tmpG # '\\",\\"address\\":\\"' # tmpE # '\\"}}" https://android.googleapis.com/gcm/send';
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh -c '" # cmd # "'");
Zuletzt geändert von JPS am 12.08.2016, 17:38, insgesamt 1-mal geändert.
SMART WOHNEN by sTeRn AV | Meine Lösungen, um das Leben zuhause "smarter" zu machen.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
JPS
Beiträge: 1019
Registriert: 07.08.2010, 22:51
Kontaktdaten:

Re: Script Probleme (überarbeitete Skripts)

Beitrag von JPS » 11.08.2016, 14:47

Die Skripte "Alle Lichter an" und "...aus", umgeschrieben von JPS:

aus:

Code: Alles auswählen

var tmpA = dom.GetObject("Licht");

string tmpB;
foreach(tmpB, tmpA.EnumUsedIDs())
{
 var tmpC = dom.GetObject(tmpB);
 if (tmpC.IsTypeOf(OT_CHANNEL))
 {
 var tmpD = dom.GetObject(tmpC.Device());
 if (tmpD.HssType() == "HM-LC-Sw1-Pl") { tmpC.State(0); }
 if (tmpD.HssType() == "HM-LC-Sw1-FM") { tmpC.State(0); }
 if (tmpD.HssType() == "HM-LC-Sw2-FM") { tmpC.State(0); }
 if (tmpD.HssType() == "HM-LC-Sw4-SM") { tmpC.State(0); }
 if (tmpD.HssType() == "HM-LC-Sw4-DR") { tmpC.State(0); }
 if (tmpD.HssType() == "HM-LC-Dim1L-Pl") { tmpC.State(0.00); }
 if (tmpD.HssType() == "HM-LC-Dim1L-CV") { tmpC.State(0.00); }
 }
}
ein:

Code: Alles auswählen

var tmpA = dom.GetObject("Licht");

string tmpB;
foreach(tmpB, tmpA.EnumUsedIDs())
{
 var tmpC = dom.GetObject(tmpB);
 if (tmpC.IsTypeOf(OT_CHANNEL))
 {
 var tmpD = dom.GetObject(tmpC.Device());
 if (tmpD.HssType() == "HM-LC-Sw1-Pl") { tmpC.State(1); }
 if (tmpD.HssType() == "HM-LC-Sw1-FM") { tmpC.State(1); }
 if (tmpD.HssType() == "HM-LC-Sw2-FM") { tmpC.State(1); }
 if (tmpD.HssType() == "HM-LC-Sw4-SM") { tmpC.State(1); }
 if (tmpD.HssType() == "HM-LC-Sw4-DR") { tmpC.State(1); }
 }
}
SMART WOHNEN by sTeRn AV | Meine Lösungen, um das Leben zuhause "smarter" zu machen.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“