Répondre

3

Il ne devrait pas y avoir de problème, vous devez écrire votre propre code qui sera capable de recevoir et de mettre à jour la température dans le grand livre. De plus, pour le connecter avec un périphérique IoT, vous devrez développer une application de médiation qui doit utiliser l'un des SDK disponibles pour interagir avec votre chaincode.

Here vous pouvez trouver et chaincoder API que vous aurez besoin de mettre en œuvre. Il ya aussi un bon tutoriel sur la façon de commencer avec Hyperledger Fabric network et comment Write Your First Application.

Il y a aussi un repository avec quelques exemples d'applications pour vous donner un avant-goût de la façon de développer le chaincode et d'interagir avec lui à partir de l'application en utilisant NodeJS SDK.


Voici exemple très primitif de la façon dont votre chaincode pourrait ressembler à:

type temperatureSmartContract struct { 
} 

func (contract *temperatureSmartContract) Init(stub shim.ChaincodeStubInterface) peer.Response { 
    fmt.Println("Initialize chaincode if needed") 
    return shim.Success(nil) 
} 

func (contract *temperatureSmartContract) Invoke(stub shim.ChaincodeStubInterface) peer.Response { 
    funcName, params := stub.GetFunctionAndParameters() 

    if funcName == "addTemperature" { 
     // Store observation into ledger 
     stub.PutState("temperature", []byte(params[0])) 
    } else if funcName == "getTemperatures" { 
     iter, err := stub.GetHistoryForKey("temperature") 
     if err != nil { 
      shim.Error(fmt.Sprintf("%s", err)) 
     } 

     var result []string 
     for iter.HasNext() { 
      mod, err := iter.Next() 
      if err != nil { 
       shim.Error(fmt.Sprintf("%s", err)) 
      } 
      result = append(result, string(mod.Value)) 
     } 
     return shim.Success([]byte(result)) 
    } 
    return shim.Success(nil) 
} 

Bien sûr, cela est de manière très primitive pour capturer des mises à jour périodiques de température dans le grand livre, alors qu'il pourrait vous fournir un bon début.