profile
viewpoint
Anuj Deshpande anujdeshpande @balena-io Pune, India https://anujdeshpande.com/blog Embedded Software Engineer

anujdeshpande/awesome-hardware-production 25

List of awesome resources for going to production with a hardware product

anujdeshpande/BBB-workshop 16

Demos for a Hands on BeagleBone Black workshop

anujdeshpande/3day-iot-workshop 1

Repo for the 3 day workshop at PICT

anujdeshpande/aws_starter_sdk 1

Marvell's Starter SDK for AWS IoT Service

anujdeshpande/balena-ir-remote 1

[WIP] A simple application for controlling your AC with a RaspberryPi ( or a balenaFin, if you wanna go fancy or even cellular :P )

anujdeshpande/blog_me 1

Convert my markdowns into blog posts

anujdeshpande/android-upnp-discovery 0

Discover UPnP devices via SSDP (Simple Service Discovery Protocol) on the current WiFi network

anujdeshpande/apod_desktop_background 0

Set the Astronomy Picture of the Day as your desktop background

startedgoogle/skywater-pdk

started time in 3 hours

pull request commentproduct-os/rfq

Update fileTypes.json

@balena-ci I self-certify!

anujdeshpande

comment created time in 4 hours

PR opened product-os/rfq

Update fileTypes.json

Change-type: minor Signed-off-by: Anuj Deshpande anuj@balena.io

+1 -1

0 comment

1 changed file

pr created time in 15 hours

create barnchproduct-os/rfq

branch : add-dxf

created branch time in 15 hours

push eventanujdeshpande/anujdeshpande

Anuj Deshpande

commit sha 9f2eb8c77081156c380c998b7dd2563ebab8d099

Update README.md

view details

push time in a day

create barnchanujdeshpande/anujdeshpande

branch : master

created branch time in a day

created repositoryanujdeshpande/anujdeshpande

created time in a day

startedmozilla-comm/ical.js

started time in a day

push eventbalena-io/heattest

Anuj Deshpande

commit sha bd9ea0782ff41e5dbcf5db8c5e834a88d6e073f3

Log ambient temp and humidity, cpu temp and USB devices Change-type: minor Signed-off-by: Anuj Deshpande <anuj@balena.io>

view details

push time in 3 days

startedklutchell/balena-nextcloud

started time in 4 days

startedjakkra/Mars-Rover

started time in 5 days

Pull request review commentproduct-os/rfq

WIP - Move to typescript from js

