UVR 1611 Ausgänge mit Symcon stellen

Hi!

Irgendwie will es mir nicht gelingen die Ausgänge (e.g. Pumpe) der UVR 1611 mittels BL-NET (V1.3 bzw. 1.4) stabil/zuverlässig zu schalten.

Im Prinzip benötigt man unter 2.1 doch eigentlich nur die 3 folgenden Kommandos um z.B. Ausgang 5 auf „Hand / on“ zu stellen korrekt?

$id = 47440 /*[WWW Reader]*/;
//Eigenschaft verändern
// 01: Hand- off / 02: Hand - on / 03: auto
WWWReader_SetPage($id,"http://192.168.178.110/580600.htm?t91v02A12005=02");

//Ã?nderung abspeichern
IPS_ApplyChanges($id);

//Neue URL abrufen
WWWReader_UpdatePage($id);

oder liegt da schon irgendwo das Problem?

Bin für alle Hinweise / Beispielskripte dankbar.

Das Schalten von Ausgängen per BL-Webfront ist nicht ganz trivial.
Man muss zunächst unbedingt sicherstellen, dass kein paralleler Zugriff erfolgt.
Bei mir wird dazu eine Bool-Variable gesetzt, die das Abfragen der UVR aussetzt.

Danach dann zunächst die Initialisierungsseite für den entsprechenden Ausgang aufrufe.
Erst dann erfolgt der eigentliche ‚Schaltaufruf‘.

Mein Script, mit dem ich den Ausgang 12 toggle, sieht so aus:

<?
 	include 'Snoopy.class.php';

	If (!GetValueBoolean(24064 /*[Heizung\UVR1611\UVR_Out_12]*/)) {
      SetValueBoolean(46510 /*[GetUVR_Values\Bootloader-Busy]*/, true);
      $snoopy = new Snoopy;
		//an (Hand on):
		$snoopy->fetch('http://[BL-IP]/580600.htm?wA1200C=%3C%3E');
		$snoopy->fetch('http://[BL-IP]/580600.htm?t91v03A1200C=02');

      print ($snoopy->results);
      SetValueBoolean(46510 /*[GetUVR_Values\Bootloader-Busy]*/, false);
   }
	else {
      SetValueBoolean(46510 /*[GetUVR_Values\Bootloader-Busy]*/, true);
      $snoopy = new Snoopy;
		//aus (Auto):
		$snoopy->fetch('http://[BL-IP]/580600.htm?wA1200C=%3C%3E');
		$snoopy->fetch('http://[BL-IP]/580600.htm?t91v02A1200C=03');

      print ($snoopy->results);
      SetValueBoolean(46510 /*[GetUVR_Values\Bootloader-Busy]*/, false);
	}
return;

Das Snoopy-Skript ist hier zu finden: Snoopy

Danke für die Hilfe / die Idee mit dem snoopy include hat endlich weitergeholfen.

Nun habe ich endlich mal wieder etwas Zeit gehabt… bei mir toggelt Symcon jetzt zwischen „Auto (ein oder aus)“ und „Hand-off“. Ich brauchte dazu noch eine weiter Variable da „off“ ja in beiden Fällen auftreten kann.

Hier mal der leicht modifzierte Code - läuft bei mir ganz gut.
sind noch ein paar Meldungskommandos drin die können raus.


// dieses Script entscheidet aufgrund der Positionsmeldungen FHT des
// Heizungsregelers ob die HK Pumpe laufen soll oder ausgeschaltet werden kann
// Pumpe schaltet zwischen Hand-aus und Auto (je nach UVR Regelung dann aus/an
// Trigger ist die Summe aller FHT Positionsinstanzen

include ( "Snoopy.class.php" );

$Position= GetValue(23822/*[FHT_POSITION_SUMME]*/);
$Pumpe = GetValueBoolean(41038 /*[Heizung\UVR1611\HK2_Pumpe(Wand)]*/);
$Pumpeauto = GetValueBoolean(22824 /*[HK2_Auto]*/);
echo "Position: ", $Position, " Pumpe:  ",$Pumpe, " Auto ", $Pumpeauto, "  ";

