•You can bring several students of a session together on one shared lab, from the session page: you give it a name, pick the student who hosts it and tick the other members. Dissolving the group destroys nothing: everyone gets their own lab back.
•Each student’s card shows which shared lab they are working on, and the Start button is only offered to the student who hosts the lab.
•In their lab, students always see the shared lab’s name, its owner and their group mates.
•Every group member sees the frames sent by the shared lab’s nodes live, without reloading the page.
•Two members editing the Python code of the same node at the same time no longer overwrite each other’s work: the one whose version is out of date is warned and chooses to take their mate’s version or keep their own.
•The site offers new pages presenting what the platform is used for (LoRaWAN labs, Zigbee and Thread simulation, an IoT lab without hardware), linked from the footer, and each page now has its own address in French and in English.
Announcements to your students, the lab brief inside the lab — and code that no longer gets lost
v0.14.0
•You can post an announcement to a cohort. Your students see it on screen, including those already in the middle of a lab, and a student who reconnects finds the announcements posted while they were away.
•You can upload a lab brief as a PDF (10 MB at most) to a blueprint. Students read and download it from their lab screen.
•A Duplicate button on each blueprint creates a copy you can rename, for instance to offer the same lab with another radio technology. The copy keeps the uploaded brief.
•A student’s Python code is saved as they type. It survives a page refresh, logging out and stopping the lab.
•Platform updates no longer take the site down: the new version starts and checks itself before replacing the old one.
•A banner now tells you about the cookies the site uses.
Card payment, end to end — and invoices that carry your institution
v0.13.0
•You can subscribe by card from your own area, without going through a quote. Changing plan happens in the same place, and so does cancelling: it takes effect at the end of the period you have already paid for, never before.
•Your invoices now appear in your area, with their PDF download link. Until now they only existed at our payment provider.
•Invoices now carry your institution’s name, address and EU VAT number, collected at payment time — no longer your login name. The details stay editable afterwards from the billing portal.
•A renewal declined by your bank no longer makes your subscription disappear from view: the unpaid invoice is shown with the link to settle it, and access resumes as soon as it is paid.
•When you cancel yourself, messages no longer tell you to “update your payment method”: they offer you to subscribe again, which is the only thing to do.
•The access end date shown after cancelling is correct again: it no longer stays on “confirmed in a few moments” forever.
•Subscribing again after cancelling starts from a clean slate, without inheriting the previous cancellation.
•One button on your plan card — the one that works.
The site finally says who runs it, and you can leave whenever you want
v0.12.0
•The site now has its legal notice, privacy policy, terms of use and of sale, accessibility statement and a data processing agreement. All five pages are bilingual and reachable from the footer of every public page.
•The data processing agreement prints cleanly to PDF: it is the document your institution’s data protection officer will ask for before signing.
•You can delete your own account from “My account” in the teacher area. The confirmation window states exactly what deletion takes with it, with the real counts of your cohorts, students and active sessions. Your invoices are kept for ten years as the law requires, detached from any account.
•The same page finally lets you change your password without going through the forgotten-password flow.
•An account left unused for three years is deleted, after a thirty-day notice sent by email. Signing in again cancels the notice.
•The free trial is announced on the home page: thirty days, no card required, with what it includes. Durations and limits shown across the site now come from the plan catalogue, so they can no longer say anything other than what is actually enforced.
•A dedicated entry for institutions sits on the home page, with the demo and a contact, and a section says who builds and hosts the platform.
•Fonts are now served from our own servers: the site makes no request to any third party, and no visitor data leaves the European Union.
•One contact address across the whole site and in every email: contact@ofnir.fr.
•Search engines finally get a sitemap and structured information describing the platform.
•Pages now render correctly on phones: the pricing comparison table scrolls instead of being cut off — two plans were invisible and unreachable —, the subscription page cards are no longer squeezed, and footer links wrap onto several lines.
•Text colours were lightened wherever they were too faint to read comfortably, including in the demo terminal. The brand colours themselves are unchanged.
•The subscription page no longer shows two stacked navigation bars.
•Student accounts no longer attached to any cohort are deleted after three years, like teacher accounts.
The home page replays a real lab
v0.11.0
•The home page was rebuilt: it replays a real LoRaWAN session, recorded on the platform, inside the lab’s own components — the map with the gateway, three nodes and their range rings, the terminal typing AT commands and receiving the network’s answer, the inspector showing the received frame, and the teacher’s monitoring cards. What the visitor sees is the tool, not a mock-up.
•On the home page the map can be handled: drag a node out of the gateway’s ring and it receives nothing; kill the gateway and the rings vanish.
•The five protocols are shown on one map, each with the range computed by the radio engine, in the interface language.
•The “real hardware or VirtIoT” table keeps only verifiable figures; the lab start time is stated as measured on the development platform.
•The navigation bar stays visible at the top of every public page while scrolling.
•Animations honour the system’s “reduce motion” setting: each scene is then shown in its final state.
A failed update rolls itself back
v0.10.2
•When a platform update fails after starting, it now rolls back to the previous version by itself — as long as the database structure has not changed in between. The two-hour outage of 7 September would have lasted a few minutes.
•Before starting, stopping or restarting every lab of a class, the confirmation says how many workstations are affected. Until now the action covered the whole class without saying so.
•A lab whose shutdown did not complete stays shown as started, instead of vanishing while its components are still running; closing the session then reports what remains to stop.
•The platform recovers the network slots lost during bulk shutdowns: each one permanently reduced the number of students it could host.
•The platform’s public status page is reachable again.
Stopping a class no longer cuts LoRaWAN messaging
v0.10.1
•Stopping every lab of a class in one go can no longer silently cut the internal messaging that LoRaWAN nodes, the network server and the radio engine rely on. Three simultaneous stops were enough to wipe the access list — without a word, until nothing flowed any more.
•A platform update can no longer leave it half online. This morning the previous one served pages while refusing every login for almost two hours; a deployment now checks that every component is wired to the others, and that a real database request succeeds, before calling itself done.
•Stopping a lab on a very busy platform no longer permanently consumes a network slot. Each such stop reduced by one the number of students the platform could host, without ever giving it back.
Thread leaves the test bench and goes live
v0.10.0
•The Thread network now works on the online platform, not only on a development machine. A student’s node really reaches the border router and its frame comes back out — this was the piece of work announced last time. The payload a student sends is also, at last, the one that goes on the air.
•In NB-IoT, moving a node away finally has an effect. The map showed a scale in metres while distance entered no calculation at all: two nodes at opposite ends of the area communicated just as well as side by side.
•When a transmission fails, the terminal now gives the real reason. A collision, jamming and an out-of-range node all announced themselves the same way — and in LoRa point to point, not at all. A student could not learn from their mistake.
•A lab can no longer show as started while its Thread radio is dead. This happened after a service restart: the link stayed on offer while no frame travelled.
•A student’s network no longer has Internet access. It had full access, while the platform promised the opposite — the way out is now closed from the device management server and from the border router too.
•Startup warnings for a cohort now reach the teacher: the network server configuration could fail at the start of a session without anyone being told.
The Thread border router finally transmits on the air
v0.9.0
•The Thread border router now really transmits on the simulated radio medium. The previous version let it bring up its network without a single frame ever leaving it: it declared itself leader, yet no node could attach to it whatever its position. This was the piece of work announced last time.
•The border router’s administration interface now opens from the lab. It was listening on an internal address the platform could not reach, and the link stayed unanswered.
•The border router appears on the student’s map, with its coverage area, instead of existing without being visible anywhere.
•A node can no longer vanish silently from a session’s radio topology: the automatic cleanup of unused slots could, in rare cases, evict a node that had just registered.
A student’s Thread nodes finally form a network
v0.8.0
•Two Thread nodes belonging to the same student now associate with each other: one becomes leader and the other appears in its child table. Until now every node drew its own network key at startup, so two neighbouring nodes could not see each other whatever their position and settings.
•A restarted node rejoins its student’s network instead of creating a new one.
•The Thread border router now starts with a real radio and brings up its network. It does not relay the nodes’ frames yet — that is the next piece of work, and the Thread view is still flagged as not proven end to end.
•Each student keeps a Thread network separate from their classmates’, as before.
Cutting a gateway is a clean alteration again
v0.7.0
•Cutting then restoring a gateway no longer degrades the range of every node in the session. Restoring it re-imposed a reception threshold inherited from an older version, which pulled every coverage area back to that of the lowest spreading factor.
•A gateway you cut stays cut: it used to come back on its own after five minutes, and the node then appeared to transmit correctly while nothing reached the network server.
•A node whose gateway is cut now reports that it is not being received, instead of advising the student to have the session restarted — which would have undone your alteration.
•A Python script asking to join the network on an already-connected node returns immediately and explains how to force a real radio check. Until now it stopped after thirty seconds, with no message.
•Joining the network now uses the data rate configured on the node, as data uplinks already did: at the default rate it therefore reaches much further than before.
•The map legend announced a Zigbee range of 200 metres outdoors where the drawn circle is 167, indoors. It now says the same thing as the drawing.
The provided code example finally runs inside the lab
v0.6.0
•The example script that reads the temperature and sends it stopped as soon as it was launched, on a library the node does not have: it also tried to query the data interface, which has no place inside the node. Every example now states, on its first line, whether it runs in the lab editor or on your own machine.
•The map display has been entirely rebuilt internally. No visible change is expected — if you notice any difference in the coverage areas, the nodes or the transmission animation, that is a defect and it should be reported.
A deployment no longer interrupts running lab sessions
v0.5.0
•A platform update no longer cuts the radio of open sessions: the topology of every active session is re-registered automatically. And should it ever be missing, the message now says so plainly instead of advising to move the node closer — the one gesture that could not help.
•A sensor reading can finally be transmitted: the example script that reads the temperature and sends it worked for one technology only, and now works everywhere. The code button next to the readings opens that example directly.
•A node already connected to the network no longer pretends to reconnect: it states that it already was, and recalls how to force a real radio check.
•Moving a gateway on the map no longer moves a node instead — the two could share the same internal identifier.
•A node can no longer claim a transmit power above the one the coverage circles are drawn for: the circle on screen stays the real limit, whatever a node declares.
•An administrator can grant a teacher a subscription, with an end date and a reason, and take it back — with no quote and no payment.
Coverage circles finally tell the truth
v0.4.0
•Each spreading factor now has its own range, from 3.9 km to 12.9 km: a node placed outside a given circle really is out of reach. Until now the drawing and the calculation disagreed by a factor of five, and a node sitting outside the smallest circle transmitted perfectly well.
•Displayed ranges now come from the simulation engine itself, so the map can no longer describe a physics different from the one it applies. If the engine is unavailable, no circle is drawn and the map says so, rather than showing stale values.
•The lab area is now 40 km across, so that a genuine out-of-range zone remains to explore. Saved layouts keep their arrangement, but real distances between objects are doubled: a topology close to the limit may switch sides.
•A node’s terminal and a session’s live feed are now reachable only by the student who owns them and by their cohort’s teacher.
•A node’s software restart now keeps its network credentials; only a factory reset clears them, and the node states plainly which of the two just happened.
Radio range is finally visible on screen
v0.3.2
•A node too far from a gateway now says so: the transmission fails and names range as the cause, instead of appearing to succeed.
•Signal quality is no longer shown when no gateway received the frame — the network inspector shows a dash rather than a previous transmission’s value.
•The map no longer animates a packet towards a gateway that never heard it.
•Network join failures show their cause in the terminal, instead of a bare failure message.
Phone readability, help centre and clearer messages
v0.2.5
•The teacher and admin workspaces are usable on a phone: the menu folds away instead of taking half the screen.
•A public help centre answers the questions people ask before creating an account, and a release journal tracks what changed.
•The logo now displays correctly on a dark background — its subtitle was invisible.
•Opened from a phone, a lab explains that it needs a computer instead of showing an unreadable layout.
•When a node fails to join the network, the message states why: out of range, or radio engine unavailable.
Network server access and account reliability
v0.2.4
•Network server links from the student workspace now work — they previously led nowhere.
•ChirpStack is reachable at its own address, using the credentials shown in the lab.
•A node out of gateway range no longer reports itself as joined: the refusal is explicit and states why.
•Importing a student list now reports addresses already in use instead of failing without explanation.
Self-service sign-up and billing
v0.2.0
•Teachers can create their own account, with e-mail verification.
•Discovery plan to try the platform, and a quote request to move to a larger plan.
•Password reset by e-mail.
First release
v0.1.0
•Complete LoRaWAN labs: node and gateway placement, AT terminal, Python editor.
•Radio propagation simulation — distance and obstacles decide what gets through.
•Teacher workspace: cohorts, sessions, blueprints and live monitoring.