+import * as capitano from 'capitano';+import * as fs from 'fs';+import * as _ from 'lodash';+import JSZip from 'jszip';+import * as Path from 'path';+import * as skhema from 'skhema';++const specPath: string = '/source/specification/spec.json';+const zip =  new JSZip();++const generate = async (+	params: { folder: string },+	options: { output: string },+) => {++	const rfq = await validateSpec(params.folder + specPath); // generate rfq json from spec.json and schema+	zip.file('rfq.json', JSON.stringify(rfq, null, 2)); // add rfq.json to the release++	const testFile = fs.readFileSync(Path.join(params.folder, 'testing', 'Testing.md'));+	const testContent = Buffer.from(testFile).toString('utf8');+	zip.file('Testing.md', testContent);++	packageFiles(Path.join(params.folder, 'outputs'));++	const data = await zip.generateAsync({+		type: 'nodebuffer',+		compression: 'DEFLATE'+	});+	fs.writeFileSync(Path.join(options.output, `release.zip`), data, 'binary');+};++// check the spec file against schema for the project type - this will have to change if we get rid of the spec.json file from the repos+const validateSpec = async(spec: string) => {+	let specFile = JSON.parse(fs.readFileSync(spec).toString('utf8'));+	const schema = await JSON.parse(fs.readFileSync(Path.join(__dirname,'../', 'hardware-types', specFile.hwType, 'rfq.json')).toString('utf8'));+	const partRFQ = skhema.filter(schema, specFile); // this could be a check rather than a filter+	return partRFQ;+};+++// get all files in output folder - should we restrict the file types to get depending on project type+const packageFiles = async(path: string) => {+	fs.readdirSync(path, {withFileTypes: true}).forEach(fileName => { // nead this to be recursive+		console.log(path);+		console.log(fileName.name);+		// if its a directory, do it again - if its a file, zip it+		if(fileName.isDirectory()){+			console.log('this is a directory')+			packageFiles(Path.join(path, fileName.name));+		} else {+			console.log('this is a file')+			const fileRead = fs.readFileSync(Path.join(path, fileName.name))+			const fileContent = Buffer.from(fileRead).toString('utf8');+			zip.file(fileName.name, fileContent) // what should the files get called? is it ok just to dump all the files in there?

Moving this to versionbot seems like something we can discuss in today's call then

anujdeshpande

comment created time in 6 days

Pull request review commentproduct-os/rfq

WIP - Move to typescript from js

+import * as capitano from 'capitano';+import * as fs from 'fs';+import * as _ from 'lodash';+import JSZip from 'jszip';+import * as Path from 'path';+import * as skhema from 'skhema';++const specPath: string = '/source/specification/spec.json';+const zip =  new JSZip();++const generate = async (+	params: { folder: string },+	options: { output: string },+) => {++	const rfq = await validateSpec(params.folder + specPath); // generate rfq json from spec.json and schema+	zip.file('rfq.json', JSON.stringify(rfq, null, 2)); // add rfq.json to the release++	const testFile = fs.readFileSync(Path.join(params.folder, 'testing', 'Testing.md'));+	const testContent = Buffer.from(testFile).toString('utf8');+	zip.file('Testing.md', testContent);++	packageFiles(Path.join(params.folder, 'outputs'));++	const data = await zip.generateAsync({+		type: 'nodebuffer',+		compression: 'DEFLATE'+	});+	fs.writeFileSync(Path.join(options.output, `release.zip`), data, 'binary');+};++// check the spec file against schema for the project type - this will have to change if we get rid of the spec.json file from the repos

@rcooke-warwick I can't remember, but have we discussed doing something like this (removing the spec.json)? Can't seem to think of why we'd want that

anujdeshpande

comment created time in 6 days

Pull request review commentproduct-os/rfq

WIP - Move to typescript from js

+import * as capitano from 'capitano';+import * as fs from 'fs';+import * as _ from 'lodash';+import JSZip from 'jszip';+import * as Path from 'path';+import * as skhema from 'skhema';++const specPath: string = '/source/specification/spec.json';+const zip =  new JSZip();++const generate = async (+	params: { folder: string },+	options: { output: string },+) => {++	const rfq = await validateSpec(params.folder + specPath); // generate rfq json from spec.json and schema+	zip.file('rfq.json', JSON.stringify(rfq, null, 2)); // add rfq.json to the release++	const testFile = fs.readFileSync(Path.join(params.folder, 'testing', 'Testing.md'));+	const testContent = Buffer.from(testFile).toString('utf8');+	zip.file('Testing.md', testContent);++	packageFiles(Path.join(params.folder, 'outputs'));++	const data = await zip.generateAsync({+		type: 'nodebuffer',+		compression: 'DEFLATE'+	});+	fs.writeFileSync(Path.join(options.output, `release.zip`), data, 'binary');+};++// check the spec file against schema for the project type - this will have to change if we get rid of the spec.json file from the repos+const validateSpec = async(spec: string) => {+	let specFile = JSON.parse(fs.readFileSync(spec).toString('utf8'));+	const schema = await JSON.parse(fs.readFileSync(Path.join(__dirname,'../', 'hardware-types', specFile.hwType, 'rfq.json')).toString('utf8'));+	const partRFQ = skhema.filter(schema, specFile); // this could be a check rather than a filter+	return partRFQ;+};+++// get all files in output folder - should we restrict the file types to get depending on project type+const packageFiles = async(path: string) => {+	fs.readdirSync(path, {withFileTypes: true}).forEach(fileName => { // nead this to be recursive+		console.log(path);+		console.log(fileName.name);+		// if its a directory, do it again - if its a file, zip it+		if(fileName.isDirectory()){+			console.log('this is a directory')+			packageFiles(Path.join(path, fileName.name));+		} else {+			console.log('this is a file')+			const fileRead = fs.readFileSync(Path.join(path, fileName.name))+			const fileContent = Buffer.from(fileRead).toString('utf8');+			zip.file(fileName.name, fileContent) // what should the files get called? is it ok just to dump all the files in there?

@rcooke-warwick Should we take this as an input from capitano? I think it makes sense to accept this as branch from which release is created or even better the subject of the email.

anujdeshpande

comment created time in 6 days

push eventproduct-os/rfq

Anuj Deshpande

commit sha ab6747331bc50e413a6671f28f77955d887ebf40

Cleaup whitespace Change-type: minor Signed-off-by: Anuj Deshpande <anuj@balena.io>

view details

push time in 6 days

push eventproduct-os/rfq

Anuj Deshpande

commit sha d478d963e51c15f1471676dbe1faf9f291071e75

Cleanup whitespace Change-type: minor Signed-off-by: Anuj Deshpande <anuj@balena.io>

view details

push time in 6 days

create barnchbalena-io/heattest

branch : arai-heatchamber

created branch time in 8 days

startedespressif/esp-aws-iot

started time in 10 days

startedMeteorStudioASU/lcc

started time in 12 days

startedlxi-tools/liblxi

started time in 13 days

issue openedbalena-io/heattest

Integrate liblxi

We have a working example of getting data from a Rigol oscilloscope using a slightly modified version of this python script. This is loosely based on the LXI standard.

There is a better tool called liblxi which will allow us to talk to a bunch of test equipment including popular oscilloscopes so that we can collect data from the test equipment from a fin (instead of relying on vendors desktop applications - typically windows only)

This would allow us to create a decent remote-friendly setup

created time in 13 days

issue openedbalena-io/heattest

Add spec for the testing chamber

created time in 13 days

issue openedbalena-io/heattest

Add support for camera

We can have a camera interface to stream the test - and more importantly have a reference of how the hardware was arranged

Hardware that needs to be in frame includes -

  • fan
  • thermocouple/temp sensor
  • fin or other hardware in question
  • reflow controller screen

created time in 13 days

issue openedbalena-io/heattest

Thermocouple grounding

The thermocouple that connects to the reflow controller currently gives good enough readings. There is some noise - which could be a result of the

Won't need to fix this if we do #10

created time in 13 days

issue openedbalena-io/heattest

Replace thermocouple with ambient temperature sensor

If possible, we can replace the thermocouple with a more accurate temperature sensor. Thermocouples are needed if we are reaching very high temperatures - which we won't for this heat chamber

created time in 13 days

issue openedbalena-io/heattest

Document wiring and schematic

created time in 13 days

startedformatc1702/WireViz

started time in 13 days

pull request commentproduct-os/rfq

WIP - Move to typescript from js

@rcooke-warwick awesome! About 1 - I think yes. The outputs folder has files meant for the manufacturing folks. CI shouldn't have any logic on determining if a file feels out of place there.

About 2 - Does subcategories in repo.yml make sense instead

anujdeshpande

comment created time in 14 days

startedtmigone/balena-udev-examples

started time in 14 days

issue openedbalenalabs/balena-sound

Have a screensaver for audio over HDMI setups

Is your feature request related to a problem? Please describe. It would be nice to add a moving screensaver so that we don't have screen burn in for setups that have audio over HDMI

See forum post - https://forums.balena.io/t/142744 JF thread - https://jel.ly.fish/5edd4bf1-3aa5-4602-984d-09140d935061

created time in 14 days

startedarendst/Tasmota

started time in 15 days

startedespressif/esp-hosted

started time in 15 days

startedYours3lf/rpi-vk-driver

started time in 15 days

startedwhytheplatypus/switchboard

started time in 16 days

startednasa-jpl/open-source-rover

started time in 18 days

startedbalena-io-modules/scrutinizer

started time in 20 days

startedUnexpectedMaker/ReflowMaster

started time in 22 days

startedstlink-org/stlink

started time in 23 days

startedctz/rustls

started time in 23 days

pull request commentbalena-io-playground/balena-ir-remote

[WIP] rework around ir-ctrl

Did some more debugging

bash-5.0# ir-ctl --device=/dev/lirc1 -r
^C
bash-5.0# ir-ctl --device=/dev/lirc0 -r
/dev/lirc0: device cannot receive raw ir
bash-5.0# 

I see 2 devices, and only one of them can receive. Tried with a couple of remotes, but no joy on the cli. Will debug more.

curcuz

comment created time in 25 days

pull request commentbalena-io-playground/balena-ir-remote

[WIP] rework around ir-ctrl

@curcuz I edited my comment a couple of times as I was debugging. Had some curl woes- sorry about that.

How should I enable additional debug log? How does your hardware setup look like

curcuz

comment created time in 25 days

pull request commentbalena-io-playground/balena-ir-remote

[WIP] rework around ir-ctrl

I’m using a shield from an old project I was involved with. Wired below -

image

It’s got a TSOP IR receiver and regular IR LEDs

curcuz

comment created time in 25 days

pull request commentbalena-io-playground/balena-ir-remote

[WIP] rework around ir-ctrl

@curcuz apologies for the delay!

I have a setup, but my curl commands fail

For example, the output from the logs

13.06.20 09:26:46 (+0000) Killed service 'ir-server sha256:da6c8083176e4178b22ac3b674051664ab823e71c7cd37cc2a315952c0e2e8dd'
13.06.20 09:26:46 (+0000) Service exited 'ir-server sha256:da6c8083176e4178b22ac3b674051664ab823e71c7cd37cc2a315952c0e2e8dd'
13.06.20 09:26:46 (+0000) Shutting down
13.06.20 09:28:31 (+0000) Supervisor starting
13.06.20 09:28:11 (+0000)  ir-server  
13.06.20 09:28:11 (+0000)  ir-server  > balena-ir@0.0.1 start /usr/src/app
13.06.20 09:28:11 (+0000)  ir-server  > node index.js
13.06.20 09:28:11 (+0000)  ir-server  
13.06.20 09:28:12 (+0000)  ir-server  server listening on port 80 with host set to 0.0.0.0
13.06.20 09:39:17 (+0000) Supervisor starting
13.06.20 09:38:58 (+0000)  ir-server  
13.06.20 09:38:58 (+0000)  ir-server  > balena-ir@0.0.1 start /usr/src/app
13.06.20 09:38:58 (+0000)  ir-server  > node index.js
13.06.20 09:38:58 (+0000)  ir-server  
13.06.20 09:38:58 (+0000)  ir-server  server listening on port 80 with host set to 0.0.0.0
13.06.20 09:55:56 (+0000)  ir-server  Error: No default engine was specified and no extension was provided.
13.06.20 09:55:56 (+0000)  ir-server      at new View (/usr/src/app/node_modules/express/lib/view.js:61:11)
13.06.20 09:55:56 (+0000)  ir-server      at Function.render (/usr/src/app/node_modules/express/lib/application.js:570:12)
13.06.20 09:55:56 (+0000)  ir-server      at ServerResponse.render (/usr/src/app/node_modules/express/lib/response.js:1012:7)
13.06.20 09:55:56 (+0000)  ir-server      at errorHandler (/usr/src/app/index.js:14:7)
13.06.20 09:55:56 (+0000)  ir-server      at Layer.handle_error (/usr/src/app/node_modules/express/lib/router/layer.js:71:5)
13.06.20 09:55:56 (+0000)  ir-server      at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:315:13)
13.06.20 09:55:56 (+0000)  ir-server      at /usr/src/app/node_modules/express/lib/router/index.js:284:7
13.06.20 09:55:56 (+0000)  ir-server      at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
13.06.20 09:55:56 (+0000)  ir-server      at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
13.06.20 09:55:56 (+0000)  ir-server      at Layer.handle_error (/usr/src/app/node_modules/express/lib/router/layer.js:67:12)

The curl command I used was

anujdeshpande@BaeBlade:~/balena/balena-ir-remote$ curl 192.168.86.27/v1/ir --data {"name": "ac"} --request POST -H "Content-Type: application/json"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Error: No default engine was specified and no extension was provided.<br> &nbsp; &nbsp;at new View (/usr/src/app/node_modules/express/lib/view.js:61:11)<br> &nbsp; &nbsp;at Function.render (/usr/src/app/node_modules/express/lib/application.js:570:12)<br> &nbsp; &nbsp;at ServerResponse.render (/usr/src/app/node_modules/express/lib/response.js:1012:7)<br> &nbsp; &nbsp;at errorHandler (/usr/src/app/index.js:14:7)<br> &nbsp; &nbsp;at Layer.handle_error (/usr/src/app/node_modules/express/lib/router/layer.js:71:5)<br> &nbsp; &nbsp;at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:315:13)<br> &nbsp; &nbsp;at /usr/src/app/node_modules/express/lib/router/index.js:284:7<br> &nbsp; &nbsp;at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)<br> &nbsp; &nbsp;at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)<br> &nbsp; &nbsp;at Layer.handle_error (/usr/src/app/node_modules/express/lib/router/layer.js:67:12)</pre>
</body>
</html>
curl: (3) [globbing] unmatched close brace/bracket in column 3
anujdeshpande@BaeBlade:~/balena/balena-ir-remote$
curcuz

