Catégorie : Uncategorized

  • Tuto start and stop PAC

    Voici un tuto pas à pas, très concret, pour ajouter START / STOP dans votre appli App Inventor.

    On part de ce que vous avez déjà :

    • Web1 lit https://proxy-automate.latelier22.fr/api.php
    • Clock1 relit régulièrement
    • LabelEtatPac affiche l’état
    • vous avez déjà global etat_pac

    On va juste ajouter :

    • un bouton ButtonStart
    • un bouton ButtonStop
    • un composant Web2 pour envoyer les commandes

    Étape 1 — Ajouter les composants dans le Designer

    Dans App Inventor, allez dans Designer.

    Ajoutez :

    1. un bouton nommé ButtonStart
      • texte : START
    2. un bouton nommé ButtonStop
      • texte : STOP
    3. un composant Web nommé Web2

    Vous gardez :

    • Web1
    • Clock1
    • LabelEtatPac
    • LabelMot

    Étape 2 — Régler l’URL du composant de commande

    Toujours dans le Designer, ou dans les blocs ensuite :

    • Web1 servira à lire l’état
    • Web2 servira à envoyer START / STOP

    L’URL de commande est :

    https://proxy-automate.latelier22.fr/control.php
    

    Étape 3 — Dans Screen1.Initialize

    Dans les blocs, ouvrez :

    when Screen1.Initialize
    

    Vous avez déjà un bloc qui met l’URL de Web1.

    Ajoutez maintenant, juste dessous :

    set Web2.Url to "https://proxy-automate.latelier22.fr/control.php"
    

    Ajoutez aussi :

    set ButtonStart.Visible to false
    set ButtonStop.Visible to false
    call Web1.Get
    

    Donc au final, dans Screen1.Initialize, vous devez avoir l’idée suivante :

    when Screen1.Initialize
      set Web1.Url to "https://proxy-automate.latelier22.fr/api.php"
      set Web2.Url to "https://proxy-automate.latelier22.fr/control.php"
      set ButtonStart.Visible to false
      set ButtonStop.Visible to false
      call Web1.Get
    

    Étape 4 — Laisser le timer relire l’état

    Dans votre bloc :

    when Clock1.Timer
    

    gardez simplement :

    call Web1.Get
    

    Le Clock1 sert juste à relire l’état de la PAC.

    Donc :

    when Clock1.Timer
      call Web1.Get
    

    Étape 5 — Dans Web1.GotText, lire etat_pac

    Vous avez déjà ce bloc.
    Dedans, vous faites déjà :

    • décoder le JSON
    • stocker global data
    • lire debit_eau_l_h
    • lire etat_pac

    Gardez ça.

    La ligne importante est celle-ci :

    set global etat_pac to get value for key "etat_pac" in dictionary get global data
    

    Puis vous faites déjà :

    set LabelEtatPac.Text to get global etat_pac
    

    Ça, il faut le garder.


    Étape 6 — Ajouter la logique d’affichage START / STOP

    Toujours dans Web1.GotText, juste après :

    set LabelEtatPac.Text to get global etat_pac
    

    ajoutez un bloc if then else.

    La règle est :

    si global etat_pac = "Marche"

    alors :

    set ButtonStart.Visible to false
    set ButtonStop.Visible to true
    

    sinon

    alors :

    set ButtonStart.Visible to true
    set ButtonStop.Visible to false
    

    Donc dans App Inventor, ça donne l’idée suivante :

    if get global etat_pac = "Marche"
    then
       set ButtonStart.Visible to false
       set ButtonStop.Visible to true
    else
       set ButtonStart.Visible to true
       set ButtonStop.Visible to false
    

    Étape 7 — Créer le bloc du bouton START

    Ajoutez un nouveau bloc :

    when ButtonStart.Click
    

    À l’intérieur, mettez :

    call Web2.PostText "action=start"
    

    Donc :

    when ButtonStart.Click
      call Web2.PostText "action=start"
    

    Ce bloc envoie la commande START au proxy.


    Étape 8 — Créer le bloc du bouton STOP

    Ajoutez un nouveau bloc :

    when ButtonStop.Click
    

    À l’intérieur, mettez :

    call Web2.PostText "action=stop"
    

    Donc :

    when ButtonStop.Click
      call Web2.PostText "action=stop"
    

    Ce bloc envoie la commande STOP au proxy.


    Étape 9 — Ajouter le retour après commande

    Ajoutez un nouveau bloc :

    when Web2.GotText
    

    À l’intérieur, mettez un test :

    si responseCode = 200

    alors :

    call Web1.Get
    

    sinon

    alors :

    set LabelMot.Text to "Erreur commande"
    

    Donc :

    when Web2.GotText
      if get responseCode = 200
      then
         call Web1.Get
      else
         set LabelMot.Text to "Erreur commande"
    

    Le but est simple :

    • on clique sur START ou STOP
    • la commande est envoyée
    • dès que le serveur répond, on relit l’état réel avec Web1.Get

    Étape 10 — Résultat attendu

    Si la PAC est arrêtée

    api.php renvoie :

    etat_pac = "Arret"
    

    Alors l’appli doit afficher :

    • ButtonStart.Visible = true
    • ButtonStop.Visible = false

    Si la PAC est en marche

    api.php renvoie :

    etat_pac = "Marche"
    

    Alors l’appli doit afficher :

    • ButtonStart.Visible = false
    • ButtonStop.Visible = true

    Étape 11 — Ce que l’appli envoie exactement

    Quand on clique sur START

    elle envoie :

    action=start
    

    à :

    https://proxy-automate.latelier22.fr/control.php
    

    Quand on clique sur STOP

    elle envoie :

    action=stop
    

    à :

    https://proxy-automate.latelier22.fr/control.php
    

    Étape 12 — Ce que l’appli reçoit

    Quand elle lit l’état avec Web1.Get

    elle lit :

    {
      "ok": true,
      "etat_pac": "Marche"
    }
    

    ou :

    {
      "ok": true,
      "etat_pac": "Arret"
    }
    

    Dans votre appli, vous utilisez seulement :

    • etat_pac

    Étape 13 — Résumé ultra simple

    Au démarrage

    • Web1.Get

    Si etat_pac = "Marche"

    • cacher START
    • montrer STOP

    Si etat_pac = "Arret"

    • montrer START
    • cacher STOP

    Si on clique START

    • envoyer action=start
    • relire l’état

    Si on clique STOP

    • envoyer action=stop
    • relire l’état

    Étape 14 — Les 4 blocs finaux à avoir

    1. Screen1.Initialize

    set Web1.Url to "https://proxy-automate.latelier22.fr/api.php"
    set Web2.Url to "https://proxy-automate.latelier22.fr/control.php"
    set ButtonStart.Visible to false
    set ButtonStop.Visible to false
    call Web1.Get
    

    2. Clock1.Timer

    call Web1.Get
    

    3. ButtonStart.Click

    call Web2.PostText "action=start"
    

    4. ButtonStop.Click

    call Web2.PostText "action=stop"
    

    5. Web2.GotText

    if responseCode = 200
       call Web1.Get
    else
       set LabelMot.Text to "Erreur commande"
    

    6. Dans Web1.GotText

    Après avoir récupéré etat_pac :

    if get global etat_pac = "Marche"
       set ButtonStart.Visible to false
       set ButtonStop.Visible to true
    else
       set ButtonStart.Visible to true
       set ButtonStop.Visible to false
    

    Étape 15 — Ce qu’il faut vérifier si ça ne marche pas

    1. Web2.Url doit être :
    https://proxy-automate.latelier22.fr/control.php
    
    1. ButtonStart.Click doit envoyer exactement :
    action=start
    
    1. ButtonStop.Click doit envoyer exactement :
    action=stop
    
    1. Web1.GotText doit bien lire :
    etat_pac
    

    avec cette clé exacte.


  • Tuto débutant MIT App Inventor

    Afficher sa position GPS sur une carte

    Objectif

    Créer une application qui permet de :

    • voir une carte,
    • récupérer la position du téléphone,
    • afficher la latitude et la longitude,
    • placer un marqueur sur la carte,
    • afficher un texte JSON quand on appuie sur un bouton.

    Exemple de JSON attendu :

    {"lat":48.1762,"lon":-2.7520}

    1. Consigne importante avant de commencer

    Pour les essais en classe :

    • éviter les binômes avec 2 iPhone,
    • prendre de préférence au moins un téléphone Android par binôme.

    Dans cette activité, on considère que les essais avec iPhone peuvent poser problème.
    Donc, si possible :

    • 1 Android + 1 autre téléphone, ou
    • 1 Android seul.

    Si le test par QR code ne fonctionne pas sur Android, on pourra installer l’APK.


    2. Ce qu’il faut créer dans le Designer

    Dans MIT App Inventor, créer un projet.

    https://appinventor.mit.edu

    vous pouvez créer un compte avec google (gmail)

    Sur Screen1, ajouter les composants suivants.

    Composants visibles

    • Map → nom : Map1
    • Marker → nom : Marker1
    • Label → nom : LabelPos
    • Button → nom : BtnSend
    • TextBox → nom : TxtJson

    Composant non visible

    • LocationSensor → nom : LocationSensor1

    3. Réglages simples dans le Designer

    Map1

    • largeur : Fill parent
    • hauteur : environ 40 % ou 50 % de l’écran

    LabelPos

    Mettre par exemple :

    • texte : Position : en attente du GPS

    BtnSend

    Mettre :

    • texte : Envoyer ma géoloc

    TxtJson

    Mettre :

    • texte vide
    • largeur : Fill parent
    • cocher MultiLine si possible

    4. Principe de l’application

    L’application fonctionnera ainsi :

    Au démarrage

    • on affiche une carte centrée sur une position de départ,
    • on indique qu’on attend le GPS.

    Quand le GPS trouve la position

    • le marqueur se place sur la carte,
    • la carte se recentre,
    • les coordonnées s’affichent.

    Quand on clique sur le bouton

    • on affiche un JSON dans la zone de texte.

    5. Les blocs à faire


    Bloc 1 : au démarrage de l’écran

    Créer le bloc :

    quand Screen1.Initialize

    À l’intérieur, mettre :

    • mettre Map1.ZoomLevel à 16
    • mettre Map1.CenterFromString à "48.1762740,-2.7520210"
    • mettre LabelPos.Text à "Position : en attente du GPS"

    À quoi ça sert ?

    Ce bloc prépare l’écran :

    • la carte s’ouvre,
    • elle est centrée sur une position de départ,
    • le message d’attente s’affiche.

    Bloc 2 : quand la position change

    Créer le bloc :

    quand LocationSensor1.PositionChanged

    avec les paramètres :

    • Latitude
    • Longitude
    • Altitude
    • vitesse

    À l’intérieur, mettre :

    • mettre Marker1.Latitude à obtenir Latitude
    • mettre Marker1.Longitude à obtenir Longitude
    • mettre Map1.CenterFromString à join (obtenir Latitude) (",") (obtenir Longitude)
    • mettre Map1.ZoomLevel à 18
    • mettre LabelPos.Text à join ("Latitude : ") (obtenir Latitude) (" | Longitude : ") (obtenir Longitude)

    À quoi ça sert ?

    Ce bloc s’exécute dès que le téléphone connaît la position.

    Il permet de :

    • déplacer le marqueur,
    • recentrer la carte,
    • zoomer,
    • afficher les coordonnées.

    Bloc 3 : quand on clique sur le bouton

    Créer le bloc :

    quand BtnSend.Click

    À l’intérieur, mettre :

    • mettre TxtJson.Text à join
      • {"lat":
      • LocationSensor1.Latitude
      • ,"lon":
      • LocationSensor1.Longitude
      • }

    Très important

    Ici, ne pas mettre de \.

    Il faut obtenir :

    {"lat":48.1762,"lon":-2.7520}

    Il ne faut pas obtenir :

    {\"lat\":48.1762,\"lon\":-2.7520}

    Les \ ne servent pas ici.
    Ils rendent juste l’affichage plus mauvais.


    6. Résultat attendu

    Quand l’application fonctionne :

    • la carte s’affiche,
    • le GPS trouve la position,
    • le marqueur se déplace,
    • le texte des coordonnées change,
    • le bouton affiche le JSON dans TxtJson.

    7. Test de l’application

    Méthode 1 : test avec QR code

    Sur le téléphone :

    • ouvrir MIT AI2 Companion,
    • scanner le QR code affiché par App Inventor.

    Méthode 2 : si le QR code ne marche pas

    Sur Android :

    • installer l’APK de l’application,
    • puis tester directement sur le téléphone.

    8. Que faire si ça ne marche pas ?

    La carte s’affiche mais pas la position

    Vérifier :

    • que le GPS du téléphone est activé,
    • que l’autorisation de localisation est acceptée,
    • qu’on est dans un endroit où le téléphone capte bien.

    Les coordonnées ne changent pas

    Vérifier le bloc :

    • quand LocationSensor1.PositionChanged

    Le JSON affiche des \

    Cela veut dire qu’ils ont été écrits dans le texte.
    Il faut les supprimer.

    Rien ne se passe avec le bouton

    Vérifier le bloc :

    • quand BtnSend.Click

    9. Version très simple à donner aux élèves

    Travail demandé

    Créer une application qui :

    1. affiche une carte,
    2. récupère la position GPS,
    3. affiche latitude et longitude,
    4. place un marqueur,
    5. affiche un JSON quand on appuie sur le bouton.

    JSON attendu

    {"lat":valeur,"lon":valeur}
  • Activité N°3: Puissance solaire reçue

    Inclianaison des faisceaux lumineux et surface éclairée

    https://www.geogebra.org/classic/YyRwjmx7

    Inclinaison des faisceaux lumineux en fonction de la latitude et de la période de l’année

    https://www.geogebra.org/classic/PuSKjRbu

  • thème_n°3_-_chapitre_1_-_activité_2_-_a_la_surface_du_soleil.

    Doc réponse

    CORRIGÉ

    🌍 Problématique

    Pourquoi observe-t-on des températures différentes entre l’équateur et les pôles ?

    👉 La cause principale est la variation de la puissance solaire reçue en fonction de la latitude.


    1️⃣ Influence de la latitude sur la température

    Les trois villes étudiées sont :

    • Dakar (~14° N)
    • Copenhague (~55° N)
    • Nuuk (~64° N)

    🔎 Températures maximales (lecture graphique)

    • Dakar : ≈ 28 °C
    • Copenhague : ≈ 17 °C
    • Nuuk : ≈ 7 °C

    Conclusion :
    Plus la latitude augmente (on se rapproche des pôles), plus la température maximale diminue.


    2️⃣ Températures moyennes annuelles

    📍 Dakar

    Moyenne calculée à partir du tableau (page 1) :Tˉ25°C\bar{T} \approx 25°CTˉ≈25°C

    📍 Copenhague

    Moyenne graphique ≈ 8 °C

    📍 Nuuk

    Moyenne graphique ≈ –2 °C

    Conclusion :
    Plus la latitude est élevée, plus la température moyenne annuelle est faible.


    3️⃣ Rôle de l’angle des rayons solaires (Doc.2 et Doc.3)

    À l’équinoxe de printemps :

    • À l’équateur : rayons verticaux
    • Aux latitudes élevées : rayons plus inclinés

    Quand les rayons sont inclinés :

    • L’énergie se répartit sur une surface plus grande
    • Donc la puissance reçue par m² diminue

    4️⃣ Formule de la puissance solaire reçue

    La puissance reçue par m² dépend de l’angle d’incidence :PR=PE×cos(α)P_R = P_E \times \cos(\alpha)PR​=PE​×cos(α)

    avec :

    • PE=1000W.m2P_E = 1000 \, W.m^{-2}PE​=1000W.m−2
    • α\alphaα = angle entre le rayon lumineux et la verticale

    5️⃣ Calcul de la puissance reçue à l’équinoxe

    Angles donnés (Doc.3) :

    • Dakar (14°)

    PR=1000×cos(14°)970W.m2P_R = 1000 \times \cos(14°) \approx 970 \, W.m^{-2}PR​=1000×cos(14°)≈970W.m−2

    • Copenhague (55°)

    PR=1000×cos(55°)570W.m2P_R = 1000 \times \cos(55°) \approx 570 \, W.m^{-2}PR​=1000×cos(55°)≈570W.m−2

    • Nuuk (64°)

    PR=1000×cos(64°)440W.m2P_R = 1000 \times \cos(64°) \approx 440 \, W.m^{-2}PR​=1000×cos(64°)≈440W.m−2


    🎯 Conclusion générale

    ✔ Plus la latitude augmente :
    → Les rayons solaires sont plus inclinés
    → L’énergie est répartie sur une surface plus grande
    → La puissance reçue par m² diminue
    → La température moyenne diminue


    🌞 Conclusion scientifique finale

    Les différences de température entre l’équateur et les pôles s’expliquent principalement par la variation de l’angle d’incidence des rayons solaires avec la latitude, ce qui modifie la puissance solaire reçue par mètre carré.

  • Révisions collége

    Série d’exercices – Diagnostic / Révisions

    Objectifs : fractions (\(+\), \(−\), \(×\), \(÷\)), signes, calcul littéral (réduire, distributivité, double distributivité), factoriser.

    Nom : ____________________    Date : ____ / ____ / ______    Durée : 1h


    1) Nombres relatifs

    Série 1 : Calculs simples

    1. \((+4) + (-7)\)
    2. \((-5) – (+3)\)
    3. \(-(-8) + (-2)\)

    Série 2 : Avec parenthèses

    1. \(-(-3 – 4)\)
    2. \((-6) – (-9) + (-2)\)
    3. \(-[(-5) + 7]\)

    Série 3 : Multiplications

    1. \((-4)\times(-3)\)
    2. \((-7)\times 5\)
    3. \(-2\times(-6)\)

    2) Réduire (calcul littéral simple)

    1. \(3x + 5x\)
    2. \(7x – 2x\)
    3. \(-4x + 9x\)
    4. \(2x + 3 + 5x – 4\)
    5. \(-6x + 2 – 3x + 8\)
    6. \(9x – 4 + 2 – x\)
    7. \(3x^2 + 5x^2\)
    8. \(7x^2 – 2x^2 + x^2\)
    9. \(-4x^2 + 9x^2 – x^2\)

    3) Distributivité simple

    1. \(3(x + 4)\)
    2. \(-2(x – 5)\)
    3. \(5(2x + 3)\)
    4. \(-4(3x – 2)\)
    5. \(x(2x – 7)\)
    6. \(-3x(4 – x)\)

    4) Double distributivité (développer et réduire)

    1. \((x + 3)(x + 2)\)
    2. \((2x – 5)(x + 4)\)
    3. \((3x – 2)(2x + 1)\)
    4. \((x – 7)(x – 3)\)
    5. \((-x + 4)(2x – 3)\)
    6. \((5x + 1)(-2x + 3)\)

    5) Fractions – Addition / Soustraction

    1. \(\frac{1}{3} + \frac{1}{6}\)
    2. \(\frac{5}{8} – \frac{1}{4}\)
    3. \(\frac{7}{10} + \frac{3}{5}\)
    4. \(\frac{2}{7} – \frac{3}{14}\)
    5. \(\frac{9}{4} – 1\)
    6. \(2 + \frac{3}{5}\)

    6) Fractions – Multiplication

    1. \(\frac{2}{3}\times\frac{5}{4}\)
    2. \(\frac{7}{9}\times\frac{3}{5}\)
    3. \(\frac{4}{11}\times\frac{22}{3}\)
    4. \(\frac{5}{6}\times 3\)
    5. \(\frac{8}{15}\times\frac{9}{4}\)
    6. \(\frac{12}{7}\times\frac{14}{3}\)

    7) Fractions – Division

    1. \(\frac{3}{4}\div\frac{2}{5}\)
    2. \(\frac{7}{8}\div\frac{14}{3}\)
    3. \(\frac{9}{10}\div\frac{3}{5}\)
    4. \(2\div\frac{5}{6}\)
    5. \(\frac{11}{3}\div\frac{22}{9}\)
    6. \(\frac{4}{7}\div 2\)

    8) Factoriser (simple)

    Consigne : mettre le facteur commun en évidence.

    1. \(4x + 8\)
    2. \(6x^2 + 9x\)
    3. \(12x – 3x^2\)
    4. \(10x^2 – 5x\)
    5. \(14x + 21\)
    6. \(8x^2 – 16x\)

    9) Factoriser (facteur commun) – niveau “complexe”

    Consigne : repérer le facteur commun puis factoriser.

    1. \((2x + 1)(x + 3) + (x + 3)(4x – 2)\)
    2. \(3x(2x – 5) + 7(2x – 5)\)
    3. \((x – 4)(3x + 2) – (x – 4)(x – 1)\)

    10) Mélange complet (niveau contrôle)

    1. \(2(x + 3) – 3(2x – 1)\)
    2. \(\frac{1}{2}(x + 4) – \frac{3}{4}x\)
    3. \((2x – 1)(x + 2) + (x + 2)(3x + 4)\)
    4. \(\frac{3}{5} + \frac{2}{3}\times\frac{9}{4}\)
    5. \((x + 1)^2\)
    6. \((x – 3)^2\)

    Auto-évaluation : Fractions ☐ / Signes ☐ / Développer ☐ / Factoriser ☐

    Remarque : _________________________________________________

  • QCM anglais : Les pronoms

    QCM anglais: pronoms

    Chargement du QCM…
  • application mobile

    schéma de l’apparence de l’application