IPS Steuerung ect. mit ServerSocket und Register Variable

Hallo,

ich versuche damit auch derzeit mal eine Variable zu lesen oder schreiben. Leider ohne Erfolg.

http://localhost:9998/IPS_GetFunctionList(0)

erhalte ich ein Ergebnis.

Mit

http://localhost:9998/GetValue(16968)

erhalte ich : Alles wird GUT…oder auch nicht…
Fehler beim Aufruf von: GetValueBoolean

Auch beim schreiben

http://localhost:9998/SetValueBoolean(16968,true)

erhalte ich: Alles wird GUT…oder auch nicht…
Fehler beim Aufruf von: SetValueBoolean Wrong parameter type for SetValueBoolean()

Also alle Test, wo eine VariablenID oder sogar mehrere übergeben werden scheitern.
Mache ich was falsch?

Habe eben das aktuelle Script aus Post 1 verwendet.

Danke und Gruß
Christian

Hallo,

so ich antworte mir mal selber:
Es sind im Script nur zwei Befehle eingebaut: SetValue und GetValue

Damit kann ich auch meine Variable ändern. Durch den Code steige ich ehrlich gesagt nicht durch, aber so geht es erst mal für mich.

Gruß
Christian

Bin jetzt erst hier drüber gestolpert. Vielen Dank für das Skript und die Anleitung funktioniert prima.

Top. Vielen dank.
Das probiere ich heute abend gleich mal aus um von meinem win IPS aus variablen vom raspi IPS auszulesen ( 1 wire Temperaturen)… Bisher mach ichs per json Abfrage.
Mal schauen was perfomanter ist.

habs gerade mal getestet.

Mein WIN IPS lasse ich mit deinem Skript auf mein Raspi IPS zugreifen:

$result1 = Sys_GetURLContent("http://192.168.2.3:9998/GetValue(24809)");
$result2 = Sys_GetURLContent("http://192.168.2.3:9998/GetValue(37544)");
$result3 = Sys_GetURLContent("http://192.168.2.3:9998/GetValue(17161)");
SetValue(50558 /*[Haus\Temperaturen\Heizraum - Raspberry PI\TempSensor1]*/, $result1);
SetValue(57694 /*[Haus\Temperaturen\Heizraum - Raspberry PI\TempSensor2]*/, $result2);
SetValue(46335 /*[Haus\Temperaturen\Heizraum - Raspberry PI\TempSensor3]*/, $result3);
//SetValue(17313 /*[Haus\Temperaturen\Heizraum - Raspberry PI\Abruf]*/,date("d.m.y H:i:s"));

Das Skript benötigt ca. 600ms.

Per IPS RPC API dauerts 130ms.

$rpc = new JSONRPC("http://'$user',$pass@192.168.2.3:3777/api/");
$result1 = $rpc->GetValue(24809 /*[Objekt #24809 existiert nicht]*/);
$result2 = $rpc->GetValue(37544 /*[Objekt #37544 existiert nicht]*/);
$result3 = $rpc->GetValue(17161 /*[Objekt #17161 existiert nicht]*/);
SetValue(50558 /*[Haus\Temperaturen\Heizraum - Raspberry PI\TempSensor1]*/, $result1);
SetValue(57694 /*[Haus\Temperaturen\Heizraum - Raspberry PI\TempSensor2]*/, $result2);
SetValue(46335 /*[Haus\Temperaturen\Heizraum - Raspberry PI\TempSensor3]*/, $result3);
SetValue(17313 /*[Haus\Temperaturen\Heizraum - Raspberry PI\Abruf]*/,date("d.m.y H:i:s"));

Kann man die SYS_GETURLCONTENT Abfrage beschleunigen?
Oder gibts alternativen.

Die Abfrage „http://192.168.2.3:9998/GetValue(24809)“ muss mir nur einen Temperaturwert zurückgeben.

Hallo zusammen,

das Thema ist schon was älter aber ich versuche es trotzdem mal.

Das Script ist wirklich sehr gut und ich konnte die Daten vom ServerSocket lesen:

http://localhost:9998/?a=1&b=2&c=3

(natürlich angepasst an meine IP).

Wenn ich aber die Funktion:

http://localhost:9998/?a=1&b=2&c=3

aufrufe bekomme ich bei den Meldungen gesagt, dass die Variable „data“ nicht existiert.

Ich habe das Script von der ersten Seite genutzt und ich finde den Fehler leider nicht. Kann mir vielleicht jemand sagen wo der Fehler liegt?

Ich wollte dir auch mal kurz meinen Dank aussprechen und von meinem erfolgreichen Einsatz deiner Lösung berichten.

Ich nutze dein Script jetzt auf folgende Weise:

