The blockchain-in-IoT pitch is autonomous devices that pay each other for resources. What's the fundamental catch?
The oracle problem: a blockchain can't guarantee the truth of sensor readings fed into it, so if smart contracts act on sensor data, whoever controls the sensors must be trusted — often collapsing the need for a blockchain.
IoT looks like a natural blockchain fit: many decentralized devices that don't trust each other, transacting autonomously via smart contracts. But it hits the same wall as supply chains — the interface between the physical and digital world. If a computer feeds sensor values on-chain, the blockchain guarantees only that those values weren't altered after arrival — not that they were correct when read. So any contract acting on sensor input necessarily trusts the sensors and whoever controls them. In many cases (e.g. if you just want automation), a trusted party could do the job without a blockchain at all. Otherwise, the specific trust assumptions must be studied carefully to see whether the blockchain adds real value. This "how do you trust off-chain data" problem is precisely what oracles try to address.
Go deeper:
Blockchain oracle (Wikipedia) — the services that feed real-world data to smart contracts, and why they reintroduce a trust assumption (the oracle problem).