Using the word “Switch” here is confusing as HA uses Switch to mean light switch or control switch. I don’t know what the best language for this would be (contact/binary input)?
Several consideration for your home built alarm system.
Commercial wired alarms systems usually employ a EOL Resistor (End of Line Resistor). In theory this resistor is at the furthest extent of the wires. The reason for EOL is to allow detection a Dead Short in the wiring (resistance < 200 ohms). So there are 3 states in this design, Open, 200+ ohms closed, and <200 Ohms closed.
Another concept that commercial wired systems us are electrical isolation. If for some reason your alarm wiring shorts to household wiring it will usually blow a isolation chip rather than the entire system.
The raspberry Pi has pull-up resistor design built in so you may not need to add such circuitry.
I would suggest looking at Opto Isolation / Opto Coupler for your design. You can also mix voltage with this approach, powering your alarm circuits with 12 yet having 3.3V on the input side of the Raspberry.
You’re right switch is the wrong word here. What I am using is the gpio binary sensor. and you are correct that some of the gpio pins have built in resistors but not all of them.
I have a setup that is working most of the time but sometimes HA does not respond to the change in state until 2-5 seconds afther the state of the sensor has changed. Other times it is not recognized until the input has been turned on and off agian.
I use GPIO with (2)magnetic door contacts and (4)12vdc motions detectors.
GPIO immediately reads OPEN condition (anything 800ms or more is my guess. This is enough for door switch and motions have setting to trip 2sec minimum)
“Pull Up” = “UP”
"Bouncetime = “50”
Connection is Pin>>resistor>>contact>>ground
OFF(short to ground through contact)
ON(Open circuit).
GPIO 4 (pin16) not used as I found its state was unstable and i planned to use for temp sensors