Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Utkarsh Verma
Created May 18, 2020

Providing Sensor Data using Industry Marketplace

Industries provide Sensor Data to Companies through Industry Marketplace

24
Providing Sensor Data using Industry Marketplace

Story

Read more

Code

service_provider

Python
from imp import IndustryMarketplace
import random
import pprint

class ServiceProvider(IndustryMarketplace):
    name = 'HardSteel'
    service_provider = True
    fund_wallet = False
    gps_coords = '54.123, 4.321'
    
    endpoint = 'http://localhost:4001'

    def on_cfp(self, data, irdi, submodels):
        '''
        As soon as this service provider receives a CfP this function is called
        You can use the supplied irdi and submodels to define a price if you like
        '''

        self.log('Call for Proposal received for irdi %s!' % irdi)
        #self.log('Submodels: ')
        #pprint.pprint(submodels)
        
        if irdi == '0173-1#01-BAF888#004':
            price = 50
        else:
            self.log('We only provide Sensor Data, ignore this one!')
            return

        try:
            ret = self.proposal(data, price_in_iota=price)
        except Exception as e:
            self.log('Unable to send proposal', e)
        
        self.log('proposal sent! Requesting %si for this service' % price)

    def on_accept_proposal(self, data, irdi, submodels):
        self.log('Proposal accepted! Start fulfilling')
        self.log('Sending inform confirm')
        ret = self.inform_confirm(data)
        #self.log(ret)

    def on_reject_proposal(self, data, irdi, submodels):
        self.log('Proposal rejected! Either do nothing or offer a Discount?')
        #pprint.pprint(data)

    def on_inform_payment(self, data, irdi, submodels):
        self.log('Payment received! IMP transaction done!')
        #pprint.pprint(data)


if __name__ == '__main__':
    imp = ServiceProvider()
    imp.listen()

service_requester

Python
from imp import IndustryMarketplace
import pprint
import sys

class ServiceRequester(IndustryMarketplace):
    name = 'InsureLife'
    service_provider = False
    fund_wallet = True
    gps_coords = '54.000, 4.000'

    endpoint = 'http://localhost:4000'
    
    def on_proposal(self, data, irdi, submodels):

        self.log('on proposal called!')
        try:
            price = self.get_price(irdi, submodels)
            self.log('Received proposal for %si for irdi %s' % (price, irdi))
            if not price:
                self.log('Price not found, submodels: %s' % submodels)

            if price >= 5 and price <= 15:
                self.log('Accepting proposal')
                self.accept_proposal(data)
            else:
                self.log('Rejecting proposal')
                self.reject_proposal(data)
        except Exception as e:
            self.log('Error on accepting: %s' % e)

    def on_inform_confirm(self, data, irdi, submodels):
        self.log('Offer confirmed, time to pay')
        self.inform_payment(data)


if __name__ == '__main__':

    imp = ServiceRequester()

Credits

Utkarsh Verma
3 projects • 3 followers
I'm an Electronics Engineering Undergraduate and I like to create projects in Embedded Systems, Internet of Things and Machine Learning.
Contact

Comments

Please log in or sign up to comment.

1
2
3
Hey stranger! Sign up to access unlimited projects – it's free.
Not now