comment created time in 25 days

startedswift-server/swift-aws-lambda-runtime

started time in 25 days

create barnchbalena-io-playground/vehicle-control-demo

branch : fix-markdown-typo

created branch time in a month

startedRoGeorge/DS1054Z_screen_capture

started time in a month

startednock/nock

started time in a month

startedburtyb/ClusterCTRL

started time in a month

startedharbaum/I2C-Tiny-USB

started time in a month

startedlxi-tools/lxi-tools

started time in a month

startedZeekHuge/BeagleScope

started time in a month

startedSTMicroelectronics/STM32CubeL4

started time in a month

startedSTMicroelectronics/STM32Cube_MCU_Overall_Offer

started time in a month

push eventbalena-io/heattest

Anuj Deshpande

commit sha b8f484daef327dd63f0a53f38f1bf62c5ad8b4b7

Remove second service, get png csv from scope after every 80 deg measurement

view details

push time in a month

startedayoy/fontedit

started time in a month

push eventbalena-io/heattest

Anuj Deshpande

commit sha b025ee536fd53fa357f18be99875969ae1d1f16e

Add oscilloscope code, tweak stressberry to reduce time

view details

push time in a month

startedanielsen001/DS1054Z_screen_capture

started time in a month

push eventbalena-io/heattest

