<feed xmlns='http://www.w3.org/2005/Atom'>
<title>iot-contact, branch main</title>
<subtitle>IoT device to check if doors and windows are closed or open</subtitle>
<id>https://cgit.xengineering.eu/iot-contact/atom</id>
<link rel='self' href='https://cgit.xengineering.eu/iot-contact/atom'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/'/>
<updated>2025-08-10T17:57:35Z</updated>
<entry>
<title>fw: Remove radvd.conf</title>
<updated>2025-08-10T17:57:35Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-10T17:57:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=4883d87426e555b970c94ac18911777f3e3056bb'/>
<id>urn:sha1:4883d87426e555b970c94ac18911777f3e3056bb</id>
<content type='text'>
This is meanwhile replaced by `systemd-networkd` which supports sending
router advertisements.
</content>
</entry>
<entry>
<title>fw: Remove simulate-network.sh</title>
<updated>2025-08-10T17:53:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-30T17:08:19Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=0c388d8e1ece221c4fd2eebbb2a3bfa29981cb78'/>
<id>urn:sha1:0c388d8e1ece221c4fd2eebbb2a3bfa29981cb78</id>
<content type='text'>
This script requires root privileges. It is annoying to always type a
password for it and in general to start this script to test the native
sim firmware.

Thus the new approach is to provide the network infrastructure with a
system-wide NetworkManager connection and the required servers (IPv6
router advertisement, MQTT, IPv4 DHCP in the future) with systemd
services constantly.

That way the full network environment for the simulation is always just
there for the `zeth` interface and the firmware executable can just be
started with user privileges.
</content>
</entry>
<entry>
<title>pcb: io: Add relay indication LEDs</title>
<updated>2025-08-10T15:41:22Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-10T15:41:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ff4345ff38ef05267d3f25ea9d9f929e6ef4f981'/>
<id>urn:sha1:ff4345ff38ef05267d3f25ea9d9f929e6ef4f981</id>
<content type='text'>
To be able to debug the relay functionality it is useful to actually
see it. Thus LEDs are added which light up whenever the assigned relay
is actuated.
</content>
</entry>
<entry>
<title>pcb: Place test points</title>
<updated>2025-08-10T15:36:15Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-10T15:36:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=c50d7275a98c420506c1be35d1c067394af700f5'/>
<id>urn:sha1:c50d7275a98c420506c1be35d1c067394af700f5</id>
<content type='text'>
They should be used to easier connect cables to the board to debug
hardware or firmware issues.
</content>
</entry>
<entry>
<title>pcb: main: Set all part values</title>
<updated>2025-08-10T15:28:31Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-10T15:28:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=69ac0e4b43d0c48cca58008d41d4551bb723d510'/>
<id>urn:sha1:69ac0e4b43d0c48cca58008d41d4551bb723d510</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pcb: Implement RJ45 termination and shielding</title>
<updated>2025-08-10T14:38:52Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-10T14:38:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=a7ce8945983816c77b9d0b40e9619857b6721065'/>
<id>urn:sha1:a7ce8945983816c77b9d0b40e9619857b6721065</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: sim: srv: Add this folder</title>
<updated>2025-08-10T13:58:49Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-10T13:58:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=c931e04f7ecf18645d114144e5663e633cfd1a78'/>
<id>urn:sha1:c931e04f7ecf18645d114144e5663e633cfd1a78</id>
<content type='text'>
This folder contains material to set up a network environment for the
native sim firmware.
</content>
</entry>
<entry>
<title>Add opt-in for nucleo_f767zi firmwares</title>
<updated>2025-08-07T19:36:49Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-08-07T19:31:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=17c334ada43ee5eabd14caabacbe393fe3482451'/>
<id>urn:sha1:17c334ada43ee5eabd14caabacbe393fe3482451</id>
<content type='text'>
This partially reverts commit ce098756d79d8e4240bedc2bd74ff9a3a77fcedb.

