james56
@james_p56 · Membre depuis août 2026
Automation engineer · manufacturing
- Sujets
- 2
- Réponses
- 14
- Points
- 0
Toutes mes réponses sur les forums
Traduit de English par IA ·
Nous l’avons fait avec des commandes sur un parc plus petit, et c’était un vrai désordre à chaque fois qu’un appareil en manquait une. Personne ne pouvait dire quels appareils avaient quel intervalle.
We did it with commands on a smaller fleet and it was a mess every time a unit missed one. Nobody could tell which units had which interval.
Traduit de English par IA ·
Nous avons reconstruit notre écran de palettisation avec les largeurs de bande réglées pour correspondre aux bandes réelles. Cela fonctionne pour nous.
Rebuilt our palletising screen with the belt widths set to match the real belts. Works for us.
Traduit de English par IA ·
Non, l’Uno supporte les deux. Mais comment le relais est-il alimenté, et où se rejoignent les masses ? Les valeurs qui sautent et le port qui disparaît ressemblent plutôt à la vanne qu’à l’alimentation.
No, the Uno handles both. But how is the relay powered, and where do the grounds meet? The jumping readings and the disappearing port sound like the valve, not the supply.
Traduit de English par IA ·
DTR est l’une des anciennes lignes de contrôle de modem. Sur l’Uno, elle passe par un condensateur de 100 nF vers la broche de reset, afin que l’IDE puisse réinitialiser la carte avant un téléversement. Tout programme qui ouvre le port bascule DTR, et la carte se réinitialise. J’ai lutté contre ce problème sur un compteur de lignes au travail l’an dernier.Côté logiciel, deux choses à faire ensemble :
stty -F /dev/ttyUSB0 -hupcl # don't drop DTR when the port closes
ser = serial.Serial()
ser.port = '/dev/ttyUSB0'
ser.baudrate = 9600
ser.timeout = 2
ser.dtr = False
ser.open()
Attention : sous Linux, le pilote peut encore activer DTR un instant lors de la toute première ouverture après le démarrage. Cela réduit donc les réinitialisations, sans toujours les supprimer.La solution sûre passe par le matériel : un condensateur de 10 µF entre RESET et GND sur l’Uno, la borne négative sur GND. Il absorbe l’impulsion de reset. Il faut ensuite le retirer (ou appuyer sur reset à la main au bon moment) lorsque vous téléversez un nouveau firmware.Quant aux pertes dans votre total : enregistrez aussi le compteur dans l’EEPROM toutes les quelques minutes, ou faites envoyer à l’Uno un total cumulé depuis le flashage plutôt que depuis le démarrage. Une réinitialisation ne vous coûtera alors que quelques impulsions, et non tout le total.
DTR is one of the old modem control lines. On the Uno it goes through a 100 nF capacitor to the reset pin, so the IDE can reset the board before an upload. Any program that opens the port toggles DTR, so the board resets. I fought this on a line counter at work last year.
Software side, two things together:
stty -F /dev/ttyUSB0 -hupcl # don't drop DTR when the port closes
ser = serial.Serial()
ser.port = '/dev/ttyUSB0'
ser.baudrate = 9600
ser.timeout = 2
ser.dtr = False
ser.open()
Be warned that on Linux the driver may still raise DTR for a moment on the very first open after boot, so this reduces resets, it doesn’t always kill them.
The sure fix is hardware: a 10 µF capacitor between RESET and GND on the Uno, minus to GND. That swamps the reset pulse. You then have to pull it out (or press reset by hand at the right moment) when you upload new firmware.
And for the drops in your total: also keep the count in EEPROM every few minutes, or have the Uno send a running total since it was flashed instead of since boot. A reset then costs you a few pulses, not the whole total.
Did this for a roof inspection drone, so here’s what I ended up with.
On the Pi, pymavlink reads the MAVLink stream from TELEM2. You only need two messages: GLOBAL_POSITION_INT (lat/lon in 1e7 degrees, relative altitude in mm) and SYS_STATUS (battery voltage in mV). Once a second, publish a flat object over MQTT with TLS:
from pymavlink import mavutil
m = mavutil.mavlink_connection("/dev/serial0", baud=921600)
state = {}
while True:
msg = m.recv_match(type=["GLOBAL_POSITION_INT", "SYS_STATUS"], blocking=True)
if msg.get_type() == "GLOBAL_POSITION_INT":
state.update(lat=msg.lat / 1e7, lng=msg.lon / 1e7, alt_m=msg.relative_alt / 1000)
else:
state["batt_v"] = msg.voltage_battery / 1000
if time.time() - last >= 1:
client.publish("v1/telemetry", json.dumps(state), qos=1); last = time.time()
Name the keys lat and lng, that’s what the Map card looks for by default.
On the board, a Map card. Bind Points to the drone’s latest values (lat, lng), and that’s your live marker. Bind Routes to Device readings over time with the keys lat,lng, and turn on Replay controls. The client can play the flight back at 1x to 10x and scrub. Add a value card for battery and altitude next to it. Satellite map style helps them see the panel rows.
1 message a second is far inside the default per-device limits. And keep it read-only: no commands from the board to the drone, the pilot flies it.
Traduit de English par IA ·
N’y a-t-il pas une fonction de relais ? Je suis sûr d’avoir vu un statut de passerelle appelé ‘Pending’ quelque part dans la liste des passerelles.
Isn’t there a relay feature? I’m sure I saw a gateway status called Pending somewhere in the gateway list.
Traduit de English par IA ·
L’étoile est à l’origine de ton problème de décrochages. Le 1-wire n’aime pas les stubs, chaque branche réfléchit le signal. Soit tu fais passer une seule ligne à côté de chaque sonde avec de minuscules stubs, soit tu la scindes : tu peux charger l’overlay deux fois sur deux broches et obtenir deux bus plus courts. Avec autant de câble, j’essaierais aussi 2.2k au lieu de 4.7k.
The star is your dropout problem. 1-wire hates stubs, every leg reflects. Either run one line past every probe with tiny stubs, or split it: you can load the overlay twice on two pins and have two shorter buses. I’d also try 2.2k instead of 4.7k with that much cable.
Traduit de English par IA ·
disable-bt plus la suppression de la console ont réglé le problème. 600 interrogations pendant la nuit, zéro erreur CRC, zéro timeout. J’étais sur ttyAMA0 et je communiquais apparemment avec… rien d’utile, et le script basculait sur des tentatives qui réussissaient parfois. Je suis passé à serial0. Kevin, ttyAMA est la désignation ARM PL011, pas USB.
disable-bt plus removing the console did it. 600 polls overnight, zero CRC errors, zero timeouts. I was on ttyAMA0 talking to… nothing useful apparently, and the script fell back to retries that sometimes hit. Changed it to serial0. Kevin, ttyAMA is the ARM PL011 naming, not USB.
Traduit de English par IA ·
Pas de VPN sur ces sites, je parie, c’est justement le but de la fonction panneau.Routeur A : vous ne pouvez pas modifier cela depuis Hermetry, c’est voulu. « Autoriser l’accès au panneau depuis mon compte cloud » est le consentement local du propriétaire du routeur et ne se trouve que sur la page Cloud du routeur lui-même. Quelqu’un sur place doit l’activer une fois. Nous avons fait cela avec un agriculteur au téléphone, cela a pris cinq minutes : se connecter au panneau local du routeur depuis un ordinateur portable sur le LAN, page Cloud, cocher le commutateur. Ensuite, Ouvrir le panneau fonctionne de n’importe où.Routeur B : le firmware est trop ancien pour les sessions de panneau. Mettez-le à jour via la page firmware de Hermetry. Pour un routeur aussi éloigné, je le ferais seul en premier, pas dans une vague, et je vérifierais dans l’onglet Firmware le réglage Mises à jour via LTE s’il est sur la liaison mobile. Les appareils sous licence ont des règles d’approbation locale et de liaison à volume limité, il peut donc rester en attente tant que celles-ci ne l’autorisent pas.Quelques points pour quand ça fonctionnera. Si le routeur est en LTE, vous obtenez une confirmation indiquant que la session peut utiliser jusqu’à 50 Mo, puis elle est fermée. Les sessions se terminent après 30 minutes sans utilisation ou 4 heures au total. Seule la personne qui a ouvert une session peut y accéder, donc un collègue ouvre la sienne. Et ce que vous modifiez dans le panneau dépend de vous, l’ouvrir ne change rien.Tous les messages de refus sont listés sur Remote access to a router’s panel.
No VPN at those sites I’d bet, that’s the point of the panel feature.
Router A: you can’t switch that from Hermetry, by design. « Allow panel access from my cloud account » is the router owner’s local consent and lives only on the router’s own Cloud page. Someone on site has to turn it on once. We had a farmer do it with me on the phone, it took five minutes: log into the router’s local panel from a laptop on the LAN, Cloud page, tick the switch. After that Open panel works from anywhere.
Router B: the firmware is too old for panel sessions. Update it through Hermetry’s firmware page. For a router that far away I’d do it on its own first, not as part of a wave, and check its Firmware tab for the Updates over LTE setting if it’s on the mobile uplink. Licensed devices have local approval and metered-link rules, so it may sit in Waiting until those allow it.
Couple of things for when it works. If the router is on LTE you get a confirm that the session may use up to 50 MB and is then closed. Sessions end after 30 minutes without use or 4 hours total. Only the person who opened a session can enter it, so a colleague opens their own. And what you change inside the panel is up to you, opening it changes nothing.
All the refusal messages are listed on Remote access to a router’s panel.
Traduit de English par IA ·
C’était ça, ils avaient mis la page de la carte pompe directement en favori. Problème réglé, merci.
That was it, they had the pump board bookmarked directly. Sorted, thanks.
Traduit de English par IA ·
Existe-t-il un moyen de revenir en arrière après Open a board ? Nos opérateurs se retrouvent trois tableaux plus loin, puis ferment l’onglet pour recommencer.
Is there a way back after Open a board? Our ops people end up three boards deep and then close the tab to start over.
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 ·
Ça fonctionne directement sur ma machine Linux, je n’ai jamais essayé avec un Mac.
Works out of the box on my Linux machine, never tried a Mac.
Thanks. Do I need to buy a library for the electrical side, or is there something in the base set for meters and breakers?

