Cheap lidar

Posted in Sensing on December 9, 2017 by asteriondaedalus

So my Benewake TF Mini LiDAR turned up.

TFmini

Now for the fun.

It has to rotate in a circle to create a scan.

I had an idea to mount either of a Seeeduino Film or an ESP8266, with battery, on a spindle to wirelessly send readings.

Then BOOM!

You can get “hollow” spindle gimbal motors with slip rings!

So, you can attach the TF Mini to the spinning part of the gimbal motor and drive the motor and take readings.

All good but for one thing.  Currently the idea is a open-loop solution.  It will need to be keyed to at least one position (at least) so that the “beams” are relative to a direction.

Hmmm!

Advertisements

So much help, so little help

Posted in The Downside of software development on December 8, 2017 by asteriondaedalus

So, I stupidly thought I would upgrade my elixir and crack open my book on Phoenix and plod through the examples while home sick with the flu.

Book is Programming Phoenix (eBook) P1.0 from PragProg

Broke the build so I had to strip out the hex and mix folders, re-installed hex, elixir and phoenix.

And then all I got was the broken connectic with postgres!  Why?  I was going to up from 9odd to 10 but backed out after I saw how long the 10 would take to download (and it wasn’t needed).  I had already uninstalled 9 and just re-installed.  BUT the build would fail as the username/password failed on authentication.

Hmm.

When you delete postgres on windows it doesn’t, of course, remove the data directory (where usernames and passwords are encrypted).   If you reinstall overtop a bug or quirk of the install is that it not longer prompts for super-user password or port etc.  (obviously buried in the data directory).

All fixed by manually deleting the data directory and re-re-installing postgres.

POSTSCRIPT

GAG!  My book appears to be out of date now!

At least, they have moved all the app directory structures around.

Pragmatic Programmers KEEP UP!

Although, it looks to be the difference between Phoenix versions 1.2 and 1.3 which is fine (just have to remember to use the phoenix.x rather than phx.x idiom for building apps).

POSTPOSTSCRIPT

There are problems with the errata page, as rather than the author drafting errata, as people report the problems, the errata is like a user group and so you get the same drifting away from facts.

Although, problems include movement in version of ecto as well.

If there is an error, go figure there will be at least two solutions offered by readers BUT as they don’t state the elixir, phoenix and ecto versions that they are using (while working through the book) you need likely try each of the different solutions until one works for you.

Looks like best option is to install the elixir, ecto and phoenix versions from the book.

Still, I have had to work things out that don’t appear to have been reported in the errata so I guess I am learning little tit bits along the way.

Time to choose

Posted in Agent on November 4, 2017 by asteriondaedalus

Having played with Profeta, eJason and now Astor I think the time has come to settle on one.

eJason is a great idea, especially as it is built on erlang, but it is knobbled as it is a partial implementation.  It has .send so can talk between agents running in the vm but does not to distributed agents.  You don’t have sensors and actuators.  All that could be added but there isn’t enough design info and pulling apart the codes would be fun but a major project in itself.

Astor is a great evolution of AgentSpeak, especially as it tries to readily incorporate the imperative side.  That is, however, already tackled in Profeta.   Astor is build with Java so has that in its favour, if you were a Java clone.

So, Profeta seems the BDI tool for me.  But it doesn’t do distributed agents.  That is, I suspect, where SPADE comes in.  However, some work involved.  Profeta assumes one environment so the PROFETA class is a singleton.   To run in the SPADE environment that design assumption may need be broken.  Also, the PROFETA class has its own execution loop, it may want a single step to be driven by a SPADE tick event.

Not much work but now having gotten over the distraction of the options I can focus.

You call that a retraction, THIS is a retraction!

Posted in Intel Smemtel on November 2, 2017 by asteriondaedalus

Wow.

I do rather feel vindicated.

All my gripes about the Intel Curie seemed have been spot on.  Poor quality control, useless user support, everything about open source killed Intel “maker” IOT.

I hadn’t bothered keeping up with the Curie story but golly gosh, Curie, Edison gone.

Still they have Up2.  Well up yours Intel.

You are tainted.

That was close (retraction)

Posted in Windoze10 on August 17, 2017 by asteriondaedalus

I went to start my PC yesterday to find the dopey thing had fallen into an auto-update.

I had turned off auto-update and refused to update my Windoze 10 because three times in a row the update froze.

I spoke the Windoze help desk, you know the ones in the balloon.

They hinted I had to deinstall my virus software – or at least disable it to allow the update to work.

I was planning to do just that, I just never got around to it.

Sigh!

So I sat there watching the dopey thing tick its status over.

Then it dawned on me it had gotten past the infamous 33% where it would get stuck – literally for days at a time – previously.

Happy to say the PC finally survived a Windoze update after 6 months of hiding from the process.

Not happy the machine fell into the update against my settings.

RETRACTION

So. For whatever reason my machine updated despite my settings. Fine because it finally made it through. Except another update come through this morning. Yep. It hung my machine.

Niggly

Posted in Embedded, MQTT, NodeMCU, OpenSprinklette, Orange Pi on August 16, 2017 by asteriondaedalus

I may have some more design work for the opensprinklette node-red implementation.

The nuance is that the google calendar node will happily trigger on event edges but the triggered response seems to be a dump of the calendar event parameters but not the edge that triggered the node.

It might be as simple as another parameter on the configurator to tell it whether it is for sprinklers on or off

The other might be using the before event.

Have two outputs then to act as start and stop.  Feed the stop into a timed node.

Either lapsed or absolute is another question.

Much of this is trying to think in a dataflow rather than an imperative idiom.

I want to think also about ACK from the WeMOS sectors. That might want a watchdog timer.

The lwt from the WeMOS sector will need a response. Although any sector/zone on, while WeMOS is down, falls on deaf ears.  Stil, it needs to be logged and reported.

Ta da!

Posted in Javascript, node-red, OpenSprinklette on August 12, 2017 by asteriondaedalus

Ah ha!

I had some trouble importing my pegjs parser function into the node console until I worked out node and/or javascript treats directories as “/” whereas windows uses “\”.

So finally the import is simply:

var parser=require('./parser.js');

I also hand modified the parse function signature which is now:

function peg$parse(input,zones, options) {};

I worked out that zones needed to go ahead of options as calling “parse(input,,zones)” wasn’t a popular choice with the javascript.

The input variable “zones” will come from the configuration node.  That way the parser will take the configuration object [{sector1:chipid()}] and return the mqtt topic fragment “chipid()/zone[0..4]”.

So, the modified parser tested using node console shows it working:

final zone parser test

Now all is needed is the use the zone “grammered” string in the google event title and snip it out, when the event starts/stops.  This is achieved with msg.payload.title as the first parameter in the call made by the node reacting to the calendar event.

The array returned can either be iterated over using a for-loop OR be returned by a node-red function to be treated as a stream of messages (aka msg).

I have a sneaking suspicion that, in fact (and having read the code and how it uses “options”), I [could|should] have injected the zones via options.

Something to play with I think, as it doesn’t seem clean to hand mod the parser code.