The reverted commit dropped the build logic for all
nucleo_f767zi-related artifacts and thus for everything except the
native sim firmware.

Instead this commit reverts this change but comments out the
`update_image` and `factory_image` targets from the `artifacts` variable
in the top-level `meson.build`.

This allows to build these two targets explicitly with `ninja -C build
&lt;target&gt;` but does not include it into the deploy tar archive.

Since this archive is the only target of the project with
`build_by_default: true` this effectively disables the build with
minimal code changes.
</content>
</entry>
<entry>
<title>doc: api: future: Switch to `mqtt/url` setting</title>
<updated>2025-07-30T17:50:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-30T17:46:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=d07fc8cb10b7c04f3a22137678fe1150f4a1e379'/>
<id>urn:sha1:d07fc8cb10b7c04f3a22137678fe1150f4a1e379</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: api: future: Switch to `set` topic suffix</title>
<updated>2025-07-30T17:50:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-30T17:41:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=8e722f61a6ba8e56b7a0a93fa41f5b9b23bff6c4'/>
<id>urn:sha1:8e722f61a6ba8e56b7a0a93fa41f5b9b23bff6c4</id>
<content type='text'>
If a writable topic should correlate to a readable topic the new
convention is a suffix (`my/topic/set`) instead of the old prefix
(`request/my/topic`).

This keeps the alphabetical ordering the same.
</content>
</entry>
<entry>
<title>doc: api: future: Order MQTT topic by alphabet</title>
<updated>2025-07-30T17:50:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-30T17:39:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=22c9abdba9961f2088999cb40d6906dc7ba01d2f'/>
<id>urn:sha1:22c9abdba9961f2088999cb40d6906dc7ba01d2f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: api: future: Remove update automation</title>
<updated>2025-07-30T17:50:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-29T20:41:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=e5da3cfc1869899c7c6c84ffd218d9397f89be3a'/>
<id>urn:sha1:e5da3cfc1869899c7c6c84ffd218d9397f89be3a</id>
<content type='text'>
With the change to MQTT the device will not be usable anymore without
server infrastructure.

This design change allows to reduce the complexity of configuration and
implementation here significantly.

The device only supports MQTT-triggered HTTP pull updates and the server
should take care of regularly triggering this via MQTT.
</content>
</entry>
<entry>
<title>gitignore: Add flash.bin</title>
<updated>2025-07-30T17:49:14Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-30T17:49:14Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=03d0280c79ab67d0e714334bad71f3677bfcdd91'/>
<id>urn:sha1:03d0280c79ab67d0e714334bad71f3677bfcdd91</id>
<content type='text'>
This file gets created whenever the native sim build of the application
firmware is executed from the repository root. This is quite common.
Nevertheless the flash content of the native sim firmware should never
be committed.
</content>
</entry>
<entry>
<title>pcb: Fail build in case of bad ERC</title>
<updated>2025-07-29T09:55:37Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-29T09:55:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ed36355818f9ac0603e1e0d6166f26b1bea65bbc'/>
<id>urn:sha1:ed36355818f9ac0603e1e0d6166f26b1bea65bbc</id>
<content type='text'>
The electrical rules check already found multiple significant hardware
design issues. Thus the build has to fail to indicate these issues
early.
</content>
</entry>
<entry>
<title>pcb: Add TODO for RJ45 connector</title>
<updated>2025-07-29T09:52:27Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-29T09:52:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=939abbffbb0d1f120df017a6984f4a24af8c86da'/>
<id>urn:sha1:939abbffbb0d1f120df017a6984f4a24af8c86da</id>
<content type='text'>
Adding this TODO text and marking the termination and shielding related
pins as unconnected makes the ERC clean. This allows to right now fail
the build in case of bad ERC.

