@afick Sorry for my request for the full sketch -- for some reason I only saw your first post.
Anyway, @mfalkvidd is right, you should not access the MySensors library (e.g. send messages) from an interrupt handler. That will certainly mess up things.
What you could do is set e.g. a flag from the interrupt handler and check in the loop() function if this flag has been set. If so, send a message and clear the flag.
E.g. (untested):
static volatile bool pirChanged = false;
static volatile bool pirTripped;
void check_pir()
{
pirTripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
pirChanged = true;
}
void loop()
{
// .. your old code ..
if (pirChanged)
{
send(msg.set(pirTripped ? "1" : "0")); // Send tripped value to gw
pirChanged = false;
}
}