Systeme:

  1. Synology NAS mit Surveillance Station und mehreren Kameras
  2. Das in diesem Post zur Verfügung gestellte Script auf einem Ubuntu IPSymcon Server eingerichtet

Anwendungsfälle:

  1. IPS Lichtsteuerung auf Basis der Video-Bewegungserkennung der Synology
  2. IPS Alarmanlage / Verbesserte Alarmergebnisse auf Basis der Bewegungserkennung der Synology

Umsetzung:

  1. Script aus diesem Post in IPS aufgestzt --> Variablen in IPS für jede Kamera erstellt
  2. Synology Surveillance Station so eingestellt, dass die Kameras Bewegungen erkennen und melden
    a) Ereigniserkennung der gewünschten Kamera konfigurieren
    b) Aktionsregeln festlegen die z.B. zu bestimmten Zeiten (z.B. Nachts für Alarm und tags für Licht) die Aktion an „Externes Gerät“ „http://x.x.x.x:9998/SetValue(yyyyy,z)“ auslösen.

Somit ist die Video Bewegungserkennung der Surveillance Station von Synology auf einfache Weise zu einem weiteren Eingangskanal in IPSymcon geworden und die Werte können ausgewertet/weiter verarbeitet werden.

Hallo Rangarin,
kannst du das bitte ausführlicher erklären? Das ist genau das, was ich auch brauche. Nur leider verstehe ich nur Bahnhof.
Screenshots wären hier sehr hilfreich. So in etwa wie ich es hier im Beitrag #5 gemacht habe. https://www.symcon.de/forum/threads/32488-Bewegungserkennung-mit-Hikvision-Kamera-DS-2CD2032-I. Wäre dir sehr dankbar.
VG, Alfred

Hallo Tierfreund,

vielen Dank für das geniale Script, erspart mir das Parsen von 4 Sockets/Rgistervariablen!

Hier mal eine mögliche (bei mir realisierte) Anwendung.
Hiermeit werden Stati meines Lancom-Routers anzgeigt, genutzt wird dafür die Aktionstabelle (siehe Beispiel).
Anlegen der Variablen für up/down (bool) und ip-add (string) und ab geht es.

Viele Grüße aus OBC

kea

# Script (10.12.0147 / 15.11.2017) 

lang English
flash No


cd /Setup/WAN/Action-Table 
#    Index  Active              Host-Name                             Peer                           Lock-Time         Condition                  Action                                                        Check-For          Owner                     Routing-Tag
#    =======-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
add  17    {Active}  Yes       {Host-Name}  "IPS-SEND-IP"            {Peer}  "<Con.-Name Inet>" 	{Lock-Time}  0    {Condition}  Establish     {Action}  "http://10.10.10.10:999/SetValue(16605,%a)"         {Check-For}  ""    {Owner}  "root"           {Routing-Tag}  0
add  18    {Active}  Yes       {Host-Name}  "IPS-VPN-IPH-UP"         {Peer}  "<Con.-Name VPN>"   	{Lock-Time}  0    {Condition}  Establish     {Action}  "http://10.10.10.10:999/SetValue(21843,true)"       {Check-For}  ""    {Owner}  "root"           {Routing-Tag}  0
add  19    {Active}  Yes       {Host-Name}  "IPS-VPN-IPH-DOWN"       {Peer}  "<Con.-Name VPN>"   	{Lock-Time}  0    {Condition}  End           {Action}  "http://10.10.10.10:999/SetValue(21843,false)"      {Check-For}  ""    {Owner}  "root"           {Routing-Tag}  0
add  32    {Active}  Yes       {Host-Name}  "IPS-INET-DSL-UP"        {Peer}  "<Con.-Name Inet>"   	{Lock-Time}  0    {Condition}  Establish     {Action}  "http://10.10.10.10:999/SetValue(31466,true)"       {Check-For}  ""    {Owner}  "root"           {Routing-Tag}  0
add  33    {Active}  Yes       {Host-Name}  "IPS-INET-DSL-UP"        {Peer}  "<Con.-Name Inet>"   	{Lock-Time}  0    {Condition}  End           {Action}  "http://10.10.10.10:999/SetValue(31466,false)"      {Check-For}  ""    {Owner}  "root"           {Routing-Tag}  0
cd /
flash Yes

# done
exit



Hallo Tierfreund,

nachdem das Script lange Zeit anstandslos gelaufen ist, produziert es nun Fehler.
Änderungen an meinem System habe ich (auße den IPS-Updates) keine durchgeführt.

Hier die Fehlermeldung:


„Undefined offset:2“

Bei jedem Aufruf wird die Antwort der Registervariable länger, als ob diese nicht „geleert“ wird.
Beispiel:

Viele Grüße

kea