Bei mir spinnt alles

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

manfredh
Beiträge: 4155
Registriert: 09.09.2012, 10:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 301 Mal

Re: Bei mir spinnt alles

Beitrag von manfredh » 31.12.2018, 09:42

Wenn der Zeitversatz nicht so extrem lang wäre, würde ich darauf tippen, dass irgendein Prozess den Rechner ausbremst.

Ich hatte mal den Effekt, dass die Abfrage meiner NETATMO-Werte durch einen Script (Zugriff auf eine URL mit XML Inhalt) bis zu >30 Sekunden hing, weil die Antwort von der URL verzögert kam. War ein TCL Script. Wenn mich nicht alles täuscht, habe ich die Verzögerung im Systemlog gesehen. In dieser Zeit wurde keine programmgesteuerte Aktion in der CCU ausgelöst - die Programme liefen erst nach Ablauf dieser Zeit.

Ich würde folgendes machen:
1. Logs kontrollieren
2. Alle Programme mit Scripten temporär deaktivieren
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Bei mir spinnt alles

Beitrag von Xel66 » 31.12.2018, 16:14

manfredh hat geschrieben:
31.12.2018, 09:42
... bis zu >30 Sekunden hing, weil die Antwort von der URL verzögert kam.
Ähnliches habe ich auch erlebt. Das ist auch der Grund, warum ich größtenteils auf externe Webabfragen verzichte. Ein hängendes Script kann quasi die gesamte CCU lahmlegen (man erinnere sich an die Diskussion um Wait-States in Regascript). Wenn ich dann hier beobachte, wie viele Anwender allen möglichen Mist von externen Servern abfragen,, die manches Mal absolut nichts mit Hausautomation zu tun haben, wundere ich mich überhaubt nicht über die Instabilitäten mancher Installationen. Steht ein externer Zugriff mal nicht oder (schlimmer noch) nur eingeschrankt zur Verfügung, hängt die CCU. Dann ist nicht mehr Funktionalität gegeben als bei einer cloudbasierten IP-Installation. TCL-Scripte sollten aber m.E. nicht davon betroffen sein.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Bei mir spinnt alles

Beitrag von blackhole » 31.12.2018, 16:33

Xel66 hat geschrieben:
31.12.2018, 16:14
Ein hängendes Script kann quasi die gesamte CCU lahmlegen (man erinnere sich an die Diskussion um Wait-States in Regascript).
Da gehört bei aktuellen Rega-Versionen der Vergangenheit an.
Man muss das entsprechende Skript nur mittels Et-Zeichen (&) in der Hintergrund schicken ("Subshell", "forken").

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Bei mir spinnt alles

Beitrag von Xel66 » 31.12.2018, 16:42

Ok, danke für die Info. Ist an mir vorbeigegangen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Bei mir spinnt alles

Beitrag von blackhole » 31.12.2018, 16:56

Mittels Helper-Skript war das übrigens schon immer möglich - auch bei Einsatz alter Rega-Versionen auf alten CCUs.
Die Wenigsten dürften diese Möglichkeit allerdings genutzt haben.

Ich regel das auch heute (CCU3, aktuelle Firmware) noch so, da ich der Rega-Anpassung nie wirklich getraut habe (lange Zeit zu Recht).
Mittlerweile sollte das aber stabil und ohne Zombies zu hinterlassen funktionieren. Man kann somit empfehlen das auch zu nutzen.

Visu
Beiträge: 507
Registriert: 04.12.2016, 23:30
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Bei mir spinnt alles

Beitrag von Visu » 01.01.2019, 11:27

Guten Neues zusammen,
ja ich verwende Skripte mit externen Abfragen/Bedienungen. Egal was ich veranstaltet habe, nicht funktionierte mehr richtig. Egal ....

Habe jetzt das Asus Tinker S mit dem aktuellen RaspberryMatic auf dem EMMC-Speicher geflasht, nach und nach die Geräte sauber von der alten CCU2 abgelernt und am Tinker neu angelernt, nach und nach schreibe ich die Programme ect. neu. Also quasi ein Neuanfang.

Probleme habe ich jetzt nur noch bei einigen Skripten, die ich aber unbedingt brauche und die vorher definitiv funktioniert haben. Ich muss ein paar Zustände von meiner Solarsteuerung UVR1611 abfragen.
blackhole hat geschrieben:
31.12.2018, 16:56
Mittels Helper-Skript war das übrigens schon immer möglich - auch bei Einsatz alter Rega-Versionen auf alten CCUs.
Die Wenigsten dürften diese Möglichkeit allerdings genutzt haben.

Man muss das entsprechende Skript nur mittels Et-Zeichen (&) in der Hintergrund schicken ("Subshell", "forken").
Kannst du mir das vieleicht mal ein verständlich erklären, meine Skripte wurden mir von Alchy geschrieben, ich raffe das selber nicht.

Code: Alles auswählen

! UVR 1611 - Ausgang A5 aus Bl-Net auslesen und in Sysvar Typ Zeichenkette speichern by Alchy
string IP ="192.168.2.51:51";
string KNOTEN = "AA200501"; !" abzufragende Knotenpunkte mit \t getrennt
!++++++++++++ BITTE AB HIER NICHTS MEHR AENDERN ++++++++++
string index;
string name;
foreach (index, KNOTEN) {
var url = "http://"#IP#"/c_index.htm?C="#index#"";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);

string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

dom.GetObject("Pelletofen.Status").State(srueck);

}

