Je vends ma box de supervision aux sociétés de piscine : ma logique de flow et mon firmware restent à moi
Traduit de English par IA ·
Une petite question business d’un bricoleur qui a accidentellement des clients.J’ai construit une box de supervision de piscine (ESP32-S3, pH, ORP, température, contacteur de débit) pour ma propre piscine. Un ami qui gère une société de maintenance de piscines l’a vue, et maintenant 4 sociétés de maintenance veulent les utiliser pour les piscines de leurs clients. Environ 60 boxes au total pour l’instant.Tout tourne dans mon unique organisation Hermetry. La partie utile est un flow avec un bloc Script qui transforme le pH, l’ORP et la température en une suggestion de dosage (« ajouter 300 g de X »). Cela m’a demandé des mois de réglage, et c’est essentiellement le produit. Le firmware contient aussi ma routine de calibration.Maintenant, chaque société veut se connecter et voir ses piscines. Mes questions :- une organisation pour tout le monde, ou une par société ?- comment leur permettre de voir les tableaux de bord et les alarmes sans qu’ils voient (et copient) le flow ?- existe-t-il un moyen de protéger le firmware quand les boxes sont physiquement entre leurs mains ?Je ne veux pas être secret avec les clients, je ne veux simplement pas qu’un concurrent obtienne la logique en s’inscrivant comme « client ».
Bit of a business question from a maker who accidentally has customers.
I built a pool monitoring box (ESP32-S3, pH, ORP, temp, flow switch) for my own pool, a friend who runs a pool service company saw it, and now 4 pool service companies want them for their client pools. About 60 boxes in total so far.
All of it runs in my one Hermetry organisation. The useful part is a flow with a Script block that turns pH, ORP and temperature into a dosing suggestion (« add 300 g of X »). That took me months of tuning and it’s basically the product. The firmware also has my calibration routine in it.
Now each company wants to log in and see their pools. Questions:
– one organisation for everyone, or one per company?
– how do I let them see dashboards and alarms without them seeing (and copying) the flow?
– anything to protect the firmware when the boxes are physically in their hands?
I’m not trying to be secretive with customers, I just don’t want a competitor to get the logic by signing up as a « customer ».
Traduit de English par IA ·
Une organisation par entreprise. Elles n’accepteraient jamais de voir les piscines d’une autre entreprise, et les organisations sont isolées au niveau de la base de données.
One org per company. They’d never accept seeing another company’s pools, and organisations are isolated at the database level.
Traduit de English par IA ·
Concernant le firmware : Hermetry ne signe jamais le firmware, vous signez les images dans votre propre build et n’enregistrez que la clé publique. Faites cela, et activez le secure boot ainsi que le chiffrement flash sur le S3, cela couvre le côté box.
On firmware: Hermetry never signs firmware, you sign images in your own build and register only the public key. Do that, and turn on secure boot plus flash encryption on the S3, that covers the box side.
Traduit de English par IA ·
Si c’est une org par entreprise, dois-je refaire le flux et les tableaux de bord 4 fois ? Et à chaque fois que je modifie la logique de dosage ?
If it’s one org per company, do I rebuild the flow and dashboards 4 times? And every time I change the dosing logic?
Traduit de English par IA ·
Côté client : je voudrais ma propre organisation, oui. Et honnêtement, ton script m’est égal, ce qui compte pour moi, c’est que le chiffre soit juste.
From the customer side: I’d want my own org, yes. And honestly I don’t care about your script, I care that the number is right.
Traduit de English par IA ·
Je gère la supervision de site pour six clients de cette façon, alors voici la configuration qui a tenu la route.Une organisation par entreprise cliente. Vous conservez un seul compte et êtes membre de chacune, avec le rôle Admin, et vous passez de l’une à l’autre depuis le sélecteur d’organisation. Les collaborateurs du client sont invités en tant que User. Un User peut voir les appareils, les profils, les tableaux de bord et les alarmes, acquitter les alarmes, envoyer des commandes de base et créer des tableaux personnels. Consulter les flux nécessite le rôle Admin (la permission est automation.read), donc votre bloc Script reste hors de leur vue. Ne donnez jamais le rôle Admin à un client « juste pour une minute ».Tableaux de bord : créez-les une fois dans une organisation modèle, téléchargez le tableau sous forme de fichier et importez-le dans chaque organisation cliente. Les flux ne voyagent pas avec le fichier du tableau, il faut donc les transférer séparément : exportez-les depuis le menu de la ligne dans la liste des flux (Export), puis importez-les dans chaque organisation cliente (Import). Les secrets doivent être ressaisis, et les flux importés arrivent désactivés. Avec 4 organisations, je conserve aussi le code du bloc Script dans git ; c’est une tâche de 10 minutes à chaque modification. Si cela devient pénible, envisagez de déplacer le calcul de dosage dans le firmware et d’envoyer dose_g en télémétrie ; la logique se trouve alors dans une seule image signée.Firmware : ce que Laura a dit, signer avec Ed25519 dans votre pipeline, enregistrer la clé publique sur la page Firmware et laisser désactivée l’option Allow unsigned images. Les images non signées ou re-signées sont alors refusées par le contrôle au téléversement.Le tableau des rôles se trouve sur Users and roles. Le branding avec votre logo se configure aussi par organisation, si vous voulez que cela ressemble à votre propre produit.
I run plant monitoring for six customers this way, so here’s the setup that’s held up.
One organisation per customer company. You keep one account and are a member of each, with Admin, and switch between them from the organisation picker. The customer’s people are invited as User. A User can see devices, profiles, dashboards and alarms, acknowledge alarms, send basic commands and build personal boards. Viewing flows needs Admin (the permission is automation.read), so your Script block stays out of their sight. Never give a customer Admin « just for a minute ».
Dashboards: build them once in a template org, download the board as a file and import it into each customer org. Flows don’t travel in the board file, so you bring the flow over separately: Export it from the row menu on the flow list and Import it in each customer org (secrets have to be typed in again, and imported flows arrive switched off). With 4 orgs I keep the Script block code in git as well, it’s a 10-minute job per change. If that gets painful, think about moving the dosing calculation into the firmware and sending dose_g as telemetry; then the logic lives in one signed image.
Firmware: what Laura said, sign with Ed25519 in your pipeline, register the public key on the Firmware page, and leave Allow unsigned images off. Unsigned or re-signed images are then refused by the upload check.
The role table is on Users and roles. Branding with your logo is per organisation too, if you want it to look like your product.
Traduit de English par IA ·
J’ai retenu cette option. J’ai créé une organisation modèle, 4 organisations clientes, les clients en tant que User. J’ai testé avec un compte User factice et le menu Flows n’apparaît pas, c’est bien. L’import du fichier de carte a fonctionné du premier coup. Je pense déplacer le dosage dans le firmware à la prochaine version, réimporter le flow quatre fois est déjà pénible.
Went with this. Made a template org, 4 customer orgs, customers as User. I tested with a dummy User account and the Flows menu isn’t there, good. Board file import worked first time. I think I’ll move the dosing into firmware next version, re-importing the flow four times is already annoying.
Traduit de English par IA ·
Gardez un utilisateur factice dans chaque organisation pour ce contrôle, vous en aurez à nouveau besoin après les changements de rôles.
Keep a dummy User in each org for that check, you’ll want it again after role changes.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

