Smart home devices discovery

Hello,
I have followed amazon's documentation on creating Alexa smart home devices and i am successfully able to add devices in my Alexa app using Echosim.io or directly scanning in Alexa app. Also i am able to control devices using Echosim but unable to discover devices using Alexa on raspberry pi. Alexa always says "Could not find any smart home devices" even though all the devices are already in my Alexa app.
Is there any way to control devices using Alexa on raspberry pi ? I know i can use Alexa Skill and AWSIot but then i would have to use invocation. Can i use it without invocation ?

Hey.

I have followed amazon's documentation on creating Alexa smart home devices and i am successfully able to add devices in my Alexa app using Echosim.io or directly scanning in Alexa app.

Can you elaborate on this? How & where do you have those devices connected? What are they? Do you also have an Echo?

Hello @renekliment
This is my lambda-
lambda.txt
After creating lambda and smart home skill, I activated skill using Alexa app. All four devices were visible in devices section as you can see in the screen shoot.
No i don't have an Echo , I am trying to control those devices via Alexa on raspberry pi but Alexa is unable to detect them , Surprisingly echosim.io is able to detect when is ask it to "Discover devices" and even control them using utterances like "turn on ".
I think Echosim is using new APIs ! Am I correct ?

@Kinjalk I see, that makes sense now.
Yes, it seems like Echoism uses the new API. I'm afraid it might be API version related, even though it doesn't make much sense.

@renekliment Thanks

hi,
I am trying to detect a Wemo switch on the alexa app, but it returns nothing. Can you give a briefing on the steps to follow?
regards

@shivasiddharth , this isn't what you are looking for, but you may find it of interest.
https://www.hackster.io/kuzma/alexa-voice-control-lights-with-nodemcu-1bddb4
join gitter if you have an opportunity.

@shivasiddharth
Hello,
Unfortunately you wont't be able to detect and control any local or cloud based smart home devices using this repository as it implements older APIs. You can use alexa-avs-sample-app which implements new APIs and follow my post #621 to setup cloud based smart home devices using AWSIoT and Smart home skill. Also You won't be able to detect any physical devices without writing your own smart home skill. In any case (new or old APIs) Alexa won't be able to connect Wemo switch.
Ps- You will only be able to use ESP8266 as in link mentoned by @illperipherals iff you have genuine Echo device.

@illperipherals , thanks for the share.
@Kinjalk , I thought, both shared the same APIs. I agree with you, alexa-avs-sample-app is really good. I have it running on windows. Thanks for your thoughts..

@monsieurtalbot

Install alexa-avs-sample-app as instructed in wiki on fresh Raspbian.
Also add the following under Web Settings
Allowed Origins -  http://localhost:5000 and http://ALEXA.DEVICE.IP.ADDRESS:5000
Allowed Return URLs - http://localhost:5000/code and http://ALEXA.DEVICE.IP.ADDRESS:5000/code.

Check if installation was successful and everything is fine by running all three command.

Go to Desktop/alexa-avs-sample-app/samples/javaclient/src/main/java/com/amazon/alexa/avs and replace AVSApp.java with AVSApp.java in Alexa.zip

Go to Desktop/alexa-avs-sample-app/samples/javaclient/src/main/java/com/amazon/alexa/avs/auth/companionservice . Replace CompanionServiceAuthManager.java with CompanionServiceAuthManager.java and CompanionServiceClient.java with CompanionServiceClient.java in Alexa.zip

Go to Desktop/alexa-avs-sample-app/samples/javaclient/src/main/resources/res and Paste hello.mp3 form Alexa.zip

Go to Desktop/alexa-avs-sample-app/samples/javaclient . Paste Login.py and creds.py form zip. Make sure you have added ProductID, Security_Profile_Description, Security_Profile_ID, Client_ID and Client_Secret in creds.py

sudo pip install CherryPy and sudo pip install requests

cd ~/Desktop/alexa-avs-sample-app/samples/javaclient and

sudo rm -r target/

mvn validate

mvn install

python Login.py

Navigate to http://localhost:5000 in browser in raspberry pi and follow the steps

After successful Login stop the scrip and check if refresh_token is added to creds.py

Go to Desktop and Paste wakeWordAgent.py and alexaClient.py from Alexa.zip