################################################################################################

! UVR 1611- Eingang E14 auslesen
var url = "192.168.2.51:51/c_index.htm?C=8D200E01";
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    string rueckgabe = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
    ! Die komischen Tabs   loswerden
    if (rueckgabe.Find(" ") > -1)
    {
      rueckgabe = rueckgabe.Substr(6, rueckgabe.Length()-6);
      if (rueckgabe.Find(" ") > -1)
    {
      rueckgabe = rueckgabe.Substr(6, rueckgabe.Length()-6);
    };
    };
    ! Die Maßeinheit (nur °C) loswerden
    rueckgabe = rueckgabe.Substr(0, rueckgabe.Length()-8);
    ! Das Leerzeichen bei (einstelligen zweistellig hatte ich noch nicht) negativen Zahlen loswerden
    if (rueckgabe.Find(" ") > -1)
    {
      rueckgabe = "-" + rueckgabe.Substr(2, rueckgabe.Length()-2);
    }
    !---- Komma in der Temperatur durch ein Punkt ersetzen um realen Wert in Zahl wandeln zu koennen-----------------
    integer ikomma  = rueckgabe.Find(",");
    string saus1 = rueckgabe.Substr(0, ikomma);
    string saus2 = saus1 + "." + rueckgabe.Substr(ikomma + 1, 5);
    var zaus = saus2.ToFloat();

    dom.GetObject("Pelletofen.Temp.Vorlauf").State(zaus);
    
################################################################################################

! SV Pelletofen.Status wandeln
string tmpA = "EIN";
    if(tmpA == dom.GetObject("Pelletofen.Status").Value()){dom.GetObject("Pelletofen").State(true);}
    else {dom.GetObject("Pelletofen").State(false);}[/quote]
    
 G.V.

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Bei mir spinnt alles

Beitrag von blackhole » 01.01.2019, 14:42

Visu hat geschrieben:
01.01.2019, 11:27
blackhole hat geschrieben:
31.12.2018, 16:56
Man muss das entsprechende Skript nur mittels Et-Zeichen (&) in der Hintergrund schicken ("Subshell", "forken").
Kannst du mir das vieleicht mal ein verständlich erklären, meine Skripte wurden mir von Alchy geschrieben, ich raffe das selber nicht.
Du packst alle Shell-Aufrufe ein Bash-Skript (z.B. "/usr/local/addons/solar/zustand.sh") und rufst es im einfachsten Fall in dieser Art per HM-Script auf:

Code: Alles auswählen

system.Exec("/usr/local/addons/solar/zustand.sh &");
Das Füllen der CCU-Systemvariablen würde ich ebenfalls vom Bash-Skript erledigen lassen (via cURL).

Ich habe auf diese Art praktisch alle "angedockten Systeme" (z.B. Viessmann, Telegram, Echo, Zigbee etc.) und externe Inhalte (z.B. Systeminfos, (Un)Wetter, ODL-Info, Nina etc.) in die CCU integriert. Performant, ohne jegliche Addons Dritter, ohne externe Steuerungen, somit ohne Abhängigkeiten, energiesparend und jederzeit 100% portabel.

Statt des abschließenden Et-Zeichens nutze ich aus vorgenannten Gründen zurzeit noch ein Helper-Skript, was aber, wie gesagt, nicht mehr nötig sein sollte.
Zuletzt geändert von blackhole am 30.08.2022, 15:22, insgesamt 1-mal geändert.

Visu
Beiträge: 507
Registriert: 04.12.2016, 23:30
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Bei mir spinnt alles

Beitrag von Visu » 01.01.2019, 17:33

Dankeschön, aber ehrlich gesagt bin ich jetzt genau so schlau wie vorher, verstehe null, null von dem was du da schreibst :(

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Bei mir spinnt alles

Beitrag von blackhole » 01.01.2019, 18:44

Visu hat geschrieben:
01.01.2019, 17:33
Dankeschön, aber ehrlich gesagt bin ich jetzt genau so schlau wie vorher, verstehe null, null von dem was du da schreibst
Verstehe. Der nächste Schritt wäre jetzt die Erstellung individueller Shell-Skripte, falls Du diesen Ansatz verfolgen möchtest. Hierfür benötigst Du offensichtlich individuelle Hilfe (vielleicht von einem Bekannten) oder eben die Muße dich selbst einzuarbeiten.
Verwendbare Code-Schnipsel für Teillösungen findet man sicherlich in meinen Projekten. Ich beantworte hierzu gerne konkrete Fragen. Für einen individuellen Crash-Kurs oder für eine individuelle Komplettlösung fehlt mir allerdings Zeit und Muße.

Die Alternative ist das Ganze wie gehabt umzusetzen ("Logik" in HM-Script + CUxD-Shellaufrufe) und im Rahmen der Möglichkeiten zu optimieren.
Das ist allerdings nicht mehr mein Thema, da ich genau diese Kombination bei mir abgeschafft habe.

Antworten

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