Kommandos an LCN-Module kommen nicht zuverlässig an

Ich mache das einfach „zeitgesteuert“ aus IPS zu nachtschlafender Zeit - das merkt hier (außer mir) niemand. Ideal wäre natürlich den RE auszuwerten …
Die ganz alten Dinger können ja nichts was in einen Fehler laufen könnte - Licht schalten geht immer. Da geht der Reset übrigens auch mit der Pro nicht …
Damit bekomme ich aber jetzt mit der 81 auch noch die Module, die bislang nicht wollten (aber auch meist eigentlich nur alle 3-6 Monate ein Reset brauchen). Man muss nur auch darauf achten, dass alle Tastensperren etc. wiederholt werden (die Netzspannungsüberwachung tut aber auch beim Reset). Einmal im Monat reicht mir da völlig (ist aber von der ‚Perfektion‘ dann eigentlich auch schon 12x/Jahr zu viel).

Hättet Ihr mal Beispielhaft den PCHK Befehl für mich? Würde dann auch ab und dann die SH Module neustarten, die die Rolläden steuern.

Lieben Dank,
Tommy

Wäre auch an dem PCHK Befehl interessiert! Bei mir gleiches Problem dass manche Kommandos nicht ausgeführt werden. Nervt mich schon lange dass immer wieder mal ein Rollo nicht fährt :face_with_symbols_over_mouth:

Dankeschön!!

:point_up_2:
Ich hättet auch Interesse.

Hallo darf ich mich hier anschließen, ich bekomme das Reset Kommando nicht hin?
Wäre auch an dem PCHK Befehl interessiert!

** DANKE **

Um einen Reset per PCHK zu erzeugen, braucht es sie SerienNr vom LCN Modul, und vorher mus das LCN Modul in den Programmiermodus gesetzt werden. Das hat alles mal viel Arbeit gemacht, dass raus zu finden, und ich gebe das jetzt mal hier noch mal weiter.#
Zuerst brauche ich IPS Id vom Modul als $ModulId, danach die Seriennummer von dem Modul (hex in dez umgerechnet) in $sn.
Danach einfach ein Skript mit den Daten aufbauen und absenden.

<?php
$ModulId = 46362;
$sn ="015001031236163";
LCN_SendCommand($ModulId, "X3", "120".$sn."001");//P-Mode setzen bei Firm 0F "001" durch "129" ersetzen
sleep(1);
LCN_SendCommand($ModulId, "X2", "121170085");// Reset 79 AA 55 =  121 170 085

Dann habe ich noch eine Register Variable LCN, wo ich alle Seriennummer ablege.

<?php
$ModulID = IPS_GetParent($_IPS['SELF']);
if ($_IPS['SENDER'] == "RegisterVariable")
   {
       	$inbuf  = RegVar_GetBuffer($_IPS['INSTANCE']);
       	$inbuf .= $_IPS['VALUE'];
		$lcn_array=explode(chr(10).chr(13), $inbuf);
		
		for($x = 0; $x < count($lcn_array); $x++){
		$lcn_meld_typ= substr($lcn_array[$x], 0, 1);
		switch($lcn_meld_typ){
		case "=":
	      $lcn_status_typ=substr($lcn_array[$x], 9, 2);
		  switch($lcn_status_typ){
			    case "SN":
			// $inbuf= '=M000156.SN0A091802D801FW010101HW011';
			      $lcn_mod="M" . substr($lcn_array[$x], 5, 3);
			      $lcn_par=substr($lcn_array[$x], 11, 10);
				  $lcn_var=$lcn_mod .  "SN";
			      $lcn_con=$lcn_par;
//			      VAR_DUMP($lcn_con, $lcn_mod);
				  $id = CreateVariableByName($ModulID, $lcn_var, 3);
$str=$lcn_par;
$arr=str_split($str, 2);
$b1=str_pad(hexdec($arr[0]), 3 ,'0', STR_PAD_LEFT);
$b2=str_pad(hexdec($arr[1]), 3 ,'0', STR_PAD_LEFT);
$b3=str_pad(hexdec($arr[2]), 3 ,'0', STR_PAD_LEFT);
$b4=str_pad(hexdec($arr[3]), 3 ,'0', STR_PAD_LEFT);
$b5=str_pad(hexdec($arr[4]), 3 ,'0', STR_PAD_LEFT);
$sn=$b1.$b2.$b3.$b4.$b5;
$lcn_par=$sn;
	              SetValue($id, $lcn_par);
			      break;
		}		
		}
	}
}
function CreateVariableByName($id, $name, $type)
{
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
   }
   return $vid;

}

