Page 11 sur 12 PremièrePremière ... 789101112 DernièreDernière
Affichage des résultats 151 à 165 sur 166

Discussion: Pour le PicoWAN

  1. #151
    Créateur Avatar de Thocan
    Date d'inscription
    décembre 2006
    Âge
    42
    Messages
    6 484
    Tu en détecteras normalement dans le 15e et à la Défense/Courbevoie/Garenne Colombes. Pour le reste, nada en effet jusqu'ici...

  2. #152
    Administrateur Avatar de cajl
    Date d'inscription
    avril 2007
    Âge
    59
    Messages
    18 973
    Et une à la varenne st hilaire !
    The Old Man Of Archos
    Toutes les générations sont chez moi !

  3. #153
    Archosien amateur
    Date d'inscription
    avril 2014
    Âge
    63
    Messages
    64
    J'ai appris que la société Atim (fabricant de module Sigfox et Lorawan) prépare un module compatible Picowan.
    Dernière modification par jimibi ; 02/10/2017 à 11:46:30.

  4. #154
    Créateur Avatar de Thocan
    Date d'inscription
    décembre 2006
    Âge
    42
    Messages
    6 484
    Ha, top. Tu as moyen d'en savoir plus sur ce qu'ils souhaitent proposer ? (et quand)

  5. #155
    Archosien amateur
    Date d'inscription
    avril 2014
    Âge
    63
    Messages
    64
    D'après ce que j'ai appris sur un salon, c'est leur module LoRaWan ARM-N8-LW "http://www.atim.com/fr/produits/cata...wan-arm-n8-lw/" qui qui devrait recevoir un nouveau firmware compatible PicoWan. Quand à la date personne ne veut en donner une.

  6. #156
    Archosien novice
    Date d'inscription
    février 2017
    Âge
    44
    Messages
    7
    J'ai aperçu une gateway au Sud de Rennes également... mais ça commence à faire loin

  7. #157
    Administrateur Avatar de cajl
    Date d'inscription
    avril 2007
    Âge
    59
    Messages
    18 973
    Citation Envoyé par jimibi Voir le message
    D'après ce que j'ai appris sur un salon, c'est leur module LoRaWan ARM-N8-LW "http://www.atim.com/fr/produits/cata...wan-arm-n8-lw/" qui qui devrait recevoir un nouveau firmware compatible PicoWan. Quand à la date personne ne veut en donner une.
    la plateforme existe déjà
    https://acw.atim.com/login
    The Old Man Of Archos
    Toutes les générations sont chez moi !

  8. #158
    Archosien amateur
    Date d'inscription
    avril 2014
    Âge
    63
    Messages
    64
    La plateforme peut-être, le firmware pour ARM-Nano non.

  9. #159
    Administrateur Avatar de cajl
    Date d'inscription
    avril 2007
    Âge
    59
    Messages
    18 973
    Citation Envoyé par jimibi Voir le message
    La plateforme peut-être, le firmware pour ARM-Nano non.
    Tout à fait, mais c'est déjà un début
    The Old Man Of Archos
    Toutes les générations sont chez moi !

  10. #160
    Nouvel Archosien Avatar de bad
    Date d'inscription
    juillet 2018
    Âge
    35
    Messages
    4
    Je possède : PicoWAN + PicoTag
    Bonjour à tous,

    Je viens (enfin) de faire un peu de reverse engineering sur le PicoWAN, les différents échanges au niveau du "site web" https://webapp.picowan.net/accessories etc.
    Il en ressort que toute l'API se base sur l'auth Google et un explorer de l'API existe ici :
    https://apis-explorer.appspot.com/ap...nEndpoints/v1/
    Je n'ai pas réussi à en faire quoi que ce soit pour le moment, mais ça à le mérite d'exister.

    Par contre, j'ai réussi à contrôler mon bouton avec le wget suivant :
    wget -d --method=POST --header "authorization: Bearer #TOKEN#" https://endpoint-dot-picowan-data-cl...e/#ID#/#STATE#
    (un POST sur https://endpoint-dot-picowan-data-cl...e/#ID#/#STATE# avec le header supplémentaire "authorization: Bearer #TOKEN#")

    Ou :
    #TOKEN# est récupérable sur le site web (Ouvrir la console de débogage javascript, il y a une ligne : token=#TOKEN#) ; je en sais pas combien de temps il est valable, ni comment le générer pour le moment !
    #ID# est le numéro de série du PicoWAN de décimal (pas en hexa)
    #STATE# est true ou false

    Je vais continuer a creuser tout ça ;)

    Hope it helps !
    --
    Bad Wolf

  11. #161
    Administrateur Avatar de cajl
    Date d'inscription
    avril 2007
    Âge
    59
    Messages
    18 973
    Merci de ces infos
    je ferais une news lorsque tu en nous en diras un peu plus
    The Old Man Of Archos
    Toutes les générations sont chez moi !

  12. #162
    Nouvel Archosien Avatar de bad
    Date d'inscription
    juillet 2018
    Âge
    35
    Messages
    4
    Je possède : PicoWAN + PicoTag

    Ampoule

    Hello,

    TL;DR :
    Oui, on peut contrôler le contact sec (relais) de son PicoWAN en HTTPS !
    Non, ce n'est pas aussi facile qu'un simple appel d'url...

    Toute la webapp se base sur de l’authentification OAuth 2.0.
    Il faut donc récupérer un accessToken, mais aussi le renouveler quand il expire (toutes les heures).
    La marche à suivre est de passer dans une tab privée et de refaire une authentification pour avoir une nouvelle "session", puis lui voler son accessToken et refreshToken et ne plus jamais les utiliser autrement :

    Chrome > Nouvelle fenêtre de navigation privée (important) > https://webapp.picowan.net/accessories
    Se connecter> Login> Mot de passe> oui aux messages etc
    Une fois logué sur la WebApp> F12 (Débuggeur)> Application> Storage> Local Storage> https://webapp.picowan.net/accessories
    Key> firebase:authUser:AIzaSyDh25Qlcs8JMGWWvLnbH6VVNzK9 8snf5FQ:[DEFAULT]
    Oh magique, dans le json il y a une section stsTokenManager on retrouve "accessToken" et "refreshToken" :)

    L'accessToken est valable 1 heure, mais on peut le renouveler même après avec le refreshToken et la commande :
    Code:
    curl --referer 'https://webapp.picowan.net/accessories' --request POST --data 'refresh_token=#refreshToken#&grant_type=refresh_token' https://securetoken.googleapis.com/v1/token?key=AIzaSyDh25Qlcs8JMGWWvLnbH6VVNzK98snf5FQ
    La commande retourne quelque chose comme ça (seul les tailles des chaines ont été ~conservées) :
    Code:
    {
      "access_token": "Bachi-bouzouk-Mille-millions-de-mille-sabords-Bougres-de-faux-jetons-a-la-sauce-tartare-Coloquinte-a-la-graisse-de-herisson-espece-de-merinos-mal-peignes-Cyrano-a-quatre-pattes-Zouave-interplanetaire-ectoplasme-a-roulettes-Bougre-d’extrait-de-cornichon-Jus-de-poubelle-espece-de-porc-epic-mal-embouche-Patagon-de-zoulous-Loup-garou-a-la-graisse-de-renoncule-amiral-de-bateau-lavoir-Bayadere-de-carnaval-Bougres-d’extrait-de-cretins-des-alpes-espece-de-chouette-mal-empaillee-Macchabee-d'eau-de-vaisselle-astronaute-d'eau-douce-Bulldozer-a-reaction-Simili-martien-a-la-graisse-de-cabestan-Concentre-de-moules-a-gaufres-espece-de-mitrailleur-a-bavette-Tchouck-tchouck-nougat-Garde-cotes-a-la-mie-de-pain-Papou-des-Carpates-Sombre-orycterope-Traîne-potence-Bachi-bouzouk-Mille-millions-de-mille-sabords-Bougres-de-faux-jetons-a-la-sauce-tartare-Coloquinte-a-la-graisse-de-herisson-espece-de-merinos-mal-peignes-Cyrano-a-quatre-pattes-Zouave-interplanetaire-ectoplasme-a-roulettes-Bougre-d’extrait-de-cornichon-Jus-de-poubelle-Zouave-interplanetaire",
      "expires_in": "3600",
      "token_type": "Bearer",
      "refresh_token": "Jus-de-poubelle-espece-de-porc-epic-mal-embouche-Patagon-de-zoulous-Loup-garou-a-la-graisse-de-renoncule-amiral-de-bateau-lavoir-Bayadere-de-carnaval-Bougres-d’extrait-de-cretins-des-alpes-espece-de-chouette-mal-empaillee-Macchabee-d'eau-de-vaisselle-astronaute-d'eau-douce-Bulldozer-a-reaction-Simili-martien-a-la-graisse-de-cabestan-Concentre-de-moules-a-gaufres-espece-de-mitrailleur-a-bavette",
      "id_token": "Bachi-bouzouk-Mille-millions-de-mille-sabords-Bougres-de-faux-jetons-a-la-sauce-tartare-Coloquinte-a-la-graisse-de-herisson-espece-de-merinos-mal-peignes-Cyrano-a-quatre-pattes-Zouave-interplanetaire-ectoplasme-a-roulettes-Bougre-d’extrait-de-cornichon-Jus-de-poubelle-espece-de-porc-epic-mal-embouche-Patagon-de-zoulous-Loup-garou-a-la-graisse-de-renoncule-amiral-de-bateau-lavoir-Bayadere-de-carnaval-Bougres-d’extrait-de-cretins-des-alpes-espece-de-chouette-mal-empaillee-Macchabee-d'eau-de-vaisselle-astronaute-d'eau-douce-Bulldozer-a-reaction-Simili-martien-a-la-graisse-de-cabestan-Concentre-de-moules-a-gaufres-espece-de-mitrailleur-a-bavette-Tchouck-tchouck-nougat-Garde-cotes-a-la-mie-de-pain-Papou-des-Carpates-Sombre-orycterope-Traîne-potence-Bachi-bouzouk-Mille-millions-de-mille-sabords-Bougres-de-faux-jetons-a-la-sauce-tartare-Coloquinte-a-la-graisse-de-herisson-espece-de-merinos-mal-peignes-Cyrano-a-quatre-pattes-Zouave-interplanetaire-ectoplasme-a-roulettes-Bougre-d’extrait-de-cornichon-Jus-de-poubelle-Zouave-interplanetaire",
      "user_id": "Mille-millions-de-mille-sabords",
      "project_id": "000000000000"
    }
    Etant donné que le token est valable 1 heure, il serait judicieux de noter à quelle heure il faut le renouveler.
    Puis, si on a en a besoin regarder si le token est toujours valide plutôt que de bêtement le renouveler à chaque fois.
    Mais ça, c'est un autre script

    Pour ceux qui veulent plus de détails, en voici :
    Spoiler
    Ne sachant pas vraiment par où commencer le reverse engineering, j'ai démarré par une capture réseau avec wireshark et tcpdump des flux du PicoWAN, de l'application Android et de la WebApp, au moment de la mise sous tension, d'un événement sur la gateway ou le tag, de l'auth et déauth sur les app. Ouais ça fait pas mal de tests, mais ça a été assez rapide : tout est en SSL/TLS/https, donc c'est bien, mais ça va pas beaucoup m'aider...
    Ah si, j'ai appris une chose : le PicoWAN ping toutes les secondes sa passerelle par défaut ET une IP chez Google, c'est un peu abusé 144 (4*36) octets IP par secondes, ça fait ~500 Ko par heure de ping. Si les dev me lisent, 1 fois toutes les 5 secondes ça devrait aller aussi, non ?

    Pour avancer, il faut faire soit un man-in-the-middle, soit utiliser le débugger du navigateur (qui revient plus où moins à un MitM)
    J'ai donc dégainé Chrome+F12 et recommencé les captures, ça doit pas être bien compliqué.
    Pour commencer dans le vif, j'ai rechargé la page https://webapp.picowan.net/accessories en étant logué : 109 requêtes, 1Mo

    Ok, je vais voir ce qui bouge quand j'actionne le relais depuis le site web :
    https:// endpoint-dot-picowan-data-cloud.appspot.com/ _ah/api/picowanEndpoints/v1/gatewaySetSwitchState/ #ID#/#STATE#
    Good ! J'essaye de répliquer la requête avec un WGET depuis un autre ordinateur, ça passe
    Mais uniquement avec le header "authorization: Bearer #TOKEN#"
    Je sens que le #TOKEN# va être tendu à générer, mais on verra ça plus tard.

    Ok, maintenant qu'est-qui se passe quand j'actionne le bouton sur la GW, pas compliqué : rien n’apparaît dans le débugger
    Je décide donc de lire le code "lisible" (car il y a quantité de javascript minified)

    [4 heures plus tard]
    En fait c'est simple : tout s'appuie une base de donnée (BDD) Firebase directement hébergé chez Google.
    Un WebService sécurisé (WS) est maintenu ouvert pour recevoir les changements en live de la BDD, notamment les positions des tags et l'état du relais.
    C'est franchement déroutant à voir tourner, mais d'une certaine façon plutôt sexy, y'a rien server side sur l'hébergement Archos, tout est en client side avec du JS et ça tape en direct la BDD ! (oui, je ne m'y connais pas trop en web, c'est la première fois que je vois ça, je me suis arrêté à l'Ajax ;) )
    Après une autre heure sur la doc de Firebase, je commence à voir un peu mieux comment la WebApp fonctionne : les retours du WS sont directement traités par l'API Firebase et permettent de faire des appels de javascript en asynchrone pour modifier la page à la volée.
    Source : https://firebase.google.com/docs/database/

    Les morceaux de code les plus intéressants sont ceux de la surcouche Firebase par Archos :
    https://webapp.picowan.net/javascripts/app.js?v=9
    https://webapp.picowan.net/javascripts/picoDb.js?v=13
    https://webapp.picowan.net/javascrip...s-graph.js?v=3
    https://webapp.picowan.net/javascrip...-events.js?v=3
    https://webapp.picowan.net/javascrip...cations.js?v=4

    L'url du WS est de la forme suivante :
    wss://s-xxxNx-xxx-NNN.firebaseio.com/.ws?v=5&ns=picowan-data-cloud

    Il est trop compliqué de modifier toutes les traces mais voici une vue du débugger:



    Ok, maintenant il faut savoir générer un #TOKEN#, après avoir ausculté tout ce code, il en retourne que le mécanisme authentification est assez standard et que "Authorisation: Bearer" = OAuth 2.
    Le point positif pour nous, c'est que OAuth 2.0 c'est safe, granulaire et facile à répudier via son compte Google, on va pas se mentir c'est même plutôt très safe.
    Le point négatif, c'est tellement safe que ça prend des allures d'échange de microfilm à Berlin-Est en pleine guerre froide.
    Bref, c'est pas de la tarte quand on traîne pas dedans tous les jours, jugez-en par vous même : https://developers.google.com/identi...th2#clientside

    Au final, il y a 2 façon de faire
    • Proprement : on suit tout le process pour générer un token, le faire valider par Google en s'authentifiant, puis le renew quand nécessaire
    • Salement : on vole un token déjà valide, puis le renew quand nécessaire

    Après avoir passé en vain un temps fou sur la méthode "propre", je suis passé à la méthode "sale".
    Et bien des fois je me demande pourquoi j'essaye de faire les choses proprement, en 5 minutes c'était bouclé/bâclé !

    Voilà où j'en suis.

    La prochaine étape serait de voir comment récupérer l'état du relais d'une Gateway et la localisation d'un Tag.
    A bientôt,
    --
    Bad Wolf
    Dernière modification par bad ; 28/07/2018 à 13:55:24. Motif: précisions et orthographe

  13. #163
    Nouvel Archosien Avatar de bad
    Date d'inscription
    juillet 2018
    Âge
    35
    Messages
    4
    Je possède : PicoWAN + PicoTag
    Hello,
    La prochaine étape serait de voir comment récupérer l'état du relais d'une Gateway et la localisation d'un Tag.
    C'est maintenant chose faite :

    Une fois le point d'entrée de la base de donnée Firebase du PicoWAN trouvé (https://picowan-data-cloud.firebaseio.com/), la suite n'est plus trop compliqué.
    D'après la documetnation Firebase (https://firebase.google.com/docs/ref...rest/database/) il est assez simple de faire une requête.

    La query permettant de récupérer tout le contenu de la base (exclusivement pour l'utilisateur authentifié, le reste est inaccessible) est :
    Code:
    curl "https://picowan-data-cloud.firebaseio.com/users/#uid#.json?format=export&auth=#accessToken#


    En résumé, voici toutes les démarches possibles avec les API :

    Récupérer un accessToken et un refreshToken via un navigateur en navigation privée :

    1. Chrome > Nouvelle fenêtre de navigation privée (important) > https://webapp.picowan.net/accessories
    2. Se connecter> Login> Mot de passe> accepter les autorisations etc
    3. Une fois connecté sur la WebApp PicoWAN> Faire F12 pour lancer le Débuggeur
    4. Dans l'onglet Application> Aller dans Storage> Puis Local Storage> Puis url https://webapp.picowan.net/accessories
    5. On y trouve sur la Key "firebase:authUser:AIzaSyDh25Qlcs8JMGWWvLnbH6VVNzK 9 8snf5FQ:[DEFAULT]"
    6. Dans la partie Value, on trouve du JSON> Dans la section "stsTokenManager" du JSON
    7. Récupérer "accessToken", "refreshToken" et "uid" (ces 3 champs sont utilisés dans la suite encadrés par des "#", il ne faudra bien entendu pas mettre de "#" dans les appels d'url)
    8. Fermer la fenêtre de navigation privée
    9. Grab a beer





    Vérifier que l'accessToken est bien valide en récupérant toute la base de donnée :
    Code:
    curl "https://picowan-data-cloud.firebaseio.com/users/#uid#.json?format=export&auth=#accessToken#"
    Le résultat attendu est de la forme suivante :

    Dedans vous trouverez les ID des prises et des tagsau format hexadécimal et décimal !


    Pour récupérer l'état actuel de la prise, on utilise l'id hexadécimal de la prise dans la commande suivante :
    Code:
    curl "https://picowan-data-cloud.firebaseio.com/users/#uid#/devices_data/#id_prise_hex#/event_switch.json?format=export&auth=#accessToken#"
    Résultat attendu :
    Code:
    {
      "state" : "off",
      "timestamp" : 153...
    }

    Pour allumer ou éteindre une prise on utilise son id décimal récupéré précédemment et le state (true ou false) que l'on veut donner à la prise :
    Code:
    curl --request POST --data "" --header "authorization: Bearer #accessToken#" "https://endpoint-dot-picowan-data-cloud.appspot.com/_ah/api/picowanEndpoints/v1/gatewaySetSwitchState/#id_prise_dec#/#STATE#"
    Résultat attendu :
    Code:
    {
     "eui": "142...",
     "value": true,
     "code": 0
    }

    Pour récupérer la localisation actuelle d'un tag, on utilise l'id hexadécimal du tag dans la commande suivante :
    Code:
    curl "https://picowan-data-cloud.firebaseio.com/users/#uid#/devices_data/#id_tag_hex#/event_location.json?format=export&auth=#accessToken#"
    Résultat attendu :
    Code:
    {
      "location" : {
        "accuracy" : 24.0,
        "lat" : 48....,
        "lng" : 7....
      },
      "location_id" : 4..,
      "refine" : false,
      "source" : "cloud",
      "timestamp" : 153...
    }

    Si lors d'une demande le retour est :
    Code:
    {
      "error" : "Auth token is expired"
    }
    Ou tout autre message d'erreur par rapport à l'authentification, il faut utiliser le #refreshToken# pour renouveler l'#accessToken# avec la commande suivante :
    Code:
    curl --referer "https://webapp.picowan.net/accessories" --request POST --data "refresh_token=#refreshToken#&grant_type=refresh_token" https://securetoken.googleapis.com/v1/token?key=AIzaSyDh25Qlcs8JMGWWvLnbH6VVNzK98snf5FQ
    La réponse doit être quelque chose comme :
    Code:
    {
      "access_token": "eyJhb...",
      "expires_in": "3600",
      "token_type": "Bearer",
      "refresh_token": "AGdpq...",
      "id_token": "eyJhb...",
      "user_id": "FHq...",
      "project_id": "576..."
    }
    On doit y retrouver le même #refreshToken# et un nouvel #accessToken valable une heure.

    Bon, je pense avoir fait le tour.

    Have fun with it !
    --
    Bad Wolf
    Dernière modification par bad ; 28/07/2018 à 17:37:33.

  14. #164
    Nouvel Archosien
    Date d'inscription
    août 2018
    Messages
    2
    Bonjour Bad,

    Comme toi je suis nouvel archosien avec mes picoplugs et picotags que je trouve super intéressants mais la possibilité de pouvoir les relier à d'autres systèmes comme eedomus ou jeedom avec l'API serait génial.

    Je n'ai malheureusement pas les compétences pour écrire le script .php qui va bien mais vu ce que tu as fait avec l'API peut-être serais-tu intéressé pour jeter un oeil.

    Au cas où, pour eedomus, c'est par ici : forum.eedomus.com documentation.eedomus.com

    et pour jeedom, c'est par là : www.jeedom.com www.jeedom.com/forum

    Bonne lecture,

    jpf

  15. #165
    Nouvel Archosien Avatar de bad
    Date d'inscription
    juillet 2018
    Âge
    35
    Messages
    4
    Je possède : PicoWAN + PicoTag
    Citation Envoyé par jpf Voir le message
    Bonjour Bad,

    Comme toi je suis nouvel archosien avec mes picoplugs et picotags que je trouve super intéressants mais la possibilité de pouvoir les relier à d'autres systèmes comme eedomus ou jeedom avec l'API serait génial.
    Je n'ai malheureusement pas les compétences pour écrire le script .php qui va bien mais vu ce que tu as fait avec l'API peut-être serais-tu intéressé pour jeter un oeil.
    Au cas où, pour eedomus, c'est par ici : forum.eedomus.com documentation.eedomus.com
    et pour jeedom, c'est par là : www.jeedom.com www.jeedom.com/forum
    Bonne lecture,

    jpf
    Salut jpf,

    Voilà pour toi (et un peu pour tout le monde) : https://github.com/BadWolf42/PicoWAN-sh

    Joyeux Noël
    --
    Bad Wolf

Informations de la discussion

Utilisateur(s) sur cette discussion

Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))

Discussions similaires

  1. PicoWan : le brevet de géolocalisation
    Par BBarrois dans le forum Chez Jean-Louis
    Réponses: 12
    Dernier message: 05/05/2017, 09:55:25
  2. Pack PicoWAN
    Par cajl dans le forum News & Rumeurs
    Réponses: 0
    Dernier message: 01/12/2016, 17:31:36
  3. Le pack PICOWAN arrive
    Par cajl dans le forum News & Rumeurs
    Réponses: 8
    Dernier message: 28/10/2016, 18:15:18

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •