Einen Befehl an jeden Knoten eines Contiki-6LoWPAN-Mesh hinter unserem Border Router senden
Von English mit KI übersetzt ·
Ich bin Betriebsleiter, bitte seht mir die Wortwahl nach. Unser Dienstleister hat vor zwei Jahren 30 drahtlose Temperaturknoten in den Kühllagern installiert. Sie laufen mit Contiki-NG in einem 6LoWPAN-Mesh, und ein Rechner mit dem Border Router steht im Elektroraum. Derselbe Rechner meldet die Messwerte außerdem als Gateway an Hermetry, wobei jeder Knoten als eigenes Kindgerät erscheint. Dieser Teil läuft absolut zuverlässig.Was ich jetzt möchte: Wenn das QA-Team einen Validierungslauf startet, soll jeder Knoten von 5-minute- auf 30-second-Abtastung umschalten und danach wieder zurück. Heute meldet sich der Dienstleister per SSH an und passt jeden Knoten einzeln an, was fast eine Stunde dauert. Ich habe ihn gebeten, es „einfach per Broadcast zu senden“, und er sagte, Multicast über den Border Router funktioniere in Contiki nicht und Hermetry könne ohnehin keine Befehle an Kindgeräte senden.Hat er bei beiden Punkten recht? Die Details des Funkstacks brauche ich nicht. Ich muss wissen, ob ich ihn für eine Lösung bezahlen oder nach einem anderen Ansatz suchen soll.
Plant manager, so forgive the vocabulary. Our contractor put 30 wireless temperature nodes in the cold stores two years ago. They run Contiki-NG on a 6LoWPAN mesh, and a box running the border router sits in the electrical room. The same box also reports the readings to Hermetry as a gateway, each node shows up as its own child device. That part has been rock solid.
What I want now: when the QA team starts a validation run, every node should switch from 5-minute to 30-second sampling, and back afterwards. Today the contractor SSHs in and pokes each node one by one, which takes most of an hour. I asked him to „just broadcast it“ and he said multicast through the border router doesn’t work in Contiki and that Hermetry can’t send to children anyway.
Is he right on both counts? I don’t need the details of the radio stack, I need to know whether to pay him for a fix or look for another approach.
Von English mit KI übersetzt ·
Er liegt beim Hermetry-Teil falsch. Hermetry kann Befehle und Änderungen gemeinsamer Attribute an Geräte hinter einem Gateway senden: Das Gateway empfängt sie über v1/gw/rpc oder v1/gw/attributes und muss sie anwenden. Es hängt also davon ab, ob die Gateway-Software des Auftragnehmers diese Topics verarbeitet. Ein Befehl an das Gateway-Gerät selbst funktioniert ebenfalls, sodass die Box in Ihrem Elektroraum „Validierungsabtastung starten“ über einen Dashboard-Button oder eine Regel erhalten und lokal weiterverteilen kann. Das ist ein Befehl statt 30. Der Funkteil ist Erics Revier.
He’s wrong about the Hermetry half. Hermetry can send commands and shared attribute changes to devices behind a gateway: the gateway gets them on v1/gw/rpc or v1/gw/attributes and has to apply them, so it depends on whether the contractor’s gateway software handles those topics. A command to the gateway device itself works too, so the box in your electrical room can get „start validation sampling“ from a dashboard button or a rule and fan it out locally. That’s one command instead of 30. The radio half is Eric’s territory.
Von English mit KI übersetzt ·
Beim Funkteil hat er teilweise recht. Contiki-NG unterstützt IPv6-Multicast für RPL-Netze: zwei Engines, SMRF und MPL. Man aktiviert eine davon zur Build-Zeit in der project-conf.h der Knoten und in der des Border Routers:
/* every node and the border router */
#define UIP_MCAST6_CONF_ENGINE UIP_MCAST6_ENGINE_MPL
/* for SMRF instead you also need storing mode with multicast: */
/* #define UIP_MCAST6_CONF_ENGINE UIP_MCAST6_ENGINE_SMRF */
/* #define RPL_CONF_MOP RPL_MOP_STORING_MULTICAST */
Wo er recht hat: Der Standard-rpl-border-router leitet Multicast aus dem externen Netz nicht ins Mesh weiter. Der Multicast muss daher auf dem Border Router selbst entstehen: ein kleiner Prozess auf diesem Gerät, der auf Befehl von Hermetry ein MPL-Datagramm an eine Gruppe sendet, der die Knoten beigetreten sind. Dafür müssen alle 30 Knoten mit aktiviertem Multicast neu geflasht werden, was bei einer Kühlhaus-Installation einen Vor-Ort-Termin bedeutet.Ehrlich gesagt würde ich bei 30 Knoten auf Multicast verzichten. Der Border Router iteriert über die 30 Adressen und sendet Unicast mit Wiederholung. 30 kleine Pakete im Mesh sind nichts, das ist in Sekunden erledigt, und jeder Knoten bestätigt, sodass man weiß, wer es verpasst hat. Kein erneutes Flashen.Dann in Hermetry: einen Befehl wie sampling.set mit einem Parameter period_s im Profil des Gateways anlegen, diesen Prozess antworten lassen, sobald alle Knoten bestätigt haben, und zwei Schaltflächen im QA-Dashboard platzieren. Die Knoten sollen ihre aktuelle Periode als Client-Attribut melden, damit QA sieht, dass sie übernommen wurde.
Partly right on the radio half. Contiki-NG does have IPv6 multicast for RPL networks: two engines, SMRF and MPL. You turn one on at build time in the nodes‘ project-conf.h and in the border router’s:
/* every node and the border router */
#define UIP_MCAST6_CONF_ENGINE UIP_MCAST6_ENGINE_MPL
/* for SMRF instead you also need storing mode with multicast: */
/* #define UIP_MCAST6_CONF_ENGINE UIP_MCAST6_ENGINE_SMRF */
/* #define RPL_CONF_MOP RPL_MOP_STORING_MULTICAST */
Where he’s right is that the stock rpl-border-router does not forward multicast arriving from the outside network into the mesh. So the multicast has to originate on the border router itself: a small process on that box that, on a command from Hermetry, sends one MPL datagram to a group the nodes joined. It means reflashing all 30 nodes with multicast enabled, which on a cold store install is a site visit.
Honestly, for 30 nodes I’d skip multicast. Have the border router loop over the 30 addresses and send unicast with a retry. 30 small packets on a mesh is nothing, it finishes in seconds, and every node acks so you know who missed it. No reflash.
Then in Hermetry: add a command like sampling.set with a period_s parameter on the gateway’s profile, answer it from that process once all nodes acked, and put two buttons on the QA dashboard. Have the nodes report their current period as a client attribute so QA can see it took.
Von English mit KI übersetzt ·
Der Auftragnehmer hat die Unicast-Schleife in zwei Tagen erledigt, ohne Vor-Ort-Termin. Die QA drückt „Validation on“, das Gateway antwortet etwa 8 Sekunden später mit 30/30 Bestätigungen, und das Attribut sample_period der Knoten springt auf 30. Aus einer Stunde wurde ein Knopfdruck. Danke euch beiden, und ich sage nicht mehr „broadcast einfach“.
Contractor did the unicast loop in two days, no site visit. QA presses „Validation on“, the gateway answers with 30/30 acked about 8 seconds later, and the nodes‘ sample_period attribute flips to 30. Went from an hour to a button. Thanks both, and I’ve stopped saying „just broadcast it“.
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

