BME280 with NodeMCU

So I'm stumped. I am trying to complete this tutorial: https://lastminuteengineers.com/bme280-esp8266-weather-station/, because I want to use a BME-280 sensor connected to the NodeMCU WIFI arduino module to turn on and off a smart switch based on room temp. The NodeMCU connects with the network and transmits what it has just fine all is well. But when reading the BME-280 it just doesn't. It says NaN if I connect it to the Node 3.3v source and ground. It says some absurd value like -143c if I hook it up to a different 3.3v source but leave it connected to the Node via the SLC (D1) SDA (D2) pins (Uno R3 which if I connect the BME-280 to it, works perfectly), If I disconnect the power all together it gets intermittent signals which look about correct (1300 meters above sea level, about 27c) and just garbage mixed in. I've confirmed the NodeMCU seems to work (passes the blink test, transmits what it's getting over wifi) and I've confirmed that the BME-280 works. But when I put them together they simply don't. Any ideas?

Edit: This is the code, I added the serial logging to see what was going on, it's not reading correctly at the serial either

#include <ESP8266WebServer.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;


float temperature, humidity, pressure, altitude;

/*Put your SSID & Password*/
const char* ssid = "myqwest4333";  // Enter SSID here
const char* password = "autotime29";  //Enter Password here

ESP8266WebServer server(80);   

void setup() {
 // put your setup code here, to run once:
  Serial.begin(115200);
 delay(100);
 
 bme.begin(0x76);   

 Serial.println("Connecting to ");
 Serial.println(ssid);

 //connect to your local wi-fi network
 WiFi.begin(ssid, password);

 //check wi-fi is connected to wi-fi network
 while (WiFi.status() != WL_CONNECTED) {
 delay(1000);
 Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected..!");
 Serial.print("Got IP: ");  Serial.println(WiFi.localIP());

 server.on("/", handle_OnConnect);
 server.onNotFound(handle_NotFound);

 server.begin();
 Serial.println("HTTP server started");

}

void loop() {
 // put your main code here, to run repeatedly:
server.handleClient();
Serial.print("Temperature = ");
 Serial.print(bme.readTemperature());
 Serial.println("*C");

 Serial.print("Pressure = ");
 Serial.print(bme.readPressure() / 100.0F);
 Serial.println("hPa");

 Serial.print("Approx. Altitude = ");
 Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
 Serial.println("m");

 Serial.print("Humidity = ");
 Serial.print(bme.readHumidity());
 Serial.println("%");

 Serial.println();
 delay(1000);
}

void handle_OnConnect() {
 temperature = bme.readTemperature();
 humidity = bme.readHumidity();
 pressure = bme.readPressure() / 100.0F;
 altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
 server.send(200, "text/html", SendHTML(temperature,humidity,pressure,altitude)); 
}

void handle_NotFound(){
 server.send(404, "text/plain", "Not found");
}

String SendHTML(float temperature,float humidity,float pressure,float altitude){
 String ptr = "<!DOCTYPE html> <html>\n";
 ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
 ptr +="<title>ESP8266 Weather Station</title>\n";
 ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
 ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
 ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
 ptr +="</style>\n";
 ptr +="</head>\n";
 ptr +="<body>\n";
 ptr +="<div id=\"webpage\">\n";
 ptr +="<h1>ESP8266 Weather Station</h1>\n";
 ptr +="<p>Temperature: ";
 ptr +=temperature;
 ptr +="&deg;C</p>";
 ptr +="<p>Humidity: ";
 ptr +=humidity;
 ptr +="%</p>";
 ptr +="<p>Pressure: ";
 ptr +=pressure;
 ptr +="hPa</p>";
 ptr +="<p>Altitude: ";
 ptr +=altitude;
 ptr +="m</p>";
 ptr +="</div>\n";
 ptr +="</body>\n";
 ptr +="</html>\n";
 return ptr;
}

You forgot
Wire.begin(0, 2);
if you use GPIO0 and GPIO2 as SDA SCL, otherwise you have to change values

Check, using an I2C scanner sketch, that the BME280 I2C adddress is 0x76 because some boards have 0x77

You forgot
Wire.begin(0, 2);
if you use GPIO0 and GPIO2 as SDA SCL, otherwise you have to change values

This isn't necessary because the used library makes the call to the begin method using default I2C pin numbers (the ones OP used).

@OP: Please post a link to the schematics of your breakout board (I guess you don't use the chip directly)!
And please edit your post and insert code tags!
Also post a wiring diagram if you didn't used exactly the wiring from the tutorial.

@OP: Please post a link to the schematics of your breakout board (I guess you don't use the chip directly)!
And please edit your post and insert code tags!
Also post a wiring diagram if you didn't used exactly the wiring from the tutorial.

@pylon I don't have a schematic of the breakout board, they're these Chinese ones.
https://drive.google.com/open?id=11uzAP5pfXBSIB8IKU-6_mntxlUVcf-RH
https://drive.google.com/open?id=1Wq_P4fwbXMniymgDSBT4yMYbcH_XcF_X

Edit: And I did use the exact same wiring setup. The weirdest part to me, is that they work perfectly when connected to an UNO, I'm thinking it's something to do with power but I'm not sure.

Edit: And I did use the exact same wiring setup. The weirdest part to me, is that they work perfectly when connected to an UNO, I'm thinking it's something to do with power but I'm not sure.

Do you use the same code with the UNO (except the ESP specific part but the I2C address is equal)?

One wild guess: the pull-up resistors are to low for 3V3. A 10k pull-up might work with the 5V of the UNO but is often to weak for a 3V3 board, especially if the connections are made on a breadboard or something similar. You might try to add external pull-ups (on the breadboard) from SCL and SDA to 3V3 with 4k7 resistors.

Yeah I added a debugging line that if it failed to start the BME-280 it would let me know. Well it's not starting it. I put a DHT-11 on for giggles with a different library, and that works fine. For now I'm just going to use the DHT-11 because I don't need high accuracy, I don't really need barometric pressure and it doesn't have to stand up to much humidity. I'll give the using pull up resistors a shot though and keep messing with it. For now I just want to get something working. Building a better version will come later.

When using the Adafruit library I believe that the correct way to invoke the alternate I2C address is when you invoke the library.

Adafruit_BME280 bme;           // default address

Adafruit_BME280 bme(0x76);     // alternate address

Don