Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
oreider
Beiträge: 173
Registriert: 28.12.2013, 16:23
Hat sich bedankt: 4 Mal

Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von oreider » 08.06.2023, 10:00

Hallo zusammen,

ich lasse meine Systemvariablen für die Rolladen zu einer bestimmten Zeit wieder rücksetzen.
Das Programm hat über Jahre ohne Probleme funktioniert.

Seit kurzem wird das Programm nicht mehr ausgeführt.
Mir ist keine Änderung am System bekannt bzw. ich habe nichts geändert.

Ein neues Programm zu erstellen brachte keine Abhilfe.
Neustart von Raspberrymatic half auch nichts.

Die Systemzeit und Datum auf der Weboberfläche stimmen.

Habt ihr Ideen was ich noch versuchen kann?

Aktuelle Firmwareversion: 3.69.7.20230506

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von MichaelN » 08.06.2023, 10:08

Ich würde die Firmware nochmal neu aufspielen
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

oreider
Beiträge: 173
Registriert: 28.12.2013, 16:23
Hat sich bedankt: 4 Mal

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von oreider » 08.06.2023, 10:30

Danke, das hat geholfen.

Schönen Gruß
Tom

[sprotte80]
Beiträge: 331
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 23 Mal

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von [sprotte80] » 08.06.2023, 13:57

Hi
oreider hat geschrieben:
08.06.2023, 10:00
Das Programm hat über Jahre ohne Probleme funktioniert.
Seit kurzem wird das Programm nicht mehr ausgeführt.
Mir ist keine Änderung am System bekannt bzw. ich habe nichts geändert.
klassische Info wo nicht stimmt.
oreider hat geschrieben:
08.06.2023, 10:00
Aktuelle Firmwareversion: 3.69.7.20230506
System ist doch geändert 2023 nach dem 6. Mai

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von Black » 09.06.2023, 07:38

Hin und wieder scheint die Rega schon mal aus irgendwelchen Gründen Teile von Ihren Aufzählungen zu vergessen.

s.A. Rega "vergass" bei ihrer HmIP Systemtasten Teile der Aufzählung, wodurch die Tasten dann in WebUi programmen (ohne Tricksereien) nicht mehr zugänglich waren.

Wenn bei einem Programm auf einmal die Zeitsteuerung nicht mehr will, kann man folgendes überprüfen: (ein passendes Tool ist dabei hilfreich)

Ist das Programm aktiviert dann muss das in der/den Singleconditions referenzierte Zeitmodul Enable=true sein, bei deaktiviert entsprechend false
bei aktiiert (und nicht gesetztem Ablaufdatum, kann auch kontrolliert werden) muss die Abfrage auf Next den nächsten Auslösezeitpunkt ergeben.
Wenn nicht, isses schlecht

dann mal in die Aufzählung (ID_CALENDARSPS) schauen, das Zeitmodul muss dort eingehangen sein. isses da nicht drin, wirds auch nicht funktionieren.
(den Fehler hatte ich letztens bei einem Kollegen, Zeitmodul wieder eingehängt, RTUpdate und es war wieder funktional)

Die Schritte müssen nicht in jedem Fall helfen, die Rega hat ja gerne mal ein Eigenleben, können aber schon mal Hinweis sein, wenn etwas klemmt.

Black

Diese Test und überprüf Funktion wird in der V5 auch drin sein.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

[sprotte80]
Beiträge: 331
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 23 Mal

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von [sprotte80] » 09.06.2023, 18:32

Hi
Black hat geschrieben:
09.06.2023, 07:38
Wenn bei einem Programm auf einmal die Zeitsteuerung nicht mehr will, kann man folgendes überprüfen: (ein passendes Tool ist dabei hilfreich)
Diese Test und überprüf Funktion wird in der V5 auch drin sein.
So nen Tool is nicht verkehrt.
Is in den HM-Internals wo ich sie kenne schon immer drin.

hier mal nen outdated Prüfcode

Code: Alles auswählen

