NEWS
IPCam FI9928P Position nach Astro http Request
-
Threatumzug: im Growatt Threat driftetetn wir in Richtung Foscam ab. Deshalb hier ein Threat dazu. Hintergrund war eine Skriptanfrage dazu.
-
smartboart 02.12.19 V0.04 weiteres Loglevel implementiert und Logik Scriptstart überarbeitet - Tag / Nacht wird in den states gespeichert. bei erstmaliger Ausführung müssen die Zustände Tagesposition / Nachtposition stimmen. Spätestens beim nächsten Schedule( Astro Trigger ) stimmen die States dann automatisch. Sollte eigentlich reichen.
-
smartboart 02.12.19 V0.05 Unterteilung in Konfigurationsbereich / Variablen für Http Request hinzugefügt
-
smartboart 03.12.19 V0.06 8 Presets Hinzugefuegt und entsprechende states angelegt um diese ueber Vis anfahren zu koennen. Sowie eine Stoppfunktion eingebaut . Astro ueber ueber Vis aktivier / deaktivierbar force creation hinzugefügt und create state überarbeitet. automatische Kontrollfahrt / anfahren aller angelegten Presets hinzugefügt. aktivierbare und verweildauer einstellbar in vis
-
smartboart 04.12.19 V0.07 Const Bewegungsmelder und Klingel hinzugefügt, Funktion under construction.
-
smartboard 08.12.19 V0.08 Log Einträge ergänzt Und Fehler in Zeitberechnung Verweilzeit bei Kontrollfahrten beseitigt/ Vis Eingabe in Sekunden
-
smartboart 08.12.19 V0.09 Funktionen der Foscam hinzugefügt. wie z.B Preset Cruise Funktionen und manuelle Fahrbefehle , Geschwindigkeit und Cruisdauer usw.
Achtung State Namen wurden geändert. ForceCreation ist aktiv. Gleichnamige States werden überschrieben neue angelegt. Am Besten alle States löschen und
Skript 2 x starten.Anpassungen in Vis evtl erforderlich.
Nicht alle States sind schon aktiv. diverse Funktionen noch nicht implementiert.
Ich habe mich dazu entschlossen das Skript eher wie eine Art Adapter aufzubauen und diverse Komfortfunktionen zu integrieren, welche es in der Foscam
Firmware nicht gibt. Ansosnten aber die Komforfunktionen der Kamera zu nutzen woes sinn macht. Deshalb die Überwahungsfahrt im Script entfernt und die der Kamera wird dann angesprochen. -
smartboart 08.12.19 V0.10 Manuelle Fahrbefehle implementiert, Fahrgeschwindigkit einstellbar, sofortiger stop und Homeposition der Kameraanfahren implementiert
-
smartboart 08.12.19 V0.11 start cruise , stop cruise und set CruiseTime implementiert
-smartboart 08.12.19 v0.12 Bugfix Logging und Stop Kamerabewegung
-smartboart 11.12.19 V1.00 Bugfixes -
noch offen Trigger Motion und Klingel verarbeiten und Informationen aus der Kamera auslesen und in states schreiben, diese dazu anlegen...
Skript / Adapter Foscam FI9928P mittels CGI Befehle nach Doku siehe Link.
https://www.foscam.es/descarga/Foscam-IPCamera-CGI-User-Guide-AllPlatforms-2015.11.06.pdf
//Skript Kamerasteuerung 01.12.2019 V0.03 /* #####changelog##### - smartboart 02.12.19 V0.04 weiteres Loglevel implementiert und Logik Scriptstart überarbeitet - Tag / Nacht wird in den states gespeichert. bei erstmaliger Ausführung müssen die Zustände Tagesposition / Nachtposition stimmen. Spätestens beim nächsten Schedule( Astro Trigger ) stimmen die States dann automatisch. Sollte eigentlich reichen. - smartboart 02.12.19 V0.05 Unterteilung in Konfigurationsbereich / Variablen für Http Request hinzugefügt - smartboart 03.12.19 V0.06 8 Presets Hinzugefuegt und entsprechende states angelegt um diese ueber Vis anfahren zu koennen. Sowie eine Stopfunktion eingebaut . Astro ueber ueber Vis aktivier / deaktivierbar force creation hinzugefügt und create state überarbeitet. Automatische Kontrollfahrt / anfahren aller angelegten Presets hinzugefügt.Aktivierbar durch den entsprechenden state - smartboart 04.12.19 V0.07 Const Bewegungsmelder und Klingel hinzugefügt, Funktion under construction. - smartboart 08.12.19 V0.08 Log Einträge ergänzt - smartboart 08.12.19 V0.09 Funktionen der Foscam hinzugefügt. wie z.B Preset Cruise Funktionen und manuelle Fahrbefehle , Geschwindigkeit und Cruisdauer usw. Achtung State Namen wurden geändert. ForceCreation ist aktiv. Gleichnamige States werden überschrieben neue angelegt. Am Besten alle States löschen und Skript 2 x starten.Anpassungen in Vis evtl erforderlich. Nicht alle States sind schon aktiv. diverse Funktionen noch nicht implementiert. Ich habe mich dazu entschlossen das Skript eher wie eine Art Adapter aufzubauen und diverse Komfortfunktionen zu integrieren, welche es in der Foscam Firmware nicht gibt. Ansosnten aber die Komforfunktionen der Kamera zu nutzen woes sinn macht. Deshalb die Überwahungsfahrt im Script entfernt und die der Kamera wird dann angesprochen. - smartboart 08.12.19 V0.10 Manuelle Fahrbefehle implementiert, Fahrgeschwindigkit einstellbar, sofortiger stop und Homeposition der Kameraanfahren implementiert - smartboart 08.12.19 V0.11 start cruise , stop cruise und set CruiseTime implementiert - smartboart 08.12.19 v0.12 Bugfix Logging und Stop Kamerabewegung - smartboart 11.12.19 V1.00 Bugfixes */ //*******************************Konfigurationsteil******************************* // fc wenn aktiv ueberschreibt fc bereits angelegten States...wenn nachträgliche Änderung der States überschrieben weden sollen const fC = true; /* Anlegen der Constanten für die Logik für Vis Hier wird der Installationspfad festgelegt Bei speichen unter javascript instanz 0 erfolgt dies unter jacascript.0.Kamera.Test.Kontrollfahrt*/ const Statepfad = 'javascript.' + instance + '.Kamera.Test.'; const idAnhaltezeit = Statepfad + 'Anhaltezeit'; //const idKontrollfahrt = Statepfad + 'Kontrollfahrt'; //const idVerweilzeit = Statepfad + 'Verweilzeit'; const idPosTag = Statepfad + 'Tagesposition'; const idPosNacht = Statepfad + 'Nachtposition'; const idAstro = Statepfad + 'Astro'; const idReset = Statepfad + 'Reset'; const idStopRun = Statepfad + 'StopRun'; const idZoomIn = Statepfad + 'ZoomIn'; const idZoomOut = Statepfad + 'ZoomOut'; const idZoomSpeed = Statepfad + 'ZoomSpeed'; const idZoomStop = Statepfad + 'ZoomStop'; const idGotoPreset = Statepfad + 'GotoPreset'; const idSpeed = Statepfad + 'Speed'; const idStopzeit = Statepfad + 'Stopzeit'; const idMoveRight = Statepfad + 'MoveRight'; const idMoveLeft = Statepfad + 'MoveLeft'; const idMoveUp = Statepfad + 'MoveUp'; const idMoveTopRight = Statepfad + 'MoveTopRight'; const idMoveTopLeft = Statepfad + 'MoveTopLeft'; const idMoveDown = Statepfad + 'MoveDown'; const idMoveBottomRight = Statepfad + 'MoveBottomRight'; const idMoveBottomLeft = Statepfad + 'MoveBottomLeft'; const idStartCruise = Statepfad + 'StartCruise'; const idStopCruise = Statepfad + 'StopCruise'; const idCruiseTime = Statepfad + 'CruiseTime'; // under construction Hier die Trigger / Klingel und Bewegungsmelder für die Kamera Positionieung eintragen const idKlingel = 'rpi2.0.gpio.13.state';// Drahtbruchsicher bei mir deshalb wird auf false getriggert const idMotionEingang = 'sonoff.0.Wemo_Eingang.POWER5'/*Bewegungsmelder Eingang*/; const idMotionCarport = 'sonoff.0.Wemo_Garage.POWER5'/*Bewegungsmelder Carport*/; const idMotionGarage = 'hm-rpc.0.PEQ0390467.1.MOTION'/*Bewegungsmelder Vorgarten MOTION*//*Bewegungsmelder Carport*/; // Anlegen der States für Vis createState(idAnhaltezeit, 1, fC, {def: 0,min: 0,name: 'Kamera Zoom Stopzeit',desc: 'Dauer in Sekunden bis zum Stop der Zoom Bewegung',type: 'number',unit: 's'}); createState(idPosTag, false, fC, {def: false,name: 'Tagesposition',desc: 'State Vis Tagesposition', type: 'boolean' } ); createState(idPosNacht, false, fC, {def: true,name: 'Nachtposition',desc: 'State Vis Nachtposition', type: 'boolean' } ); createState(idAstro, false, fC, {def: true,name: 'Astrofunktion',desc: 'Kamera nach nach Astro verfahren ', type: 'boolean' } ); createState(idStopzeit, 1, fC, {def: 0,min: 0,name: 'Zeit bis stop be Bewegung der Kamera',desc: 'Dauer in Sekunden bis zum Stop der Bewegung',type: 'number',unit: 's'}); createState(idReset, false, fC, {def: false,name: 'Kamera PTZ Reset',desc: 'Default Position anfahren',type: 'boolean',role: 'switch'}); createState(idStopRun, false, fC, {def: false,name: 'Kamera PTZ Stop',desc: 'Sofortiger Stop der Bewegung',type: 'boolean',role: 'switch'}); createState(idZoomIn, false, fC, {def: false,name: 'Kamera PTZ Zoom in',desc: 'Bild vergößern',type: 'boolean',role: 'switch'}); createState(idZoomOut, false, fC, {def: false,name: 'Kamera PTZ Zoom out',desc: 'Bild verkleinern',type: 'boolean',role: 'switch'}); createState(idZoomStop, false, fC, {def: false,name: 'Kamera PTZ Zoom stop',desc: 'Bild Zoom stop',type: 'boolean',role: 'switch'}); createState(idGotoPreset, 0, fC, {def: 0,min: 0,max: 8,name: 'Kamera PTZ Position wählen',desc: 'Preset auswählen (Zahlen von 1 bis X)',type: 'number'}); createState(idSpeed, 0, fC, {def: 0,min: 0,max: 4,name: 'Kamera PTZ Geschwindkeit bei Bewegung',desc: 'Geschwindigkeit von 0-4 bei der Bewegung',type: 'number',states: { 0: 'sehr schnell' , 1: 'schnell' , 2: 'normal' , 3: 'langsam' ,4: 'sehr langsam' }}); createState(idMoveRight, false, fC, {def: false,name: 'Kamera PTZ rechts',desc: 'Bewegung nach rechts',type: 'boolean',role: 'switch'}); createState(idMoveLeft, false, fC, {def: false,name: 'Kamera PTZ links',desc: 'Bewegung nach links',type: 'boolean',role: 'switch'}); createState(idMoveUp, false, fC, {def: false,name: 'Kamera PTZ oben',desc: 'Bewegung nach oben',type: 'boolean',role: 'switch'}); createState(idMoveTopRight, false, fC, {def: false,name: 'Kamera PTZ oben rechts',desc: 'Bewegung nach obenrechts',type: 'boolean',role: 'switch'}); createState(idMoveTopLeft, false, fC, {def: false,name: 'Kamera PTZ oben links',desc: 'Bewegung nach obenlinks',type: 'boolean',role: 'switch'}); createState(idMoveDown, false, fC, {def: false,name: 'Kamera PTZ unten',desc: 'Bewegung nach unten',type: 'boolean',role: 'switch'}); createState(idMoveBottomRight, false, fC, {def: false,name: 'Kamera PTZ unten rechts',desc: 'Bewegung nach untenrechts',type: 'boolean',role: 'switch'}); createState(idMoveBottomLeft, false, fC, {def: false,name: 'Kamera PTZ unten links',desc: 'Bewegung nach untenlinks',type: 'boolean',role: 'switch'}); createState(idStartCruise, false, fC, {def: false,name: 'Kamera PTZ Positionen abfahren',desc: 'in der Kamera konfigurite Positionsfahrt wird gestartet',type: 'boolean',role: 'switch'}); createState(idStopCruise, false, fC, {def: false,name: 'Kamera PTZ Positionen abfahren',desc: 'in der Kamera konfigurite Positionsfahrt wird gestoppt',type: 'boolean',role: 'switch'}); createState(idCruiseTime, 1, fC, {def: 1,min: 1,max:5,name: 'Kamera PTZ CruiseTime',type: 'number',desc:'1 = 5min , 2 = 10min , 3 = 15min , 4 = 20min , 5 = 25min',states: { 1: ' 5min' , 2: '10min' , 3: '15min' , 4: '20min' ,5: '25min' }}); // Variable logging aktivieren deaktivieren var logging = true; // Variable debug aktivieren deaktivieren var debug = true; // Variable http Request hier eintragen ( IP, Presetname , User und Paßwort der Kamera) evtl CGI Befehle anpassen var PresetTag = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX_Autos&usr=XXXXXX&pwd=XXXXXX'; var PresetNacht = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX_komplett&usr=XXXXXX&pwd=XXXXXX'; var Preset1 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; var Preset2 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; var Preset3 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXXt&usr=XXXXXX&pwd=XXXXXX'; var Preset4 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; var Preset5 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; var Preset6 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; var Preset7 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; var Preset8 = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=XXXXXX&usr=XXXXXX&pwd=XXXXXX'; // PTZ Befehle var Reset = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzReset&usr=XXXXXX&pwd=XXXXXX'; var StopRun = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ptzStopRun&usr=XXXXXX&pwd=XXXXXX'; var ZoomIn = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ZoomIn&usr=XXXXXX&pwd=XXXXXX'; var ZoomOut = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=ZoomOut&usr=XXXXXX&pwd=XXXXXX'; var ZoomStop = 'http://192.168.XX.XX/cgi-bin/CGIProxy.fcgi?cmd=zoomStop&usr=XXXXXX&pwd=XXXXXX'; var Speed0 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setPTZSpeed&speed=0&usr=XXXXXX&pwd=XXXXXX'; var Speed1 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setPTZSpeed&speed=1&usr=XXXXXX&pwd=XXXXXX'; var Speed2 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setPTZSpeed&speed=2&usr=XXXXXX&pwd=XXXXXX'; var Speed3 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setPTZSpeed&speed=3&usr=XXXXXX&pwd=XXXXXX'; var Speed4 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setPTZSpeed&speed=4&usr=XXXXXX&pwd=XXXXXX'; var MoveRight = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveRight&usr=XXXXXX&pwd=XXXXXX'; var MoveLeft = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveLeft&usr=XXXXXX&pwd=XXXXXX'; var MoveUp = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveUp&usr=XXXXXX&pwd=XXXXXX'; var MoveDown = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveDown&usr=XXXXXX&pwd=XXXXXX'; var MoveTopLeft = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveTopLeft&usr=XXXXXX&pwd=XXXXXX'; var MoveTopRight = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveTopRight&usr=XXXXXX&pwd=XXXXXX'; var MoveBottomLeft = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveBottomLeft&usr=XXXXXX&pwd=XXXXXX'; var MoveBottomRight = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzMoveBottomRight&usr=XXXXXX&pwd=XXXXXX'; var StartCruise = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzStartCruise&mapName=test&usr=XXXXXX&pwd=XXXXXX'; var StopCruise = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=ptzStopCruise&usr=XXXXXX&pwd=XXXXXX'; var CruiseTime1 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setCruiseTime&time=5&usr=XXXXXX&pwd=XXXXXX'; var CruiseTime2 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setCruiseTime&time=10&usr=XXXXXX&pwd=XXXXXX'; var CruiseTime3 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setCruiseTime&time=15&usr=XXXXXX&pwd=XXXXXX'; var CruiseTime4 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setCruiseTime&time=20&usr=XXXXXX&pwd=XXXXXX'; var CruiseTime5 = 'http://192.168.XX.XX//cgi-bin/CGIProxy.fcgi?cmd=setCruiseTime&time=25&usr=XXXXXX&pwd=XXXXXX'; /********************Ab hier muss nix mehr geändert werden******************************/ //###################################################### //Cruise / Presetfahrten / Überwachungsfahrt starten on(idStartCruise, function (obj) { if (!obj.state.ack && obj.state.val) { if(debug)log('Überwachungsfahrt der Kamera Presetpositionen gestartet'); setStateDelayed(idStartCruise, false, 500); request(StartCruise) , function (error, response){ if(debug && error)log(error, 'error'); } } }); //Cruise / Presetfahrten / Überwachungsfahrt stoppen on(idStopCruise, function (obj) { if (!obj.state.ack && obj.state.val) { if(debug)log('Überwachungsfahrt der Kamera Presetpositionen gestoppt'); setStateDelayed(idStopCruise, false, 500); request(StopCruise) , function (error, response){ if(debug && error)log(error, 'error'); } } }); //Cruise / Presetfahrten / Überwachungsfahrt Zeit einstellen //Fahrgeschwindigkeit ändern on(idCruiseTime , function (obj) { if (!obj.state.ack && obj.state.val) { var selectT = getState(idCruiseTime).val; if(selectT === 1)setCruiseT1(); if(selectT === 2)setCruiseT2(); if(selectT === 3)setCruiseT3(); if(selectT === 4)setCruiseT4(); if(selectT === 5)setCruiseT5(); if(logging)log(['Kontrollfahrtzeit eingestellt auf Vorwahl ',getState(idCruiseTime).val].join('')); } }); function setCruiseT1(){ if(debug)log('Funktion setCruiseT1 ausgeführt, Request URL CruiseTime1'); request(CruiseTime1) , function (error, response){ if(debug && error)log(error, 'error'); } } function setCruiseT2(){ if(debug)log('Funktion setCruiseT2 ausgeführt, Request URL CruiseTime2'); request(CruiseTime2) , function (error, response){ if(debug && error)log(error, 'error'); } } function setCruiseT3(){ if(debug)log('Funktion setCruiseT3 ausgeführt, Request URL CruiseTime3'); request(CruiseTime3) , function (error, response){ if(debug && error)log(error, 'error'); } } function setCruiseT4(){ if(debug)log('Funktion setCruiseT4 ausgeführt, Request URL CruiseTime4'); request(CruiseTime4) , function (error, response){ if(debug && error)log(error, 'error'); } } function setCruiseT5(){ if(debug)log('Funktion setCruiseT5 ausgeführt, Request URL CruiseTime5'); request(CruiseTime5) , function (error, response){ if(debug && error)log(error, 'error'); } } //###################################################### //Fahrgeschwindigkeit ändern on(idSpeed , function (obj) { var select = getState(idSpeed).val; if(select === 0)setspeed0(); if(select === 1)setspeed1(); if(select === 2)setspeed2(); if(select === 3)setspeed3(); if(select === 4)setspeed4(); if(logging)log(['Fahrgeschwindigkeit eingestellt Stufe ',getState(idSpeed).val].join('')); }); function setspeed0(){ if(debug)log('Funktion setspeed0 ausgeführt, Request URL Speed0'); request(Speed0) , function (error, response){ if(debug && error)log(error, 'error'); } } function setspeed1(){ if(debug)log('Funktion setspeed1 ausgeführt, Request URL Speed1'); request(Speed1) , function (error, response){ if(debug && error)log(error, 'error'); } } function setspeed2(){ if(debug)log('Funktion setspeed2 ausgeführt, Request URL Speed2'); request(Speed2) , function (error, response){ if(debug && error)log(error, 'error'); } } function setspeed3(){ if(debug)log('Funktion setspeed3 ausgeführt, Request URL Speed3'); request(Speed3) , function (error, response){ if(debug && error)log(error, 'error'); } } function setspeed4(){ if(debug)log('Funktion setspeed4 ausgeführt, Request URL Speed4'); request(Speed4) , function (error, response){ if(debug && error)log(error, 'error'); } } //######################################################## //Positionieren stoppen on(idStopRun, function (obj) { if (!obj.state.ack && obj.state.val) { if(logging)log('Positionierung manuell gestoppt'); setStateDelayed(idStopRun, false, 500); StopRunning(); } }); function StopRunning (){ if(debug)log('Funktion StopRunning ausgeführt, Request URL StopRun'); request(StopRun) , function (error, response){ if(debug && error)log(error, 'error'); } } //######################################################## //Homeposition anfahren on(idReset, function (obj) { if (!obj.state.ack && obj.state.val) { if(debug)log('Homeposition manuell angefahren'); setStateDelayed(idReset, false, 500); request(Reset) , function (error, response){ if(debug && error)log(error, 'error'); } } }); //######################################################## // Positionieren Hoch runter links recht obenlinksrechts untenlinksrechts manuell // Links on(idMoveLeft, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; LeftMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveLeft, false, 500); if(logging)log('Funktion LeftMoving gestartet'); } }); function LeftMoving(){ if(debug)log('Funktion LeftMoving ausgeführt, Request URL MoveLeft'); request(MoveLeft) , function (error, response){ if(debug && error)log(error, 'error'); } } //rechts on(idMoveRight, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; RightMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveRight, false, 500); if(logging)log('Funktion RightMoving gestartet'); } }); function RightMoving(){ if(debug)log('Funktion RighttMoving ausgeführt, Request URL MoveRight'); request(MoveRight) , function (error, response){ if(debug && error)log(error, 'error'); } } // hochrechts on(idMoveTopRight, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; TopRightMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveTopRight, false, 500); if(logging)log('Funktion TopRightMoving gestartet'); } }); function TopRightMoving(){ if(debug)log('Funktion TopRighttMoving ausgeführt, Request URL MoveTopRight'); request(MoveTopRight) , function (error, response){ if(debug && error)log(error, 'error'); } } // hochlinks on(idMoveTopLeft, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; TopLeftMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveTopLeft, false, 500); if(logging)log('Funktion TopLeftMoving gestartet'); } }); function TopLeftMoving(){ if(debug)log('Funktion TopLeftMoving ausgeführt, Request URL MoveTopLeft'); request(MoveTopLeft) , function (error, response){ if(debug && error)log(error, 'error'); } } // runterrechts on(idMoveBottomRight, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; BottomRightMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveBottomRight, false, 500); if(logging)log('Funktion BottomRightMoving gestartet'); } }); function BottomRightMoving(){ if(debug)log('Funktion BottomRighttMoving ausgeführt, Request URL MoveBottomRight'); request(MoveBottomRight) , function (error, response){ if(debug && error)log(error, 'error'); } } // runterlinks on(idMoveBottomLeft, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; BottomLeftMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveBottomLeft, false, 500); if(logging)log('Funktion BottomLeftMoving gestartet'); } }); function BottomLeftMoving(){ if(debug)log('Funktion BottomLefttMoving ausgeführt, Request URL MoveBottomLeft'); request(MoveBottomLeft) , function (error, response){ if(debug && error)log(error, 'error'); } } // oben on(idMoveUp, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; UpMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveUp, false, 500); if(logging)log('Funktion UpMoving gestartet'); } }); function UpMoving(){ if(debug)log('Funktion UptMoving ausgeführt, Request URL MoveUp'); request(MoveUp) , function (error, response){ if(debug && error)log(error, 'error'); } } // runter on(idMoveDown, function (obj) { if (!obj.state.ack && obj.state.val) { var Stoppzeit = getState(idAnhaltezeit).val; DownMoving(); setTimeout(StopRunning,Stoppzeit*1000); setStateDelayed(idMoveDown, false, 500); if(logging)log('Funktion DownMoving gestartet'); } }); function DownMoving(){ if(debug)log('Funktion DowntMoving ausgeführt, Request URL MoveDown'); request(MoveDown) , function (error, response){ if(debug && error)log(error, 'error'); } } //######################################################## //Preset anfahren on(idGotoPreset , function (obj) { if (!obj.state.ack && obj.state.val) { var preset = getState(idGotoPreset).val; if(logging)log(['Funktion gestartet, Preset Postion ',getState(idGotoPreset).val].join('')); if(preset === 1){ GoTo1(); }else{ if(preset === 2){ GoTo2(); }else{ if(preset === 3){ GoTo3(); }else{ if(preset === 4){ GoTo4(); }else{ if(preset === 5){ GoTo5(); }else{ if(preset === 6){ GoTo6(); }else{ if(preset === 7){ GoTo7(); }else{ if(preset === 8){ GoTo8(); } } } } } } } } } }); function GoTo1(){ if(debug)log('Funktion GoTo1 ausgeführt, Request URL Preset 1'); request(Preset1) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo2(){ if(debug)log('Funktion GoTo2 ausgeführt, Request URL Preset 2'); request(Preset2) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo3(){ if(debug)log('Funktion GoTo3 ausgeführt, Request URL Preset 3'); request(Preset3) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo4(){ if(debug)log('Funktion GoTo4 ausgeführt, Request URL Preset 4'); request(Preset4) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo5(){ if(debug)log('Funktion GoTo5 ausgeführt, Request URL Preset 5'); request(Preset5) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo6(){ if(debug)log('Funktion GoTo6 ausgeführt, Request URL Preset 6'); request(Preset6) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo7(){ if(debug)log('Funktion GoTo7 ausgeführt, Request URL Preset 7'); request(Preset7) , function (error, response){ if(debug && error)log(error, 'error'); } } function GoTo8(){ if(debug)log('Funktion GoTo8 ausgeführt, Request URL Preset 8'); request(Preset8) , function (error, response){ if(debug && error)log(error, 'error'); } } //######################################################## // Für Vis PresetButton zurück setzen on({id: [idReset,idStopRun, idZoomOut, idZoomIn,idZoomStop,idMoveBottomLeft,idMoveBottomRight, idMoveDown, idMoveUp, idMoveBottomLeft, idMoveBottomRight, idMoveTopLeft, idMoveTopRight, idMoveLeft, idMoveRight, idReset, idStopCruise, idStartCruise], change: 'any' }, function (obj) { if (!obj.state.ack && obj.state.val) { setState(idGotoPreset, 0); if(logging)log(' State GotoPreset für Vis Anzeige zurückgesetzt'); } }); //######################################################## // vergrößern manuell on(idZoomIn, function (obj) { if (!obj.state.ack && obj.state.val) { var Stopzeit = getState(idAnhaltezeit).val; Bigzoomen(); setTimeout(Stopzoomen,Stopzeit*1000); setStateDelayed(idZoomIn, false, 500); if(logging)log('Funktion Bigzoomen gestartet'); } }); function Bigzoomen(){ if(debug)log('Funktion Bigzoomen ausgeführt, Request URL ZoomIn'); request(ZoomIn) , function (error, response){ if(debug && error)log(error, 'error'); } } // verkleinern manuell on(idZoomOut, function (obj) { if (!obj.state.ack && obj.state.val) { var Stopzeit = getState(idAnhaltezeit).val; Smallzoomen(); setTimeout(Stopzoomen,Stopzeit*1000); setStateDelayed(idZoomOut, false, 500); if(logging)log('Funktion Smallzoomen gestartet'); } }); function Smallzoomen(){ if(debug )log('Funktion Smallzoomen ausgeführt, Request URL ZoomOut'); request(ZoomOut) , function (error, response){ if(debug && error)log(error, 'error'); } } //zoom Stopen manuell on(idZoomStop, function (obj) { if (!obj.state.ack && obj.state.val) { Stopzoomen(); setStateDelayed(idZoomStop, false, 500); if(logging)log('Funktion Stopzoomen gestartet'); } }); function Stopzoomen(){ if(debug)log('Funktion Stopzoomen ausgeführt, Request URL ZoomStop'); request(ZoomStop) , function (error, response){ if(debug && error)log(error, 'error'); } } //######################################################## // Funktionslogik Sonnenaufgang function Sonnenaufgang(){ var Astro = getState (idAstro).val; setState(idPosTag,true,true); setState(idPosNacht,false,true); if(Astro){ if (debug)log('Funktion Sonnenaufgang ausgeführt, Request URL PresetTag '); request(PresetTag), function (error, response){ if(debug && error)log(error, 'error'); } } } // Funktionslogik Sonnenuntergang function Sonnenuntergang(){ var Astro = getState (idAstro).val; setState(idPosTag,false,true); setState(idPosNacht,true,true); if(Astro){ if (debug)log('Funktion Sonnenuntergang ausgeführt, Request URL PresetNacht '); request(PresetNacht), function (error, response){ if(debug && error)log(error, 'error'); } } } //######################################################## // Skriptstart Scriptstart(); // Funktion Skriptstart function Scriptstart(){ var Tag = getState(idPosTag).val; var Nacht = getState(idPosNacht).val; if (Tag === true && Nacht === false){ Sonnenaufgang(); if (debug)log('Skriptstart Tagprogramm '); }else{ if (Nacht === true && Tag === false){ Sonnenuntergang(); if (debug)log('Skriptstart Nachtprogramm'); }else{ if (Tag === true && Nacht === true){ if(debug)log('Logikfehler Tag und Nacht aktiv') } } } } //######################################################## // Trigger Sonnenaufgang schedule({astro: "sunrise"}, function () {//Sonnenaufgang Sonnenaufgang(); if(logging)log('Funktion Sonnenaufgang gestartet') }); // Trigger Sonnenuntergang schedule({astro: "sunset"}, function () {//Sonnenuntergang Sonnenuntergang(); if(logging)log('Funktion Sonnenuntergang gestartet') });
-
-
entfernt
-
@Wiednitz
vlt. kannst du mal deine Erkenntnisse bzw. bereits getestetn CGI Befehle / Request Html zum Besten geben, welche du bereits erfolgreich getestet hast.
Mein anderes Skript dazu läuft mittels ONVIF , aber hier funktionieren die Presets nicht. Deshalb ist mein obiges Skript auch für mich sinning, wenn es denn bei mir funktioniert. Wie gesagt bisher nur onvif...
Habe bereits ein Skript laufen mit welchem ich manuell mittels onvif verfahren kann.
Aber mittels CGI könnte das auch direkt in Vis gehen. Frühere Versuche meinerseits waren bei der onvif nicht erfolgreich.Mir fallen da noch andere Sachen ein, z.B nach Bewegung oder Klingel die entsprechenden Presets anfahren.
Hoffe ich bekomme die Presets zum laufen mittes CGI. -
Ha mit Hausklingel habe ich gestern erst fertiggestellt, läuft 1a. Normales klingeln, Kamera fährt auf PTZ Hoftor, zoomt heran, macht Foto für Telegram, fährt wieder auf Ursprung zurück und es Klingeln alle Telefone an der Fritzbox, wichtig wenn im Garten. Langes klingeln -einstellbar- das Gleiche, öffnet zusätzlich Tor für zum Beispiel Postbote, muss ihm natürlich mitgeteilt werden bei Nachricht für Ablageort.
Script ist schon Recht umfangreich und Blockly ;). Kann ich gern einstellen.
-
Alsoich habe mit dem CGI nicht so tolle Erfahrung ..ausser für snap benutze ich es nicht. Der Link
http://192.168.xx.xx/cgi-bin/hi3510/preset.cgi?-act=goto&-number=5?usr=xxxxxx&pwd=xxxxx
funktioniert bei mir schomal nicht...hast ne idee?Antwort 404 not found
-
mein snap sieht so aus...der geht..
http://192.168.xx.xx/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxx -
Probier mal
/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=test&usr=admin&pwd=
Hast du PTZ Nummern ?
-
ja habe nummern 5, 6 ,7 ,8 11 und 12 aktiv in Vis mittels Onvif script, funktioniert aber nur wenn der token vorher im browser aktiv war. deshalb ist mir die Lösung hier lieber
-
-
@Wiednitz sagte in IPCam FI9928P Position nach Astro http Request:
/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=test&usr=admin&pwd=
bekomme als result
<CGI_Result>
<result>0</result>
<runResult>1</runResult>
</CGI_Result> -
Onvif hab ich auch, aber noch nicht mit beschäftigt. Videostream geht ja im vis eh nicht unter Windows 10
-
@Wiednitz ja habe mich nur damit beschäftigt, weilich cginicht hinbekommen habe..Hatte jetzt nur Hoffnung weil es bei deiner Cam geht....Ist. vlt. nen Firmware ding..
<CGI_Result>
<result>0</result>
<runResult>1</runResult>
</CGI_Result>
alsoich bekomme den Ressult , passiert aber nix... -
-
Ja, das Dokument hatte ich glaube ich auch schon..Schau mir das mal morgen in Ruhe an...Muss jetzt schluss machen....Frau quengelt schon....Bis dann!!!!
-
@Wiednitz Alter das geht...ich muss statt der Nummer den Namen eintragen ( Vorgarten_Autos) schon klappts!!!!!!!!
-
Wollte grad schreiben, kann keine Zahl sein, fragte ja erst schon. Hatte das eben noch gefunden:
L’api Foscam FI9928P
Voici les différentes commandes API que j’ai ajouté dans la vidéo ci-dessus :Flux vidéo : http://IP:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=#username#&pwd=#password#
Position (ici la position syno0) : http://IP:port/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=syno0&usr=#username#&pwd=#password#
Zoom + : http://IP:port/cgi-bin/CGIProxy.fcgi?cmd=zoomIn&usr=#username#&pwd=#password#
Zoom – : /cgi-bin/CGIProxy.fcgi?cmd=zoomOut&usr=#username#&pwd=#password#
Arrêt du zoom : /cgi-bin/CGIProxy.fcgi?cmd=zoomStop&usr=#username#&pwd=#password#Bis später...
-
@Wiednitz Danke!!!
-
Gerne....
Script läuft doch nicht wie gewünscht. Wenn ich es jetzt starte, geht es auf Tagprogramm und damit auf PTZ Tag !?
javascript.0 2019-12-01 23:39:41.058 info script.js.IPCam_TagNachtPTZ: registered 0 subscriptions and 2 schedules javascript.0 2019-12-01 23:39:41.058 info script.js.IPCam_TagNachtPTZ: Skriptstart Tagprogramm javascript.0 2019-12-01 23:39:41.057 info Start javascript script.js.IPCam_TagNachtPTZ
Bin mir jetzt unsicher, ob es mit Version 2 erst funktioniert hat oder nicht !?
So, jetzt erstmal Matratzenhorchdienst ^^
-
@Wiednitz sagte in IPCam FI9928P Position nach Astro http Request:
Bin mir jetzt unsicher, ob es mit Version 2 erst funktioniert hat oder nicht !?
Hallo,
ich hatte während dem das Script online war noch diverse Anpassungen gemacht. Vlt. Hast du nen Zwischenstand abgerufen.
Ich habe oben aktualisiert , ein weiteres Loglevel implementiert und die Logik Scriptstart überarbeitet - Tag / Nacht wird in den states gespeichert.bei erstmaliger Ausführung müssen die Zustände Tagesposition / Nachtposition stimmen. Spätestens beim nächsten Schedule( Astro Trigger )
stimmen die States dann automatisch. Sollte eigentlich reichen.
Ich verwende die beiden States hier auch als Merker. Wenn du aber z.B Tagsüber dein System herunterfährst und ers Nachts wieder hochfährst stimmt die Tageszeit natürlich nicht. Der Astro Schedule ist ein Trigger der immer nur einmal am Tag aktiv ist. Ist das System zu diesem Zeitpunkt aus oder das skript angehalten, erfolgt natürlich kein Weichsel der Tageszeit. Das passiert erst dann wieder beim nächsten schedule. Dann stimmen auch wieder die Zustände..
Dass musst du halt wissen.
Wenn du aus irgendwelchen Gründen ständig deine Skipte anhälst oder das System pausierst, was für mich keinen Sinn ergibt, ausser bei Wartungsarbeiten, kann das halt vorkommen.
Dann müsste ich in den Skriptstart eine is Time in Range abfrage einbauen..Aber ich denke das sollte so reichen.
-
Achso, habe das Script ab V.0.04 jetzt nicht ausprobiert, bin nicht zu Hause... Wenn ich mich irgendwo vertippt habe oder ein paar Sonderzeichen vergessen habe sei es mir verziehen.