Spacestate: verschil tussen versies

Uit Hackerspace Bitlair

Geen bewerkingssamenvatting
Β 
(27 tussenliggende versies door 2 gebruikers niet weergegeven)
Regel 1: Regel 1:
{{Project
{{Project
|name=Spacestate
|name=Spacestate
|start=2016/09/19
|start=2016-09-19
|contact=User:Polyfloyd, User:AK47,
|contact=Polyfloyd, AK47
|info=Opvolger van SpaceNotifier
|info=Space open, space dicht
|status=Beta
|status=Production
|Picture=PAY_DEBTS.png
|Picture=SpacestateSwitch.jpg
}}
}}
Het huidige systeem wat de spacestate beheert en dingen in- en uitschakelt is een beetje een warboel. Let's fix it!
[[Category:Infra]]
De Spacestate is het concept van open/gesloten van de space. Bitlair heeft een state, [[DJO]] heeft ook een. Beiden met een eigen schakelaar.


== TODO ==
Deze pagina gaat over de implementatiedetails. Voor hoe je dit als deelnemer gebruikt kan je het beste het stukje hier over in de [[Handleiding#De_space_openen_en_sluiten|handleiding]] lezen.
* Herschrijf /home/spacenotifier/spacestate/spacestate.php naar een daemon die run-parts uitvoert. (WIP)
* Fysieke (3-standen) knop voor Bitlair/DJO spacestate


=== Issues ===
== Service ==
* Telefooncentrale is afhankelijk van https://bitlair.nl/state
De service die de spacestate regelt is ''Spacestated'' en ontvangt updates van de schakelaars en het alarm via [[MQTT]]. Bij openen en sluiten van Bitlair en/of DJO wordt run-parts gebruikt om een stel scripts uit te voeren die dan weer spul aanstuurt of updates doorstuurt. Wanneer het [[alarm]] geactiveerd is zijn de spacestates altijd gesloten, ongeacht wat de schakelaar zegt.
*


=== IRC en Discord bots ===
Statusmeldingen komen via MQTT in IRC en Discord via de bot.
* Code: https://git.bitlair.nl/bitlair/bot


== Systeem ==
=== SpaceAPI ===
Onze implementatie van [https://spaceapi.io/ SpaceAPI] haalt de status uit MQTT en serveert het op [https://bitlair.nl/spaceapi.json spaceapi.json].
* Code: https://git.bitlair.nl/bitlair/spaceapi


=== Spacestate ===
== Spacestate Switch ==
<pre>
De gele schakelaar is de tweede revisie inmiddels. In de behuizing zit een ESP32 die simpelweg het contact meet. De firmware is Esphome.
root@service:/opt/spacestate# tree
.
β”œβ”€β”€ bitlair_closed.d
β”‚Β Β  β”œβ”€β”€ 10_log
β”‚Β Β  β”œβ”€β”€ 10_mqtt
β”‚Β Β  β”œβ”€β”€ 20_ledboard_poweroff
β”‚Β Β  β”œβ”€β”€ 20_music_poweroff
β”‚Β Β  β”œβ”€β”€ 20_phone_off
β”‚Β Β  β”œβ”€β”€ 20_statsdisplay_poweroff
β”‚Β Β  β”œβ”€β”€ 80_irc
β”‚Β Β  └── 80_twitter
β”œβ”€β”€ bitlair_open.d
β”‚Β Β  β”œβ”€β”€ 10_log
β”‚Β Β  β”œβ”€β”€ 10_mqtt
β”‚Β Β  β”œβ”€β”€ 20_ledboard_poweron
β”‚Β Β  β”œβ”€β”€ 20_music_poweron
β”‚Β Β  β”œβ”€β”€ 20_phone_on
β”‚Β Β  β”œβ”€β”€ 20_statsdisplay_poweron
β”‚Β Β  β”œβ”€β”€ 80_irc
β”‚Β Β  └── 80_twitter
β”œβ”€β”€ djo_closed.d
β”‚Β Β  β”œβ”€β”€ 10_mqtt
β”‚Β Β  β”œβ”€β”€ 20_ledboard_poweroff -> ../bitlair_closed.d/20_ledboard_poweroff
β”‚Β Β  β”œβ”€β”€ 20_music_poweroff -> ../bitlair_closed.d/20_music_poweroff
β”‚Β Β  β”œβ”€β”€ 20_statsdisplay_poweroff -> ../bitlair_closed.d/20_statsdisplay_poweroff
β”‚Β Β  └── 80_irc
β”œβ”€β”€ djo_open.d
β”‚Β Β  β”œβ”€β”€ 10_mqtt
β”‚Β Β  β”œβ”€β”€ 20_ledboard_poweron -> ../bitlair_open.d/20_ledboard_poweron
β”‚Β Β  β”œβ”€β”€ 20_music_poweron -> ../bitlair_open.d/20_music_poweron
β”‚Β Β  β”œβ”€β”€ 20_statsdisplay_poweron -> ../bitlair_open.d/20_statsdisplay_poweron
β”‚Β Β  └── 80_irc
└── README
</pre>


=== Twitter ===
=== Versie 1 ===
Gebruik <code>bitlair-tweet <message></code> in /usr/local/bin om een bericht over Twitter te sturen.
De eerste daadwerkelijke schakelaar was een oude 3-fase contactor verbonden aan een ESP8266. Hier aan was ook een 2e schakelaar verbonden voor een aparte spacestate van [[DJO]].
De gebruiker moet hiervoor in de twitter groep zitten.


=== POE en APC ===
<gallery>
Gebruik <code>apc-switch</code> en <code>poe-switch</code> in /usr/local/bin om POE en APC switches te bedienen vanuit scripts.
File:Spacestate_20161009_223547.jpg|Eerste Bitlair en DJO schakelaars in [[Space1.0]]
File:Spacestate_20161219_012615.jpg|Naast de deur in [[Space2.0]]
File:Spacestate_20180721_170330.jpg|Update van het raampje in 2018
</gallery>


=== IRC ===
=== Versie 0 ===
JSON-bot is vervangen door een Bash script. Gebruik <code>irc-say</code> om een notice in #bitlair te gooien.
Het schakelen van apparatuur en de spacestate is ouder dan de aanwezigheid van een fysieke knop. De [[Projects/SpaceNotifier|eerste implementatie]] van dit concept was schakelen op de aanwezigheid van bekende MAC-adressen, welke werden ingesteld via de [[Projects/Portal|Portal]], op de WiFi. Dit werkte, maar had wat vervelende edge-cases wanneer je met weinig mensen aanwezig was laptops in slaapstand gingen.
* Code: https://github.com/bitlair/irc-bot


=== Space API ===
== Referentie ==
De statejson is nu een Python script die de open status uit MQTT haalt.
* Code: https://github.com/bitlair/spaceapi


=== Alarm ===
=== POE, APC en POWERBAR ===
De spacestate en jsonbot hook zijn uit siahsd verwijderd en vervangen door een hook die een script uit voert voor ieder binnenkomend event ipv alleen open en close.
* POE = HP ProCurve 3500 switch --> schakel PoE aan/uit op specifieke poorten
* APC = APC powerbar in het serverrack --> schakel specifieke outlets
* POWERBAR = Powerbar in de space (boven systeemplafon), via Moxa serial to ethernet --> schakele specifieke outlets
Β 
Gebruik <code>apc-switch</code>, <code>poe-switch</code> of <code>powerbar-switch</code> in /usr/local/bin om POE, APC en POWERBAR switches te bedienen vanuit scripts.
Β 
== Alarm ==
De spacestate en jsonbot hook zijn uit siahsd verwijderd en vervangen door een hook die een script uitvoert voor ieder binnenkomend event ipv alleen open en close.
Het script gooit een melding op IRC en voert run-parts uit.
Het script gooit een melding op IRC en voert run-parts uit.
* Code (siahsd): https://github.com/bitlair/siahsd
* Code (siahsd): https://github.com/bitlair/siahsd
<pre>
root@service:/opt/alarm# tree
.
β”œβ”€β”€ armed.d
β”‚Β Β  β”œβ”€β”€ 10_log
β”‚Β Β  β”œβ”€β”€ 10_mqtt
β”‚Β Β  β”œβ”€β”€ 20_48switch
β”‚Β Β  └── 20_statefile
β”œβ”€β”€ disarmed.d
β”‚Β Β  β”œβ”€β”€ 10_log
β”‚Β Β  β”œβ”€β”€ 10_mqtt
β”‚Β Β  β”œβ”€β”€ 20_48switch
β”‚Β Β  └── 20_statefile
└── siahsd_handler.sh
</pre>

Huidige versie van 22 jan 2026 22:07


Project: Spacestate
Beschrijving Space open, space dicht
Start 2016-09-19
Contact Polyfloyd, AK47
Status Production

De Spacestate is het concept van open/gesloten van de space. Bitlair heeft een state, DJO heeft ook een. Beiden met een eigen schakelaar.

Deze pagina gaat over de implementatiedetails. Voor hoe je dit als deelnemer gebruikt kan je het beste het stukje hier over in de handleiding lezen.

Service

De service die de spacestate regelt is Spacestated en ontvangt updates van de schakelaars en het alarm via MQTT. Bij openen en sluiten van Bitlair en/of DJO wordt run-parts gebruikt om een stel scripts uit te voeren die dan weer spul aanstuurt of updates doorstuurt. Wanneer het alarm geactiveerd is zijn de spacestates altijd gesloten, ongeacht wat de schakelaar zegt.

IRC en Discord bots

Statusmeldingen komen via MQTT in IRC en Discord via de bot.

SpaceAPI

Onze implementatie van SpaceAPI haalt de status uit MQTT en serveert het op spaceapi.json.

Spacestate Switch

De gele schakelaar is de tweede revisie inmiddels. In de behuizing zit een ESP32 die simpelweg het contact meet. De firmware is Esphome.

Versie 1

De eerste daadwerkelijke schakelaar was een oude 3-fase contactor verbonden aan een ESP8266. Hier aan was ook een 2e schakelaar verbonden voor een aparte spacestate van DJO.

Versie 0

Het schakelen van apparatuur en de spacestate is ouder dan de aanwezigheid van een fysieke knop. De eerste implementatie van dit concept was schakelen op de aanwezigheid van bekende MAC-adressen, welke werden ingesteld via de Portal, op de WiFi. Dit werkte, maar had wat vervelende edge-cases wanneer je met weinig mensen aanwezig was laptops in slaapstand gingen.

Referentie

POE, APC en POWERBAR

  • POE = HP ProCurve 3500 switch --> schakel PoE aan/uit op specifieke poorten
  • APC = APC powerbar in het serverrack --> schakel specifieke outlets
  • POWERBAR = Powerbar in de space (boven systeemplafon), via Moxa serial to ethernet --> schakele specifieke outlets

Gebruik apc-switch, poe-switch of powerbar-switch in /usr/local/bin om POE, APC en POWERBAR switches te bedienen vanuit scripts.

Alarm

De spacestate en jsonbot hook zijn uit siahsd verwijderd en vervangen door een hook die een script uitvoert voor ieder binnenkomend event ipv alleen open en close. Het script gooit een melding op IRC en voert run-parts uit.