Neueste Beiträge

#1
Hard- und Firmware / Aw: culfw@ARM / AT check & reo...
Letzter Beitrag von pipp37 - 16 Mai 2024, 14:39:04
Hallo.
Nachdem FHEM das Neustarten meiner gelflashten Maxcubes mit a-culfw nicht mitbekam, habe ich dafür ein AT gemacht erstellt, welches die Zeit des internen Readings prüft und ein REOPEN macht, wenn sich das Reading nicht verändert hat.

Vielleicht hilft das ja einigen.

https://forum.fhem.de/index.php?topic=129073.msg1313338#msg1313338

Gruss Armin
#2
Sonstiges / Aw: störung/ausfall der cul ve...
Letzter Beitrag von pipp37 - 16 Mai 2024, 14:30:59
Zitat von: rudolfkoenig am 08 September 2022, 12:28:24Ich wuerde mit einem at die Zeit der letzten Kommunikation (gespeichert im Internal cul868_TIME) auswerten, evtl gekoppelt mit regelmaessiger Abfrage der Version.

Hallo. Da ich kürzlich auf einen MaxCube mit  geflashter a-culfw für WMBUS und Homematic umgestiegen bin, bekam FHEM einen kurzen Ausfall der Maxcube nicht mit und blieb immer initialized und keine Daten kamen an.

Ich habe darum ein AT erstellt welches genau die CUL_TIME  auf Änderungen  prüft und nach 3 erfolglosen Checks 5* versucht, ein REOPEN zu machen.

Gruss Armin


Die Variablen müssen auf den entsprechenden CUL angepasst werden. Auch die Zeit (alle 1 Minuten) ändern.

# after x failures reopen
my $errorcnt=3;
# try reopen x times
my $tryreopen=5;

# check cul
my $chkCUL="cubeCUN2";
# check changing cul reading
my $chkReading="cubeCUN2_TIME";



Define:
define cubeCUN2_chk_at at +*00:01:00 set x=1

Dann mit den dem internen Editor den Code einfügen.


Anbei das list eines meiner at devices.

   DEF        +*00:01:00 {
# after x failures reopen
my $errorcnt=3;
# try reopen x times
my $tryreopen=5;

# check cul
my $chkCUL="cubeCUN2";
# check changing cul reading
my $chkReading="cubeCUN2_TIME";

my $prefix="chk_";
# get curtime internal
my $internaltime=InternalVal("$chkCUL","$chkReading","unknown");
# get last time
my $internaltimeLast=ReadingsVal("$chkCUL", "$prefix"."time_internal_last", "0");
my $reopencounter=ReadingsVal("$chkCUL", "$prefix"."reopen_counter", "0");
my $reopencountertry=ReadingsVal("$chkCUL", "$prefix"."reopen_counter_try", "0");

fhem("setReading $chkCUL $prefix"."time_internal $internaltime");

# check if time changed
if ("$internaltime" eq  "$internaltimeLast")
{ $reopencounter++;
  Log3("global",3,"DEBUG-AT:$chkCUL: Reading $chkReading not changed $reopencounter times! Device offline?");
  # reset reopencounter after 100 times
  if ($reopencounter > 100) {$reopencounter=0};  
  fhem("setReading  $chkCUL $prefix"."reopen_counter " . $reopencounter);
}
else
{ Log3("global",3,"DEBUG-AT:$chkCUL: Reading $chkReading changed. Device alive.");
  fhem("setReading $chkCUL $prefix"."time_internal_last $internaltime");
  if ($reopencounter>0)    {fhem("setReading $chkCUL $prefix"."reopen_counter 0")};
  if ($reopencountertry>0) {fhem("setReading $chkCUL $prefix"."reopen_counter_try 0")};
  $reopencounter=0;$reopencountertry=0;      
}

# reopen part
if ($reopencounter > $errorcnt)
{ $reopencountertry++;
  if ($reopencountertry < $tryreopen+1)
      { Log3("global",3,"DEBUG-AT:$chkCUL: Try $reopencountertry/$tryreopen to reopen.");
    fhem("set $chkCUL reopen");
  }
  else
  { Log3("global",3,"DEBUG-AT:$chkCUL: Try reopen failed $tryreopen times. Abort reopen!");
    $reopencountertry=$tryreopen;
  }

   fhem("setReading  $chkCUL $prefix"."reopen_counter_try " . $reopencountertry);
}

}

   FUUID      6645271b-f33f-37ef-3475-5a484d4d8f7f19e4
   NAME       cubeCUN2_chk_at
   NR         6828
   NTM        14:17:05
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 14:17:05
   TIMESPEC   00:01:00
   TRIGGERTIME 1715861825.88127
   TRIGGERTIME_FMT 2024-05-16 14:17:05
   TYPE       at
   eventCount 874
   .attraggr:
   .attrminint:
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1715861766.07761
           VALUE      Next: 14:17:05
   READINGS:
     2024-05-16 14:16:06   state           Next: 14:17:05
