Metingen sensoren slim en snel inzichtelijk gemaakt

PalmSens ontwikkelt compacte sensoren voor het meten van elektrochemische processen. Om de meetresultaten goed inzichtelijk te maken én te kunnen delen, was er behoefte aan een MyPalmSens cloud applicatie. Die heeft Covadis samen met PalmSens ontwikkeld, compleet met een slimme oplossing voor de rechten van gebruikers en mogelijkheden voor pushmeldingen. De ontwikkeltijd is aanzienlijk versneld door de overstap naar C#/.NET. Onze developer Erik Knaake vertelt over de uitdaging, de gekozen oplossingen én de voldoening achteraf.

De uitdaging

De kleine elektrochemische sensoren van PalmSens worden gebruikt door bedrijven en bijvoorbeeld universiteiten. Voor het inzien en delen van meetresultaten was er behoefte aan een moderne MyPalmSens applicatie. Er was al een bestaande back-end oplossing. Hierop is eerst een front-end ontwikkeld (in Angular). Ook was er behoefte aan meer interactie met andere API’s en systemen en aan betere overdraagbaarheid naar developers. Samen met onze projectmanager John Verbeek heeft Erik hiervoor een plan gemaakt om deze requirements en de bestaande functionaliteit over te zetten naar C#/.NET. Zo is de ontwikkeltijd flink versneld!

Ook het complexe rechtensysteem was een uitdaging. “Er zijn rechten op drie verschillende niveaus die elkaar ook beïnvloeden. Bovendien was er een externe autorisatieprovider” vertelt Erik. De oplossing was het schrijven van een eigen autorisatie-attribuut. Dit zorgt door filtering zodat gebruikers alleen de gegevens te zien krijgen die voor hen relevant zijn.

Ombouw in twee weken

Samen met twee andere developers – Evert (PalmSens) en Nick Spijker (Covadis) – is de bestaande back-end in twee weken omgebouwd van Python (met CosmosDB) naar C#/.NET (met MSSQL). Hiervoor is gekozen vanwege de aard van de data. Erik: “Die is vrijwel allemaal relationeel en de performance is belangrijk, maar op deze schaal prima te behappen voor MSSQL. Bovendien is C#strong-typed en Python niet. Iets dat ons ontwikkelproces vertraagde.

Bij het opzetten van de back-end zijn belangrijke technische keuzes gemaakt. Zoals gebruik van een MediatR package om het ‘mediator pattern’ te introduceren. Dit zorgt voor minder afhankelijkheden en betere onderhoudbaarheid van de code. “Dit sluit ook mooi aan bij het gebruik van Redux in de front-end.”

Aansluitend op het rechtensysteem is een mooie oplossing gecreëerd voor het versturen van pushmeldingen, op basis van hun rechten. Bijvoorbeeld als er een nieuwe meting wordt aangemaakt of er nieuwe meetresultaten zijn. “Hiervoor is gebruik gemaakt van de kracht van SignalR en Redux in combinatie met een builder pattern. Zo kunnen we op een effectieve manier bi-directioneel communiceren, zoals dat zo mooi heet.”

Het resultaat

PalmSens en hun klanten beschikken nu over een krachtige vernieuwde MyPalmSens applicatie die snel inzicht geeft in meetresultaten van de sensoren. Vanuit een client-server architectuur met een back-end van C#/.NET en MSSQL, terwijl de front-end is ontwikkeld in Angular. Door het inzicht en de deelmogelijkheden die dit geeft, ontstaan veel mogelijkheden om nog beter onderzoek te kunnen doen met behulp van de sensoren van PalmSens.

Zeer waardevol en prettig voor dit ontwikkeltraject was de snelheid die gemaakt kon worden door de overstap naar C#/.NET. Zo kon het systeem al binnen twee weken worden omgezet. “Het vertrouwen dat we hiervoor kregen van de klant was erg prettig en heeft dit mede mogelijk gemaakt”, aldus Erik. Voor hem was dit inhoudelijk een van de leukste projecten waaraan hij gewerkt heeft. 

Ook de opdrachtgever is zeer tevreden. Niels van Velzen (CTO) van PalmSens: 

Met de hulp van Erik en Nick van Covadis hebben we in korte tijd een MVP cloud dienst van hoog niveau kunnen opzetten. Dit kon doordat het team snel en doelgericht heeft gewerkt.