Anuj Deshpande

commit sha 4cf3aa9a638bb49b79aa3063295e723ac1480aae

Add oscilloscope code, tweak stressberry to reduce time

view details

push time in a month

push eventbalena-io/heattest

Anuj Deshpande

commit sha 779b7c5b59d31f3142b55befea98b054ace9b106

Add oscilloscope code, tweak stressberry to reduce time

view details

push time in a month

create barnchbalena-io/heattest

branch : powertest

created branch time in a month

issue openedbalena-io/heattest

Add WiFi dongle support to increase power consumption

  • Multiple WiFi interfaces over USB
  • Figure which WiFi mode draws the most power
  • Save WiFi state along with temp, cpu and other data

created time in a month

pull request commentbalena-io-playground/balena-ir-remote

[WIP] rework around ir-ctrl

Looks neat! Going to set this up again over the weekend and give it a run

curcuz

comment created time in a month

startedlaukik-hase/OTA_update_STM32_using_ESP32

started time in a month

startedLisaDziuba/Marketing-for-Engineers

started time in a month

startedbalena-io-playground/balena-ir-remote

started time in a month

startedalexgg/linux-dey

started time in 2 months

push eventkasturimusic/kasturimusic

Anuj Deshpande

commit sha 3e6915f662732af1050fb45939444cf2f078677e

