Ajout du visiophone somfy

Bonjour, j’ai installe le visiophone v500 io pro avec le module de connectivité et dans le plugin somfy home alarm, il est pas reconnu mais on a des traces de son activité et je vois que c’est du webrtc utilise avec une ip externe et des mot de passe mais je sais pas transformer ce que je vois dans le langage php dans jeedom pour l’intégrer plus tard au plugins car bien utile la camera.
SomfyHomeAlarm.txt (7,8 Ko)

Bonjour,

N’aillant pas le matériel et un emploi du temps assez chaotique, je ne pourrais pas rajouter la prise en charge du visiophone, désolé :confused:

Je pourrai être bêta testeur mais je sais pas afficher le webrtc car je pense avoir toutes les informations nécessaire mais trouve pas d’informations d’exemples simples pour ajouter le visio et donnez mes recherches dans le plugins

Le problème c’est que pour ce genre d’intégrations, il faut que je puisse tester en direct, voir les erreurs, corriger, rajouter des logs à la volée, etc. Ne connaissant pas moi même comment intégrer du webRTC, ça ne me semble pas faisable de se baser uniquement sur les retours des beta-testeurs, ca prendrait beaucoup trop de temps, que je n’ai pas actuellement désolé :confused:

Bonjour, en cherchant a sniffer les paquets réseaux et ouvrir apk j’ai trouver l’API qui manque mais je trouve pas la ligne pour soit lancer un rtsp ou rtmp ou le webrtc mais certain ligne pourait etre utile pour les cameras je pense.

API

dev1 a dev9
https://dev1-api.myfox.io
https://dev1-status-api.myfox.io
https://dev1-sso.myfox.io
https://dev1-api.myfox.io
ws://dev1-api.myfox.io:8001/events/websocket
https://dev1-video.myfox.io

https://api-preprod.myfox.io
https://status-api-preprod.myfox.io
https://api-preprod.myfox.io
https://sso-preprod.myfox.io
https://ha102-1.overkiz.com
https://video-preprod.myfox.io
wss://websocket-preprod.myfox.io/events/websocket

https://api.myfox.io
https://status-api.myfox.io
https://api.myfox.io
https://sso.myfox.io
https://ha101-1.overkiz.com
https://video.myfox.io
wss://websocket.myfox.io/events/websocket