chmod +x /home/pi/wakeWordAgent.py and chmod +x /home/pi/alexaClient.py

cd /lib/systemd/system/

sudo nano alexaclient.service

Paste
[Unit]
Description=Start Alexa Client
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/python /home/pi/alexaClient.py
Restart=on-abort
 [Install]
WantedBy=multi-user.target

Save the file and sudo chmod 644 /lib/systemd/system/alexaclient.service

sudo systemctl daemon-reload
sudo systemctl enable alexaclient.service

sudo nano alexawakeword.service

Paste
[Unit]
Description=Start Wake word Agent
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/python /home/pi/wakeWordAgent.py
Restart=on-abort
 [Install]
WantedBy=multi-user.target

Save the file and sudo chmod 644 /lib/systemd/system/alexawakeword.service

sudo systemctl daemon-reload

All done ! Now  cd ~/Desktop/alexa-avs-sample-app/samples/javaclient and mvn exec:exec If everything was fine Alexa will start. You can test it here.

restart Pi and See if Alexa says Hello on boot. It may take some time to start Alexa so wait.

All the codes are not so clean. Please let me know if it works for you.
Alexa.zip

@Kinjalk Thank you for putting these steps together. On Step #3, the file AVSApp.java is not found in that location nor is it in the repository. So I imagine that this steps would be to place and not replace. Correct?

@bjchristenson  Steps I mentioned above are for old repo. As the repository was updated on 20 April you will find alot of changes . If you have a copy of previous repo , these steps will work fine .
New repo persists refresh token hence you no longer need to log in again and again but it still have GUI , you can not start it on boot .

@Kinjalk Thanks! That worked great. I missed that there was an update to the repo

@bjchristenson You are welcome. Did you use old or new repo ?

@Kinjalk I ended up using the New repo. The three terminal commands from the initial wiki were added to individual scripts (initially for testing/validation) and then invocation of the scripts were added to the end of /home/pi/.config/lxsession/LXDE-pi/autostart
WorkWordAgent in the 3rd script requires AVS Auth in script 2 to be complete, so I added a pause of 30 seconds to the 3rd script and then added omxplayer -o local /home/pi/hello.mp3 prior to cd wakeWordAgent/src && ./wakeWordAgent -e sensory
Definitely not elegant, but the goal was to get it up and running as a prototype and all is well.

@bjchristenson Cool !

Hi!
I have comment line 91,92 and 105 but I have this error…
[INFO] --- exec-maven-plugin:1.2.1:exec (default-cli) @ sample-java-client ---
14:08:07.561 [Thread-16] ERROR com.amazon.alexa.avs.auth.AuthSetup - Failed to start companion service client
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204) ~[?:1.8.0_131]
        at java.awt.Window.<init>(Window.java:536) ~[?:1.8.0_131]
        at java.awt.Frame.<init>(Frame.java:420) ~[?:1.8.0_131]
        at java.awt.Frame.<init>(Frame.java:385) ~[?:1.8.0_131]
        at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1758) ~[?:1.8.0_131]
        at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1833) ~[?:1.8.0_131]
        at javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1696) ~[?:1.8.0_131]
        at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:863) ~[?:1.8.0_131]
        at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:795) ~[?:1.8.0_131]
        at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:757) ~[?:1.8.0_131]
        at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:718) ~[?:1.8.0_131]
        at com.amazon.alexa.avs.ui.DialogFactory.showYesNoDialog(DialogFactory.java:37) ~[classes/:?]
        at com.amazon.alexa.avs.auth.companionservice.RegCodeDisplayHandler.handleAuthenticationCopyToClipboard(RegCodeDisplayHandler.java:66) ~[classes/:?]
        at com.amazon.alexa.avs.auth.companionservice.RegCodeDisplayHandler.displayRegCode(RegCodeDisplayHandler.java:60) ~[classes/:?]
        at com.amazon.alexa.avs.auth.companionservice.CompanionServiceAuthManager.requestRegistrationCode(CompanionServiceAuthManager.java:80) ~[classes/:?]
        at com.amazon.alexa.avs.auth.companionservice.CompanionServiceAuthManager.startNewProvisioningRequest(CompanionServiceAuthManager.java:68) ~[classes/:?]
        at com.amazon.alexa.avs.auth.companionservice.CompanionServiceAuthManager.startRemoteProvisioning(CompanionServiceAuthManager.java:63) ~[classes/:?]
        at com.amazon.alexa.avs.auth.AuthSetup$2.run(AuthSetup.java:91) [classes/:?]

