0

We have a code to reads some electricity meter data ,which we want to push to bigquery so that it can be visualized in data studio. We tried usign Cloud function, but it seems the code generates streaming data and cloud function timesout. So this may not be a correct use case for cloud function

def test():
 def print_recursive(usage_dict, info, depth=0):
    for gid, device in usage_dict.items():  
        for channelnum, channel in device.channels.items():
            name = channel.name
            if name == 'Main':
                name = info[gid].device_name 
                d = datetime.now() 
                t = d.strftime("%x")+' '+d.strftime("%X")
                print(d.strftime("%x"),d.strftime("%X"))
            res={'Gid' : gid,
            'ChannelNumber' : channelnum[0],
            'Name' : channel.name,
            'Usage' : channel.usage,
            'unit':'kwh',
            'Timestamp':t
            }
            global resp
            resp = res
            print(resp)
            return resp
 devices = vue.get_devices()
deviceGids = []
info ={}
for device in devices:
    if not device.device_gid in deviceGids:
        deviceGids.append(device.device_gid)
        info[device.device_gid] = device
    else:
        info[device.device_gid].channels += device.channels
 device_usage_dict = vue.get_device_list_usage(deviceGids=deviceGids, 
instant=datetime.utcnow(), scale=Scale.SECOND.value, unit=Unit.KWH.value)
 print_recursive(device_usage_dict, info)

This generates a electricity consumption data in real time

Can anyone suggest which GCP service would be ideal here? based on my research it seems pub/sub => bigquery . But I my question is can we programmatically ingest data into pubsub ? if yes then what are the prerequisites ?

0 Answers0