!Copyright Nov.2017 by BadenPower
integer lScanIDLast = ID_ERROR - 1;
integer lScanIDStart = 1;
integer lScanWhileCount2 = 1;
integer lScanWhileCount1 = 1;
boolean lScanDoWhileLoop = true;
integer lScanIDCurrent = 1;
object lObj;
object lCheckObj;
object lObjCalendarDps = dom.GetObject(ID_CALENDARDPS);
object lObjPrograms = dom.GetObject(ID_PROGRAMS);
time lZeroTime = @1970-01-01 01:00:00@;
string lEnum1;
integer lCalendarDpCount = 0;
integer lFaultCount = 0;
integer lWarnCount = 0;
integer lInfoCount = 0;
boolean lDoWriteProgramName = false;
time lTimeStart = localtime;
time lTimeEnd;
WriteLine("Zeitmodulprüfung:");
WriteLine("gestartet: " # lTimeStart.Format("%d.%m.%Y %H:%M:%S"));
WriteLine("ReGaHss-Version: " # dom.BuildLabel());
WriteLine("");
if(!lObjCalendarDps)
{
  lFaultCount = lFaultCount + 1;
  WriteLine("Fehler: Es existiert kein Standard-Zeitmodullisten-Objekt. [" # ID_CALENDARDPS # "]");
}
if(!lObjPrograms)
{
  lFaultCount = lFaultCount + 1;
  WriteLine("Fehler: Es existiert kein Standard-Programmlisten-Objekt. [" # ID_PROGRAMS # "]");
}
while((lScanIDLast >= lScanIDCurrent) && (lScanWhileCount1 <= 5000) && (lScanDoWhileLoop))
{
  lScanWhileCount2 = 1;
  while((lScanIDLast >= lScanIDCurrent) && (lScanWhileCount2 <= 5000) && (lScanDoWhileLoop))
  {
    lObj = dom.GetObject(lScanIDCurrent);
    if(lObj)
    {
      if(lObj.Type() == OT_CALENDARDP)
      {
        lCalendarDpCount = lCalendarDpCount + 1;
        lDoWriteProgramName = false;

        if(lObjCalendarDps)
        {
          lCheckObj = lObjCalendarDps.Get(lObj.ID());
          if(!lCheckObj)
          {
            lFaultCount = lFaultCount + 1;
            lDoWriteProgramName = true;
            WriteLine("Fehler: Das Zeitmodul mit der ID " # lObj.ID() # " ist nicht in der Liste der Zeitmodule enthalten.");
          }
        }

        if(lZeroTime <> lObj.End())
        {
          if(localtime > lObj.End())
          {
            lInfoCount = lInfoCount + 1;
            lDoWriteProgramName = true;
            WriteLine("Info: Das Zeitmodul mit der ID " # lObj.ID() # " hat den Endzeitpunkt der Ausführung erreicht. [" # lObj.End() # "]");
          }
        }

        if(lObj.CalRepetitionCount() <> 0)
        {
          lDoWriteProgramName = true;
          if(lObj.CalRepetitionValue() < lObj.CalRepetitionCount())
          {
            lInfoCount = lInfoCount + 1;
            WriteLine("Info: Das Zeitmodul mit der ID " # lObj.ID() # " wird noch " # (lObj.CalRepetitionCount() - lObj.CalRepetitionValue()).ToString(0) # " mal ausgeführt.");
          }
          else
          {
            lInfoCount = lInfoCount + 1;
            WriteLine("Info: Das Zeitmodul mit der ID " # lObj.ID() # " hat die maximale Anzahl der Ausführung erreicht. [" # lObj.CalRepetitionValue() # "]");
          }
        }


        if(lObj.DPUsageCount() == 0)
        {
          WriteLine("Fehler: Das Zeitmodul mit der ID " # lObj.ID() # " ist keinem Programm zugeordnet.");
        }
        else
        {
          if(lObj.DPUsageCount() > 1)
          {
            lFaultCount = lFaultCount + 1;
            WriteLine("Fehler: Das Zeitmodul mit der ID " # lObj.ID() # " ist mehreren Objekten zugeordnet.");
          }
          foreach(lEnum1,lObj.DPEnumUsagePrograms())
          {
            lCheckObj = dom.GetObject(lEnum1);
            if(lCheckObj)
            {
              if(lCheckObj.Type() == OT_PROGRAM)
              {
                if(lDoWriteProgramName)
                {
                  WriteLine("Ergänzung: Das Zeitmodul mit der ID " # lObj.ID() # " ist dem Programm mit der ID " # lCheckObj.ID() # " / " # lCheckObj.Name() # " zugeordnet.");
                }
              }
              else
              {
                lFaultCount = lFaultCount + 1;
                WriteLine("Fehler: Das Zeitmodul mit der ID " # lObj.ID() # " besitzt eine Verwendungszuordnung auf einen ungültigen Objekttyp. [" # lCheckObj.ID() # " / " # lCheckObj.TypeName() # "]");
              }
            }
            else
            {
              lFaultCount = lFaultCount + 1;
              WriteLine("Fehler: Das Zeitmodul mit der ID " # lObj.ID() # " besitzt eine fehlerhafte Verwendungszuordnung. [" # lEnum1 # "]");
            }
          }
        }
      }

      !OT_SINGLECONDITION
      if(lObj.Type() == 3145729)
      {
        if(lObj.LeftValType() == ivtCurrentDate)
        {
          if(lObj.RightVal1ValType() == ivtObjectId)
          {
            lCheckObj = dom.GetObject(lObj.RightVal1());
            if(lCheckObj)
            {
              if(lCheckObj.Type() == OT_CALENDARDP)
              {
                if(lObj.ConditionType() <> 3)
                {
                  lFaultCount = lFaultCount + 1;
                  WriteLine("Fehler: Die Einzelbedingung mit der ID " # lObj.ID() # " besitzt einen ungültigen Bedingungstyp. [" # lCheckObj.ID() # " / " # lObj.ConditionType() # "]");
                }
              }
              else
              {
                lFaultCount = lFaultCount + 1;
                WriteLine("Fehler: Die Einzelbedingung mit der ID " # lObj.ID() # " verweist auf einen ungültigen Objekttyp. [" # lCheckObj.ID() # " / " # lCheckObj.TypeName() # "]");
              }
            }
            else
            {
              lFaultCount = lFaultCount + 1;
              WriteLine("Fehler: Die Einzelbedingung mit der ID " # lObj.ID() # " verweist auf ein nicht vorhandenes Objekt. [" # lObj.RightVal1() # "]");
            }
          }
        }
      }
    }
    lScanIDCurrent = lScanIDCurrent + 1;
    lScanWhileCount2 = lScanWhileCount2 + 1;
  }
  lScanWhileCount1 = lScanWhileCount1 + 1;
}

WriteLine("");
WriteLine("Zeitmodule gesamt: " # lCalendarDpCount.ToString(0));

WriteLine("");
if(lFaultCount == 0)
{
  WriteLine("Die Prüfung wurde ohne erkennbaren Fehler abgeschlossen.");
}
else
{
  if(lFaultCount == 1)
  {
    WriteLine("Es wurde " # lFaultCount # " Fehler gefunden.");
  }
  else
  {
    WriteLine("Es wurden " # lFaultCount # " Fehler gefunden.");
  }
}
if(lWarnCount > 0)
{
  if(lWarnCount == 1)
  {
    WriteLine("Es wurde " # lWarnCount # " Warnung ausgegeben.");
  }
  else
  {
    WriteLine("Es wurden " # lWarnCount # " Warnungen ausgegeben.");
  }
}
if(lInfoCount > 0)
{
  if(lInfoCount == 1)
  {
    WriteLine("Es wurde " # lInfoCount # " Infomeldung ausgegeben.");
  }
  else
  {
    WriteLine("Es wurden " # lInfoCount # " Infomeldungen ausgegeben.");
  }
}

WriteLine("");
lTimeEnd = localtime;
WriteLine("beendet: " # lTimeEnd.Format("%d.%m.%Y %H:%M:%S"));
WriteLine("Dauer: " # ((lTimeEnd.ToInteger() - lTimeStart.ToInteger()).ToString() # " Sekunden"));
WriteLine("");
WriteLine("----- Vorgang beendet -----");

mit freundlicher Genehmigung vom badenpower

Thomas
Zuletzt geändert von [sprotte80] am 10.06.2023, 14:03, insgesamt 1-mal geändert.
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von Tyfys » 10.06.2023, 08:10

diese Zeile scheint mir fehlerhaft zu sein:

Code: Alles auswählen

while((lScanIDLast >= lScanIDCurrent) && (lScanWhileCount1 = lScanIDCurrent) && (lScanWhileCount2 != lObj.End())
fehlende schliessende Klammer
und
unvollständiger Vergleichsoperator. (=)
Gruß
Harry

[sprotte80]
Beiträge: 331
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 23 Mal

Re: Programme mit Zeitsteuerung werden nicht mehr ausgeführt

Beitrag von [sprotte80] » 10.06.2023, 14:10

Hi
Tyfys hat geschrieben:
10.06.2023, 08:10
diese Zeile scheint mir fehlerhaft zu sein:
Thx Harry
Da stimmt was nich mit der Config vom Proxy von mir. Der killt kleiner und kleiner/größer Zeichen und dann ganze Zeilen beim Upload.
Code is geändert.

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Antworten

Zurück zu „HomeMatic allgemein“