Update index.html

view details

push time in 2 months

started2dom/PxMatrix

started time in 2 months

startedeclipse/mraa

started time in 2 months

startedbitluni/ESP32Lib

started time in 2 months

startedfdivitto/FabGL

started time in 2 months

startedananthakumaran/tide

started time in 2 months

issue commentbalena-io/device-diagnostics

Tuning image corruption timeouts

This device is showing the same issue

xginn8

comment created time in 2 months

push eventbalena-io/rfq

Anuj Deshpande

commit sha 364f3b3527850df76e8402dc5c907aa5cad9f1a5

Add class for project Read spec file to populate certain fields of project class Change-type: minor Signed-off-by: Anuj Deshpande <anuj@balena.io>

view details

push time in 2 months

starteddhrishi/rainmaker-ble-wifi-bridge

started time in 2 months

push eventbalena-io/rfq

Anuj Deshpande

commit sha eb8984ec92dbb1aa19e4b064df8c6bab7c73cb28

Add capitano skeleton for generating CLI Change-type: minor Signed-off-by: Anuj Deshpande <anuj@balena.io>

view details

push time in 2 months

startedalexgand/springer_free_books

started time in 2 months

startedoclif/example-multi-ts

started time in 2 months

push eventbalena-io/rfq

rcooke-warwick

