diff --git a/en/home-assitantant-PTZ_bashIntegration.md b/en/home-assitantant-PTZ_bashIntegration.md new file mode 100644 index 0000000..82567b5 --- /dev/null +++ b/en/home-assitantant-PTZ_bashIntegration.md @@ -0,0 +1,237 @@ +# OpenIPC Wiki +[Table of Content](../README.md) + +## HomeAsistant PTZ INTEGRATION + +This integration is based on the ssh command to the open ipc firmware to integrate ptz controls, for cameras that do not have onvif support + +## Camera configuration +Load the modules with parameters (you may need to experiment with the hmaxstep and vmaxstep values for your specific camera) + +Copy motor_sample.ko ---> internal memory (ssh copy) +``` +scp "C:\Users\Downloads\sample_motor.ko" root@192.168.1.29:/sample_motor.ko +``` +Edit new autostart script on your camera +``` + $ vi /etc/rc.local +``` +Add these lines +``` +# addmod +insmod /sample_motor.ko vstep_offset=0 hmaxstep=2130 vmaxstep=1600 +# go to 0 position +t31-kmotor -d h -r +``` +Change file mod (add execute permissions ) +``` + $ chmod +x /etc/rc.local +``` + +## Home Assistant configuration +``` + docker ps + docker exec -it <"ID_HA_container"> /bin/bash +``` +install sshpass +``` +apk add sshpass +``` +``` +sshpass -p '123456' ssh root@192.168.1.29 +``` + +**Note:** run to add the fingerprints, otherwise the script will not work + +Add those lines to configuration.yaml +``` +shell_command: + c101_x_down: /bin/bash c101_x_down.sh + c101_x_up: /bin/bash c101_x_up.sh + c101_y_down: /bin/bash c101_y_down.sh + c101_y_up: /bin/bash c101_y_up.sh + c101_r: /bin/bash c101_r.sh +``` +Add those lines to scripts.yaml +``` +c101_x_down: + alias: c101_x_down + sequence: + - service: shell_command.c101_x_down + data: {} + mode: single +c101_x_up: + alias: c101_x_up + sequence: + - service: shell_command.c101_x_up + data: {} + mode: single +c101_y_down: + alias: c101_y_down + sequence: + - service: shell_command.c101_y_down + data: {} + mode: single +c101_y_up: + alias: c101_y_up + sequence: + - service: shell_command.c101_y_up + data: {} + mode: single +c101_r: + alias: c101_r + sequence: + - service: shell_command.c101_r + data: {} + mode: single +``` + +**SCRIPT** +This script is found in this repo +https://github.com/OpenIPC/motors/tree/4c7dc45e5e877f38c076343f361159844374920a/t31-kmotor + +Create this script in the /config directory + +``` +vi camara_scrip.sh +``` +Paste this file +``` +#!/bin/bash + +echo "Enter the camera user:" +read user +echo "Enter the camera password:" +read password +echo "Enter the camera IP:" +read ip +echo "Camera_Name_" +read name + +echo "#!/bin/bash +# Conctate al servidor remoto utilizando sshpass y la contraseña +sshpass -p '"$password"' ssh "$user"@"$ip" < "$name"_r.sh +echo "#!/bin/bash +# Conctate al servidor +sshpass -p '"$password"' ssh "$user"@"$ip" < "$name"_x_down.sh +echo "#!/bin/bash +# Conctate al servidor +sshpass -p '"$password"' ssh "$user"@"$ip" < "$name"_x_up.sh +echo "#!/bin/bash +# Conctate al servidor +sshpass -p '"$password"' ssh "$user"@"$ip" < "$name"_y_down.sh +echo "#!/bin/bash +# Conctate al servidor +sshpass -p '"$password"' ssh "$user"@"$ip" < "$name"_y_up.sh + +# Change mod +chmod +x "$name"_r.sh "$name"_x_down.sh "$name"_x_up.sh "$name"_y_down.sh "$name"_y_up.sh + +``` +Execute the following lines +``` +chmod +x camara_scrip.sh +./camara_scrip.sh +``` +Enter your camera data (name of before example c101) + +**Note:** need to make a script for the other files (configuration.yml and scrips.yml) + + + +## Lovelace example +Add this extract in a new card manually (yaml format) +``` +camera_view: live +type: picture-elements +image: http://192.168.1.29/image.jpg +entities: + - entity: script.c1_r + - entity: script.c1_x_down + - entity: script.c1_x_up + - entity: script.c1_y_down + - entity: script.c1_y_up +camera_image: camera.192_168_1_29 +elements: + - type: icon + icon: mdi:arrow-left-drop-circle + tap_action: + action: call-service + service: script.c1_x_down + style: + bottom: 45% + left: 5% + color: white + opacity: 0.5 + transform: scale(1.5, 1.5) + - type: icon + icon: mdi:arrow-right-drop-circle + tap_action: + action: call-service + service: script.c1_x_up + style: + bottom: 45% + right: 5% + color: white + opacity: 0.5 + transform: scale(1.5, 1.5) + - type: icon + icon: mdi:arrow-up-drop-circle + tap_action: + action: call-service + service: script.c1_y_up + style: + top: 10% + left: 46% + color: white + opacity: 0.5 + transform: scale(1.5, 1.5) + - type: icon + icon: mdi:arrow-down-drop-circle + tap_action: + action: call-service + service: script.c1_y_down + style: + bottom: 10% + left: 46% + color: white + opacity: 0.5 + transform: scale(1.5, 1.5) + - type: icon + icon: mdi:arrow-expand-all + tap_action: + action: more-info + entity: camera.192_168_1_29 + style: + top: 5% + right: 5% + color: white + opacity: 0.5 + transform: scale(1.5, 1.5) + +``` + +Example of view + +![GUI_Interface](../images/GUI_Interface.png) +# Enjoy the stream. diff --git a/images/GUI_Interface.png b/images/GUI_Interface.png new file mode 100644 index 0000000..19a1a2f Binary files /dev/null and b/images/GUI_Interface.png differ