Login.py managed to get a refresh token
No way to have a real java console app ? I don't want a graphical install on my Raspberry just for this…

@J0hn-  Did you add Login.py to repo ??
You don't need to add any file in New repo . Install Alexa and follow all the steps mentioned in wiki not the steps I wrote for old repo . After  logging in and checking if everything is working fine follow steps for New repo. Comment those lines and recompile .

Can I control one of my smartlights with alexa-pi as it shows up on the alexa app and i can control it from the app but when I ask alexa to control it it just says 'I couldn't find the device'


Create New Library defaults to F#

Problem
When hitting Create New Library, a clone of Basic Library Template (F#) is made, defaulting the Library to F#.
Expected behavior
Should display a "Create New Library" language-select modal (e.g. C#, Python, F#) similar to the one displayed when creating a new project.
Reproduce
From an open project, hit Add New Library, then Create New Library.
Work around
In the meantime, after you hit "Create New Library", you may click the Project Language button, and select your preferred language. Note that you will need to delete the Main.fs file that was created.

Hey James, are you referring to a QuantConnect.com project? If so, library
projects are just projects which live in the library folder. The source is
copied into all compiles
On Sep 30, 2017 10:11 PM, "James Candan"<EMAIL_ADDRESS>wrote:
Problem
When hitting Create New Library, a clone of Basic Library Template (F#) is
made.
Expected behavior
Should display a "Create New Library" language-select modal similar to the
one displayed when creating a new project.
Reproduce
From an open project, hit Add New Library, then Create New Library.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/QuantConnect/Lean/issues/1175, or mute the thread
https://github.com/notifications/unsubscribe-auth/ACI6mQpHCKeqS9944CkRbQVaABRntopWks5snvTagaJpZM4PpwXe
.

Yes, it is for a QuantConnect.com project. The slight problem is that when creating a Project you get the option to select a language, but that option is not given when you hit "Create New Library" from within a project, it simply defaults to F#. I've since added a note about a work-around to the issue which will allow one to change the Project Language, but for keeping with the established UX, I would recommend this fix.
Just an aside, the value of a "Library" folder to me is the ability to have custom python modules that I can make available to my algorithms.
Example:
Home/
├── Library/
│   ├──hello_world/
│   │   ├──__init__.py
│   │   └── hello.py
├── MyCoolProject
└── ──Main.py

. . .

# Main.py
import hello
class BasicTemplateAlgorithm(QCAlgorithm):
    def Initialize(self):
        self.Debug(hello.hello_world())

Cool the intent of the library folder what exactly as you're using it -- to make modules available to other algorithms.  Closing as not a LEAN bug/feature but QuantConnect one.


MAINT: renamed T_o/_T_o to postsolve_args

Renames variables T_o/_T_o to postsolve_args and delays unpacking
until postsolve, where the values are ultimately used.
Partially addresses #9671
Still need to document the variable everywhere.

@Kai-Striega Thanks for taking a look. If this documentation looks alright and the tests pass, let's merge this and check the box in gh-9671. The impetus for this was to make it easier to write an autoscale routine. That should be a separate PR, but I'd like to avoid any merge conflicts.

Assuming CI is green, I think this one's ready. Commits are pretty clean, so I'd merge as-is.


Iamnew

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: dilippanwar1 sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Async Validators

Feature request
Context
Since using odmantic the purpose is to to async calls to the db, it makes sense to be able to validate some field regarding some data already in the DB.
Use Case Example:
Registering a new user, we want to make sure that the user doesn't exist already on the db.
Since we are probably using await engine.find_one, and we are using pydantic validators that do not support async, it is impossible to do such validation, and warn our user that the username already exists.
Solution
Add async validators on top of odmantic.
Alternative solutions
I don't have an alternative at the moment, if someone can point one out, I would be thankful.

Hey, thanks for the insight. Instead, we now have the SyncEngine that allow you to perform the validation synchronously :)
This is not exactly what you suggested but it does the job and will be much simpler to achieve than adding async validators


updates ui flow of add signing devices

Addresses:
#5190

Looks good, just 2 small tiny points for now

the TAPSIGER logo has a tiny dot a bit after the TAPSIGNER
Can we make it in alphabetical order so it's a bit easier to navigate


Add table is sqllab view in export

Fix: #152
As discussed before by hiding SQL Lab tables.

let's also add an entry to the changelog, please!

fixed


Fluent Case tu PyFluent

Would be nice if there could be a way to export the fluent case to pyfluent format directly. The journal file for fluent case is not possible to translate to pyfluent easily.

Are you talking about reading a fluent case file with pyfluent? Shouldnt that be possible now?

When using examples from documentation it works just fine, but when I try to read my own fluent case/data file with pyfluent I get the following error:
root         ERROR    GRPC_ERROR: File "airfoil_export_cas_and_data_from_fluent.cas.h5" not found!
Error Object: #f

I'll guess that you mean that you want to translate a Fluent TUI journal into a PyFluent journal?   If so, this is being worked on for a future release of Fluent.

Transitioning to all aspects of modern data is a long time objective broader than the PyFluent project. Closing.


Migrate to TS

Things to work upon (@qur786 )

[ ] Month overview is not rendering
[ ] removal of year labels after tranisiton from globals to other overviews


Client is not batching requests

Hey @nodkz
I'm using react-relay-router that has 3 routes being rendered with different root queries for a single path, I noticed that sendQueries is called 3 times with with requests param only containing the specific  root query for each call instead of a single sendQueries call with all 3 requests.
here's what the network layer looks like.
export default new RelayNetworkLayer([
  urlMiddleware({
    url: (req) => env.GRAPHQL_ENDPOINT_SECURE,
    batchUrl: (req) => env.GRAPHQL_ENDPOINT_SECURE
  }),
  loggerMiddleware(),
  gqErrorsMiddleware(),
  deferMiddleware(),
  perfMiddleware(),
  retryMiddleware({
    fetchTimeout: 15000,
    retryDelays: (attempt) => Math.pow(2, attempt + 4) * 100, // or simple array [3200, 6400, 12800, 25600, 51200, 102400, 204800, 409600],
    forceRetry: (cb, delay) => {
      window.forceRelayRetry = cb;
      console.log('call `forceRelayRetry()` for immediately retry! Or wait ' + delay + ' ms.');
    },
    statusCodes: [500, 503, 504]
  }),
  homepassAuthMiddleware()
], { disableBatchQuery: false });

Any ideas why this is happening?

PS I'm using this in concert with https://github.com/eyston/relay-composite-network-layer
The exported RelayNetworkLayer is passed to relay-composite-network-layer - could this be causing query batching to fail?

I think that compositeNetworkLayer spreads one sendQueries call obtained from Relay to multiple: https://github.com/eyston/relay-composite-network-layer/blob/master/src/execute/network.js#L14,L16
So you need to combine somehow this requests into one back, before touching react-relay-network-layer [better solution].
Or write some bufferMiddleware for react-relay-network-layer, which will gather requests some period of time and then combine it to batch query send to the server and resolve it back [very hard and tricky solution].
Or maybe fork relay-composite-network-layer and write your own custom network layer [may be the simplest solution in your case].

The buffer middleware sounds like the most robust as different schemas in composite network layer may be using different network layers. I'll let you know how this goes!

You should get back relayRequestObject from req.relayReqObj, create array of them and pass to
queriesBatch(relayRequestList, fetchWithMiddleware).
It too hacky, but should work.
PS. Ideally, I should rewrite all network layer from scratch.


[WIP] Optimize Native Tab Bar Style, Fix Bugs, and Add Accessory Icons.

Description

[x] Optimize the native tab bar style to make it feel more like Finder.
[x] Add right side accessory icon placeholders.
[x] Fix fullscreen native tab bar color issue.
[x] Fix the toolbar background (and missing tab bar) issue while there is no file opened.
[ ] Add missing tinted background color at tab bar and breadcrumb.

Related Issue

#532
#535
#546

Checklist

[x] I read and understood the contributing guide as well as the code of conduct
[x] My changes generate no new warnings
[x] My code builds and runs on my machine
[x] I documented my code
[ ] Review requested

Screenshots
New Native Tab Bar Style
https://user-images.githubusercontent.com/36816148/165642886-80c62332-f936-440a-8d1e-5265c689a596.mp4

When tabs overflow and a new tab is focused by selecting an item in the sidebar, it should set the scroll position so that the active tab is completely visible, regardless of whether it was existing or new.

Normal state:

In dark mode:

When no file opened:

When no file opened and dark mode:

When no file opened in Xcode:

When no file opened in Xcode and dark mode:

looks great!

Very nice @lilingxi01 👏

Also fixed the tab bar & breadcrumbs background color (material) issue by using user-preferred control accent color:

@lilingxi01 :
Some considerations:

I can't then reorder the tabs, it would be very nice if it could be done.
The buttons you see in the video do not allow any action, it would be better if they are disabled at the moment.

https://user-images.githubusercontent.com/20476002/166136966-4a62e3c8-7170-46ab-b31b-522316afec91.mov

In the last tab on the right there is in the menu "Close Tabs to the Right", being that it is last it makes no sense that it is there, so it would be better if it is disabled when it is last as xcode does.

Tab native mode, as you can see from the video when I start opening the tabs they take up all the space, but when I start closing them they don't take up all the space anymore.
They start to take up all the space when it becomes a single tab and then I open others, I wonder if this is the normal behavior it should have.

https://user-images.githubusercontent.com/20476002/166136920-5bae61e3-96c5-4f74-ad4b-7c4ca52cb89e.mov
P.s.
In the end when the merge is done it would be better that the branches that are no longer used delete them.


Support Prometheus as a source

having looked at the code, the plugin is built to easily deal with the metric hierarchy of graphite. However, making the plugin more generic to support prometheus as well would be a great help. Prometheus has a lot of people using it. Might be something to think about. as dealing intelligently with labels might make support for graphite (with labels), prometheus and influx possible.
Cheers,
X

Sorry mate. With the current scope / design, this is not possible to support promeetheus. May be we will add this in future..

Sorry mate. With the current scope / design, this is not possible to support promeetheus. May be we will add this in future..

Still there is a way to achieve the desired output. The following section of the README explains how to implement metrics from Prometheus datasource.
https://github.com/yesoreyeram/yesoreyeram-boomtable-panel#prometheus-guidelines

Please feel free to reopen the issue if you feel that this is not the desired output

Hi @xkilian , Did you get a chance to test with Prometheus?

Wow! I just noticed the updated plugin. I will certainly get this in our pipeline, as I absolutely love the boom table plugin. I have some urgent work that has to be completed, but I look forward to testing it. Cheers and congratulations on this plugin.


bro rating page design

design for the Bro Rating page has been approved, corrections noted for the next meeting


Update README.md

Hi, Could I try to update README.md depends on latest version?
Anyways, thanks for recent updates !

Thanks!


Update Strings.ts

This Pull Request contains the following:

'uploadFile' and 'speak' values in pt-BR

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: dfdcastro sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Update CHANGELOG.md and ready to merge.
@dfdcastro it will be great if you can sign the CLA. Thanks!

@compulim Done! Thanks

Thanks @dfdcastro. Merged and it will be out on 0.14.3.
You can also grab it right now with npm install<EMAIL_ADDRESS>


Open Api Request Parameter Enumeration question.

Question
I am looking to be able to enumerate the valid values for a request parameter, and would hope that I can get that to show the available values on the openapi spec. In my case the parameter is called 'fields' and I have a list of field names. I want to be able to show those field names on my Open API documentation so that a user of the API knows what fields are available.
I see that there is a parameter for the Function New-PodeOAStringProperty called -Enum, and it looks like you would be able to pass it an array of string values, like shown here:
https://badgerati.github.io/Pode/Tutorials/OpenAPI/#:~:text=%23 a string with a default value%2C and enum of options
New-PodeOAStringProperty -Name 'type' -Default 'admin' -Enum %40('admin'%2C 'user')
But I am unable to get it to work out for me. A couple of extra details, I am splatting the parameters for New-PodeOAStringProperty and my abridged code looks like this:
$propertyParams = @{
    request = @{
        parameters = @(

            @{
                            name = 'fields' # parameter name as provided in path definition or request query/body
                            type = 'string' # 'string' or 'int' or 'number' or 'bool' or 'object' or 'schema'
                            enum = @('Field1','Field2','Field3','Field4')
                            required = $false # $true or $false (value required)
                            paramLocation = 'query' # either 'path' or 'query'. Query = Body, Path = Uri
             }

        )
    }
}

# set route open api request definition
    [array]$requestParameters = $Properties.request.parameters | Foreach-Object -Process {
        $propertyParams = @{
            Name = $_.name
            Required = $_.required
        }
        If ( $_.enum ) { $propertyParams.Add('Enum',@($_.enum)) }
        If ($_.type -eq 'string') {
                New-PodeOAStringProperty @propertyParams |
                    ConvertTo-PodeOAParameter -In "$($_.paramLocation)"
        }
        ElseIf ($_.type -eq 'int') {
            New-PodeOAIntProperty -Name @propertyParams |
                ConvertTo-PodeOAParameter -In "$($_.paramLocation)"
        }
        ElseIf ($_.type -eq 'bool') {
            New-PodeOABoolProperty -Name @propertyParams |
                ConvertTo-PodeOAParameter -In "$($_.paramLocation)"
        }
        ElseIf ($_.type -eq 'number') {
            New-PodeOANumberProperty -Name @propertyParams |
                ConvertTo-PodeOAParameter -In "$($_.paramLocation)"
        }
        ElseIf ($_.type -eq 'object') {
            New-PodeOAObjectProperty -Name @propertyParams |
                ConvertTo-PodeOAParameter -In "$($_.paramLocation)"
        }
        ElseIf ($_.type -eq 'schema') {
            New-PodeOASchemaProperty -Name @propertyParams |
                ConvertTo-PodeOAParameter -In "$($_.paramLocation)"
        }
    }

    # $route represents the Pode Route Object
    $route | Set-PodeOARequest -Parameters $requestParameters

Is the -Emun parameter on New-PodeOAStringProperty meant to behave in the way I described above?
Or, even more of a possibility, am I just doing something slightly wrong?
Also, I know I have gone at this from a different way than described in the docs, but I didn't want to have all the -Passthru piped functions muddying up my code in my route definition file. Also I am implementing a method to auto-generate routes that I designed. I saw that their seems to be a way to do it based on functions, but I didn't think it met my requirements.
Thank you for your help as always @Badgerati !

From what I can see above it looks all right 🤔 I'll try and test on my side soon

Turns out it's a bug :)
Some properties were being dropped in ConvertTo-PodeOAParameter, the above commits fix that.


Improve UI for private mode.

In this PR:

tweak language selector on splash
make "welcome to uProxy" a full screen view
add the "Conenct with friends" text beside the FAB
tweak invite page CSS

https://github.com/uProxy/uproxy/pull/1875 should be checked in first, and this PR should be updated
mocks: https://drive.google.com/a/google.com/file/d/0Bxjw2rLfuIKqeENiejNsYmY5VG4zUi1WbFozZFBjSUEzZHFn/view?usp=sharing

Closing this pull request, these changes have been merged in along with https://github.com/uProxy/uproxy/pull/1913


clientv3: timeouts doesn't work with --user key

etcdctl version: 3.1.2
API version: 3.1
Error:
When passing --user username:password on etcdctl command, timeount doesn't work at all
How to reproduce:

Stop etcd node
Run ETCDCTL_API=3 etcdctl --user foo:bar get /

What I see:
Hangs on. Permanent loop with this messages in strace
futex(0x1148ab0, FUTEX_WAIT, 0, NULL)   = 0
futex(0x1148ab0, FUTEX_WAIT, 0, NULL)   = -1 EAGAIN (Resource temporarily unavailable)
epoll_wait(4, {}, 128, 0)               = 0` in strace

What expected:
Failing with Error:  grpc: timed out when dialing after timeout
Additional:

With another clients like confd problem may exist, but not checked.
Another commands like watch, put also affected

also broken on master


Lambda client only supports JSON?

I'm trying to integrate the Lambda client into a project where my lambda function on invocation returns binary data, in this case PDF.
From what I can tell it looks like the native code supporting the Lambda client only supports JSON. Is that correct?

Yes, that is correct.


Fixed a few I100, E303 and E501 bugs in the code

The first commit looks good. If you want you could push only that one and then we could merge it.
git push origin +a8efe45:master

In the meantime you can work on the fixup for the second commit.


Add nauti auth and fix lint

add nauti bootstrap token
add go lint check

related issue: https://github.com/nauti-io/nauti/issues/28