Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

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();
!####################################################
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

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);
}
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

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
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

chka
Beiträge: 2483
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 302 Mal
Danksagung erhalten: 116 Mal

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:
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
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
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

chka
Beiträge: 2483
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 302 Mal
Danksagung erhalten: 116 Mal

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
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

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: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

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 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
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.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
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); }
 }
}
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)“