MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    Error in network creation of Hyperledger Fabric network usin AWS blockchain templates for Hyperledger Fabric

    General Discussion
    cloud iot aws blockchain hyperledger
    1
    2
    593
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Abhay
      Abhay last edited by

      We are trying to build a blockchain-based solution for the forensic application of vehicular accidents. The accident data of the vehicle is stored to a blockchain network in hyperledger fabric, so that no one can tamper the data, only authenticated authorities who have access to the hyperledger fabric network ledger can access to it which we make use of the channel concept in the hyperledger framework.

      So the data from the IoT device (currently we build an app to access data such as accelerometer, gyroscope and GPS from smartphones) is been transferred to the Hyperledger Fabric network. We try to create a Fabric network in the AWS blockchain template for Hyperledger Fabric. Then from this hyperledger fabric, all the organizations who are part of this network such as forensic, insurance, manufacturers etc, are the stakeholders who can access the data in the network via the channel (channels helps to bring abstractions ie each stakeholder will only know what is necessary for them).

      So we try to create the blockchain network in AWS using Blockchain template for hyperledger fabric. The template for network creation is actually inside a cloud formation stack, which is a service provided by AWS, so we need to create the stack to create the network. Before creating this stack we need to create a VPC, EC2 instance, IAM roles and policies. So we follow according to the below youtube video to create it.

      https://www.youtube.com/watch?v=bDm1agCBR4c&feature=youtu.be

      After completing all the above prerequisite, we need to create the template inside the stack. Inside the stack we need to provide stack with the name of the stakeholders in the network ie, forensic, manufacturers etc.. Name of the VPC, EC2 instance ID, all the prerequisite details we created earlier.

      When clicking the create a stack, it takes some time to create it, after some time it shows the stack is getting failed and getting rollback, there will be two stacks one is a nested stack of the parent stack, which contains all the artefacts for the hyperledger fabric network it is one which gets failed first, then the parent stack which contains the link to the EC2 instance.
      WhatsApp Image 2020-04-21 at 7.11.08 PM.jpeg
      screenshot of the error

      Integration part ie transferring data and accessing ledger can be done only after this stack creation and network spun up.

      Abhay 1 Reply Last reply Reply Quote 0
      • Abhay
        Abhay @Abhay last edited by

        @Abhay
        WhatsApp Image 2020-04-23 at 11.46.56 AM.jpeg

        We try to find more about the error so far this is what we got from it.

        So we run user data commands inside instance via SSH. Then error popped up when we run command for network artefacts.

        Any suggestions??

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Recent Posts

        • R

          I am trying to set up a janus webrtc to stream an RTSP to an HTML page.
          I have followed the getting-started steps by Janus-gateway official github repo.

          Since I am new to web development. I do not understand how to host the Webrtc server. can anyone guide me to set up an HTML page that can display a video stream from an RTSP server using janus webrtc?

          • read more
        • @zainmuhammed Can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

          You can put the GPS value on top of the loop or setup function.

          Also, what kind of gateway are you using? Is it configured okay, OTA is done?

          • read more
        • @salmanfaris Today I tried after connecting a 18650 cell,
          WhatsApp Image 2024-04-12 at 10.40.06_c7d1947e.jpg WhatsApp Image 2024-04-12 at 10.40.05_897b8bb6.jpg
          Data getting in console after integration of both lora and gps.
          3f45cfe7-0061-4328-8c55-ef0a73385203-image.png
          here you can see that GPS value is 0,0. also in my previous post you can see that GPS value is not reading.
          Also the status LED is active after it is connected to the satellite.

          • read more
        • Hi @zainmuhammed ,

          Can you share the GPS and LoRa output when it’s working?

          Also can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

          Also make sure the device provides have enough to modules. The GPS need more power when you cold start.

          • read more
        • @zainmuhammed
          this is the code

          #include <Arduino.h> #include <U8x8lib.h> #include <TinyGPS++.h> #include <SoftwareSerial.h> static const int RXPin = 1, TXPin = 2; static const uint32_t GPSBaud = 9600; // The TinyGPS++ object TinyGPSPlus gps; // The serial connection to the GPS device SoftwareSerial ss(RXPin, TXPin); U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/*reset=*/U8X8_PIN_NONE); // U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/*clock=*/ SCL, /*data=*/ SDA, /*reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display static char recv_buf[512]; static bool is_exist = false; static bool is_join = false; static int led = 0; static int at_send_check_response(char *p_ack, int timeout_ms, char *p_cmd, ...) { int ch; int num = 0; int index = 0; int startMillis = 0; va_list args; char cmd_buffer[256]; // Adjust the buffer size as needed memset(recv_buf, 0, sizeof(recv_buf)); va_start(args, p_cmd); vsprintf(cmd_buffer, p_cmd, args); // Format the command string Serial1.print(cmd_buffer); Serial.print(cmd_buffer); va_end(args); delay(200); startMillis = millis(); if (p_ack == NULL) { return 0; } do { while (Serial1.available() > 0) { ch = Serial1.read(); recv_buf[index++] = ch; Serial.print((char)ch); delay(2); } if (strstr(recv_buf, p_ack) != NULL) { return 1; } } while (millis() - startMillis < timeout_ms); return 0; } static void recv_prase(char *p_msg) { if (p_msg == NULL) { return; } char *p_start = NULL; int data = 0; int rssi = 0; int snr = 0; p_start = strstr(p_msg, "RX"); if (p_start && (1 == sscanf(p_start, "RX: \"%d\"\r\n", &data))) { Serial.println(data); u8x8.setCursor(2, 4); u8x8.print("led :"); led = !!data; u8x8.print(led); if (led) { digitalWrite(LED_BUILTIN, LOW); } else { digitalWrite(LED_BUILTIN, HIGH); } } p_start = strstr(p_msg, "RSSI"); if (p_start && (1 == sscanf(p_start, "RSSI %d,", &rssi))) { u8x8.setCursor(0, 6); u8x8.print(" "); u8x8.setCursor(2, 6); u8x8.print("rssi:"); u8x8.print(rssi); } p_start = strstr(p_msg, "SNR"); if (p_start && (1 == sscanf(p_start, "SNR %d", &snr))) { u8x8.setCursor(0, 7); u8x8.print(" "); u8x8.setCursor(2, 7); u8x8.print("snr :"); u8x8.print(snr); } } void setup(void) { u8x8.begin(); u8x8.setFlipMode(1); u8x8.setFont(u8x8_font_chroma48medium8_r); ss.begin(GPSBaud); Serial.begin(GPSBaud); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); Serial1.begin(9600); Serial.print("E5 LORAWAN TEST\r\n"); u8x8.setCursor(0, 0); if (at_send_check_response("+AT: OK", 100, "AT\r\n")) { is_exist = true; at_send_check_response("+ID: DevEui", 1000, "AT+ID=DevEui,\"xxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your DevEui at_send_check_response("+ID: AppEui", 1000, "AT+ID=AppEui,\"xxxxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your AppEui at_send_check_response("+KEY: APPKEY", 1000, "AT+KEY=APPKEY,\"xxxxxxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your AppKey at_send_check_response("+ID: DevAddr", 1000, "AT+ID=DevAddr\r\n"); at_send_check_response("+ID: AppEui", 1000, "AT+ID\r\n"); at_send_check_response("+MODE: LWOTAA", 1000, "AT+MODE=LWOTAA\r\n"); at_send_check_response("+DR: IN865", 1000, "AT+DR=IN865\r\n"); // Change FREQ as per your location at_send_check_response("+CH: NUM", 1000, "AT+CH=NUM,0-2\r\n"); at_send_check_response("+CLASS: C", 1000, "AT+CLASS=A\r\n"); at_send_check_response("+PORT: 8", 1000, "AT+PORT=8\r\n"); delay(200); u8x8.setCursor(5, 0); u8x8.print("LoRaWAN"); is_join = true; } else { is_exist = false; Serial.print("No E5 module found.\r\n"); u8x8.setCursor(0, 1); u8x8.print("unfound E5 !"); } u8x8.setCursor(2, 4); u8x8.print("led :"); u8x8.print(led); } void loop(void) { if (is_exist) { int ret = 0; if (is_join) { ret = at_send_check_response("+JOIN: Network joined", 12000, "AT+JOIN\r\n"); if (ret) { is_join = false; } else { at_send_check_response("+ID: AppEui", 1000, "AT+ID\r\n"); Serial.print("JOIN failed!\r\n\r\n"); delay(5000); } } else { gps.encode(ss.read()); float a=gps.location.lat(); float b=gps.location.lng(); Serial.println(a); Serial.println(b); char cmd[128]; sprintf(cmd, "AT+CMSGHEX=\"%04X%04X\"\r\n", (float)a,(float)b); ret = at_send_check_response("Done", 5000, cmd); if (ret) { recv_prase(recv_buf); } else { Serial.print("Send failed!\r\n\r\n"); } delay(5000); } } else { delay(1000); } }

          9135d5d3-6277-4c60-81df-a2acac65c93d-image.png

          • read more
        By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
        Copyright © 2023 MakerGram, All rights reserved.
        Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct