LCN Schwellwerte bei Moduler ab 17er Firm

Geht da schon was, oder ist was Arbeit ?

Habe das Problem, einige Schwellwerte per IPS verstellen zu müssen.
PCHK2.8 und neuste IPS (Raspbi Version).

Andernfalls muss ich schnell ein Skript basteln.

Ok,

per Skript gelöst :


]<?
// %M000053.T2101059 Schwellwert R2 Var1

    if ($_IPS['SENDER'] == "RegisterVariable")
    {
	    $Value = substr($_IPS['VALUE'],1,9);
	    switch ($Value)
	       {
	       case "M000053.T":
	            $sw_reg = substr($_IPS['VALUE'],10,1);
	            $sw_var = substr($_IPS['VALUE'],11,1);
	            $wert = substr($_IPS['VALUE'],12,5);
	            $wert =$wert + 0;
               //echo "SW: ".$sw_var." Wert:". $wert."
";
	            switch ($sw_var) // Schwellwert 1-4
	               {
	               case 1:
							switch ($sw_reg) //Register 1-4
	               		{
                        case 1:
									// setValueInteger(20541 /*[Skripte\Wetter\Regvar LCN\SW-0st]*/ ,$wert);
								break;
                        case 2:
									setValueInteger(20541 /*[Skripte\Wetter\Regvar LCN\SW-0st]*/ ,$wert);
								break;
                        case 3:
									setValueInteger(52231 /*[Skripte\Wetter\Regvar LCN\SW-Süd]*/  ,$wert);
								break;
                        case 4:
									setValueInteger(18714 /*[Skripte\Wetter\Regvar LCN\SW-West]*/ ,$wert);
								break;
								}
	                  break;
	               case 2:
//	                  setValue(47914 /*[Objekt #47914 existiert nicht]*/,$wert);
	                  break;
	               case 3:
//	                  setValue(35361 /*[Objekt #35361 existiert nicht]*/,$wert);
	                  break;
	               case 4:
//	                  setValue(13236 /*[Objekt #13236 existiert nicht]*/,$wert);
	                  break;
	                }
	                break;
	        break;
			  }
    }

?>

Umrechnen in Lux :


<?
$wert= GetValue (20541 /*[Skripte\Wetter\Regvar LCN\SW-0st]*/   );
$wert = $wert / 100;
$wert = exp($wert);
$wert = ceil($wert);
//print_r ($wert.chr(10));
setValueFloat(22083 /*[Skripte\Wetter\Regvar LCN\SW-Ost in Lux]*/ ,$wert);
$wert= GetValue (52231 /*[Skripte\Wetter\Regvar LCN\SW-Süd]*/ );
$wert = $wert / 100;
$wert = exp($wert);
$wert = ceil($wert);
//print_r ($wert.chr(10));
setValueFloat(53352 /*[Skripte\Wetter\Regvar LCN\SW-Süd in Lux]*/  ,$wert);

$wert= GetValue (18714 /*[Skripte\Wetter\Regvar LCN\SW-West]*/   );
$wert = $wert / 100;
$wert = exp($wert);
$wert = ceil($wert);
setValueFloat(38221 /*[Skripte\Wetter\Regvar LCN\SW-West in Lux]*/  ,$wert);

?>

und die Einstellung über ± Schalter im Webfront fur Register2 - Schwellwert 1:


<?
if($_IPS["SENDER"] == "WebFront")
{
   SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]);
      if ($_IPS["VALUE"] == 0)
      {
			LCN_SendCommand(59871 /*[EG HV WetterIX (000,053)]*/  ,'SS','R0001SR21'); //-1
			
      }
      else
      {
			LCN_SendCommand(59871 /*[EG HV WetterIX (000,053)]*/  ,'SS','R0001AR21'); //+1
      }

}
?>

Gibt es inzwischen schon eine direkte Funktion in IPS?

Gruß
Florian

Hi Florian,

habe dir das Heute ja gezeigt, war ja von mir ein Schnellschuß.:smiley:
Wenn du das in schön hast, poste es doch einfach hier.:slight_smile:
Ich komme zu diesen Dingen, mit Doku einfach nicht.

Hi Thomas,
den Code habe ich angepasst, nach der Erfahrung dass deine Zuordnung gedanklich schwierig ist, habe ich im Case Register und Schwellwert vertauscht, dazu dann noch ein paar zeilen Kommentare eingefügt.

Gruß
Florian

<?
// %M000040.T2101059 Schwellwert R2 Var4  / Neue Module
// Modul von Thomas (tomgr), angepasst von Florian (Beleuchtfix)
// RegisterVariable ist ein LCN Instanz, die den LCN EIngang parsed.
// Einbinden unter Instanz --> Variable
// Zunächst wird geprüft ob es ein passender Eintrag des gewünschten Moduls ist
// dann erfolgt Auswertung nach den Register und im innern Switch Fall wird der einzelne Schwellwert ausgewertet

// die gewünschte Variable muss entsprechend deklariert werden und an der entsprechenden Stelle eingetragen werden

$InstanzID = @IPS_GetInstanceIDByName("Client Socket LCN", $ParentID);

    if ($_IPS['SENDER'] == "RegisterVariable")
    {
	    $Value = substr($_IPS['VALUE'],1,9);
	    switch ($Value)
	       {
	       case "M000040.T": // Hier wird die Modulnummer eingetragen
	            $sw_reg = substr($_IPS['VALUE'],10,1);
	            $sw_var = substr($_IPS['VALUE'],11,1);
	            $wert = substr($_IPS['VALUE'],12,5);
	            $wert =$wert + 0;
	           echo "LCN-String".($_IPS['VALUE']);
              echo "sw_reg: ".$sw_reg."SW: ".$sw_var." Wert:". $wert."
";

	            switch ($sw_reg) // Register 1-4
	               {
	               case 1:
							switch ($sw_var) // Schwellwert 1-4
	               		{
                        case 1:
									// setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 2:
								//	setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 3:
								//	setValueInteger(52231 /*[Objekt #52231 existiert nicht]*/  ,$wert);
								break;
                        case 4:
								// 	setValueInteger(18714 /*[Objekt #18714 existiert nicht]*/ ,$wert);
								break;
								}
	                  break;
	               case 2:
							switch ($sw_var) //Schwellwert 1-4
	               		{
                        case 1:
									// setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 2:
								//	setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 3:
								// setValueInteger(52231 /*[Objekt #52231 existiert nicht]*/  ,$wert);
								break;
                        case 4:
								 	setValue(45863 /*[LCN-Module\040\Schwellenwerte (0, 40)\M40_Reg2_S4]*/ ,(($wert - 1000) / 10));
								break;
								}
	                  break;
	               case 3:
							switch ($sw_var) //Schwellwert 1-4
	               		{
                        case 1:
									// setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 2:
								//	setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 3:
								//	setValueInteger(52231 /*[Objekt #52231 existiert nicht]*/  ,$wert);
								break;
                        case 4:
//								 	setValueInteger(45863 /*[LCN-Module\040\Schwellenwerte (0, 40)\M40_Reg2_S4]*/ ,$wert);
								break;
								}
	                  break;
	               case 4:
  							switch ($sw_var) //Schwellwert 1-4
	               		{
                        case 1:
									// setValueInteger(20541 /*[Objekt #20541 existiert nicht]*/ ,$wert);
								break;
                        case 2:
								//	setValueInteger(52231 /*[Objekt #52231 existiert nicht]*/  ,$wert);
								break;
                        case 3:
								//	setValueInteger(52231 /*[Objekt #52231 existiert nicht]*/  ,$wert);
								break;
                        case 4:
//								 	setValueInteger(45863 /*[LCN-Module\040\Schwellenwerte (0, 40)\M40_Reg2_S4]*/ ,$wert);
								break;
								}
							break;
						}
						break;
					}
				}

?>

Hi Florian,

Danke dir.:smiley:
Und wenn Fragen sind, telefonieren wir…
Schön wäre es, wenn die neuen Modul direkt von IPS unterstützt würden,
Ich weiß, es macht wieder Arbeit, da LCN ja auch immer weiter entwickelt wird, und nicht alles Zeitnah kommen kann.
Aber der Vorteil von IPS ist halt, man kann es selber lösen, wenn auch nicht in „schön“…

Kleine Warnung noch, ich mache meine Dinge nur über eine orginal „LCN-PCHK Kopplung“ (andere gehen teilweise NICHT !).