Attributes:
   room       CUL
   verbose    1


#3
DOIF / Aw: [gelöst] offene Fenster zä...
Letzter Beitrag von teichtaucher - 16 Mai 2024, 14:16:01
Ich muss mir mal selbst antworten. Ich hatte bei dem Thema den Perl-Modus in der Commandref nicht gesehen/gefunden. Steht aber alles hier weiter unten in bei den Beispielen im Perl-Modus

Perl-Modus:
define di_Fenster DOIF {if (["^Window:open"]) {foreach (AggrDoIf('@','^windows','state','"open"')) {Log3 "di_Fenster",3,"Das Fenster $_ ist noch offen"}}}

So sieht jetzt mein Doif aus:

define di_FensterDisplay DOIF (["^*.fk.*:open"])
{my $str = "http://192.168.178.46/control?cmd=epd,txl,1,Fenster,2,offen:";; my $idx=2;; foreach (AggrDoIf('@','^*.fk.*','state','"open"')) {$idx++;;$str=$str.",".$idx.',%22'.uri_escape(AttrVal($_,"alias",$_)).'%22'}system("wget -q $str &");;Log(3, $str)}
DOELSEIF (["^*.fk.*:closed"] and [#"^*.fk.*":state:"open"]>0)
{my $str = "http://192.168.178.46/control?cmd=epd,txl,1,Fenster,2,offen:";; my $idx=2;; foreach (AggrDoIf('@','^*.fk.*','state','"open"')) {$idx++;;$str=$str.",".$idx.',%22'.uri_escape(AttrVal($_,"alias",$_)).'%22'}system("wget -q $str &");;Log(3, $str)}
DOELSEIF (["^*.fk.*:closed"] and [#"^*.fk.*":state:"open"]==0)
{system("wget -q http://192.168.178.46/control?cmd=epd,clear &")}
DOELSE
{system("wget -q http://192.168.178.46/control?cmd=epd,clear &")}

Wenn ein Fenster geöffnet wurde, zeige Info auf dem Display an. Dabei wird der Alias jedes Fensters in einer separaten Zeile angezeigt.
Wenn ein Fenster geschlossen wurde aber noch wenigstens eins offen, update Display komplett
Wenn kein Fenster mehr offen ist, lösche Displayinhalt

Bei Displayupdate wird eine URL beim ESPEasy aufgerufen (war die einfachste Variante). Besser hätte ich eigentlich gefunden wenn ESPEasy zyklisch jede Minute aufwacht und sich die Infos von FHEM holt. Pull von ESPEasy von FHEM geht aber nicht.

Ach ja, habe ein Waveshare 2.9" Display an einem Wemos D1 laufen. Leider unterstützt ESPEasy das 2.9 Waveshare nativ ist. Ich habe aber den Treiber angepasst, so dass es jetzt läuft. Für wen es interessiert kann ich gern das Binary für den Wemos D1 hochladen.
#4
Anfängerfragen / Terminübersicht (readingsGroup...
Letzter Beitrag von thunder2014 - 16 Mai 2024, 14:13:28
Hallo,

ich möchte gern eine tabellarische Übersicht der Ferien haben.
StartEndeFerienname
TT.MM.YYYY  TT.MM.YYYY  Osterbeispiel

Kalender ist angelegt und wird auch richtig ausgelesen.
Calview liest ebenfalls die Readings aus und listen alle auf.

Mit 
defmod SA_Ferien_Art readingsGroup SA_Ferien_view:*summary,*bdate,*edate
attr SA_Ferien_Art alias Termine
attr SA_Ferien_Art group _Kalenderview_
attr SA_Ferien_Art mapping %READING
attr SA_Ferien_Art nonames 1
attr SA_Ferien_Art notime 1
attr SA_Ferien_Art room Kalender
werden alle Daten hintereinander geschrieben.

Mach ich jetzt nur einen Wert
defmod SA_Ferien_Ende readingsGroup SA_Ferien_view:*edate
attr SA_Ferien_Ende alias Ferienende
attr SA_Ferien_Ende group _Kalenderview_
attr SA_Ferien_Ende mapping %READING
attr SA_Ferien_Ende nonames 1
attr SA_Ferien_Ende notime 1
attr SA_Ferien_Ende room Kalender
werden diese untereinander dargestellt.

Mit allen Varianten die ich jetzt im Wiki bzw. im Forum gefunden habe komme ich nicht weiter.

Wie kann ich einfach meine obere Tabelle darstellen.

Viele Grüße

#5
Off-Topic / Aw: Lidl WI-FI Steckdose SWS-A...
Letzter Beitrag von biopio - 16 Mai 2024, 13:43:47
Aah, danke für den Hinweis zu `my_ip`.

Kannst ja mal probieren, ob der Austausch von Zeile 240:
my_ip = socket.gethostname()
zu:
my_ip = socket.gethostbyname(socket.gethostname())

das Gleiche bewirkt wie Dein netifaces-Ansatz.
#6
Solaranlagen / Aw: [98_Fronius.pm] Fronius AP...
Letzter Beitrag von hugomckinley - 16 Mai 2024, 13:10:50
Zitat von: heramol am 10 Mai 2024, 13:32:40Hallo,

Modbus-Terminierung passt auch?

VG Tom
Ja, das funktioniert alles. Das Webfrontend und die Regelung der Einspeisebegrenzung funktionieren. Das Problem besteht auch schon länger soweit ich das beurteilen kann, aber es fällt mir jetzt erst (öfter) auf, da ich den Fronius Smartmeter über das API jetzt anstelle des SDM630 den ich vorher hatte verwende.
Es muss irgendwas Netzwerk/IT mäßiges sein wischen API und FHEM. Bisher ist das Problem auch nicht mehr aufgetreten.
Sobald ich mehr weiß (verbose=5, andere MOD-HTTP abfragen, o.ä.) melde ich mich mit evtl. neuen Erkenntnissen.
#7
Solaranlagen / Aw: Erfahrungen mit der Anbind...
Letzter Beitrag von beimaik - 16 Mai 2024, 12:59:17
ich werde stattdessen erst einmal "ESS_Energie_Entladung_Tag_kWh" also obj-h37786-reading nehmen.
[Energystorage]Current-daydischargecapacity
#8
Zigbee / Aw: Nach Neustart keine verbin...
Letzter Beitrag von KyleK - 16 Mai 2024, 12:55:41
/usr/bin/deCONZ --dbg-info=2
startet die GUI-Variante von deCONZ. Weiß nicht ob das beabsichtigt ist?
Scheinbar fehlen auf deinem Gerät aber einige Grafik-Bibliotheken?

Mit:
/usr/bin/deCONZ -platform minimal --dbg-info=2

Kann man die headless-Variante von deCONZ starten, die sollte auch ohne Qt auskommen.
#9
Solaranlagen / Aw: Erfahrungen mit der Anbind...
Letzter Beitrag von beimaik - 16 Mai 2024, 12:55:27
Moin,

heute ist mir aufgefallen, dass der Wert für die Entladeleistung vom Speicher für einen Tag, also
ESU1_Energie_Entladung_Tag_kWh
also
obj-h37017-reading
siehe BildDu darfst diesen Dateianhang nicht ansehen.

seit dem 27.11.2023 nur noch 0 ist.

Konnte das in meinem Log nachvollziehen. Ist das bei euch auch?

2023-11-26_23:59:04 Sun2000 ESU1_Energie_Entladung_Tag_kWh: 2.09
2023-11-27_00:00:30 Sun2000 ESU1_Energie_Entladung_Tag_kWh: 0

LG
Maik
#10
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 16 Mai 2024, 12:48:50
@pah, zu deinem zweiten Anstrich:

Zitat2. Waschmaschinen sind durchaus Großverbraucher, und die meisten laufen inzwischen ziemlich lange. Ein weiterer wichtiger Faktor
ist die Wäschetrockung (nicht im Trockner, sondern auf der Leine). Es nutzt zwar möglicherweise der Stromrechnung, wenn die
Waschmaschine nachmittags um 17:00 fertig ist - aber trocken wird das dann nicht mehr. Ich habe keine Möglichkeit gefunden,
eine "Fertig-Zeitangabe" für einen Consumer festzulegen.
Im Prinzip kann man eine definierte Endezeit bereits jetzt indirekt festlegen durch eine Kombination aus power, mintime, notafter.

Also z.B.:
attr ... consumerXX <Device Name> type=washingmachine power=0 mintime=120 notafter=10:00 ...


Bei der Definition würde die Waschaschine spätestens 10:00 für max. 2h loslaufen. Sie wäre also spätestens 12:00 fertig.
Das ist doch was du haben wolltest oder doch noch etwas anders?

LG,
Heiko