IF ($Position > 20)
	{echo " Pumpe anschalten";
	IF ($Pumpe or $Pumpeauto )
		{echo " Pumpe ist schon an";
		}
	else
		{echo "- Pumpe muss eingeschaltet werden";
//		IPS_RunScript (28727 /*[Live_Script\HK2_(Wand)_Pumpe_schalten]*/);
		SetValueBoolean(19076 /*[Heizung\.Bootloader-Busy]*/, true);
	   $snoopy = new Snoopy;
      //an (auto an):
      $snoopy->fetch('http://192.168.178.110/580600.htm?wA1200C=%3C%3E');
      $snoopy->fetch('http://192.168.178.110/580600.htm?t91v02A12006=03');
      print ($snoopy->results);
		print ("Pumpe HK2: auto an");
      SetValueBoolean(19076 /*[Heizung\.Bootloader-Busy]*/, false);
      SetValueBoolean(22824 /*[HK2_Auto]*/, true);
		}
	}
else
	{echo " Pumpe ausschalten ";
	IF ($Pumpe == False)
		{echo " Pumpe ist schon aus";
		}
	else
		{echo "- Pumpe muss ausgeschaltet werden";
//		IPS_RunScript (28727 /*[Live_Script\HK2_(Wand)_Pumpe_schalten]*/);
		SetValueBoolean(19076 /*[Heizung\.Bootloader-Busy]*/, true);
	   $snoopy = new Snoopy;
      //aus (Hand):
      $snoopy->fetch('http://192.168.178.110/580600.htm?wA1200C=%3C%3E');
      $snoopy->fetch('http://192.168.178.110/580600.htm?t91v03A12006=01');
		print ($snoopy->results);
		print ("Pumpe HK2: Hand aus");
      SetValueBoolean(19076 /*[Heizung\.Bootloader-Busy]*/, false);
		SetValueBoolean(22824 /*[HK2_Auto]*/, false);
		}
	}

Hallo Bernd,

kleiner Hinweis zu diesem Ausschnitt.

{echo " Pumpe ausschalten "; 
    IF ($Pumpe = False) 
        {echo " Pumpe ist schon aus"; 
        } 

Ich denke, Du willst vergleichen. Ein Vergleich geht mit == oder ===.
Ein = ist ein zuweisen eines Wertes.

Vergleich PHP: Vergleichs-Operatoren - Manual

Zuweisung PHP: Zuweisungsoperatoren - Manual

Hallo,

Ich habe auch eine Frage dazu,

Habe mir gerade das gleiche Skipt wie Robi gebaut (auf meine Heizung und Pumpe abgeändert.

Wie stellst du sicher,dass kein paralleler Zugriff statt findet. Die Varibale(bei dir 24064) wird ja nur entweder auf an oder auf aus gestellt. Wie hast Du diese noch konfiguriert?

Wenn ich das Skript bei mir starte, kann ich beobachten,dass die Variable kurz auf true springt und danach wieder auf false. Leider wird bei mir kein Ausgang geschaltet.

Gruß Heiko

Hallo
Zu den Anmerkungen:

  • korrekt der Vergleich muss natürlich mit ‚==‘ durchgeführt werden (Beispiel Script ist jetzt auch geändert)
  • Das Script triggert nicht wie gewünscht (hatte dieses Phänome heute auch bei der Rückkehr aus dem Urlaub. Es scheint so als würde das HTML Interface des Bootloaders nicht immer die (Knoten-ID) der aktiven UVR behalten.
    kurzfristige Abhilfe mit dem Webbrowser das HTML Interface des Bootladers aufrufen (bei mir http://192.168.178.110/NWKMEN.htm?v=10 ) und dort den aktiven Knoten auswählen (ich habe mehr als einen Knoten am Bootloader) - dannach funktioniert das Script wieder. Muß mir noch mal überlegen ob und wie man dass in dem Script abfangen kann.

Gruß
Bernd