SN abfragen mach ich noch mit dem alten Sktipt von Hand.

<?php
$InstanzID = @IPS_GetInstanceIDByName("Client Socket LCN", $ParentID);
$TX_BUF= '>M000161.SN'.chr(10);    //Seriennummer abfragen
CSCK_SendText($InstanzID  ,$TX_BUF);

Vielen Dank für den Prompten Service :slight_smile:
LG Tobias

Deine ID45604 ist die Beste :slight_smile: :wave:

lg
hagi

HM,
was meist du Karl?

mhm :open_mouth:

grafik

:rofl:

Ich habe zwar nicht gefragt, musste es aber auch direkt mal testen und werde es wohl für 2 Modul fest einbauen.

Oh Ha,
die uralte Altlast im Bild.
Ok Hagi(Karl) das skript würde immer noch laufen. :innocent:

Ich habe es fest auch bei 2 Modulen laufen, die nach ~1 Stunde die B3I am I-Port vergessen, und konnte das somit umgehen. Vorm Reset merke ich mir per IPS den Status und setze nach Reset neu, passt hier. :innocent:

Funktioniert alles wie erwartet und von Dir gewohnt Thomas!!!

Ich brauche es zwar nicht, habe es aber mal für den Fall :wink:

Hatte das Problem mit den Rollläden früher auch einmal, Aber so ein paar Millisekunden Verzögerung konnten das gut entzerren und vor allem das super Skript von Smudo und seine Anpassungen laufen perfekt mit LCN und lassen keine Wünsche offen - wer will sucht unter „Jalousiemaster“ :wink:

lg hagi

Damit habe ich kein Problem, die BMI werden gut erkannt. Bei mir werden leider die beiden 1-wire DS1820 nicht immer zuverlässig erkannt. Aber da hat der Modul-Reset gerade auch nicht geholfen.

Wo hast die DS1820 dranhängen? IX?

Klasse. Vielen Dank Thomas!

Eigenbau aus einer anderen Zeit :innocent:

Moin Moin,
nur mal der Vollständigkeit halber …
Die X2 und X3 Kommandos sind nicht dokumentiert - da kann man mal den Finger heben …

Aber: @paresy : könnte man nicht ohnehin Serienummer etc. beim einlesen mit in eine(r) Variable schreiben? „Nutzlos“ ist das (und einiges mehr an Informationen zum Modul) ja nicht.

Grüße, Uwe

Hallo zusammen,

ich habe einen ähnlichen Test gemacht.
Ich setze alle 60 Sekunden einen Ausgang und prüfe das Ergebnis nach 60 Sekunden Wartezeit in IPS.
Die Fehlerrate ist nicht sehr hoch (2-4 Fehler pro 1000). Jedoch ist eine Anfrage pro Minute keine besondere Belastung.
Leider kann ich keinen Test mit PKU machen.
Von daher kann ich eine gemeinsame Anfrage an die LCN Kollegen nur unterstützen.
Gruß Jan Peter

Und mit X2,X3 und X6 kann man auch LCN Module unbrauchbar machen, also immer schön aufpassen.
Habe über den Weg mit den X Kommandos auch schon Module umgeproggt, ist aber schon lange her mit meinen Versuchen, denn ich mache nicht mehr sehr viel am(mit) LCN. Halte nur noch meine Module am leben, so lange es geht. Bei Bedarf helfe ich aber gerne weiter, wenn mal was gebraucht wird und ich die Zeit finde.

@Ralf, der Reset hilft dir nicht am I-Port wenn der Dallas weg ist, da hilft nur abstecken und anstecken oder Modul stromlos machen und dann neu starten. Ich habe immer noch ein IX mit 2 x Dallas Bus am laufen, welche meine Heizung in den Bus bringt, immer noch Fehlerfrei. Ist jetzt aber nur noch als Info vorhanden, da dort ein Raspberry die komplette Steuerung seit Jahren macht.

Dann habe ich noch eine Frage zu den Fehlschaltungen, könnte es sein das dieses hauptsächlich bei Relais auftritt ? Ich habe da was beobachtet, und muss mal wieder Wochen warten ohne nen Reset zu machen. Kann aber auch Zufall sein.