commit sha c7a32acf999ed82531deac6955e49e74f4a34239

Updated rfq code - The release zip will contain test/test-script.txt -The release zip will contain all files relevant to project type -hardware-type replaces manufacturer/process coupling Change-type: major Signed-off-by: Ryan Cooke <ryan@balena.io>

view details

rcooke-warwick

commit sha 12c46519fa9a5e95d73547c68b2c56d90d91c3d3

hwType paramter is now pulled from spec.json removed need for -h parameter Change-type: patch Signed-off-by: Ryan Cooke <ryan@balena.io>

view details

Ryan Cooke

commit sha 555f06c705091c20db48f23ee1b938b261938947

Merge pull request #2 from balena-io/ryan-edit Updated rfq code

view details

Balena CI

commit sha 3e33721ccef88fd23f11ac78a3c942513db6070e

v1.0.0

view details

Anuj Deshpande

commit sha 01ef9f121d538f3656441046589be3deaa3d9d4d

Create a template typescript project Added linting Change-type: minor Signed-off-by: Anuj Deshpande <anuj@balena.io>

view details

push time in 2 months

startedbalena-io-playground/balena-dslr

started time in 2 months

startedbalena-io-playground/balena-fin-coprocessor-flash

started time in 2 months

startedbalena-io-modules/rendition

started time in 2 months

startedlwille/node-gphoto2

started time in 2 months

push eventbalena-io-playground/balena-dslr

Anuj Deshpande

commit sha 5bf3d40417d02c174bdedfb484d2842df793863b

Remove code related to the C service

view details

push time in 2 months

create barnchbalena-io-playground/balena-dslr

branch : master

created branch time in 2 months

PR opened balena-io/rfq

WIP - Move to typescript from js
+889 -457

0 comment

7 changed files

pr created time in 2 months

create barnchbalena-io/rfq

branch : typescript-ify

created branch time in 2 months

issue openedespressif/esp-rainmaker

Install cli using `python setup.py install`

This would make the setting PATH variable part redundant as python bin directory should already be part of the path

created time in 2 months

startedespressif/esp-rainmaker

started time in 2 months

issue commentbalena-io/balena-cli

npm install: Failed to apply patch for package @oclif/dev-cli at path

If you are using nvm, you will have to delete something like

rm -rf .nvm/versions/node/v13.12.0/lib/node_modules/balena-cli/ and then run the install command again

pdcastro

comment created time in 2 months

created taganujdeshpande/tohora

tagv0.3.3

A web UI for balenaDash

created time in 3 months

release anujdeshpande/tohora

v0.3.3

released time in 3 months

push eventanujdeshpande/tohora

Anuj Deshpande

commit sha 0d5af8b30532b79ff294ea284f6b77377c9a55e0

Update index.html

view details

push time in 3 months

fork anujdeshpande/tohora

A web UI for balenaDash

fork in 3 months

startedbalenalabs/balena-dash

started time in 3 months

starteddortania/OpenCore-Desktop-Guide

started time in 3 months

issue closedbalena-io/balena-cli

Use a verbose flag to show logs of regular commands

  • balena CLI version: e.g. 11.2.1
  • Operating system version: Ubuntu
  • Install method: npm If npm install, Node.js and npm version: e.g. Node v8.16.0 and npm v6.4.1

Would it make sense to add a verbose flag to options to show debug log? For example, when remote logging in, the web auth method doesn't work. In which case setting the verbose tag could show the URL that one needs to open to authorize the login attempt.

closed time in 3 months

anujdeshpande

startedyaqwsx/KiKit

started time in 3 months

more