Ejemplo n.º 1
0
def on_message(client, userdata, msg):
  params = default_params()
  shortcast = ""
  iconcode = "44" ## n/a icon
  # print(msg.topic)
  str_payload = json.loads(msg.payload)
  # print("Saw payload: "+str_payload["type"])
  if str_payload["type"] == "weather":
    cond = str_payload["data"][0]
    # print(cond)
    if "day" in cond:
        shortcast = cond["day"]["shortcast"]
        iconcode = cond["day"]["icon_code"]
    elif "night" in cond:
        shortcast = cond["night"]["shortcast"]
        iconcode = cond["night"]["icon_code"]
    # print(iconcode)
    # print(shortcast)
    icon_cond = icon_dict[iconcode]
    # print(type(icon_cond))
    if type(icon_cond) == str:
        display_condition(icon_cond)
        msgPayload = create_message("display", icon_cond, "")
        # print(msgPayload)
        client.publish(params['mqttTopic'], msgPayload, qos=0, retain=False)
    elif type(icon_cond) == list:
        for icon in icon_cond:
            display_condition(icon)
            msgPayload = create_message("display", icon, "")
            # print(msgPayload)
            client.publish(params['mqttTopic'], msgPayload, qos=0, retain=False)
Ejemplo n.º 2
0
def request_options(lat, lon, days=3, units='e'):
    d = days if days in [3, 5, 7, 10, 15] else 3
    u = units if units in ['e', 'm', 'h', 's'] else 'e'

    url = host + '/v1/geocode/{lat}/{lon}/forecast/daily/{days}day.json'.format(
        lat=lat, lon=lon, days=d)
    params = default_params()
    params['units'] = u

    return url, params
Ejemplo n.º 3
0
def on_message(client, userdata, msg):
    params = default_params()
    # print(msg.topic+" "+str(msg.payload))
    str_payload = json.loads(msg.payload)
    if str_payload["type"] == "location":
        lat = str_payload["data"]["lat"]
        lon = str_payload["data"]["lon"]
        msgJSON = callDailyForecast(lat, lon)
        msgPayload = create_message("weather", json.dumps(msgJSON), "")
        # print("sending payload")
        client.publish(params['mqttTopic'], msgPayload, qos=0, retain=False)
Ejemplo n.º 4
0
def on_connect(client, userdata, flags, rc):
    params = default_params()
    client.subscribe(params['mqttTopic'])
Ejemplo n.º 5
0
}


########################
# Connect to MQTT
########################
def on_connect(client, userdata, flags, rc):
    params = default_params()
    client.subscribe(params['mqttTopic'])


def on_message(client, userdata, msg):
    params = default_params()
    # print(msg.topic+" "+str(msg.payload))
    str_payload = json.loads(msg.payload)
    if str_payload["type"] == "location":
        lat = str_payload["data"]["lat"]
        lon = str_payload["data"]["lon"]
        msgJSON = callDailyForecast(lat, lon)
        msgPayload = create_message("weather", json.dumps(msgJSON), "")
        # print("sending payload")
        client.publish(params['mqttTopic'], msgPayload, qos=0, retain=False)


params = default_params()
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(params['mqttUsername'], params['mqttPassword'])
client.connect(params['mqttBroker'], 1883, 60)
client.loop_forever()