@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/access/trigger 
@POST https://api.myfox.io/v3/site/{siteId}/installer 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/access/answer_call 
@GET https://api.myfox.io/v3/site/{siteId}/authority-search 
@POST https://api.myfox.io/video/site/{siteId}/device/{deviceId}/snapshot 
@GET https://api.myfox.io/video/site/{siteId}/device/{deviceId}/video_export 
@GET https://api.myfox.io/v3/site/{siteId}/lorawan/covertest 
@POST https://api.myfox.io/v4/payment/site/{siteId}/service/checkout 
@GET https://api.myfox.io/v3/dictionary/app/{lang}/checksum 
@POST https://api.myfox.io/v3/site 
@GET https://api.myfox.io/v3/site/{siteId}/plan/current 
@HTTP hasBody = true, method = "DELETE", path = https://api.myfox.io/v3/user/gdpr-delete 
@HTTP hasBody = true, method = "DELETE", path = https://api.myfox.io/v3/site/{siteId}/installer/{installerId} 
@DELETE https://api.myfox.io/v3/site/{siteId}/user/{userId}/code 
@DELETE https://api.myfox.io/v3/site/{siteId} 
@DELETE https://api.myfox.io/v3/site/{siteId}/user/{userId} 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/action 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/action 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/action 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/action 
@PUT https://api.myfox.io/v3/site/{siteId}/device/{deviceId} 
@PUT https://api.myfox.io/v3/site/{siteId}/device/{deviceId} 
@POST https://api.myfox.io/v3/site/{siteId}/device-install/{deviceType} 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/reboot 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/uninstall 
@GET https://api.myfox.io/v3/site/{siteId}/device 
@GET https://api.myfox.io/v3/site/{siteId}/device-compatible 
@GET https://api.myfox.io/v3/dictionary/app/{lang} 
@GET https://api.myfox.io/video/site/{siteId}/device/{deviceId}/timeline/events/{eventId}/{format} 
@POST https://api.myfox.io/v3/site/{siteId}/device/diagnosis/extend 
@POST https://api.myfox.io/video/site/{siteId}/qrcode 
@GET https://api.myfox.io/v3/city/{zipCode} 
@GET https://api.myfox.io/v4/api/site/{siteId}/gsm-threshold 
@GET https://api.myfox.io/v4/payment/site/{siteId}/locale/{locale}/invoice 
@GET https://api.myfox.io/v4/api/user/{userId}/opt-in 
@GET https://api.myfox.io/v4/payment/site/{siteId}/partner/{partnerId}/setup 
@GET https://api.myfox.io/v4/payment/site/{siteId}/service 
@GET https://api.myfox.io/v3/site/{siteId} 
@GET https://api.myfox.io/v3/site/{siteId}/user/{userId} 
@GET https://api.myfox.io/v3/site/{siteId}/history 
@GET https://api.myfox.io/human/site/{siteId}/device/{deviceId}/snapshot 
@GET https://api.myfox.io/v3/site/{siteId}/invoice 
@PUT https://api.myfox.io/v3/site/{siteId}/user/{userId}/location 
@GET https://api.myfox.io/v3/site/{siteId}/service 
@POST https://api.myfox.io/v3/site/{siteId}/device/lorawan/test 
@GET https://api.myfox.io/v3/photo/{photoId} 
@POST https://api.myfox.io/v4/api/site/{siteId}/gsm-signal-metrics 
@POST https://api.myfox.io/video/site/{siteId}/device/{deviceId}/refresh-snapshot 
@POST https://api.myfox.io/v3/user/{userId}/mobile 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/reset 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/reset_wifi 
@POST https://api.myfox.io/v4/payment/site/{siteId}/service/cart 
@POST https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/installation_info 
@POST https://api.myfox.io/v3/user/{userId}/feedback 
@POST https://api.myfox.io/v3/user-guest 
@POST https://api.myfox.io/human/site/{siteId}/device/{deviceId}/snapshot/{snapshotId} 
@POST https://api.myfox.io/v3/site/{siteId}/invitation 
@POST https://api.myfox.io/v4/api/site/{siteId}/invitation 
@PUT https://api.myfox.io/v4/payment/site/{siteId}/partner/{partnerId}/setup 
@PUT https://api.myfox.io/v4/payment/site/{siteId}/partner/{partnerId}/setup 
@PUT https://api.myfox.io/v4/payment/site/{siteId}/partner/{partnerId}/setup 
@PUT https://api.myfox.io/v4/payment/site/{siteId}/partner/{partnerId}/setup 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/sound/{sound} 
@POST https://api.myfox.io/hkp/v1/site/{siteId}/complete-install 
@POST https://api.myfox.io/v3/site/{siteId}/panic 
@POST https://api.myfox.io/v3/site/{siteId}/device/diagnosis 
@POST https://api.myfox.io/v3/site/{siteId}/device/{deviceId}/calibration 
@PUT https://api.myfox.io/v3/site/{siteId}/alarm/stop 
@DELETE https://api.myfox.io/v3/site/{siteId}/device-install/{deviceType} 
@POST https://api.myfox.io/v3/site/{siteId}/device/diagnosis/stop 
@PUT https://api.myfox.io/v3/site/{siteId}/domestic-alarm/{alarmId}/stop 
@POST https://api.myfox.io/v3/site/{siteId}/device-install/{deviceType} 
@PUT https://api.myfox.io/v3/site/{siteId}/user/{userId}/tahoma-scenario 
@PUT https://api.myfox.io/v3/site/{siteId}/alarm/trigger_manual_alarm 
@DELETE https://api.myfox.io/v3/user/{userId}/mobile/{phoneId} 
@POST https://api.myfox.io/v3/site/{siteId}/plan/unsubscribe/immediately 
@DELETE https://api.myfox.io/v4/payment/site/{siteId}/service/{serviceId}/unsubscribe 
@POST https://api.myfox.io/v4/payment/site/{siteId}/service/{serviceId}/unsubscribe 
@GET https://api.myfox.io/v4/payment/site/{siteId}/payment-method 
@PUT https://api.myfox.io/v4/api/site/{siteId}/code 
@PUT https://api.myfox.io/v3/site/{siteId}/user/{userId}/code 
@PUT https://api.myfox.io/v4/api/user/{userId}/opt-in 
@PUT https://api.myfox.io/v3/site/{siteId}/privacy 
@PUT https://api.myfox.io/v3/site/{siteId}/security 
@POST https://api.myfox.io/v3/site/{siteId}/service/{serviceId} 
@PUT https://api.myfox.io/v3/site/{siteId} 
@PUT https://api.myfox.io/v3/site/{siteId}/user/{userId} 
@POST https://api.myfox.io/v3/photo 
@GET https://api.myfox.io/v3/user 
@POST https://api.myfox.io/v3/site/{siteId}/user/{userId}/action 
@POST https://api.myfox.io/v3/site/{siteId}/user/{userId}/action 
@PUT https://api.myfox.io/v3/user/{userId} 
@PUT https://api.myfox.io/v3/user/{userId}/password 
@GET https://api.myfox.io/v3/site/{siteId}/user 
@POST https://api.myfox.io/v3/site/{siteId}/device-install/{deviceType} 

