My script remote display (ESPEasy conected to LCD4x20). First install: sudo apt-get install python-pycurl . Second use this code:
Code: Select all
#!/usr/bin/python
from time import sleep
import pycurl
import subprocess
import os
import time
import unicodedata
import urllib, json
import datetime
# Configuration
cfgDomoticzHost = "192.168.3.200:8080"
cfgEspEasy = "http://192.168.3.120/control?cmd="
cfgSpeed = 4
TotalScreens = 3
deg = chr(223)+"C"
def get_domoticz_sensor(idx):
url = "http://"+str(cfgDomoticzHost)+"/json.htm?type=devices&rid="+str(idx)
response = urllib.urlopen(url);
data = json.loads(response.read())
if data["status"] == "OK":
return data["result"][0]
def get_domoticz_info(result):
url = "http://"+str(cfgDomoticzHost)+"/json.htm?type=command¶m=checkforupdate&forced=true"
response = urllib.urlopen(url);
data = json.loads(response.read())
if data["status"] == "OK":
return data[result]
# Create screens
def screen_1():
c.setopt(c.URL, str(cfgEspEasy)+"lcdcmd,clear")
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,1,1,TEMP1%20OUT:%20"+str(get_domoticz_sensor(4)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,2,1,TEMP2%20OUT:%20"+str(get_domoticz_sensor(5)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,3,1,TEMP3%20IN:%20"+str(get_domoticz_sensor(1)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,4,1,TEMP4%20IN:%20"+str(get_domoticz_sensor(2)["Temp"])+str(deg))
c.perform()
def screen_2():
c.setopt(c.URL, str(cfgEspEasy)+"lcdcmd,clear")
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,1,1,TEMP5%20IN:%20"+str(get_domoticz_sensor(27)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,2,1,TEMP6%20AMP:%20"+str(get_domoticz_sensor(25)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,3,1,TEMP7%20AMP:%20"+str(get_domoticz_sensor(26)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,4,1,TEMP8%20ICE:%20"+str(get_domoticz_sensor(6)["Temp"])+str(deg))
c.perform()
def screen_3():
c.setopt(c.URL, str(cfgEspEasy)+"lcdcmd,clear")
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,1,1,TEMP9%20ICE:%20"+str(get_domoticz_sensor(3)["Temp"])+str(deg))
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,2,1,HUMID4%20IN:%20"+str(get_domoticz_sensor(2)["Humidity"])+"%20%")
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,3,1,PRES3%20IN:%20"+str(get_domoticz_sensor(1)["Barometer"])+"%20hPa")
c.perform()
c.setopt(c.URL, str(cfgEspEasy)+"lcd,4,1,APC:%20"+str(get_domoticz_sensor(17)["Current"])+"%20A")
c.perform()
# Determine order of the screens
screens = {
1 : screen_1,
2 : screen_2,
3 : screen_3,
}
# Start LCD
c = pycurl.Curl()
# Display screens
i=0
while 1:
try:
screens[i]()
except:
pass
sleep(cfgSpeed)
i+=1
if i == TotalScreens+1:
i=0