This is preferred to not unintentionally inject other issues. The RJ45
connector and shielding / termination has to be reworked anyway.
</content>
</entry>
<entry>
<title>pcb: power: Add DC fuse</title>
<updated>2025-07-29T09:50:59Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-29T09:48:45Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=6b1ef67728ac3d315abbea6abed1c4c60ce28a47'/>
<id>urn:sha1:6b1ef67728ac3d315abbea6abed1c4c60ce28a47</id>
<content type='text'>
While the AC fuse is more critical it still might be a good idea to not
completely rely on the fuse of the PoE PSE.
</content>
</entry>
<entry>
<title>pcb: Use `kicad-cli` with Meson `find_program()`</title>
<updated>2025-07-28T13:55:56Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-28T13:55:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=6cc299dc16cbf0a0b09d9e66a7460af4155e4b0f'/>
<id>urn:sha1:6cc299dc16cbf0a0b09d9e66a7460af4155e4b0f</id>
<content type='text'>
This gives better user feedback when the program is not available (as
currently in the latest Debian stable version).
</content>
</entry>
<entry>
<title>pcb: Add ERC report to build and deploy trees</title>
<updated>2025-07-28T13:50:46Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-28T13:50:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=cec58f88397b784eb5cc630fd2532d7f72da3c72'/>
<id>urn:sha1:cec58f88397b784eb5cc630fd2532d7f72da3c72</id>
<content type='text'>
The report of the KiCad electrical rules check (ERC) is added with this
commit to the default build and also written to the deploy tree.

Since there are still minor issues a failing ERC will not yet break the
build. This will be introduced later by adding the
`--exit-code-violations` flag to the `kicad-cli sch erc` call.
</content>
</entry>
<entry>
<title>fw: Remove nucleo_f767zi firmwares</title>
<updated>2025-07-27T20:57:21Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T20:57:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ce098756d79d8e4240bedc2bd74ff9a3a77fcedb'/>
<id>urn:sha1:ce098756d79d8e4240bedc2bd74ff9a3a77fcedb</id>
<content type='text'>
The bootloader and application firmware resulting in the factory- and
update-image are removed from the build.

The reason is a planned first release of this project with hardware
design files for a first `iot-contact` board. The release is required to
build this board with matching version specifiers.

Since the release should contain a consistent set of hardware and
firmware the firmware targeting the development board is removed.

Handling firmware for multiple boards is also an option but has no use
since the biggest part of the firmware features can be developed using
the simulation only which should stay in long term.
</content>
</entry>
<entry>
<title>pcb: power: Fix missing pull-up on regulator EN</title>
<updated>2025-07-27T16:16:16Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T16:14:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=32ae5e2e0c2869f0ac778bb95a33a2219401c68c'/>
<id>urn:sha1:32ae5e2e0c2869f0ac778bb95a33a2219401c68c</id>
<content type='text'>
The +3.3V regulator has an enable (EN) pin. This was connected to the
power-good (PG) output of the +5V regulator.

It was overlooked that the PG pin is an open-collector pin and thus a
pull-up resistor is required.

This issue was found with the KiCad electrical rules check (ERC).
</content>
</entry>
<entry>
<title>pcb: processor: Fix missing pull-up on STM32 RESET</title>
<updated>2025-07-27T16:09:30Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T16:09:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=2a3432a2195260f436c50e891e2e9b9a615dc670'/>
<id>urn:sha1:2a3432a2195260f436c50e891e2e9b9a615dc670</id>
<content type='text'>
This is a significant design bug which would leave the RESET line of the
MCU in a floating state. Thanks to ERC this is detected early.
</content>
</entry>
<entry>
<title>pcb: Fix +3V3 and +3.3V confusion</title>
<updated>2025-07-27T16:01:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T16:01:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=514352748fee605be176e2f37dd9b12047458503'/>
<id>urn:sha1:514352748fee605be176e2f37dd9b12047458503</id>
<content type='text'>
ERC brought up that those two global power labels were mixed. This is of
course a design bug which is now fixed by consistently using +3.3V.
</content>
</entry>
<entry>
<title>pcb: Remove 4-pin blind connector</title>
<updated>2025-07-27T15:43:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T15:43:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=95ecbd8c555d3021a08bedb4234f38abd0df2db3'/>
<id>urn:sha1:95ecbd8c555d3021a08bedb4234f38abd0df2db3</id>
<content type='text'>
The old concept was to have three connectors:

