Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Tomiliy
Beiträge: 163
Registriert: 03.12.2014, 19:28
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Tomiliy » 08.02.2024, 19:58

Hallo zusammen,

ich stehe gerade auf dem Schlauch.
Ich habe folgendes vor:
Ich habe einen Saug- Wischroboter von Dream den 20L.

Ich möchte eine Kombination aus Programm und Script.
Das Programm sagt: rufe das Script alle 2 Tage auf, oder Wenn Anwesenheit Variabel auf Abwesend geht.
Das Script prüft eine Zeit die in der Variablen Dreambot_Last_Start, wann der Roboter das letzte mal gelaufen ist. Ist dies unter 48h macht der Roboter nix.
Ist es über 48h läuft der Roboter los.
Ich steure den Roboter über Alexa. also ist der Startbefhel für den Roboter:
string list;
! Starte den Roboter
list = dom.GetObject('SB-Ankuendigung').Value();
list="";
list = list # "sage starte das Reinigen mit Dreame-Bot";
dom.GetObject('SB-Ankuendigung').State(list);
string textcmd = dom.GetObject(ID_SYSTEM_VARIABLES).Get("SB-Ankuendigung").Value();
system.Exec("/usr/local/addons/alexa/alexa.sh -d 'Wohnzimmer' -e textcommand:'" #textcmd.ToUTF8() #"' &");

Ich bräuchte Hilfe bei der Umsetzung und der Verbesserung des Scripts.
Ich habe schon eine System Variable mit SB-Ankuendigung & Dreambot_Last_Start vom Typ Zeichenkette.

Bitte Hilfe...
Danke
--------------------------------------------
4 Kanäle in 42 Geräten:
1x HM-LC-Dim1T-FM, 1x HM-RC-8, 12x HM-Sec-SCo, 3x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-OU-CFM-Pl, 3x HM-Sen-EP, 1x HM-CC-VG-1, 1x HM-Sec-MDIR-2, 12x HM-CC-RT-DN, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-RD-O, 2x HM-PB-2-WM55-2, 1x HM-TC-IT-WM-W-EU, 1x 10000
--------------------------------------------

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

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von chka » 08.02.2024, 20:58

Vielleicht kannst du damit was anfangen, das oberste skript ist für dich relevant.
Wobei ich meinen täglich fahren lasse

Bildschirmfoto 2024-02-08 um 20.53.57.png
if (system.Date("%d-%m").ToString() == dom.GetObject("Robrock_Heute").Value())
{
WriteLine("Heute, schon gestartet also mach nix!!");
}else{
WriteLine("Heute noch nicht, also los");
string tmpA ="http://IP-IoBroker:8087/set/mihome-vacu ... value=true";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#tmpA#"'");
string tmpA ="http://IP-IoBroker:8087/set/mihome-vacu ... value=true";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#tmpA#"'");
string tmpA ="http://IP-IoBroker:8087/set/mihome-vacu ... value=true";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#tmpA#"'");

string sTime = system.Date("%d-%m"); !Hier wird Datum abgefragt und Variable zugeordnet
var sTimeString = sTime.ToString(sTime);
dom.GetObject('Robrock_Heute').State(sTimeString);
}
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

Tomiliy
Beiträge: 163
Registriert: 03.12.2014, 19:28
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Tomiliy » 09.02.2024, 08:57

Danke für die Hilfe..
Aber ich bin einfach zu blöd das für mich umzubauen..
Irgendwo hier ist ein Fehler:

Code: Alles auswählen

string sTime = system.Date("%d-%m"); !Hier wird Datum abgefragt und Variable zugeordnet
var sTimeString = sTime.ToString(sTime);
var lastBotStart = dom.GetObject('Dreambot_Last_Start').LastTimestamp().ToString();
var timeDifference = sTimeString - lastBotStart

if (timeDifference >= (48 * 3600)) 
	{ 
		WriteLine("Heute, schon gestartet also mach nix!!");
	}else
   	{
          list = dom.GetObject('SB-Ankuendigung').Value();
          string list;
          list="";    
          list = list # "sage starte das Reinigen mit Dreame-Bot";
          dom.GetObject('SB-Ankuendigung').State(list);
          string textcmd = dom.GetObject(ID_SYSTEM_VARIABLES).Get("SB-Ankuendigung").Value();
      	system.Exec("/usr/local/addons/alexa/alexa.sh -d 'Wohnzimmer' -e textcommand:'" #textcmd.ToUTF8() #"' &");
		 dom.GetObject('Dreambot_Last_Start').State(sTimeString);
 		}
 
--------------------------------------------
4 Kanäle in 42 Geräten:
1x HM-LC-Dim1T-FM, 1x HM-RC-8, 12x HM-Sec-SCo, 3x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-OU-CFM-Pl, 3x HM-Sen-EP, 1x HM-CC-VG-1, 1x HM-Sec-MDIR-2, 12x HM-CC-RT-DN, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-RD-O, 2x HM-PB-2-WM55-2, 1x HM-TC-IT-WM-W-EU, 1x 10000
--------------------------------------------

Benutzeravatar
Henke
Beiträge: 1538
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 144 Mal
Danksagung erhalten: 313 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Henke » 09.02.2024, 09:07

Was genau macht das Script nicht?
Absturz, Fehler,...

Die Berechnung der Zeit wird so nicht klappen. Differenzen werden mit dem Zeitstempel/Zahl berechnet, nicht mit Zeichenketten.

Was ist bei dir "a47" - "x"?

Tomiliy
Beiträge: 163
Registriert: 03.12.2014, 19:28
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Tomiliy » 09.02.2024, 09:16

Skriptfehler...
Wahrscheinlich genau deswegen wie du schon sagst.
ich bin leider kein Programmierter.. ich kann das lesen und interpretieren, aber ich muss mir das zusammen googlen.

ich möchte das der Roboter nicht vor Ablauf von 48 Stunden fährt.
Deswegen die 48.

Wie wäre denn das richtige skript?
--------------------------------------------
4 Kanäle in 42 Geräten:
1x HM-LC-Dim1T-FM, 1x HM-RC-8, 12x HM-Sec-SCo, 3x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-OU-CFM-Pl, 3x HM-Sen-EP, 1x HM-CC-VG-1, 1x HM-Sec-MDIR-2, 12x HM-CC-RT-DN, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-RD-O, 2x HM-PB-2-WM55-2, 1x HM-TC-IT-WM-W-EU, 1x 10000
--------------------------------------------

Benutzeravatar
Henke
Beiträge: 1538
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 144 Mal
Danksagung erhalten: 313 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Henke » 09.02.2024, 09:39

Zeitberechnung gibt es genug Beispiele im Forum.
Auf die Schnelle: viewtopic.php?f=43&t=42113&p=418831&hil ... en#p418831

Tomiliy
Beiträge: 163
Registriert: 03.12.2014, 19:28
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Tomiliy » 09.02.2024, 09:42

Danke für den Link.
Verstehen tue ch es aber nicht, weil es ist doch string.

string sTime = system.Date("%d-%m"); !Hier wird Datum abgefragt und Variable zugeordnet
var sTimeString = sTime.ToString(sTime);
var lastBotStart = dom.GetObject('Dreambot_Last_Start').LastTimestamp().ToString();
!var timeDifference = sTimeString - lastBotStart

Was mache ich denn falsch?
--------------------------------------------
4 Kanäle in 42 Geräten:
1x HM-LC-Dim1T-FM, 1x HM-RC-8, 12x HM-Sec-SCo, 3x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-OU-CFM-Pl, 3x HM-Sen-EP, 1x HM-CC-VG-1, 1x HM-Sec-MDIR-2, 12x HM-CC-RT-DN, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-RD-O, 2x HM-PB-2-WM55-2, 1x HM-TC-IT-WM-W-EU, 1x 10000
--------------------------------------------

Tomiliy
Beiträge: 163
Registriert: 03.12.2014, 19:28
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Tomiliy » 09.02.2024, 09:56

Ich bräuchte immer noch Hilfe... ich versteh einfach nicht, warum das nicht klappt

string jetzt = system.Date("%F %T");
var varLastBotStart = dom.GetObject('Dreambot_Last_Start').LastTimestamp();
var timediff = jetzt - lastBotStart

das hier klappt auch nicht... obwohl alles strings sind...

string jetzt = system.Date("%F %T");
string varLastBotStart = dom.GetObject('Dreambot_Last_Start').LastTimestamp();
string timediff = jetzt - varLastBotStart
--------------------------------------------
4 Kanäle in 42 Geräten:
1x HM-LC-Dim1T-FM, 1x HM-RC-8, 12x HM-Sec-SCo, 3x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-OU-CFM-Pl, 3x HM-Sen-EP, 1x HM-CC-VG-1, 1x HM-Sec-MDIR-2, 12x HM-CC-RT-DN, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-RD-O, 2x HM-PB-2-WM55-2, 1x HM-TC-IT-WM-W-EU, 1x 10000
--------------------------------------------

Benutzeravatar
Baxxy
Beiträge: 11037
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 632 Mal
Danksagung erhalten: 2287 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Baxxy » 09.02.2024, 11:27

Ich würde den Zeitstempel im "Standard-Format" in die SysVar schreiben und nutzen.
Die Timestamps der SysVar sind eher unpraktisch da sie erstmal die letzte Zentralen-Start-Zeit (.Timestamp) bzw. irgendwann 1970 (.LastTimestamp) hergeben.
Rechnen im Script dann mit dem Unix-Timestamp (Integer / Sekunden).

Beispiel:

Code: Alles auswählen

object oSpeicher_SV = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Dreambot_Last_Start");
integer iDiffHours = 48;

if (!oSpeicher_SV) {quit;}
time sLastStart_Val = oSpeicher_SV.Value().ToTime();
time sAkt_Time = localtime;

integer iAkt_Timestamp = sAkt_Time.ToInteger();
integer iLastBotStart = sLastStart_Val.ToInteger();
integer iTimeDiffSeconds = iAkt_Timestamp - iLastBotStart;

if (iTimeDiffSeconds >= ((iDiffHours * 3600) - 120)) {
    string sAlexaCommand = "sage starte das Reinigen mit Dreame-Bot";
    system.Exec("/usr/local/addons/alexa/alexa.sh -d 'Wohnzimmer' -e textcommand:'" #sAlexaCommand.ToUTF8() #"' &");
    oSpeicher_SV.State(sAkt_Time);
}
Zwischenspeicherung des Alex-Kommandos in einer SysVar ist nicht nötig denke ich, nutze das aber selbst nicht.
Zuletzt geändert von Baxxy am 09.02.2024, 15:07, insgesamt 1-mal geändert.

Tomiliy
Beiträge: 163
Registriert: 03.12.2014, 19:28
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: Dream Saug und Wischroboter Zeitgesteuert starten, Stoppen

Beitrag von Tomiliy » 09.02.2024, 11:57

Hallo Baxxy,
das Script sieht erstmal gut aus..
kannst du mir das näher erklären? Ich verstehe nicht ganz wie es funktioniert.
Danke
--------------------------------------------
4 Kanäle in 42 Geräten:
1x HM-LC-Dim1T-FM, 1x HM-RC-8, 12x HM-Sec-SCo, 3x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-OU-CFM-Pl, 3x HM-Sen-EP, 1x HM-CC-VG-1, 1x HM-Sec-MDIR-2, 12x HM-CC-RT-DN, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-RD-O, 2x HM-PB-2-WM55-2, 1x HM-TC-IT-WM-W-EU, 1x 10000
--------------------------------------------

Antworten

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