HomeHome AutomationEventGhost basic authentication in HTTP requests

EventGhost basic authentication in HTTP requests

More magic in EventGhost

I’m sharing this tip, as it took me way too long to find a simple solution online, and as most of my articles, as a reminder of how to do this again in the future. After increasing security on my NodeRED server and certifying the server, I had to learn how to authenticate the HTTP requests with username and password and how to deal with HTTP vs HTTPS requests.

EventGhost basic authentication in HTTP|HTTPS requests

I’m submitting my data to the NodeRED server, which is password protected and SSL certified. This means I have to now include the basic authentication (username, password) in my few requests. I have put together a few lines of codes that make it easy for you guys to use, and obvious to read.

HTTP

To send the request – use the Python Script action and use the code below:

//HTTP POST request
import requests

username = "yourusername"                   ## your HTTP username
password = "secretpasswored"                ## your HTTP password
url = "http://192.168.1.xxx:1880/path"     ## NodeRED server address
data = {"light":1}                          ## some JSON formatted data

resp = requests.post(url, data, auth=(username, password))

HTTPS

To send the request – use the Python Script action and use the code below:

import requests
import warnings

#comment out the below line to get the Python warnings back
warnings.filterwarnings("ignore")

#set your credentials data
url = "https://192.168.1.xxx:1880/path"
username = "your username"
password = "your passowrd"
data = {"light":1}

#request the data & print it (comment out print later)
resp = requests.post(url, data, auth=(username, password), verify=False)

The code is simple, but if you are using a laptop, consider DNS rather than the IP for the NodeRED server. If you want to know why or what can you do with it, imagine linking a request like this to a keyboard macro.  You can use this to trigger lights, events or send notifications to other devices.

EventGhost Global Variables

Because the details of my server have changed, I had to redo all my HTTP requests. I don’t want to do this each time something changes. I figured out that I can set the global variables in EventGhost on start. Let’s do this so should anything happen I can change the values in a single script.

On boot, I want EvenGhost to load the default values which will be used later on in each script. We can do this by placing a Python script with the sensitive details in AutoStart:

#request the data & print it (comment out print later)
credentials = requests.get(url, auth=(username, password), verify=False)
print credentials.content

data = json.loads(credentials.content)


#Get JSON data  python username = data['JSON key']['key'] ie
#AutoRemote ID is stored as {"AR": "someID" }
#HTTP URL is stored in {"HTTP" :{"server":{"request":"URL FOR REQUEST"}}}

pixel = data['AR']
http = data['HTTP']['server']['request']

#store as global variable "test"|"test2", value
setattr(eg.globals, "test", pixel)
setattr(eg.globals, "test2", http)

print "***Default values loaded***"

These values will be loaded when EventGhost starts and the same HTTP post from before will this time look like that:

import requests
#setting username and password "HTTP_username"|"HTTP_password"|"HTTP_ip" are
#the name of the global variable
username = getattr(eg.globals, "HTTP_username")
password = getattr(eg.globals, "HTTP_password")

#composing a correct URL for HTTP
path = "/sonoff/relay/"
url = getattr(eg.globals, "HTTP_ip") + path

#adding data
data = {"light":0}

#sending a HTTP POST
resp = requests.post(url, data, auth=(username, password))

This way, if your IP or credentials change you have to modify only a single file.

I hope this tip on how EventGhost basic authentication in HTTP requests works will cut the googling time for you. If I can’t find a simple and well-explained answer within 3 pages of google searches it deserves an article. Even if it’s going to be a short one.

Project Download

Download project files here. Bear in mind that Patreon supporters have early access to project files and videos.

PayPal

Nothing says "Thank you" better than keeping my coffee jar topped up!

Patreon

Support me on Patreon and get an early access to tutorial files and videos.

image/svg+xml

Bitcoin (BTC)

Use this QR to keep me caffeinated with BTC: 1FwFqqh71mUTENcRe9q4s9AWFgoc8BA9ZU

Smart Ideas with

Automate your space in with these ecosystems and integrate it with other automation services

client-image
client-image
client-image
client-image
client-image
client-image
client-image
client-image
client-image

Learn NodeRED

NodeRED for beginners: 1. Why do you need a NodeRED server?

0
To server or not to server? That's a very silly question!

Best Automation Projects

NEST your old thermostat under $5

0
Nest-ing up your older thermostat under $5

Nora – Google Assistant in NodeRED

0
Integrate Google Assistant with NodeRED thanks to Nora - NodeRED home automation

Sonoff R3 DIY mode & why it sucks

0
Long awaited Sonoff R3 DIY mode is even worse than I expected.

IKEA TRADFRI Wireless dimmer in NodeRED

0
Thanks to NodeRED you can use IKEA TRADFRI Wireless Dimmer to interact with everything

Things they don’t tell you about IKEA Trådfri

0
There are things you should know about IKEA Tradfri before you make your purchase

Smart Home

Electrolama in my network – flashing CC2652R

0
Flashing CC2652R Zigbee Coordinator to enable ZigBee2MQTT for your home automation

How to wake on LAN computers and put it to sleep with Power Menu, Alexa and Google Assistant

0
How to Wake on LAN properly via Android, Alexa, Google Assistant and Web

Power Menu – All sensors

0
Taking all the sensor data and adding it to a single Power Menu tile!

Smarting up Comfee Miniplus Dishwasher

0
Can a vibration sensor turn Comfee TD305-W dishwasher into a smart appliance? Let's see

M5Stack UnitV2 – Edge computing and vision projects with a mini dev board

0
M5Stack UnitV2 is upon us - everything you should know about the latest dev board for Edge computing and vision projects.