- 2-pin for contact loop
- 3-pin for AC supply (PE, N, L)
- 4-pin for blind connection (PE, N, L_UP, L_DOWN)

The new concept is:

- 2-pin for contact loop
- 3-pin for AC supply (L) and blind connection (L_UP, L_DOWN)

This saves the PCB space for one of the biggest parts. Furthermore it
reduces space constraints for the PCB routing.

The removed neutral and protective earth pins should not be a problem.
It is less convenient for mounting since additional connectors between
the supply and blind cable are required but apart from that N and PE
would not have safety benefits in the current design.

This used to be different when an aluminium case was considered at least
as option. But the requirements for PE connection of the two halves of
the housing would have a huge space requirement. Thus an anyway cheaper
plastic case is the current goal.
</content>
</entry>
<entry>
<title>doc: api: future: Update MQTT API</title>
<updated>2025-07-27T09:45:54Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-27T09:45:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=aa4e3f742a9b1468b4c332a2b0d0183a353bedb8'/>
<id>urn:sha1:aa4e3f742a9b1468b4c332a2b0d0183a353bedb8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: api: future: Introduce device info concept</title>
<updated>2025-07-26T21:16:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-26T21:16:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=05579afdc2fd425b697b2ac77ba9e82eaaac9719'/>
<id>urn:sha1:05579afdc2fd425b697b2ac77ba9e82eaaac9719</id>
<content type='text'>
This reduces the HTTP endpoints and overhead.
</content>
</entry>
<entry>
<title>doc: api: future: Switch to pull updates</title>
<updated>2025-07-26T20:53:50Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-26T20:53:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=325f029c35422267c4b3267838b9a46b4baf39e2'/>
<id>urn:sha1:325f029c35422267c4b3267838b9a46b4baf39e2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fw: Document TAP iface with NetworkManager</title>
<updated>2025-07-26T19:43:38Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-26T19:43:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=288d036a8bcc83ef9bb310256e0813f122b5e41b'/>
<id>urn:sha1:288d036a8bcc83ef9bb310256e0813f122b5e41b</id>
<content type='text'>
This will be moved later to the user documentation so that the native
sim build of the application firmware can easily be used on Linux
machines using NetworkManager.
</content>
</entry>
<entry>
<title>Merge implementation of tar archive deployment</title>
<updated>2025-07-26T17:15:06Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-26T17:15:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=11078651756014631166cb8f0bf2d8bce18e56d1'/>
<id>urn:sha1:11078651756014631166cb8f0bf2d8bce18e56d1</id>
<content type='text'>
Deploying all build artifacts in a single tar archive file makes
deployment easier. The bundle stays consistent, GPG signatures can later
easily provided too, the archive and its top-level directory can have
the same and long name and the further paths in the archive can stay
short.
</content>
</entry>
<entry>
<title>README: Document tar archive and deploy script</title>
<updated>2025-07-26T17:08:56Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-26T17:08:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=376a2f91964527bfb6b57661a9e81a4d5544f288'/>
<id>urn:sha1:376a2f91964527bfb6b57661a9e81a4d5544f288</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tools: Re-introduce deploy.py script</title>
<updated>2025-07-26T17:02:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2025-07-26T16:59:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/iot-contact/commit/?id=ce9b6c2d205b7d2559a49a36a8d7422ccd12a177'/>
<id>urn:sha1:ce9b6c2d205b7d2559a49a36a8d7422ccd12a177</id>
<content type='text'>
After the transition to tar archive based deployment it can now be
re-introduced with small changes.
</content>
</entry>
</feed>
