Family Self Care, la soluzione per la salute basata sugli oli essenziali

L'azienda per la cura di sé della famiglia

La start-up francese Family Self Care, fondata alla fine del 2017, è specializzata in robotica, oggetti connessi, intelligenza artificiale ed elettronica di consumo per la salute quotidiana. È nata dalla visione della fondatrice Brigitte Thito, che vanta oltre 20 anni di esperienza in grandi aziende farmaceutiche come Tambrands/Procter & Gamble, Walgreens Boots Alliance, Merck Consumer Health e Boots Healthcare.

L'azienda ha sviluppato SelfCare1®, una nuova tecnologia in grado di soddisfare le aspettative dei clienti per una prevenzione naturale ed efficace per la cura del corpo e della mente attraverso l'uso di oli essenziali. In effetti, Family Self Care ha inizialmente offerto ai clienti un kit di oli essenziali con il dispenser intelligente SelfCare 1, collegato a un'applicazione associata. Questa macchina è collegata all'applicazione di coaching esperto che viene attivata via Bluetooth nel telefono cellulare dei clienti per distribuire dosi di oli essenziali in modo personalizzato e ad alta precisione, in base ai problemi di salute o alle esigenze del profilo degli utenti (età, sesso o controindicazioni) in qualsiasi momento a casa o in ufficio. 

La macchina, con la relativa applicazione, attiva una cartuccia inserita nel robot (con 8 oli per il benessere quotidiano) per un lungo periodo di tempo e seleziona la combinazione di oli essenziali desiderata, oltre a fornire le istruzioni per l'uso e offrire un consumo di oli senza sprechi.

Un esempio di utilizzo dell'applicazione: un utente pratica sport e ha bisogno di un olio essenziale per rilassare i muscoli. L'applicazione gli consiglia di miscelare una dose di olio base esotico e una di legno di rosa in base al suo profilo e alle sue esigenze.

Applicazioni mobili

Nell'ambito della progettazione del primo dispenser intelligente di oli essenziali del nostro cliente Family Self Care, il team NetDevices si è unito al progetto dell'azienda nel dicembre 2019 per sviluppare le applicazioni SelfCare1. 

Le applicazioni mobili consentono agli utenti di collegare il proprio cellulare alla macchina per creare miscele di oli per il benessere. 

Al nostro Mobile Dev Lead Benoît è stato chiesto di scrivere il protocollo di comunicazione specifico basato su BLE (bluetooth low energy) per le applicazioni in modo che potessero comunicare con la macchina.

Le fasi principali sono state

  1. Studio del codice e del protocollo hardware della macchina
  2. Scegliere le librerie Bluetooth di React Native
  3. POC (Proof of Concept) e scelta dello stack
  4. Integrazione delle librerie React Native nelle applicazioni

1 - Studio della situazione esistente

Il primo passo di un progetto esistente è stato quello di studiare il codice sorgente (React Native, principalmente PHP), quindi di proporre un'architettura del progetto nel suo complesso e di proporre le basi dell'implementazione delle applicazioni.

2 - Ricerca di biblioteche 

La prima parte di questa fase consiste nello studio di un documento tecnico fornito dal produttore dell'hardware (documento che descrive le modalità di comunicazione della macchina).

Parallelamente a questo studio, Benoit sta conducendo una ricerca sulle librerie di reazione BLE native.

Una libreria in informatica, in parole povere, è un insieme di funzioni già codificate in un linguaggio specifico. Uno dei principali vantaggi dell'uso di una libreria per gli sviluppatori è il risparmio di tempo (poiché le funzioni sono già codificate, perché rifare ciò che è già stato fatto).

Nell'ambito del progetto, sono state scelte due librerie che consentono l'utilizzo del modulo bluetooth su uno smartphone. La scelta è stata fatta in base alla comunità di ogni libreria, al numero di "bug" conosciuti, alla qualità della documentazione e soprattutto alla manutenibilità, infatti ogni libreria ha conosciuto diverse versioni nel corso dell'anno.