ApiEndpointsSso
@POST https://api.myfox.io/oauth/oauth/v2/token/jwt
@POST https://api.myfox.io/oauth/oauth/v2/token/jwt
@POST https://api.myfox.io/api/users
@POST https://api.myfox.io/api/users
@GET https://api.myfox.io/oauth/oauth/v2/auth
@GET https://api.myfox.io/legal-docs/v1/document/current
@POST https://api.myfox.io/oauth/oauth/v2/token/jwt
@POST https://api.myfox.io/oauth/oauth/v2/token/jwt
@POST https://api.myfox.io/api/users/two_factor_token?action=change_password

ApiAuthenticatedSSOEndpoints
@PATCH https://api.myfox.io/api/users
@GET https://api.myfox.io/oauth/oauth/v2/tokeninfo
@HTTP hasBody = true, method = « DELETE », path = https://api.myfox.io/api/users
@GET https://api.myfox.io/api/users
@POST https://api.myfox.io/legal-docs/v1/document/sign
@GET https://api.myfox.io/legal-docs/v1/document/current

ApiEndpointsInfo
@GET https://api.myfox.io/v3/info

ApiEndpointsVideo
@GET https://api.myfox.io/site/{siteId}/device/{deviceId}/timeline/events/{eventType}
@POST https://api.myfox.io/site/{siteId}/camera/{deviceId}/ptt
@GET https://api.myfox.io/site/{siteId}/timeline/{deviceId}
@GET event/site/{siteId}/device/{deviceId}/events
@GET https://api.myfox.io/site/{siteId}/timeline/{deviceId}/sequence/{sequenceId}/master.m3u8

ApiEndpointsScenario
@POST https://api.myfox.io/v3/site/{siteId}/scenario-calendar
@POST https://api.myfox.io/v3/site/{siteId}/scenario
@DELETE https://api.myfox.io/v3/site/{siteId}/scenario-calendar/{scenarioId}
@DELETE https://api.myfox.io/v3/site/{siteId}/scenario/{scenarioId}
@GET https://api.myfox.io/v3/site/{siteId}/scenario-calendar
@GET https://api.myfox.io/v3/site/{siteId}/scenario-calendar/{scenarioId}
@GET https://api.myfox.io/v3/site/{siteId}/scenario
@PUT https://api.myfox.io/v3/site/{siteId}/scenario-calendar/{scenarioId}
@PUT https://api.myfox.io/v3/site/{siteId}/scenario/{scenarioId}

ApiEndpointsExternalStorage
@DELETE https://api.myfox.io/v3/site/{siteId}/external-storage
@PUT https://api.myfox.io/v3/site/{siteId}/external-storage
@POST https://api.myfox.io/v3/site/{siteId}/external-storage
@GET https://api.myfox.io/v3/site/{siteId}/external-storage
@POST https://api.myfox.io/v3/site/{siteId}/external-storage/test

ApiEndpointsRoomManagement
@POST https://api.myfox.io/v3/site/{siteId}/room
@DELETE https://api.myfox.io/v3/site/{siteId}/room/{roomId}"
@GET https://api.myfox.io/v3/site/{siteId}/room
@PUT https://api.myfox.io/v3/site/{siteId}/room/{roomId}

ApiEndpointsSite
@GET https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}
@GET https://api.myfox.io/v4/api/site/{siteId}/device
@DELETE https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}
@GET https://api.myfox.io/v4/api/site/{siteId}

ApiEndpointsAutomation
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/automation_scan
@GET https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/device_info
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/identify
@GET https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/io_key2w_sharing/is_joined
@POST https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/io_key2w_sharing
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/light_control
@PATCH https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario_alarm_action
@PATCH https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario_arm_action
@PATCH https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario_disarm_action
@PATCH https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario_partial_action
@PATCH https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario_smoke_alarm_action
@PATCH https://api.myfox.io/v4/api/site/{siteId}/device/all/scenario_sos_alarm_action
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/scenario_alarm
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/scenario_arm
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/scenario_disarm
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/scenario_partial
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/scenario_smoke_alarm
@PUT https://api.myfox.io/v4/api/site/{siteId}/device/{deviceId}/scenario_sos_alarm

ApiEndpointsTahoma*
@POST https://api.myfox.io/enduser-mobile-web/enduserAPI/exec/{oid}
@GET https://api.myfox.io/enduser-mobile-web/enduserAPI/actionGroups
@FormUrlEncoded@POST https://api.myfox.io/enduser-mobile-web/enduserAPI/login

ApiEndpointsVoiceAssistants
@POST https://api.myfox.io/v3/site/{siteId}/alexa-passcode
@DELETE https://api.myfox.io/v3/alexa/skill-disable
@POST https://api.myfox.io/v3/alexa/skill-enable
@GET https://api.myfox.io/v3/alexa/skill-status
@GET https://api.myfox.io/v3/alexa/lwa-fallback-uri
@POST https://api.myfox.io/v3/site/{siteId}/google-smarthome-pin

Bonjour, après avoir analyser le apk de l’alarme utiliser des outils comme Postman et Curl je suis arriver a une ébauche de l’intégration du visiophone. Je peux récupérer les infos du wifi ssid, utiliser du nom du model, activer ou désactiver les boutons Acces Portail et Acces Portillon sur l’application et activer ou non la led ou voyant lumineux.

SomfyHomeAlarm.class.php.txt (25,7 Ko)
SomfyHomeAlarm.inc.php.txt (1,5 Ko)
SomfyHomeAlarm.php.txt (15,7 Ko)
Videophone.class.php.txt (7,3 Ko)
BaseDevice.class.php.txt (3,1 Ko)

Ça c’est sur votre plugin que j’ai pu faire cela maintenant avec curl je peux en plus ouvrir ou fermer les accès portail ou portillon, j’ai la commande mais je sais pas comment la rajouter dans le plugin je pense qu’il faut utiliser « private function exec_put_or_post » mais je sais pas l’intégrer dans « Videophone.class.php ».

Pour accéder à la camera j’ai finis d’analyser et vu que celui-ci se connecter au websocket et que l’application envoi une trame que j’arrive pas a analyser sauf le fameux ping pong qui permet de récupère les informations pour pouvoir se connecter dessus avec le logiciel go2rtc de GitHub - AlexxIT/go2rtc: Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc. qui permet de visualiser la camera en webrtc car j’ai regarder sur homeassistant avec GitHub - Minims/SomfyProtect2MQTT: Somfy Protect to MQTT

Misa a jour: j’ai enfin la trame Websocket qui faut en websocket pour récupérer les infos pour faire le lien STUN

Hello shadsnob,
bravo pour ce que tu as deja fait !
Moi j’aimerai « juste » intercepter l’évènement lorsque quelqu’un sonne.
A suivre donc.
Merci :slight_smile:

Bonjour, de ce que j’ai analyse le fait d’appuyer sur le bouton envoi une commande websocket de type « device.ring_door_bell » mais le soucis c’est que je sais pas comment intégrer les résultats des commandes curl qui sont depuis la function « exec_put_or_post » et les transformer en bouton pour la commande d’ouverture de portillon et portail et pour la sonnette je pensais a une croix ou a un chiffre j’aimerais bien l’aide du développer pour pouvoir me dire comment intégrer ces boutons.

J’ai pu avancer sur le script mais maintenant le soucis c’est de récupérer les bonnes infos utile a présenter dans les commandes. J’ai le nom du modèle, le SSID wifi, le bouton pour activer l’accès dans l’application du portail et portillon et la commande pour ouvrir ces deux la et enfin la led a activer ou non du module.
Si une personne sait comment faire pour récupérer les infos « occurred_at », « event_type », « snapshot_cloudfront_url » et « clip_cloudfront_url » qui me propose car j’ai tester une commande mais je suis pas convaincue par ce que ça retourne.

substr(preg_split("/},/", substr($state['body'], 1, -1))[2], 1, -1);

[{"event_id":"","device_id":"","site_id":"","user_id":"","occurred_at":"","expires_at":"","event_type":"device.gateTriggeredFromMobile","snapshot_cloudfront_url":"","clip_cloudfront_url":""},
{"event_id":"","device_id":"","site_id":"","user_id":"","occurred_at":"","expires_at":"","event_type":"device.ringDoorBell","snapshot_cloudfront_url":"","clip_cloudfront_url":""}]

Est ce que tu saurais me donner plus de détails sur ta communication en websocket pour arriver à ce resultat stp ? Je regarde ce qui est possible de faire dans somfyProtect2MQTT

Meme chose, si tu as les commandes curl pour ouverture de gate / latched.

Bonjour,

Je viens d’acheter le kit de connectivité pour mon visiophone somfy connect v350.
Pourriez-vous m’indiquer si le flux vidéo, et le bouton qui permet d’ouvrir le portail est compatible avec le plugin (opérationnel sous somfy protect) ?
Je n’ai pas d’autres équipements d3 cette marque et avant d’acheter le plugin je voulais m’assurer de la compatibilité avec Jeedom ?

Merci