Sensorfact Company Profile

IoT Software Developer at Sensorfact (Utrecht, Netherlands)

Sensorfact Verified

Job Description

We know what you're thinking: Energy? Sounds boring. But think again.


Here at Sensorfact we're making the world more sustainable, starting with the industry. Imagine those factories which consume lots of energy? We help them reduce their energy consumption by using smart hardware and software to give insights and advise them how to make a difference.


We provide inexpensive non-invasive wireless energy-harvesting sensors coupled with 4G-enabled bridges. No production downtime === money saved === happy clients. The data is sent straight to our cloud-hosted energy management system and is accessible from anywhere.


Albert Heijn, Heineken and Schiphol are some of our clients. At the moment we receive over 1 million data points per day from our sensors.


We are creating a company which people would like to work for. A great working environment where we come with pleasure and enjoy their work. We are a small and diverse team speaking 6 languages (default is English, of course). We're all good at what we do and we enjoy working together. We love working with people who don't mind chiming in with their opinions and are fearless about asking questions when they don't know the answer. You'll have autonomy to do things your way and respect from day one. No regulations or hierarchy, just a lot of interesting work to be done. If you want to look back on your career and know that you were a vital part of building an awesome company, this role is definitely for you.


What you’ll be doing


As an IoT Software Developer you will be in charge on writing software for our bridges. These bridges are used to gather measurements from sensors and send them to our intelligent energy management system. You'll join an experienced team that is passionate about their work and enjoys collaborating with each other. You will be responsible for ensuring that bridges are always online, pick the best mode of connectivity (4G with best operator, Ethernet or Wi-Fi) and reconnect whenever connectivity is lost. If bridges experience connectivity issues you'll be communicating with our support to debug and resolve them.


We are currently working on improving 4G connection and overall bridge stability. On the platform side we are making a new device monitoring dashboard to have a real-time overview of our device fleet.


We are also researching new sensors such as pulse counters to read out existing meters. This way we can measure more things like gas, steam and water and deliver a full-energy service.


You will have all the freedom to come up with improvements to processing millions of data points per day and extracting meaningful analytics from that data in real time to enable new features like preventive maintenance. All the while not forgetting to create useful documentation for systems you work on, covering them with elegant tests and avoiding technical debt.


We are a small team so every contribution is critical to the product. Our roadmap is packed for the coming years, but there is always a room for experiments and cool new features.


The key technologies you will be working with


Learning new technologies is fun that's why we're constantly experimenting with them. Right now our core platform is based on microservices written in Node.js connecting to the NATS message bus. User-facing APIs are exposed through GraphQL on top of Express.js.


Time series data is stored in InfluxDB and the rest - in MongoDB. Our source code is on GitLab and we use a mix of GitLab CI and Jenkins for CI/CD. We use a combination of CloudWatch and Stackdriver for logging and monitoring.


Our microservices are orchestrated by Docker Swarm but we have a prototype Kubernetes cluster in the works.


On the hardware side we have bridges, which are small embedded PCs running Linux. Each bridge connects to our platform over 4G, Ethernet or Wi-Fi. In addition a bridge has an EnOcean chip to receive data from wireless sensors. The software on bridges consists of several parts. Hardware is initialized using a Devicetree overlay. 4G modem is controlled by a service using a PPP chat scripts. Rest of the services are implemented using Node.js. All services are orchestrated using a combination of systemd and udev.


How we do it


We do Scrum with 2-week sprints, sprint planning, grooming and retrospective sessions. Our stand-ups are at 9:30 and if you're not there you can chime in over Hangouts. We keep track of things using several Trello boards (standups, requests, backlog, active sprint, etc.). We keep in touch with each other over Slack.


We know how important it is to get in the zone and write beautiful code so 13:00 to 16:00 we have quiet hours with no distraction (we try).


We're setting up processes and tools to enable our team to work fully remote. We're not there yet.


What you’ve done


Here come the bullet points:



  • Linux (networking, systemd, udev, etc.)

  • Bash scripting

  • Working with serial ports and decoding binary data

  • Writing Makefiles

  • Enthusiastic about some of the following: energy, IoT, hardware or testing

  • English fluency and excellent communication skills

  • Experience working in agile teams and Scrum


Bonus bullet points



  • Controlling 2G/4G modems using AT commands

  • Familiarity with Devicetree

  • A DevOps mindset

  • Interest in energy savings field and manufacturing industry


What we offer


Money, pension, lunches, working from home, team activities, training budget - the usual.


Our office is located in the center of Utrecht, a short walk from the central station. We'll provide you with an NS-business card or cover your travel expenses to get there.


We know how it is incredibly important to have the right tools. Any hardware or software you need to get your job done: great monitor, the best laptop, standing desk - you've got it.


EU working permit is required


Did we peak your interest? Send us a message and come by for coffee. Please include a short note why you think you’ll fit in, your resume, GitHub and/or NPM username, etc. or anything else you think is applicable.