3 - POC

Una volta effettuata la selezione, abbiamo creato un POC per ogni biblioteca. In genere, si tratta di un progetto con il minimo di codice, poca progettazione, poca o nessuna gestione degli errori, che serve a validare le scelte tecniche prima di lanciarsi in sviluppi complessi.

4 - Integrazione della biblioteca nelle applicazioni

Dopo la convalida tramite il POC e la selezione della libreria migliore, il passo successivo è stato quello di integrare questa libreria e gestire la comunicazione/il controllo del dispenser SelfCare1.

Naturalmente, l'integrazione di una libreria di per sé non è sufficiente, ma deve essere adattata per integrare le diverse caratteristiche del protocollo previsto dalla macchina.

5 - Progetto complessivo

Infine, Benoît si è occupato dello sviluppo delle schermate dell'applicazione e della scrittura dei test automatici (Mocha, Enzyme, Chai). 

Da marzo 2021 sono iniziate le prime consegne della macchina SelfCare1, negli Stati Uniti e in Europa!

[wpforms id="9980" title="false"]
<div class="wpforms-container wpforms-container-full" id="wpforms-9980"><form id="wpforms-form-9980" class="wpforms-validate wpforms-form wpforms-ajax-form" data-formid="9980" method="post" enctype="multipart/form-data" action="/family-self-care-et-son-robot-de-melanger-lhuile-essentielle/" data-token="6396191299f72e45e847ba11f2db5491"><noscript class="wpforms-error-noscript">Veuillez activer JavaScript dans votre navigateur pour remplir ce formulaire.</noscript><div class="wpforms-field-container"><div id="wpforms-9980-field_3-container" class="wpforms-field wpforms-field-layout" data-field-id="3"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-9980-field_3">Layout</label><div class="wpforms-field-layout-columns wpforms-field-layout-preset-50-50"><div class="wpforms-layout-column wpforms-layout-column-50"><div id="wpforms-9980-field_0-container" class="wpforms-field wpforms-field-name" data-field-id="0"><label class="wpforms-field-label" for="wpforms-9980-field_0">Résumé / Pitch du projet <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-9980-field_0" class="wpforms-field-small wpforms-field-required" name="wpforms[fields][0]" required></div><div id="wpforms-9980-field_16-container" class="wpforms-field wpforms-field-radio wpforms-conditional-trigger" data-field-id="16"><label class="wpforms-field-label" for="wpforms-9980-field_16">J&#039;ai une description détaillée du projet</label><ul id="wpforms-9980-field_16"><li class="choice-1 depth-1"><input type="radio" id="wpforms-9980-field_16_1" name="wpforms[fields][16]" value="Oui" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_16_1">Oui</label></li><li class="choice-2 depth-1"><input type="radio" id="wpforms-9980-field_16_2" name="wpforms[fields][16]" value="Non" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_16_2">Non</label></li></ul></div><div id="wpforms-9980-field_18-container" class="wpforms-field wpforms-field-checkbox wpforms-conditional-field wpforms-conditional-show" data-field-id="18" style="display:none;"><label class="wpforms-field-label" for="wpforms-9980-field_18">Vous avez des technos en tête ?</label><ul id="wpforms-9980-field_18"><li class="choice-1 depth-1"><input type="checkbox" id="wpforms-9980-field_18_1" name="wpforms[fields][18][]" value="fullstackJS / python" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_18_1">fullstackJS / python</label></li><li class="choice-2 depth-1"><input type="checkbox" id="wpforms-9980-field_18_2" name="wpforms[fields][18][]" value="nocode bubble" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_18_2">nocode bubble</label></li><li class="choice-3 depth-1"><input type="checkbox" id="wpforms-9980-field_18_3" name="wpforms[fields][18][]" value="autre" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_18_3">autre</label></li></ul></div><div id="wpforms-9980-field_19-container" class="wpforms-field wpforms-field-checkbox wpforms-conditional-field wpforms-conditional-show" data-field-id="19" style="display:none;"><label class="wpforms-field-label" for="wpforms-9980-field_19">Type de projet</label><ul id="wpforms-9980-field_19"><li class="choice-1 depth-1"><input type="checkbox" id="wpforms-9980-field_19_1" name="wpforms[fields][19][]" value="Applications web / mobiles" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_19_1">Applications web / mobiles</label></li><li class="choice-2 depth-1"><input type="checkbox" id="wpforms-9980-field_19_2" name="wpforms[fields][19][]" value="Projet data, IA " ><label class="wpforms-field-label-inline" for="wpforms-9980-field_19_2">Projet data, IA </label></li><li class="choice-3 depth-1"><input type="checkbox" id="wpforms-9980-field_19_3" name="wpforms[fields][19][]" value="Site vitrine / e-commerce" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_19_3">Site vitrine / e-commerce</label></li></ul></div><div id="wpforms-9980-field_12-container" class="wpforms-field wpforms-field-textarea wpforms-conditional-field wpforms-conditional-show" data-field-id="12" style="display:none;"><label class="wpforms-field-label" for="wpforms-9980-field_12">Description détaillée de votre projet </label><textarea id="wpforms-9980-field_12" class="wpforms-field-medium" name="wpforms[fields][12]" ></textarea></div></div><div class="wpforms-layout-column wpforms-layout-column-50"><div id="wpforms-9980-field_1-container" class="wpforms-field wpforms-field-email wpforms-one-third" data-field-id="1"><label class="wpforms-field-label" for="wpforms-9980-field_1">Votre e-mail <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-9980-field_1" class="wpforms-field-small wpforms-field-required" name="wpforms[fields][1]" required></div><div id="wpforms-9980-field_17-container" class="wpforms-field wpforms-field-radio" data-field-id="17"><label class="wpforms-field-label" for="wpforms-9980-field_17">Signer un accord de confidentialité ?</label><ul id="wpforms-9980-field_17"><li class="choice-1 depth-1"><input type="radio" id="wpforms-9980-field_17_1" name="wpforms[fields][17]" value="Oui" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_17_1">Oui</label></li><li class="choice-2 depth-1"><input type="radio" id="wpforms-9980-field_17_2" name="wpforms[fields][17]" value="Non" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_17_2">Non</label></li></ul></div></div></div></div><div id="wpforms-9980-field_22-container" class="wpforms-field wpforms-field-checkbox" data-field-id="22"><ul id="wpforms-9980-field_22"><li class="choice-1 depth-1 wpforms-selected"><input type="checkbox" id="wpforms-9980-field_22_1" name="wpforms[fields][22][]" value="Recevoir les newsletters personnalisées" checked='checked'><label class="wpforms-field-label-inline" for="wpforms-9980-field_22_1">Recevoir les newsletters personnalisées</label></li></ul></div></div><div class="wpforms-recaptcha-container wpforms-is-recaptcha"><div class="g-recaptcha" data-sitekey="6Ld-v7wUAAAAAICtcpP_oL2unK8KqKzfkX04QsSN"></div><input type="text" name="g-recaptcha-hidden" class="wpforms-recaptcha-hidden" style="position:absolute!important;clip:rect(0,0,0,0)!important;height:1px!important;width:1px!important;border:0!important;overflow:hidden!important;padding:0!important;margin:0!important;" required></div><div class="wpforms-submit-container"><input type="hidden" name="wpforms[id]" value="9980"><input type="hidden" name="wpforms[author]" value="1"><input type="hidden" name="wpforms[post_id]" value="9072"><button type="submit" name="wpforms[submit]" id="wpforms-submit-9980" class="wpforms-submit" data-alt-text="Envoi..." data-submit-text="Envoyer" aria-live="assertive" value="wpforms-submit">Envoyer</button><img src="https://www.netdevices.fr/wp-content/plugins/wpforms/assets/images/submit-spin.svg" class="wpforms-submit-spinner" style="display: none;" width="26" height="26" alt="Chargement en cours"></div></form></div> <!-- .wpforms-container -->